From 3222228467c5f13ce57e8e9c70c28a4378c12081 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Sat, 25 Nov 2023 05:54:11 +0000 Subject: [PATCH 001/115] =?UTF-8?q?feat:=20=E2=9C=A8=20setup=20and=20theme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 18 +- pnpm-lock.yaml | 683 ++++++++++++++++++++++++-------------- postcss.config.js | 13 + src/app.html | 2 +- src/app.pcss | 7 + src/routes/+layout.svelte | 15 + svelte.config.js | 2 +- tailwind.config.js | 25 ++ theme.js | 101 ++++++ 9 files changed, 606 insertions(+), 260 deletions(-) create mode 100644 postcss.config.js create mode 100644 src/app.pcss create mode 100644 src/routes/+layout.svelte create mode 100644 tailwind.config.js create mode 100644 theme.js diff --git a/package.json b/package.json index 32029b04..2382fb8b 100644 --- a/package.json +++ b/package.json @@ -29,14 +29,17 @@ "@commitlint/config-conventional": "18.4.3", "@commitlint/types": "18.4.3", "@playwright/test": "1.40.0", + "@skeletonlabs/skeleton": "^2.5.1", + "@skeletonlabs/tw-plugin": "^0.2.4", "@sveltejs/adapter-auto": "2.1.1", "@sveltejs/kit": "1.27.6", "@types/lint-staged": "13.2.2", - "@types/node": "18.18.12", + "@types/node": "20.10.0", "@typescript-eslint/eslint-plugin": "6.12.0", "@typescript-eslint/parser": "6.12.0", + "autoprefixer": "^10.4.14", "aws-cdk-lib": "2.110.1", - "constructs": "10.2.69", + "constructs": "10.3.0", "cz-conventional-changelog": "3.3.0", "devmoji": "2.3.0", "eslint": "8.54.0", @@ -45,18 +48,21 @@ "eslint-plugin-svelte": "2.35.1", "husky": "8.0.3", "lint-staged": "15.1.0", + "postcss": "^8.4.24", + "postcss-load-config": "^4.0.1", "prettier": "3.1.0", "prettier-plugin-packagejson": "2.4.6", "prettier-plugin-prisma": "5.0.0", "prettier-plugin-svelte": "3.1.2", "prisma": "5.6.0", - "sst": "2.36.2", + "sst": "2.36.6", "svelte": "4.2.7", - "svelte-check": "3.6.1", - "svelte-kit-sst": "2.36.3", + "svelte-check": "3.6.2", + "svelte-kit-sst": "2.36.6", + "tailwindcss": "^3.3.2", "tslib": "2.6.2", "typescript": "5.3.2", - "vite": "4.5.0", + "vite": "5.0.2", "vitest": "0.34.6" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c627b36..d3b6b6d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,30 +28,39 @@ devDependencies: '@playwright/test': specifier: 1.40.0 version: 1.40.0 + '@skeletonlabs/skeleton': + specifier: ^2.5.1 + version: 2.5.1(svelte@4.2.7) + '@skeletonlabs/tw-plugin': + specifier: ^0.2.4 + version: 0.2.4(tailwindcss@3.3.5) '@sveltejs/adapter-auto': specifier: 2.1.1 version: 2.1.1(@sveltejs/kit@1.27.6) '@sveltejs/kit': specifier: 1.27.6 - version: 1.27.6(svelte@4.2.7)(vite@4.5.0) + version: 1.27.6(svelte@4.2.7)(vite@5.0.2) '@types/lint-staged': specifier: 13.2.2 version: 13.2.2 '@types/node': - specifier: 18.18.12 - version: 18.18.12 + specifier: 20.10.0 + version: 20.10.0 '@typescript-eslint/eslint-plugin': specifier: 6.12.0 version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2) '@typescript-eslint/parser': specifier: 6.12.0 version: 6.12.0(eslint@8.54.0)(typescript@5.3.2) + autoprefixer: + specifier: ^10.4.14 + version: 10.4.16(postcss@8.4.31) aws-cdk-lib: specifier: 2.110.1 - version: 2.110.1(constructs@10.2.69) + version: 2.110.1(constructs@10.3.0) constructs: - specifier: 10.2.69 - version: 10.2.69 + specifier: 10.3.0 + version: 10.3.0 cz-conventional-changelog: specifier: 3.3.0 version: 3.3.0(typescript@5.3.2) @@ -76,6 +85,12 @@ devDependencies: lint-staged: specifier: 15.1.0 version: 15.1.0 + postcss: + specifier: ^8.4.24 + version: 8.4.31 + postcss-load-config: + specifier: ^4.0.1 + version: 4.0.2(postcss@8.4.31) prettier: specifier: 3.1.0 version: 3.1.0 @@ -92,17 +107,20 @@ devDependencies: specifier: 5.6.0 version: 5.6.0 sst: - specifier: 2.36.2 - version: 2.36.2 + specifier: 2.36.6 + version: 2.36.6 svelte: specifier: 4.2.7 version: 4.2.7 svelte-check: - specifier: 3.6.1 - version: 3.6.1(@babel/core@7.23.3)(postcss@8.4.31)(svelte@4.2.7) + specifier: 3.6.2 + version: 3.6.2(@babel/core@7.23.3)(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7) svelte-kit-sst: - specifier: 2.36.3 - version: 2.36.3 + specifier: 2.36.6 + version: 2.36.6 + tailwindcss: + specifier: ^3.3.2 + version: 3.3.5 tslib: specifier: 2.6.2 version: 2.6.2 @@ -110,8 +128,8 @@ devDependencies: specifier: 5.3.2 version: 5.3.2 vite: - specifier: 4.5.0 - version: 4.5.0(@types/node@18.18.12) + specifier: 5.0.2 + version: 5.0.2(@types/node@20.10.0) vitest: specifier: 0.34.6 version: 0.34.6 @@ -131,6 +149,11 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -151,52 +174,52 @@ packages: resolution: {integrity: sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg==} dev: true - /@aws-cdk/aws-apigatewayv2-alpha@2.101.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.2.69): - resolution: {integrity: sha512-nDdxdcJ97jC80F8dxO+wH2ufkq0w2hfsZ3RZKrdGo913/BPO2ebBSowFykpKSl2cPqm4g5NwoUIGZcawvGcpGQ==} + /@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.3.0): + resolution: {integrity: sha512-ldOrRsu5O0KtqMiKh43QbjHX26Q2dmDAFEBsQ4Y8pLWf0cISBkFrrcsv4VF23j9r9NEgLhPzoVOqiCyf4UUliQ==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.101.1 + aws-cdk-lib: ^2.110.1 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.110.1(constructs@10.2.69) - constructs: 10.2.69 + aws-cdk-lib: 2.110.1(constructs@10.3.0) + constructs: 10.3.0 dev: true - /@aws-cdk/aws-apigatewayv2-authorizers-alpha@2.101.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.101.1-alpha.0)(aws-cdk-lib@2.101.1)(constructs@10.2.69): - resolution: {integrity: sha512-ileZB1et1dJazzF55P0o2UAwHG187SrKaqDUakipe+bsMUdecZkUKQKdH7v3HchzzdmJ2USO430F11ToU9D2Bg==} + /@aws-cdk/aws-apigatewayv2-authorizers-alpha@2.110.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0)(aws-cdk-lib@2.110.1)(constructs@10.3.0): + resolution: {integrity: sha512-r8JbPTWoOlQHamilWvdTB76kMrAxkcs/4Vs7N6Jhq+U4Is0WSdP7JPgHJL2lJwOiYSAuMnt8H3O1KACv/XU8+g==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.101.1-alpha.0 - aws-cdk-lib: ^2.101.1 + '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0 + aws-cdk-lib: ^2.110.1 constructs: ^10.0.0 dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.101.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.2.69) - aws-cdk-lib: 2.101.1(constructs@10.2.69) - constructs: 10.2.69 + '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.3.0) + aws-cdk-lib: 2.110.1(constructs@10.3.0) + constructs: 10.3.0 dev: true - /@aws-cdk/aws-apigatewayv2-integrations-alpha@2.101.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.101.1-alpha.0)(aws-cdk-lib@2.101.1)(constructs@10.2.69): - resolution: {integrity: sha512-dzOxRPQHgu2GNfRJEEZSfZyjkF8TQ57Sx8fmINTRckzFNjfZPifHjYCXcoErVevLsG3qHPkmWlzm3nXBw2v67Q==} + /@aws-cdk/aws-apigatewayv2-integrations-alpha@2.110.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0)(aws-cdk-lib@2.110.1)(constructs@10.3.0): + resolution: {integrity: sha512-kQfymliXlKCkMNVwwYwJZzICi+KX25aoV3g9mXoxvD2XX0hcmCgBog4A2zEVnwGqdGbOPg7BDENqUEYxxdakxQ==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.101.1-alpha.0 - aws-cdk-lib: ^2.101.1 + '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0 + aws-cdk-lib: ^2.110.1 constructs: ^10.0.0 dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.101.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.2.69) - aws-cdk-lib: 2.101.1(constructs@10.2.69) - constructs: 10.2.69 + '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.3.0) + aws-cdk-lib: 2.110.1(constructs@10.3.0) + constructs: 10.3.0 dev: true - /@aws-cdk/cfnspec@2.101.1-alpha.0: - resolution: {integrity: sha512-bCbEA4z22AVl6blptcM8HPtVCpgQMK/Helewzbrg08zeZA0vQX/UQCZqm44jT83NNUoOqD+68+zCHnPRCOtGRw==} + /@aws-cdk/aws-service-spec@0.0.29: + resolution: {integrity: sha512-/Zp5aPDlG5M3CTXJW5KU2Jki3l9Xu/la37gdurawp9cpgufze5vboTyBd/ymHAXNINuApQdmGJ0iDn8HihzQ0Q==} dependencies: - fs-extra: 9.1.0 - md5: 2.3.0 + '@aws-cdk/service-spec-types': 0.0.29 + '@cdklabs/tskb': 0.0.3 dev: true - /@aws-cdk/cloud-assembly-schema@2.101.1: - resolution: {integrity: sha512-zP+5eaOcnEMTZHcVSl8oqrzttKpLm4i1yEMkh7mwbVVAcH6ofd4sPKc8LDkJRWruP47Z9yDtiwx+ly2ZRXG58Q==} + /@aws-cdk/cloud-assembly-schema@2.110.1: + resolution: {integrity: sha512-ivyE26pQgiUd5sOXE0DE+s0TfkZDfj1Y/dhseU+k2klsS24Cfeun9fSY568wG40PRheaO5X6jjT/4tuT78P1hQ==} engines: {node: '>= 14.15.0'} dependencies: jsonschema: 1.4.1 @@ -206,11 +229,12 @@ packages: - jsonschema - semver - /@aws-cdk/cloudformation-diff@2.101.1: - resolution: {integrity: sha512-Xt68ohP3xIv89pD64J6HuataBkaq4+vnqyAGi8SVEtS95RPKwJZyRY9/ptzKI4bMJQKphtOzUDQ5VxVMBs9w4A==} + /@aws-cdk/cloudformation-diff@2.110.1: + resolution: {integrity: sha512-5uNbHgiPtHrCNZ+4OIFYzoDsiRQy3NL2cMhyxO5g9++aXb5UAkt/hWHW27DnmOhYl1wNkCODMnQEuqK/CTYkxg==} engines: {node: '>= 14.15.0'} dependencies: - '@aws-cdk/cfnspec': 2.101.1-alpha.0 + '@aws-cdk/aws-service-spec': 0.0.29 + '@aws-cdk/service-spec-types': 0.0.29 chalk: 4.1.2 diff: 5.1.0 fast-deep-equal: 3.1.3 @@ -218,18 +242,24 @@ packages: table: 6.8.1 dev: true - /@aws-cdk/cx-api@2.101.1(@aws-cdk/cloud-assembly-schema@2.101.1): - resolution: {integrity: sha512-uPFpe5Rj0Hxy/WaK0Cr2EXGABGdjYIZBtrlQhHCjeN9WAmEILLtNNJofeUOW1nPNk0swni6FGeNQU7WnWBg30g==} + /@aws-cdk/cx-api@2.110.1(@aws-cdk/cloud-assembly-schema@2.110.1): + resolution: {integrity: sha512-X3zCBu3JmL618lXWz1M6GXsUqSAe8HGIAbYTUPAxNhvtv+cZcOie7Qz6EjKPNi4WMEcswUMiGJFEfk+Q15CeWA==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/cloud-assembly-schema': 2.101.1 + '@aws-cdk/cloud-assembly-schema': 2.110.1 dependencies: - '@aws-cdk/cloud-assembly-schema': 2.101.1 + '@aws-cdk/cloud-assembly-schema': 2.110.1 semver: 7.5.4 dev: true bundledDependencies: - semver + /@aws-cdk/service-spec-types@0.0.29: + resolution: {integrity: sha512-qvt2dV2QuqtxzY6l8ZBuxKA965sFZH72pCcaxM9unGCFuF5ucrxeh9Zc4AYsma/MZCCbMx2i/+fvjCVzJX9soQ==} + dependencies: + '@cdklabs/tskb': 0.0.3 + dev: true + /@aws-crypto/crc32@3.0.0: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: @@ -1622,8 +1652,8 @@ packages: to-fast-properties: 2.0.0 dev: true - /@balena/dockerignore@1.0.2: - resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} + /@cdklabs/tskb@0.0.3: + resolution: {integrity: sha512-JR+MuD4awAXvutu7HArephXfZm09GPTaSAQUqNcJB5+ZENRm4kV+L6vJL6Tn1xHjCcHksO+HAqj3gYtm5K94vA==} dev: true /@commitlint/cli@18.4.3(typescript@5.3.2): @@ -1655,6 +1685,7 @@ packages: /@commitlint/config-validator@18.4.3: resolution: {integrity: sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA==} engines: {node: '>=v18'} + requiresBuild: true dependencies: '@commitlint/types': 18.4.3 ajv: 8.12.0 @@ -1675,6 +1706,7 @@ packages: /@commitlint/execute-rule@18.4.3: resolution: {integrity: sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q==} engines: {node: '>=v18'} + requiresBuild: true dev: true /@commitlint/format@18.4.3: @@ -1751,6 +1783,7 @@ packages: /@commitlint/resolve-extends@18.4.3: resolution: {integrity: sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw==} engines: {node: '>=v18'} + requiresBuild: true dependencies: '@commitlint/config-validator': 18.4.3 '@commitlint/types': 18.4.3 @@ -2541,96 +2574,96 @@ packages: resolution: {integrity: sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA==} dev: true - /@rollup/rollup-android-arm-eabi@4.5.1: - resolution: {integrity: sha512-YaN43wTyEBaMqLDYeze+gQ4ZrW5RbTEGtT5o1GVDkhpdNcsLTnLRcLccvwy3E9wiDKWg9RIhuoy3JQKDRBfaZA==} + /@rollup/rollup-android-arm-eabi@4.5.2: + resolution: {integrity: sha512-ee7BudTwwrglFYSc3UnqInDDjCLWHKrFmGNi4aK7jlEyg4CyPa1DCMrZfsN1O13YT76UFEqXz2CoN7BCGpUlJw==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.5.1: - resolution: {integrity: sha512-n1bX+LCGlQVuPlCofO0zOKe1b2XkFozAVRoczT+yxWZPGnkEAKTTYVOGZz8N4sKuBnKMxDbfhUsB1uwYdup/sw==} + /@rollup/rollup-android-arm64@4.5.2: + resolution: {integrity: sha512-xOuhj9HHtn8128ir8veoQsBbAUBasDbHIBniYTEx02pAmu9EXL+ZjJqngnNEy6ZgZ4h1JwL33GMNu3yJL5Mzow==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.5.1: - resolution: {integrity: sha512-QqJBumdvfBqBBmyGHlKxje+iowZwrHna7pokj/Go3dV1PJekSKfmjKrjKQ/e6ESTGhkfPNLq3VXdYLAc+UtAQw==} + /@rollup/rollup-darwin-arm64@4.5.2: + resolution: {integrity: sha512-NTGJWoL8bKyqyWFn9/RzSv4hQ4wTbaAv0lHHRwf4OnpiiP4P8W0jiXbm8Nc5BCXKmWAwuvJY82mcIU2TayC20g==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.5.1: - resolution: {integrity: sha512-RrkDNkR/P5AEQSPkxQPmd2ri8WTjSl0RYmuFOiEABkEY/FSg0a4riihWQGKDJ4LnV9gigWZlTMx2DtFGzUrYQw==} + /@rollup/rollup-darwin-x64@4.5.2: + resolution: {integrity: sha512-hlKqj7bpPvU15sZo4za14u185lpMzdwWLMc9raMqPK4wywt0wR23y1CaVQ4oAFXat3b5/gmRntyfpwWTKl+vvA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.5.1: - resolution: {integrity: sha512-ZFPxvUZmE+fkB/8D9y/SWl/XaDzNSaxd1TJUSE27XAKlRpQ2VNce/86bGd9mEUgL3qrvjJ9XTGwoX0BrJkYK/A==} + /@rollup/rollup-linux-arm-gnueabihf@4.5.2: + resolution: {integrity: sha512-7ZIZx8c3u+pfI0ohQsft/GywrXez0uR6dUP0JhBuCK3sFO5TfdLn/YApnVkvPxuTv3+YKPIZend9Mt7Cz6sS3Q==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.5.1: - resolution: {integrity: sha512-FEuAjzVIld5WVhu+M2OewLmjmbXWd3q7Zcx+Rwy4QObQCqfblriDMMS7p7+pwgjZoo9BLkP3wa9uglQXzsB9ww==} + /@rollup/rollup-linux-arm64-gnu@4.5.2: + resolution: {integrity: sha512-7Pk/5mO11JW/cH+a8lL/i0ZxmRGrbpYqN0VwO2DHhU+SJWWOH2zE1RAcPaj8KqiwC8DCDIJOSxjV9+9lLb6aeA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.5.1: - resolution: {integrity: sha512-f5Gs8WQixqGRtI0Iq/cMqvFYmgFzMinuJO24KRfnv7Ohi/HQclwrBCYkzQu1XfLEEt3DZyvveq9HWo4bLJf1Lw==} + /@rollup/rollup-linux-arm64-musl@4.5.2: + resolution: {integrity: sha512-KrRnuG5phJx756e62wxvWH2e+TK84MP2IVuPwfge+GBvWqIUfVzFRn09TKruuQBXzZp52Vyma7FjMDkwlA9xpg==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.5.1: - resolution: {integrity: sha512-CWPkPGrFfN2vj3mw+S7A/4ZaU3rTV7AkXUr08W9lNP+UzOvKLVf34tWCqrKrfwQ0NTk5GFqUr2XGpeR2p6R4gw==} + /@rollup/rollup-linux-x64-gnu@4.5.2: + resolution: {integrity: sha512-My+53GasPa2D2tU5dXiyHYwrELAUouSfkNlZ3bUKpI7btaztO5vpALEs3mvFjM7aKTvEbc7GQckuXeXIDKQ0fg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.5.1: - resolution: {integrity: sha512-ZRETMFA0uVukUC9u31Ed1nx++29073goCxZtmZARwk5aF/ltuENaeTtRVsSQzFlzdd4J6L3qUm+EW8cbGt0CKQ==} + /@rollup/rollup-linux-x64-musl@4.5.2: + resolution: {integrity: sha512-/f0Q6Sc+Vw54Ws6N8fxaEe4R7at3b8pFyv+O/F2VaQ4hODUJcRUcCBJh6zuqtgQQt7w845VTkGLFgWZkP3tUoQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.5.1: - resolution: {integrity: sha512-ihqfNJNb2XtoZMSCPeoo0cYMgU04ksyFIoOw5S0JUVbOhafLot+KD82vpKXOurE2+9o/awrqIxku9MRR9hozHQ==} + /@rollup/rollup-win32-arm64-msvc@4.5.2: + resolution: {integrity: sha512-NCKuuZWLht6zj7s6EIFef4BxCRX1GMr83S2W4HPCA0RnJ4iHE4FS1695q6Ewoa6A9nFjJe1//yUu0kgBU07Edw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.5.1: - resolution: {integrity: sha512-zK9MRpC8946lQ9ypFn4gLpdwr5a01aQ/odiIJeL9EbgZDMgbZjjT/XzTqJvDfTmnE1kHdbG20sAeNlpc91/wbg==} + /@rollup/rollup-win32-ia32-msvc@4.5.2: + resolution: {integrity: sha512-J5zL3riR4AOyU/J3M/i4k/zZ8eP1yT+nTmAKztCXJtnI36jYH0eepvob22mAQ/kLwfsK2TB6dbyVY1F8c/0H5A==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.5.1: - resolution: {integrity: sha512-5I3Nz4Sb9TYOtkRwlH0ow+BhMH2vnh38tZ4J4mggE48M/YyJyp/0sPSxhw1UeS1+oBgQ8q7maFtSeKpeRJu41Q==} + /@rollup/rollup-win32-x64-msvc@4.5.2: + resolution: {integrity: sha512-pL0RXRHuuGLhvs7ayX/SAHph1hrDPXOM5anyYUQXWJEENxw3nfHkzv8FfVlEVcLyKPAEgDRkd6RKZq2SMqS/yg==} cpu: [x64] os: [win32] requiresBuild: true @@ -2641,6 +2674,23 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@skeletonlabs/skeleton@2.5.1(svelte@4.2.7): + resolution: {integrity: sha512-llzzKr6PQV1MUsJybdo3Z0SaVwm00KDf8DKhlVTt3X3fbCjIbS9rK6sLzJKZO01L/cQYtAzdVXv9CxALtIuy0w==} + peerDependencies: + svelte: ^3.56.0 || ^4.0.0 + dependencies: + esm-env: 1.0.0 + svelte: 4.2.7 + dev: true + + /@skeletonlabs/tw-plugin@0.2.4(tailwindcss@3.3.5): + resolution: {integrity: sha512-DmOFMV6jhhvnub/TANB62nJJqxfMBby5Kxwe/Mn3DTxHuJLZj8B47Ta2K5sl/or2B8MaMfny8ocvPAzd6lrMtQ==} + peerDependencies: + tailwindcss: '>=3.0.0' + dependencies: + tailwindcss: 3.3.5 + dev: true + /@smithy/abort-controller@1.1.0: resolution: {integrity: sha512-5imgGUlZL4dW4YWdMYAKLmal9ny/tlenM81QZY7xYyb76z9Z/QOg7oM5Ak9HQl8QfFTlGVWwcMXl+54jroRgEQ==} engines: {node: '>=14.0.0'} @@ -3263,11 +3313,11 @@ packages: peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': 1.27.6(svelte@4.2.7)(vite@4.5.0) + '@sveltejs/kit': 1.27.6(svelte@4.2.7)(vite@5.0.2) import-meta-resolve: 4.0.0 dev: true - /@sveltejs/kit@1.27.6(svelte@4.2.7)(vite@4.5.0): + /@sveltejs/kit@1.27.6(svelte@4.2.7)(vite@5.0.2): resolution: {integrity: sha512-GsjTkMbKzXdbeRg0tk8S7HNShQ4879ftRr0ZHaZfjbig1xQwG57Bvcm9U9/mpLJtCapLbLWUnygKrgcLISLC8A==} engines: {node: ^16.14 || >=18} hasBin: true @@ -3276,7 +3326,7 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@4.5.0) + '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@5.0.2) '@types/cookie': 0.5.4 cookie: 0.5.0 devalue: 4.3.2 @@ -3290,12 +3340,12 @@ packages: svelte: 4.2.7 tiny-glob: 0.2.9 undici: 5.26.5 - vite: 4.5.0(@types/node@18.18.12) + vite: 5.0.2(@types/node@20.10.0) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@4.5.0): + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@5.0.2): resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -3303,30 +3353,30 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@4.5.0) + '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@5.0.2) debug: 4.3.4 svelte: 4.2.7 - vite: 4.5.0(@types/node@18.18.12) + vite: 5.0.2(@types/node@20.10.0) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.7)(vite@4.5.0): + /@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.7)(vite@5.0.2): resolution: {integrity: sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@4.5.0) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@5.0.2) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.5 svelte: 4.2.7 svelte-hmr: 0.15.3(svelte@4.2.7) - vite: 4.5.0(@types/node@18.18.12) - vitefu: 0.2.5(vite@4.5.0) + vite: 5.0.2(@types/node@20.10.0) + vitefu: 0.2.5(vite@5.0.2) transitivePeerDependencies: - supports-color dev: true @@ -3377,6 +3427,12 @@ packages: undici-types: 5.26.5 dev: true + /@types/node@20.10.0: + resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true @@ -3392,7 +3448,7 @@ packages: /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 18.18.12 + '@types/node': 20.10.0 dev: true /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2): @@ -3727,6 +3783,10 @@ packages: engines: {node: '>=12'} dev: true + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -3780,6 +3840,10 @@ packages: zip-stream: 4.1.1 dev: true + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -3924,45 +3988,28 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /autoprefixer@10.4.16(postcss@8.4.31): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.1 + caniuse-lite: 1.0.30001564 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /aws-cdk-lib@2.101.1(constructs@10.2.69): - resolution: {integrity: sha512-kKrJ0CcD82IyohjB3TRy34whf22GI6Y2bIrkBmui+fCb2t13+ToJb7zKBRmL6C090OsoiU/q+H6/WIZWOoYDvQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - constructs: ^10.0.0 - dependencies: - '@aws-cdk/asset-awscli-v1': 2.2.201 - '@aws-cdk/asset-kubectl-v20': 2.1.2 - '@aws-cdk/asset-node-proxy-agent-v6': 2.0.1 - '@balena/dockerignore': 1.0.2 - case: 1.6.3 - constructs: 10.2.69 - fs-extra: 11.1.1 - ignore: 5.3.0 - jsonschema: 1.4.1 - minimatch: 3.1.2 - punycode: 2.3.1 - semver: 7.5.4 - table: 6.8.1 - yaml: 1.10.2 - dev: true - bundledDependencies: - - '@balena/dockerignore' - - case - - fs-extra - - ignore - - jsonschema - - minimatch - - punycode - - semver - - table - - yaml - - /aws-cdk-lib@2.110.1(constructs@10.2.69): + /aws-cdk-lib@2.110.1(constructs@10.3.0): resolution: {integrity: sha512-Z+42Jc/KSKFdBOpEv4LK9tz6kQUdVvUBquIYhLajam3aGblkonM0/FgexvAqy8iGwUaVEIpVyBTZUP2/VUMalg==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -3971,7 +4018,7 @@ packages: '@aws-cdk/asset-awscli-v1': 2.2.201 '@aws-cdk/asset-kubectl-v20': 2.1.2 '@aws-cdk/asset-node-proxy-agent-v6': 2.0.1 - constructs: 10.2.69 + constructs: 10.3.0 dev: true bundledDependencies: - '@balena/dockerignore' @@ -4144,7 +4191,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001564 - electron-to-chromium: 1.4.592 + electron-to-chromium: 1.4.594 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true @@ -4161,7 +4208,7 @@ packages: resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} dependencies: base64-js: 1.5.1 - ieee754: 1.2.1 + ieee754: 1.1.13 isarray: 1.0.0 dev: true @@ -4226,6 +4273,11 @@ packages: engines: {node: '>=6'} dev: true + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -4244,18 +4296,13 @@ packages: resolution: {integrity: sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==} dev: true - /case@1.6.3: - resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} - engines: {node: '>= 0.8.0'} - dev: true - - /cdk-assets@2.101.1: - resolution: {integrity: sha512-ixLlEKJsO+7jqBSYVz+BdW8E3/wO9DDZqJStwC88aKBSpqlKDECv89IBgQ6GQFQ2cjXfZxhkLFNZCLukvIvxRw==} + /cdk-assets@2.110.1: + resolution: {integrity: sha512-lquExNYQ1gFw3i+FFKdeNo+LX7JiN/DdpAMrNEIEzXAIkkGiJiGX70Dc/AJ5PuBTuF87CqD9FvFy7099bRnp9Q==} engines: {node: '>= 14.15.0'} hasBin: true dependencies: - '@aws-cdk/cloud-assembly-schema': 2.101.1 - '@aws-cdk/cx-api': 2.101.1(@aws-cdk/cloud-assembly-schema@2.101.1) + '@aws-cdk/cloud-assembly-schema': 2.110.1 + '@aws-cdk/cx-api': 2.110.1(@aws-cdk/cloud-assembly-schema@2.110.1) archiver: 5.3.2 aws-sdk: 2.1502.0 glob: 7.2.3 @@ -4302,10 +4349,6 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - dev: true - /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: @@ -4351,8 +4394,8 @@ packages: restore-cursor: 4.0.0 dev: true - /cli-spinners@2.9.1: - resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} dev: true @@ -4445,6 +4488,11 @@ packages: engines: {node: '>=16'} dev: true + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -4454,7 +4502,7 @@ packages: resolution: {integrity: sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==} dependencies: leven: 2.1.0 - minimist: 1.2.8 + minimist: 1.2.6 dev: true /commitizen@4.3.0(typescript@5.3.2): @@ -4527,8 +4575,8 @@ packages: semver: 7.5.4 dev: true - /constructs@10.2.69: - resolution: {integrity: sha512-0AiM/uQe5Uk6JVe/62oolmSN2MjbFQkOlYrM3fFGZLKuT+g7xlAI10EebFhyCcZwI2JAcWuWCmmCAyCothxjuw==} + /constructs@10.3.0: + resolution: {integrity: sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==} engines: {node: '>= 16.14.0'} dev: true @@ -4598,6 +4646,7 @@ packages: /cosmiconfig-typescript-loader@5.0.0(@types/node@18.18.12)(cosmiconfig@8.3.6)(typescript@5.3.2): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} + requiresBuild: true peerDependencies: '@types/node': '*' cosmiconfig: '>=8.2' @@ -4612,6 +4661,7 @@ packages: /cosmiconfig@8.3.6(typescript@5.3.2): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} + requiresBuild: true peerDependencies: typescript: '>=4.9.5' peerDependenciesMeta: @@ -4648,10 +4698,6 @@ packages: which: 2.0.2 dev: true - /crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - dev: true - /crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} dev: true @@ -4874,6 +4920,10 @@ packages: ts-interface-checker: 1.0.0 dev: true + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4891,6 +4941,10 @@ packages: path-type: 4.0.0 dev: true + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -4961,8 +5015,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.4.592: - resolution: {integrity: sha512-D3NOkROIlF+d5ixnz7pAf3Lu/AuWpd6AYgI9O67GQXMXTcCP1gJQRotOq35eQy5Sb4hez33XH1YdTtILA7Udww==} + /electron-to-chromium@1.4.594: + resolution: {integrity: sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==} dev: true /emoji-regex@8.0.0: @@ -4991,6 +5045,7 @@ packages: /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + requiresBuild: true dependencies: is-arrayish: 0.2.1 dev: true @@ -5683,6 +5738,10 @@ packages: engines: {node: '>= 0.6'} dev: true + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -5842,6 +5901,17 @@ packages: path-scurry: 1.10.1 dev: true + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -6152,7 +6222,7 @@ packages: ink: '>=4.0.0' react: '>=18.0.0' dependencies: - cli-spinners: 2.9.1 + cli-spinners: 2.9.2 ink: 4.4.1(react@18.2.0) react: 18.2.0 dev: true @@ -6254,6 +6324,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + requiresBuild: true dev: true /is-bigint@1.0.4: @@ -6277,10 +6348,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -6574,6 +6641,7 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + requiresBuild: true dev: true /json-schema-traverse@0.4.1: @@ -6709,6 +6777,11 @@ packages: engines: {node: '>=10'} dev: true + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + dev: true + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true @@ -6813,6 +6886,7 @@ packages: /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + requiresBuild: true dev: true /lodash.snakecase@4.1.1: @@ -6833,6 +6907,7 @@ packages: /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + requiresBuild: true dev: true /lodash.upperfirst@4.3.1: @@ -6939,14 +7014,6 @@ packages: engines: {node: '>=8'} dev: true - /md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - dev: true - /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true @@ -7152,7 +7219,7 @@ packages: duplexify: 4.1.2 help-me: 3.0.0 inherits: 2.0.4 - minimist: 1.2.8 + minimist: 1.2.6 mqtt-packet: 6.10.0 pump: 3.0.0 readable-stream: 3.6.2 @@ -7220,6 +7287,14 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -7263,6 +7338,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -7286,11 +7366,21 @@ packages: - supports-color dev: true + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + /object-hash@2.2.0: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} engines: {node: '>= 6'} dev: true + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true @@ -7411,7 +7501,7 @@ packages: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.1 + cli-spinners: 2.9.2 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -7425,7 +7515,7 @@ packages: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 - cli-spinners: 2.9.1 + cli-spinners: 2.9.2 is-interactive: 2.0.0 is-unicode-supported: 1.3.0 log-symbols: 5.1.0 @@ -7595,6 +7685,16 @@ packages: hasBin: true dev: true + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: @@ -7626,6 +7726,28 @@ packages: fsevents: 2.3.2 dev: true + /postcss-import@15.1.0(postcss@8.4.31): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.31): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.31 + dev: true + /postcss-load-config@3.1.4(postcss@8.4.31): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -7643,6 +7765,33 @@ packages: yaml: 1.10.2 dev: true + /postcss-load-config@4.0.2(postcss@8.4.31): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.0.0 + postcss: 8.4.31 + yaml: 2.3.4 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.31): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: true + /postcss-safe-parser@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} @@ -7669,6 +7818,10 @@ packages: util-deprecate: 1.0.2 dev: true + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -7856,6 +8009,12 @@ packages: loose-envify: 1.4.0 dev: true + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -8024,31 +8183,23 @@ packages: glob: 7.2.3 dev: true - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /rollup@4.5.1: - resolution: {integrity: sha512-0EQribZoPKpb5z1NW/QYm3XSR//Xr8BeEXU49Lc/mQmpmVVG5jPUVrpc2iptup/0WMrY9mzas0fxH+TjYvG2CA==} + /rollup@4.5.2: + resolution: {integrity: sha512-CRK1uoROBfkcqrZKyaFcqCcZWNsvJ6yVYZkqTlRocZhO2s5yER6Z3f/QaYtO8RGyloPnmhwgzuPQpNGeK210xQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.5.1 - '@rollup/rollup-android-arm64': 4.5.1 - '@rollup/rollup-darwin-arm64': 4.5.1 - '@rollup/rollup-darwin-x64': 4.5.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.5.1 - '@rollup/rollup-linux-arm64-gnu': 4.5.1 - '@rollup/rollup-linux-arm64-musl': 4.5.1 - '@rollup/rollup-linux-x64-gnu': 4.5.1 - '@rollup/rollup-linux-x64-musl': 4.5.1 - '@rollup/rollup-win32-arm64-msvc': 4.5.1 - '@rollup/rollup-win32-ia32-msvc': 4.5.1 - '@rollup/rollup-win32-x64-msvc': 4.5.1 + '@rollup/rollup-android-arm-eabi': 4.5.2 + '@rollup/rollup-android-arm64': 4.5.2 + '@rollup/rollup-darwin-arm64': 4.5.2 + '@rollup/rollup-darwin-x64': 4.5.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.5.2 + '@rollup/rollup-linux-arm64-gnu': 4.5.2 + '@rollup/rollup-linux-arm64-musl': 4.5.2 + '@rollup/rollup-linux-x64-gnu': 4.5.2 + '@rollup/rollup-linux-x64-musl': 4.5.2 + '@rollup/rollup-win32-arm64-msvc': 4.5.2 + '@rollup/rollup-win32-ia32-msvc': 4.5.2 + '@rollup/rollup-win32-x64-msvc': 4.5.2 fsevents: 2.3.3 dev: true @@ -8352,21 +8503,22 @@ packages: engines: {node: '>= 10.x'} dev: true - /sst-aws-cdk@2.101.1: - resolution: {integrity: sha512-vGIQKCL6FJX7xe68hx47iPOZZtlf4YZk+EAcEL2p02FsVBJSvTg4mPIE1tsqrqXZmrYv4slAZNVmM5o+PYyzAA==} + /sst-aws-cdk@2.110.1-1: + resolution: {integrity: sha512-fCY0eoB625M6MRFn7Hf3PiANTWyclSzg7gLNCs9vzh4Z11ljU4f9pvM/wjXhv+xDJwOjIMPHyVAG6yo8rrdTOA==} engines: {node: '>= 14.15.0'} hasBin: true dependencies: archiver: 5.3.2 chalk: 4.1.2 + fs-extra: 9.1.0 promptly: 3.2.0 yaml: 1.10.2 optionalDependencies: fsevents: 2.3.2 dev: true - /sst@2.36.2: - resolution: {integrity: sha512-6uGJlM7/1mUYTVJxcnmqAjKkELkKtOGewLFeEwdEZRpTnN/mu9Y+K1qr96oDE8FaLKwRfx9lpOl/Ejf3GxC0qg==} + /sst@2.36.6: + resolution: {integrity: sha512-N5LkreTzAKuQdph1TJVHa4EjR7R2Q571UJ+Jl6yk5/GDaRVgyBWhB4HxOmkOHghLHQu8SnGDPqnGCQJKilJPug==} hasBin: true peerDependencies: '@sls-next/lambda-at-edge': ^3.7.0 @@ -8374,12 +8526,12 @@ packages: '@sls-next/lambda-at-edge': optional: true dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.101.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.2.69) - '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.101.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.101.1-alpha.0)(aws-cdk-lib@2.101.1)(constructs@10.2.69) - '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.101.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.101.1-alpha.0)(aws-cdk-lib@2.101.1)(constructs@10.2.69) - '@aws-cdk/cloud-assembly-schema': 2.101.1 - '@aws-cdk/cloudformation-diff': 2.101.1 - '@aws-cdk/cx-api': 2.101.1(@aws-cdk/cloud-assembly-schema@2.101.1) + '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.3.0) + '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.110.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0)(aws-cdk-lib@2.110.1)(constructs@10.3.0) + '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.110.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0)(aws-cdk-lib@2.110.1)(constructs@10.3.0) + '@aws-cdk/cloud-assembly-schema': 2.110.1 + '@aws-cdk/cloudformation-diff': 2.110.1 + '@aws-cdk/cx-api': 2.110.1(@aws-cdk/cloud-assembly-schema@2.110.1) '@aws-crypto/sha256-js': 5.2.0 '@aws-sdk/client-cloudformation': 3.454.0 '@aws-sdk/client-ecs': 3.454.0 @@ -8404,17 +8556,17 @@ packages: '@smithy/signature-v4': 2.0.16 '@trpc/server': 9.16.0 adm-zip: 0.5.10 - aws-cdk-lib: 2.101.1(constructs@10.2.69) + aws-cdk-lib: 2.110.1(constructs@10.3.0) aws-iot-device-sdk: 2.2.13 aws-sdk: 2.1502.0 builtin-modules: 3.2.0 - cdk-assets: 2.101.1 + cdk-assets: 2.110.1 chalk: 5.3.0 chokidar: 3.5.3 ci-info: 3.9.0 colorette: 2.0.20 conf: 10.2.0 - constructs: 10.2.69 + constructs: 10.3.0 cross-spawn: 7.0.3 dendriform-immer-patch-optimiser: 2.1.3(immer@9.0.21) dotenv: 16.3.1 @@ -8436,9 +8588,9 @@ packages: ora: 6.3.1 react: 18.2.0 remeda: 1.29.0 - sst-aws-cdk: 2.101.1 + sst-aws-cdk: 2.110.1-1 tree-kill: 1.2.2 - undici: 5.27.2 + undici: 5.28.0 uuid: 9.0.1 ws: 8.14.2 yargs: 17.7.2 @@ -8608,6 +8760,20 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: true + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -8627,8 +8793,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-check@3.6.1(@babel/core@7.23.3)(postcss@8.4.31)(svelte@4.2.7): - resolution: {integrity: sha512-v+mmXKp+hZ+mZ/n9MQpAe+0q/GhRKXmhQOkWYAdRozXRkPiuLOdhsjp9KtNBpP0TRqvvrB0cwWL5HUjCLpI46g==} + /svelte-check@3.6.2(@babel/core@7.23.3)(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7): + resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 @@ -8640,7 +8806,7 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.7 - svelte-preprocess: 5.1.1(@babel/core@7.23.3)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2) + svelte-preprocess: 5.1.1(@babel/core@7.23.3)(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2) typescript: 5.3.2 transitivePeerDependencies: - '@babel/core' @@ -8680,11 +8846,11 @@ packages: svelte: 4.2.7 dev: true - /svelte-kit-sst@2.36.3: - resolution: {integrity: sha512-lvOzfBuyvjQfsBtzqfawcbvSv8KMVPfIHgaig14qTcU1AjY80ckvhMl3Hg+/Wtb/8IsyBgY5mSNp4jK6UgB6tw==} + /svelte-kit-sst@2.36.6: + resolution: {integrity: sha512-gR1iwtcVmaVUrKqG01mYqxE5tHRkfvaehkctsLgA6stn5stO46VrPd/pm6pdC0MGvq8WR8uNvALISmdDgLyXdA==} dev: true - /svelte-preprocess@5.1.1(@babel/core@7.23.3)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2): + /svelte-preprocess@5.1.1(@babel/core@7.23.3)(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2): resolution: {integrity: sha512-p/Dp4hmrBW5mrCCq29lEMFpIJT2FZsRlouxEc5qpbOmXRbaFs7clLs8oKPwD3xCFyZfv1bIhvOzpQkhMEVQdMw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -8727,6 +8893,7 @@ packages: detect-indent: 6.1.0 magic-string: 0.27.0 postcss: 8.4.31 + postcss-load-config: 4.0.2(postcss@8.4.31) sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.7 @@ -8771,6 +8938,37 @@ packages: strip-ansi: 6.0.1 dev: true + /tailwindcss@3.3.5: + resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-import: 15.1.0(postcss@8.4.31) + postcss-js: 4.0.1(postcss@8.4.31) + postcss-load-config: 4.0.2(postcss@8.4.31) + postcss-nested: 6.0.1(postcss@8.4.31) + postcss-selector-parser: 6.0.13 + resolve: 1.22.8 + sucrase: 3.34.0 + transitivePeerDependencies: + - ts-node + dev: true + /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -8791,6 +8989,19 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: @@ -8875,6 +9086,10 @@ packages: typescript: 5.3.2 dev: true + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + /ts-interface-checker@1.0.0: resolution: {integrity: sha512-yUeWbFBDiwPodNqrqpvQpGWheL6PvNu2/pVAb9yy2vzdkkflCgwVA4U2akByPCXzYTum3/5/nB92yKuiLpSo/Q==} dev: true @@ -9032,8 +9247,8 @@ packages: '@fastify/busboy': 2.1.0 dev: true - /undici@5.27.2: - resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} + /undici@5.28.0: + resolution: {integrity: sha512-gM12DkXhlAc5+/TPe60iy9P6ETgVfqTuRJ6aQ4w8RYu0MqKuXhaq3/b86GfzDQnNA3NUO6aUNdvevrKH59D0Nw==} engines: {node: '>=14.0'} dependencies: '@fastify/busboy': 2.1.0 @@ -9133,7 +9348,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@18.18.12): + /vite-node@0.34.6(@types/node@20.10.0): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -9143,7 +9358,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.2(@types/node@18.18.12) + vite: 5.0.2(@types/node@20.10.0) transitivePeerDependencies: - '@types/node' - less @@ -9155,43 +9370,7 @@ packages: - terser dev: true - /vite@4.5.0(@types/node@18.18.12): - resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 18.18.12 - esbuild: 0.18.13 - postcss: 8.4.31 - rollup: 3.29.4 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite@5.0.2(@types/node@18.18.12): + /vite@5.0.2(@types/node@20.10.0): resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -9219,15 +9398,15 @@ packages: terser: optional: true dependencies: - '@types/node': 18.18.12 + '@types/node': 20.10.0 esbuild: 0.19.7 postcss: 8.4.31 - rollup: 4.5.1 + rollup: 4.5.2 optionalDependencies: fsevents: 2.3.3 dev: true - /vitefu@0.2.5(vite@4.5.0): + /vitefu@0.2.5(vite@5.0.2): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -9235,7 +9414,7 @@ packages: vite: optional: true dependencies: - vite: 4.5.0(@types/node@18.18.12) + vite: 5.0.2(@types/node@20.10.0) dev: true /vitest@0.34.6: @@ -9271,7 +9450,7 @@ packages: dependencies: '@types/chai': 4.3.11 '@types/chai-subset': 1.3.5 - '@types/node': 18.18.12 + '@types/node': 20.10.0 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -9290,8 +9469,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 5.0.2(@types/node@18.18.12) - vite-node: 0.34.6(@types/node@18.18.12) + vite: 5.0.2(@types/node@20.10.0) + vite-node: 0.34.6(@types/node@20.10.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..c2f6d716 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,13 @@ +import { autoprefixer } from "autoprefixer"; +import { tailwindcss } from "tailwindcss"; + +const config = { + plugins: [ + //Some plugins, like tailwindcss/nesting, need to run before Tailwind, + tailwindcss(), + //But others, like autoprefixer, need to run after, + autoprefixer, + ], +}; + +module.exports = config; diff --git a/src/app.html b/src/app.html index 84ffad16..19da6311 100644 --- a/src/app.html +++ b/src/app.html @@ -6,7 +6,7 @@ %sveltekit.head% - +
%sveltekit.body%
diff --git a/src/app.pcss b/src/app.pcss new file mode 100644 index 00000000..5cdd08ae --- /dev/null +++ b/src/app.pcss @@ -0,0 +1,7 @@ +/* Write your global styles here, in PostCSS syntax */ +@tailwind base; +@tailwind base; +@tailwind components; +@tailwind utilities; +@tailwind components; +@tailwind utilities; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 00000000..d4ebd0e1 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,15 @@ + + + + + + diff --git a/svelte.config.js b/svelte.config.js index 3e4aca87..f3d3076b 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -3,7 +3,7 @@ import adapter from "svelte-kit-sst"; /** @type {import('@sveltejs/kit').Config} */ const config = { - preprocess: vitePreprocess(), + preprocess: [vitePreprocess({})], kit: { adapter: adapter(), }, diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000..f2a22be6 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,25 @@ +// @ts-check +import { join } from "path"; + +import { skeleton } from "@skeletonlabs/tw-plugin"; + +import { zotmeetTheme } from "./theme"; + +/** @type {import('tailwindcss').Config} */ +export default { + // Opt for dark mode to be handled via the class method + darkMode: "class", + content: [ + "./src/**/*.{html,js,svelte,ts}", + // Append the path to the Skeleton package + join(require.resolve("@skeletonlabs/skeleton"), "../**/*.{html,js,svelte,ts}"), + ], + theme: { + extend: {}, + }, + plugins: [ + skeleton({ + themes: { custom: [zotmeetTheme] }, + }), + ], +}; diff --git a/theme.js b/theme.js new file mode 100644 index 00000000..6725a861 --- /dev/null +++ b/theme.js @@ -0,0 +1,101 @@ +export const zotmeetTheme = { + name: "zotmeet-theme", + properties: { + // =~= Theme Properties =~= + "--theme-font-family-base": `system-ui`, + "--theme-font-family-heading": `system-ui`, + "--theme-font-color-base": "0 0 0", + "--theme-font-color-dark": "255 255 255", + "--theme-rounded-base": "9999px", + "--theme-rounded-container": "8px", + "--theme-border-base": "1px", + // =~= Theme On-X Colors =~= + "--on-primary": "0 0 0", + "--on-secondary": "0 0 0", + "--on-tertiary": "0 0 0", + "--on-success": "255 255 255", + "--on-warning": "255 255 255", + "--on-error": "255 255 255", + "--on-surface": "0 0 0", + // =~= Theme Colors =~= + // primary | #7f9cd7 + "--color-primary-50": "236 240 249", // #ecf0f9 + "--color-primary-100": "229 235 247", // #e5ebf7 + "--color-primary-200": "223 230 245", // #dfe6f5 + "--color-primary-300": "204 215 239", // #ccd7ef + "--color-primary-400": "165 186 227", // #a5bae3 + "--color-primary-500": "127 156 215", // #7f9cd7 + "--color-primary-600": "114 140 194", // #728cc2 + "--color-primary-700": "95 117 161", // #5f75a1 + "--color-primary-800": "76 94 129", // #4c5e81 + "--color-primary-900": "62 76 105", // #3e4c69 + // secondary | #7c6dc9 + "--color-secondary-50": "235 233 247", // #ebe9f7 + "--color-secondary-100": "229 226 244", // #e5e2f4 + "--color-secondary-200": "222 219 242", // #dedbf2 + "--color-secondary-300": "203 197 233", // #cbc5e9 + "--color-secondary-400": "163 153 217", // #a399d9 + "--color-secondary-500": "124 109 201", // #7c6dc9 + "--color-secondary-600": "112 98 181", // #7062b5 + "--color-secondary-700": "93 82 151", // #5d5297 + "--color-secondary-800": "74 65 121", // #4a4179 + "--color-secondary-900": "61 53 98", // #3d3562 + // tertiary | #729597 + "--color-tertiary-50": "234 239 239", // #eaefef + "--color-tertiary-100": "227 234 234", // #e3eaea + "--color-tertiary-200": "220 229 229", // #dce5e5 + "--color-tertiary-300": "199 213 213", // #c7d5d5 + "--color-tertiary-400": "156 181 182", // #9cb5b6 + "--color-tertiary-500": "114 149 151", // #729597 + "--color-tertiary-600": "103 134 136", // #678688 + "--color-tertiary-700": "86 112 113", // #567071 + "--color-tertiary-800": "68 89 91", // #44595b + "--color-tertiary-900": "56 73 74", // #38494a + // success | #0d5912 + "--color-success-50": "219 230 219", // #dbe6db + "--color-success-100": "207 222 208", // #cfded0 + "--color-success-200": "195 214 196", // #c3d6c4 + "--color-success-300": "158 189 160", // #9ebda0 + "--color-success-400": "86 139 89", // #568b59 + "--color-success-500": "13 89 18", // #0d5912 + "--color-success-600": "12 80 16", // #0c5010 + "--color-success-700": "10 67 14", // #0a430e + "--color-success-800": "8 53 11", // #08350b + "--color-success-900": "6 44 9", // #062c09 + // warning | #7e7020 + "--color-warning-50": "236 234 222", // #eceade + "--color-warning-100": "229 226 210", // #e5e2d2 + "--color-warning-200": "223 219 199", // #dfdbc7 + "--color-warning-300": "203 198 166", // #cbc6a6 + "--color-warning-400": "165 155 99", // #a59b63 + "--color-warning-500": "126 112 32", // #7e7020 + "--color-warning-600": "113 101 29", // #71651d + "--color-warning-700": "95 84 24", // #5f5418 + "--color-warning-800": "76 67 19", // #4c4313 + "--color-warning-900": "62 55 16", // #3e3710 + // error | #a41e1e + "--color-error-50": "241 221 221", // #f1dddd + "--color-error-100": "237 210 210", // #edd2d2 + "--color-error-200": "232 199 199", // #e8c7c7 + "--color-error-300": "219 165 165", // #dba5a5 + "--color-error-400": "191 98 98", // #bf6262 + "--color-error-500": "164 30 30", // #a41e1e + "--color-error-600": "148 27 27", // #941b1b + "--color-error-700": "123 23 23", // #7b1717 + "--color-error-800": "98 18 18", // #621212 + "--color-error-900": "80 15 15", // #500f0f + // surface | #9c9c9c + "--color-surface-50": "240 240 240", // #f0f0f0 + "--color-surface-100": "235 235 235", // #ebebeb + "--color-surface-200": "230 230 230", // #e6e6e6 + "--color-surface-300": "215 215 215", // #d7d7d7 + "--color-surface-400": "186 186 186", // #bababa + "--color-surface-500": "156 156 156", // #9c9c9c + "--color-surface-600": "140 140 140", // #8c8c8c + "--color-surface-700": "117 117 117", // #757575 + "--color-surface-800": "94 94 94", // #5e5e5e + "--color-surface-900": "76 76 76", // #4c4c4c + }, +}; + +export default zotmeetTheme; From 7d6fb0a4c1cd537c05e7f8c519f21779c0533337 Mon Sep 17 00:00:00 2001 From: Minh Nguyen <64875104+MinhxNguyen7@users.noreply.github.com> Date: Sat, 25 Nov 2023 06:06:17 +0000 Subject: [PATCH 002/115] =?UTF-8?q?fix:=20=F0=9F=90=9B=20import=20errors?= =?UTF-8?q?=20in=20postcss.config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postcss.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/postcss.config.js b/postcss.config.js index c2f6d716..16c54321 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,5 +1,5 @@ -import { autoprefixer } from "autoprefixer"; -import { tailwindcss } from "tailwindcss"; +import autoprefixer from "autoprefixer"; +import tailwindcss from "tailwindcss"; const config = { plugins: [ From 10b42fc5b8b943855b46cf4829ca4393b8c8ba4d Mon Sep 17 00:00:00 2001 From: Eddy Chen <89349085+ecxyzzy@users.noreply.github.com> Date: Fri, 24 Nov 2023 22:44:16 -0800 Subject: [PATCH 003/115] =?UTF-8?q?fix:=20=F0=9F=90=9B=20use=20esm=20expor?= =?UTF-8?q?t=20in=20postcss=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postcss.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postcss.config.js b/postcss.config.js index 16c54321..01dd2546 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -10,4 +10,4 @@ const config = { ], }; -module.exports = config; +export default config; From f09f20c9c118a31b0c08c9776952467aa30dc2f8 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:34:57 -0800 Subject: [PATCH 004/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20test?= =?UTF-8?q?=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - we don't have actual tests --- tests/test.ts | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 tests/test.ts diff --git a/tests/test.ts b/tests/test.ts deleted file mode 100644 index d8e96c49..00000000 --- a/tests/test.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { expect, test } from "@playwright/test"; - -// You'll write tests eventually, right? - -test("index page has expected h1", async ({ page }) => { - await page.goto("/"); - await expect(page.getByRole("heading", { name: "Welcome to SvelteKit" })).toBeVisible(); -}); - -// ...right? From ca7143a78c5f9e48aa7db36afc0c62123f8db7c7 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:35:32 -0800 Subject: [PATCH 005/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20playwr?= =?UTF-8?q?ight=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - we're not using it (atm) --- playwright.config.ts | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 playwright.config.ts diff --git a/playwright.config.ts b/playwright.config.ts deleted file mode 100644 index 92e6d081..00000000 --- a/playwright.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { PlaywrightTestConfig } from "@playwright/test"; - -const config: PlaywrightTestConfig = { - webServer: { - command: "npm run build && npm run preview", - port: 4173, - }, - testDir: "tests", - testMatch: /(.+\.)?(test|spec)\.[jt]s/, -}; - -export default config; From f0847c46186ca62d839785aa75932ecf4e84d952 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:36:47 -0800 Subject: [PATCH 006/115] =?UTF-8?q?style:=20=F0=9F=8E=A8=20cleanup=20tailw?= =?UTF-8?q?ind=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tailwind.config.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tailwind.config.js b/tailwind.config.js index f2a22be6..b11b30a5 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,25 +1,25 @@ // @ts-check -import { join } from "path"; + +import { join } from "node:path"; import { skeleton } from "@skeletonlabs/tw-plugin"; import { zotmeetTheme } from "./theme"; -/** @type {import('tailwindcss').Config} */ -export default { - // Opt for dark mode to be handled via the class method +/** + * @type {import('tailwindcss').Config} + */ +const config = { darkMode: "class", content: [ "./src/**/*.{html,js,svelte,ts}", - // Append the path to the Skeleton package join(require.resolve("@skeletonlabs/skeleton"), "../**/*.{html,js,svelte,ts}"), ], - theme: { - extend: {}, - }, plugins: [ skeleton({ themes: { custom: [zotmeetTheme] }, }), ], }; + +export default config; From d80e309e8f9c7867e3e75033f9c3843eec1a6600 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:40:42 -0800 Subject: [PATCH 007/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20cleanup=20packa?= =?UTF-8?q?ge.lock=20dependencies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 27 +- pnpm-lock.yaml | 3875 +--------------------------------------------- svelte.config.js | 6 +- 3 files changed, 74 insertions(+), 3834 deletions(-) diff --git a/package.json b/package.json index 2382fb8b..72683428 100644 --- a/package.json +++ b/package.json @@ -5,33 +5,23 @@ "type": "module", "scripts": { "build": "vite build", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "dev": "sst bind vite dev", + "check": "svelte-check", + "dev": "vite", "format": "prettier --write .", "postinstall": "husky install && prisma generate && svelte-kit sync", "lint": "eslint --quiet --fix .", - "preview": "vite preview", - "sst:deploy": "sst deploy", - "sst:dev": "sst dev", - "start": "vite", - "test": "pnpm test:integration && pnpm test:unit", - "test:integration": "playwright test", - "test:unit": "vitest" + "preview": "vite preview" }, "dependencies": { - "@lucia-auth/adapter-prisma": "3.0.2", - "@prisma/client": "5.6.0", - "lucia": "2.7.4" + "@prisma/client": "5.6.0" }, "devDependencies": { "@commitlint/cli": "18.4.3", "@commitlint/config-conventional": "18.4.3", "@commitlint/types": "18.4.3", - "@playwright/test": "1.40.0", "@skeletonlabs/skeleton": "^2.5.1", "@skeletonlabs/tw-plugin": "^0.2.4", - "@sveltejs/adapter-auto": "2.1.1", + "@svelte.kit/adapter-aws": "^0.2.1", "@sveltejs/kit": "1.27.6", "@types/lint-staged": "13.2.2", "@types/node": "20.10.0", @@ -39,7 +29,6 @@ "@typescript-eslint/parser": "6.12.0", "autoprefixer": "^10.4.14", "aws-cdk-lib": "2.110.1", - "constructs": "10.3.0", "cz-conventional-changelog": "3.3.0", "devmoji": "2.3.0", "eslint": "8.54.0", @@ -55,14 +44,10 @@ "prettier-plugin-prisma": "5.0.0", "prettier-plugin-svelte": "3.1.2", "prisma": "5.6.0", - "sst": "2.36.6", "svelte": "4.2.7", "svelte-check": "3.6.2", - "svelte-kit-sst": "2.36.6", "tailwindcss": "^3.3.2", - "tslib": "2.6.2", "typescript": "5.3.2", - "vite": "5.0.2", - "vitest": "0.34.6" + "vite": "5.0.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d3b6b6d2..ce8a6f69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,15 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: - '@lucia-auth/adapter-prisma': - specifier: 3.0.2 - version: 3.0.2(@prisma/client@5.6.0)(lucia@2.7.4) '@prisma/client': specifier: 5.6.0 version: 5.6.0(prisma@5.6.0) - lucia: - specifier: 2.7.4 - version: 2.7.4 devDependencies: '@commitlint/cli': @@ -25,18 +19,15 @@ devDependencies: '@commitlint/types': specifier: 18.4.3 version: 18.4.3 - '@playwright/test': - specifier: 1.40.0 - version: 1.40.0 '@skeletonlabs/skeleton': specifier: ^2.5.1 version: 2.5.1(svelte@4.2.7) '@skeletonlabs/tw-plugin': specifier: ^0.2.4 version: 0.2.4(tailwindcss@3.3.5) - '@sveltejs/adapter-auto': - specifier: 2.1.1 - version: 2.1.1(@sveltejs/kit@1.27.6) + '@svelte.kit/adapter-aws': + specifier: ^0.2.1 + version: 0.2.1(svelte@4.2.7)(vite@5.0.2) '@sveltejs/kit': specifier: 1.27.6 version: 1.27.6(svelte@4.2.7)(vite@5.0.2) @@ -58,9 +49,6 @@ devDependencies: aws-cdk-lib: specifier: 2.110.1 version: 2.110.1(constructs@10.3.0) - constructs: - specifier: 10.3.0 - version: 10.3.0 cz-conventional-changelog: specifier: 3.3.0 version: 3.3.0(typescript@5.3.2) @@ -106,33 +94,21 @@ devDependencies: prisma: specifier: 5.6.0 version: 5.6.0 - sst: - specifier: 2.36.6 - version: 2.36.6 svelte: specifier: 4.2.7 version: 4.2.7 svelte-check: specifier: 3.6.2 - version: 3.6.2(@babel/core@7.23.3)(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7) - svelte-kit-sst: - specifier: 2.36.6 - version: 2.36.6 + version: 3.6.2(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7) tailwindcss: specifier: ^3.3.2 version: 3.3.5 - tslib: - specifier: 2.6.2 - version: 2.6.2 typescript: specifier: 5.3.2 version: 5.3.2 vite: specifier: 5.0.2 version: 5.0.2(@types/node@20.10.0) - vitest: - specifier: 0.34.6 - version: 0.34.6 packages: @@ -141,14 +117,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@alcalzone/ansi-tokenize@0.1.3: - resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} - engines: {node: '>=14.13.1'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -174,92 +142,6 @@ packages: resolution: {integrity: sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg==} dev: true - /@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.3.0): - resolution: {integrity: sha512-ldOrRsu5O0KtqMiKh43QbjHX26Q2dmDAFEBsQ4Y8pLWf0cISBkFrrcsv4VF23j9r9NEgLhPzoVOqiCyf4UUliQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - aws-cdk-lib: ^2.110.1 - constructs: ^10.0.0 - dependencies: - aws-cdk-lib: 2.110.1(constructs@10.3.0) - constructs: 10.3.0 - dev: true - - /@aws-cdk/aws-apigatewayv2-authorizers-alpha@2.110.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0)(aws-cdk-lib@2.110.1)(constructs@10.3.0): - resolution: {integrity: sha512-r8JbPTWoOlQHamilWvdTB76kMrAxkcs/4Vs7N6Jhq+U4Is0WSdP7JPgHJL2lJwOiYSAuMnt8H3O1KACv/XU8+g==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0 - aws-cdk-lib: ^2.110.1 - constructs: ^10.0.0 - dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.3.0) - aws-cdk-lib: 2.110.1(constructs@10.3.0) - constructs: 10.3.0 - dev: true - - /@aws-cdk/aws-apigatewayv2-integrations-alpha@2.110.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0)(aws-cdk-lib@2.110.1)(constructs@10.3.0): - resolution: {integrity: sha512-kQfymliXlKCkMNVwwYwJZzICi+KX25aoV3g9mXoxvD2XX0hcmCgBog4A2zEVnwGqdGbOPg7BDENqUEYxxdakxQ==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0 - aws-cdk-lib: ^2.110.1 - constructs: ^10.0.0 - dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.3.0) - aws-cdk-lib: 2.110.1(constructs@10.3.0) - constructs: 10.3.0 - dev: true - - /@aws-cdk/aws-service-spec@0.0.29: - resolution: {integrity: sha512-/Zp5aPDlG5M3CTXJW5KU2Jki3l9Xu/la37gdurawp9cpgufze5vboTyBd/ymHAXNINuApQdmGJ0iDn8HihzQ0Q==} - dependencies: - '@aws-cdk/service-spec-types': 0.0.29 - '@cdklabs/tskb': 0.0.3 - dev: true - - /@aws-cdk/cloud-assembly-schema@2.110.1: - resolution: {integrity: sha512-ivyE26pQgiUd5sOXE0DE+s0TfkZDfj1Y/dhseU+k2klsS24Cfeun9fSY568wG40PRheaO5X6jjT/4tuT78P1hQ==} - engines: {node: '>= 14.15.0'} - dependencies: - jsonschema: 1.4.1 - semver: 7.5.4 - dev: true - bundledDependencies: - - jsonschema - - semver - - /@aws-cdk/cloudformation-diff@2.110.1: - resolution: {integrity: sha512-5uNbHgiPtHrCNZ+4OIFYzoDsiRQy3NL2cMhyxO5g9++aXb5UAkt/hWHW27DnmOhYl1wNkCODMnQEuqK/CTYkxg==} - engines: {node: '>= 14.15.0'} - dependencies: - '@aws-cdk/aws-service-spec': 0.0.29 - '@aws-cdk/service-spec-types': 0.0.29 - chalk: 4.1.2 - diff: 5.1.0 - fast-deep-equal: 3.1.3 - string-width: 4.2.3 - table: 6.8.1 - dev: true - - /@aws-cdk/cx-api@2.110.1(@aws-cdk/cloud-assembly-schema@2.110.1): - resolution: {integrity: sha512-X3zCBu3JmL618lXWz1M6GXsUqSAe8HGIAbYTUPAxNhvtv+cZcOie7Qz6EjKPNi4WMEcswUMiGJFEfk+Q15CeWA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@aws-cdk/cloud-assembly-schema': 2.110.1 - dependencies: - '@aws-cdk/cloud-assembly-schema': 2.110.1 - semver: 7.5.4 - dev: true - bundledDependencies: - - semver - - /@aws-cdk/service-spec-types@0.0.29: - resolution: {integrity: sha512-qvt2dV2QuqtxzY6l8ZBuxKA965sFZH72pCcaxM9unGCFuF5ucrxeh9Zc4AYsma/MZCCbMx2i/+fvjCVzJX9soQ==} - dependencies: - '@cdklabs/tskb': 0.0.3 - dev: true - /@aws-crypto/crc32@3.0.0: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: @@ -315,15 +197,6 @@ packages: tslib: 1.14.1 dev: true - /@aws-crypto/sha256-js@5.2.0: - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} - engines: {node: '>=16.0.0'} - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.451.0 - tslib: 2.6.2 - dev: true - /@aws-crypto/supports-web-crypto@3.0.0: resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} dependencies: @@ -332,456 +205,10 @@ packages: /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - dependencies: - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 - dev: true - - /@aws-crypto/util@5.2.0: - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - dependencies: - '@aws-sdk/types': 3.451.0 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - dev: true - - /@aws-sdk/client-cloudformation@3.454.0: - resolution: {integrity: sha512-CKOE5u2gLt/BjHYX6a0uKGsWPBic9uOzlTwqnpqXEmVSb25xv5ULHOUmYfmSyw2TWXwxEe4a6ZwBL0MYJGrEUw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-utf8': 2.0.2 - '@smithy/util-waiter': 2.0.14 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - uuid: 8.3.2 - transitivePeerDependencies: - - aws-crt - dev: true - - /@aws-sdk/client-cognito-identity@3.454.0: - resolution: {integrity: sha512-6Z3xYsgONJsZrn6P5XvKAgWxmUittGmp5jdX64LSz5OoPgkn0uGd01c2EACSKVivHUBc190gPg8Hg2BBmWjsMA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: true - - /@aws-sdk/client-ecs@3.454.0: - resolution: {integrity: sha512-lSF3wxBM4y/cnZwFEovH7jwQwcFi75BfhW3rhEEAICIqfXU7A4FH1I528Ih9Ad4DpQL9mkrm35+g6y/dy6hHhQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-utf8': 2.0.2 - '@smithy/util-waiter': 2.0.14 - tslib: 2.6.2 - uuid: 8.3.2 - transitivePeerDependencies: - - aws-crt - dev: true - - /@aws-sdk/client-eventbridge@3.454.0: - resolution: {integrity: sha512-Y4bvZ+kqcp1RDawn5WfmhVKxdoZ3GQb4dfa/spTAI5ph4HhoMHRCnnOGOXvZJIBcZ6Ngmuw2VVbGoH4DjCSDEA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/signature-v4-multi-region': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: true - - /@aws-sdk/client-iam@3.454.0: - resolution: {integrity: sha512-feBcpbCyBfeLBC2L+1BQnAZ0KhPGdlxAzX4HLk3v6dSoVGFPyS9/7NTISiXy5iVc7fdFBtosiqvDBMpajrXpAA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-utf8': 2.0.2 - '@smithy/util-waiter': 2.0.14 - fast-xml-parser: 4.2.5 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: true - - /@aws-sdk/client-iot-data-plane@3.454.0: - resolution: {integrity: sha512-LuYrH3obhvyUaNUmqL4rs3R6n5qPfQ6kGNmlA6VEr2KZtX0Gv49MBy0tyogtXyfr4FzQ+Mzs6XV4JyEWmifPyQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-stream': 2.0.21 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: true - - /@aws-sdk/client-iot@3.454.0: - resolution: {integrity: sha512-OsgsufaS+jGqH5IM78HNOcbSLQcROXf7jotMWKdV/aMYlK19+J2r0F7nr+T54KLBIpIvKt2dqFZXU888qDMOqA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - uuid: 8.3.2 - transitivePeerDependencies: - - aws-crt - dev: true - - /@aws-sdk/client-lambda@3.454.0: - resolution: {integrity: sha512-nYak+ojl0H0AG0WTF2894npak4Uj2slBr09+3lBUz4rwPol93TsUHy8/5GfGLcqPMNnEKOknc4jioJOK7cb2Pw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/eventstream-serde-browser': 2.0.14 - '@smithy/eventstream-serde-config-resolver': 2.0.14 - '@smithy/eventstream-serde-node': 2.0.14 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-stream': 2.0.21 - '@smithy/util-utf8': 2.0.2 - '@smithy/util-waiter': 2.0.14 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: true - - /@aws-sdk/client-rds-data@3.454.0: - resolution: {integrity: sha512-/pXODlyU0wwxqwS5bppndLmJl2N7bIaSTM3i3RHIWeSdwjUnuY1FIVyBcWHols4KHiiT8NaoZO5ZOQjt5Imbgw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 + dependencies: '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-utf8': 2.0.2 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 dev: true /@aws-sdk/client-s3@3.456.0: @@ -810,7 +237,7 @@ packages: '@aws-sdk/types': 3.451.0 '@aws-sdk/util-endpoints': 3.451.0 '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) + '@aws-sdk/util-user-agent-node': 3.451.0 '@aws-sdk/xml-builder': 3.310.0 '@smithy/config-resolver': 2.0.19 '@smithy/eventstream-serde-browser': 2.0.14 @@ -849,55 +276,6 @@ packages: - aws-crt dev: true - /@aws-sdk/client-ssm@3.454.0: - resolution: {integrity: sha512-Vrf93hOzB4FAUpkGHvKywZ0yOVbghS0KbCsnlN1Mka780zmyc185YXGYSLv6B+yrI2tMj0cBvEad3M0qk69qVw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/core': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/middleware-host-header': 3.451.0 - '@aws-sdk/middleware-logger': 3.451.0 - '@aws-sdk/middleware-recursion-detection': 3.451.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/middleware-user-agent': 3.451.0 - '@aws-sdk/region-config-resolver': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@aws-sdk/util-endpoints': 3.451.0 - '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/config-resolver': 2.0.19 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/hash-node': 2.0.16 - '@smithy/invalid-dependency': 2.0.14 - '@smithy/middleware-content-length': 2.0.16 - '@smithy/middleware-endpoint': 2.2.1 - '@smithy/middleware-retry': 2.0.21 - '@smithy/middleware-serde': 2.0.14 - '@smithy/middleware-stack': 2.0.8 - '@smithy/node-config-provider': 2.1.6 - '@smithy/node-http-handler': 2.1.10 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/url-parser': 2.0.14 - '@smithy/util-base64': 2.0.1 - '@smithy/util-body-length-browser': 2.0.0 - '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.20 - '@smithy/util-defaults-mode-node': 2.0.26 - '@smithy/util-endpoints': 1.0.5 - '@smithy/util-retry': 2.0.7 - '@smithy/util-utf8': 2.0.2 - '@smithy/util-waiter': 2.0.14 - tslib: 2.6.2 - uuid: 8.3.2 - transitivePeerDependencies: - - aws-crt - dev: true - /@aws-sdk/client-sso@3.451.0: resolution: {integrity: sha512-KkYSke3Pdv3MfVH/5fT528+MKjMyPKlcLcd4zQb0x6/7Bl7EHrPh1JZYjzPLHelb+UY5X0qN8+cb8iSu1eiwIQ==} engines: {node: '>=14.0.0'} @@ -913,7 +291,7 @@ packages: '@aws-sdk/types': 3.451.0 '@aws-sdk/util-endpoints': 3.451.0 '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) + '@aws-sdk/util-user-agent-node': 3.451.0 '@smithy/config-resolver': 2.0.19 '@smithy/fetch-http-handler': 2.2.7 '@smithy/hash-node': 2.0.16 @@ -960,7 +338,7 @@ packages: '@aws-sdk/types': 3.451.0 '@aws-sdk/util-endpoints': 3.451.0 '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) + '@aws-sdk/util-user-agent-node': 3.451.0 '@smithy/config-resolver': 2.0.19 '@smithy/fetch-http-handler': 2.2.7 '@smithy/hash-node': 2.0.16 @@ -990,15 +368,6 @@ packages: - aws-crt dev: true - /@aws-sdk/config-resolver@3.374.0: - resolution: {integrity: sha512-eTSbmpcgZ97o7PuFls8pH1344OS03nfqq1NO9HxxvoYoZ6DFfUO7kqKeNUhP9LxOF7slyHXajDT7eoPclGnTuw==} - engines: {node: '>=14.0.0'} - deprecated: This package has moved to @smithy/config-resolver - dependencies: - '@smithy/config-resolver': 1.1.0 - tslib: 2.6.2 - dev: true - /@aws-sdk/core@3.451.0: resolution: {integrity: sha512-SamWW2zHEf1ZKe3j1w0Piauryl8BQIlej0TBS18A4ACzhjhWXhCs13bO1S88LvPR5mBFXok3XOT6zPOnKDFktw==} engines: {node: '>=14.0.0'} @@ -1007,19 +376,6 @@ packages: tslib: 2.6.2 dev: true - /@aws-sdk/credential-provider-cognito-identity@3.454.0: - resolution: {integrity: sha512-sRxDhZKgFasAVajNvpqJMEOCvtCUfofVcUO5vIp8jgPHNw5yrN5REZStjVjgYO5riFKXFI8qqHHtzttx+HhsZg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-cognito-identity': 3.454.0 - '@aws-sdk/types': 3.451.0 - '@smithy/property-provider': 2.0.15 - '@smithy/types': 2.6.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: true - /@aws-sdk/credential-provider-env@3.451.0: resolution: {integrity: sha512-9dAav7DcRgaF7xCJEQR5ER9ErXxnu/tdnVJ+UPmb1NPeIZdESv1A3lxFDEq1Fs8c4/lzAj9BpshGyJVIZwZDKg==} engines: {node: '>=14.0.0'} @@ -1030,21 +386,6 @@ packages: tslib: 2.6.2 dev: true - /@aws-sdk/credential-provider-http@3.451.0: - resolution: {integrity: sha512-q82kEzymqimkJ2dHmuN2RGpi9HTFSxwwoXALnzPRaRcvR/v+YY8FMgSTfwXzPkHUDf/q8J+aDz6lPcYlnsP3sQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.451.0 - '@smithy/fetch-http-handler': 2.2.7 - '@smithy/node-http-handler': 2.1.10 - '@smithy/property-provider': 2.0.15 - '@smithy/protocol-http': 3.0.10 - '@smithy/smithy-client': 2.1.16 - '@smithy/types': 2.6.0 - '@smithy/util-stream': 2.0.21 - tslib: 2.6.2 - dev: true - /@aws-sdk/credential-provider-ini@3.451.0: resolution: {integrity: sha512-TySt64Ci5/ZbqFw1F9Z0FIGvYx5JSC9e6gqDnizIYd8eMnn8wFRUscRrD7pIHKfrhvVKN5h0GdYovmMO/FMCBw==} engines: {node: '>=14.0.0'} @@ -1118,30 +459,6 @@ packages: tslib: 2.6.2 dev: true - /@aws-sdk/credential-providers@3.454.0: - resolution: {integrity: sha512-y+ieaocH6T5pjGx7l2NUTb2n29URUYO3uYSvvwoWKx/KK17QJEVKMbARHBHyvDIbybeHidJTO58Jz5AY7rcTQA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/client-cognito-identity': 3.454.0 - '@aws-sdk/client-sso': 3.451.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/credential-provider-cognito-identity': 3.454.0 - '@aws-sdk/credential-provider-env': 3.451.0 - '@aws-sdk/credential-provider-http': 3.451.0 - '@aws-sdk/credential-provider-ini': 3.451.0 - '@aws-sdk/credential-provider-node': 3.451.0 - '@aws-sdk/credential-provider-process': 3.451.0 - '@aws-sdk/credential-provider-sso': 3.451.0 - '@aws-sdk/credential-provider-web-identity': 3.451.0 - '@aws-sdk/types': 3.451.0 - '@smithy/credential-provider-imds': 2.1.2 - '@smithy/property-provider': 2.0.15 - '@smithy/types': 2.6.0 - tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt - dev: true - /@aws-sdk/middleware-bucket-endpoint@3.451.0: resolution: {integrity: sha512-KWyZ1JGnYz2QbHuJtYTP1BVnMOfVopR8rP8dTinVb/JR5HfAYz4imICJlJUbOYRjN7wpA3PrRI8dNRjrSBjWJg==} engines: {node: '>=14.0.0'} @@ -1217,16 +534,6 @@ packages: tslib: 2.6.2 dev: true - /@aws-sdk/middleware-retry@3.374.0: - resolution: {integrity: sha512-ZnT84qnT+Zmelv7y6hAqgAEaZgpGlrvf/+rchNWT0oG4duxI5bLWcRi9U88Jz7G8JgNQcGKJqPfC6oogCd7p8w==} - engines: {node: '>=14.0.0'} - deprecated: This package has moved to @smithy/middleware-retry - dependencies: - '@smithy/middleware-retry': 1.1.0 - tslib: 2.6.2 - uuid: 8.3.2 - dev: true - /@aws-sdk/middleware-sdk-s3@3.451.0: resolution: {integrity: sha512-XF4Cw8HrYUwGLKOqKtWs6ss1WXoxvQUcgGLACGSqn9a0p51446NiS5671x7qJUsfBuygdKlIKcOc8pPr9a+5Ow==} engines: {node: '>=14.0.0'} @@ -1293,25 +600,6 @@ packages: tslib: 2.6.2 dev: true - /@aws-sdk/signature-v4-crt@3.451.0: - resolution: {integrity: sha512-bWoHFsAg6yF+3lpmQfYPlTbioOS+o5PfsewZn8OouAalkiRmNzuW6Pcw1ebHL7OLlp7AUAXLLO79ji+5F3NyJw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/signature-v4-multi-region': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) - '@smithy/querystring-parser': 2.0.14 - '@smithy/signature-v4': 2.0.16 - '@smithy/types': 2.6.0 - '@smithy/util-middleware': 2.0.7 - aws-crt: 1.19.0 - tslib: 2.6.2 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - dev: true - /@aws-sdk/signature-v4-multi-region@3.451.0: resolution: {integrity: sha512-qQKY7/txeNUTLyRL3WxUWEwaZ5sf76EIZgu9kLaR96cAYSxwQi/qQB3ijbfD6u7sJIA8aROMxeYK0VmRsQg0CA==} engines: {node: '>=14.0.0'} @@ -1323,15 +611,6 @@ packages: tslib: 2.6.2 dev: true - /@aws-sdk/smithy-client@3.374.0: - resolution: {integrity: sha512-YQBdO/Nv5EXBg/qfMF4GgYYLNN3Y/06MyuVBYILC1TKAnMoLy2FV0VOYyediagepAcWPdJqyUq4MCNNBy0CPRg==} - engines: {node: '>=14.0.0'} - deprecated: This package has moved to @smithy/smithy-client - dependencies: - '@smithy/smithy-client': 1.1.0 - tslib: 2.6.2 - dev: true - /@aws-sdk/token-providers@3.451.0: resolution: {integrity: sha512-ij1L5iUbn6CwxVOT1PG4NFjsrsKN9c4N1YEM0lkl6DwmaNOscjLKGSNyj9M118vSWsOs1ZDbTwtj++h0O/BWrQ==} engines: {node: '>=14.0.0'} @@ -1346,7 +625,7 @@ packages: '@aws-sdk/types': 3.451.0 '@aws-sdk/util-endpoints': 3.451.0 '@aws-sdk/util-user-agent-browser': 3.451.0 - '@aws-sdk/util-user-agent-node': 3.451.0(aws-crt@1.19.0) + '@aws-sdk/util-user-agent-node': 3.451.0 '@smithy/config-resolver': 2.0.19 '@smithy/fetch-http-handler': 2.2.7 '@smithy/hash-node': 2.0.16 @@ -1417,243 +696,54 @@ packages: tslib: 2.6.2 dev: true - /@aws-sdk/util-user-agent-node@3.451.0(aws-crt@1.19.0): - resolution: {integrity: sha512-TBzm6P+ql4mkGFAjPlO1CI+w3yUT+NulaiALjl/jNX/nnUp6HsJsVxJf4nVFQTG5KRV0iqMypcs7I3KIhH+LmA==} - engines: {node: '>=14.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - dependencies: - '@aws-sdk/types': 3.451.0 - '@smithy/node-config-provider': 2.1.6 - '@smithy/types': 2.6.0 - aws-crt: 1.19.0 - tslib: 2.6.2 - dev: true - - /@aws-sdk/util-utf8-browser@3.259.0: - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - dependencies: - tslib: 2.6.2 - dev: true - - /@aws-sdk/xml-builder@3.310.0: - resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - - /@babel/code-frame@7.23.4: - resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - dev: true - - /@babel/compat-data@7.23.3: - resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.23.3: - resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.4 - '@babel/generator': 7.23.4 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helpers': 7.23.4 - '@babel/parser': 7.23.4 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.23.4: - resolution: {integrity: sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.4 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.3 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.22.1 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.4 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.4 - dev: true - - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.4 - dev: true - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.4 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.4 - dev: true - - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.22.15: - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers@7.23.4: - resolution: {integrity: sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.4 - '@babel/types': 7.23.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} - engines: {node: '>=6.9.0'} + /@aws-sdk/util-user-agent-node@3.451.0: + resolution: {integrity: sha512-TBzm6P+ql4mkGFAjPlO1CI+w3yUT+NulaiALjl/jNX/nnUp6HsJsVxJf4nVFQTG5KRV0iqMypcs7I3KIhH+LmA==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 + '@aws-sdk/types': 3.451.0 + '@smithy/node-config-provider': 2.1.6 + '@smithy/types': 2.6.0 + tslib: 2.6.2 dev: true - /@babel/parser@7.23.4: - resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==} - engines: {node: '>=6.0.0'} - hasBin: true + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} dependencies: - '@babel/types': 7.23.4 + tslib: 2.6.2 dev: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/xml-builder@3.310.0: + resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} + engines: {node: '>=14.0.0'} dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + tslib: 2.6.2 dev: true - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + /@babel/code-frame@7.23.4: + resolution: {integrity: sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.4 - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 + '@babel/highlight': 7.23.4 + chalk: 2.4.2 dev: true - /@babel/traverse@7.23.4: - resolution: {integrity: sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.4 - '@babel/generator': 7.23.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.4 - '@babel/types': 7.23.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color dev: true - /@babel/types@7.23.4: - resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - - /@cdklabs/tskb@0.0.3: - resolution: {integrity: sha512-JR+MuD4awAXvutu7HArephXfZm09GPTaSAQUqNcJB5+ZENRm4kV+L6vJL6Tn1xHjCcHksO+HAqj3gYtm5K94vA==} + chalk: 2.4.2 + js-tokens: 4.0.0 dev: true /@commitlint/cli@18.4.3(typescript@5.3.2): @@ -1823,41 +913,6 @@ packages: chalk: 4.1.2 dev: true - /@envelop/core@3.0.6: - resolution: {integrity: sha512-06t1xCPXq6QFN7W1JUEf68aCwYN0OUDNAIoJe7bAqhaoa2vn7NCcuX1VHkJ/OWpmElUgCsRO6RiBbIru1in0Ig==} - dependencies: - '@envelop/types': 3.0.2 - tslib: 2.6.2 - dev: true - - /@envelop/types@3.0.2: - resolution: {integrity: sha512-pOFea9ha0EkURWxJ/35axoH9fDGP5S2cUu/5Mmo9pb8zUf+TaEot8vB670XXihFEn/92759BMjLJNWBKmNhyng==} - dependencies: - tslib: 2.6.2 - dev: true - - /@envelop/validation-cache@5.1.3(@envelop/core@3.0.6)(graphql@16.8.1): - resolution: {integrity: sha512-MkzcScQHJJQ/9YCAPdWShEi3xZv4F4neTs+NszzSrZOdlU8z/THuRt7gZ0sO0y2be+sx+SKjHQP8Gq3VXXcTTg==} - peerDependencies: - '@envelop/core': ^3.0.6 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@envelop/core': 3.0.6 - graphql: 16.8.1 - hash-it: 6.0.0 - lru-cache: 6.0.0 - tslib: 2.6.2 - dev: true - - /@esbuild/android-arm64@0.18.13: - resolution: {integrity: sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.19.7: resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==} engines: {node: '>=12'} @@ -1867,15 +922,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.13: - resolution: {integrity: sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.19.7: resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==} engines: {node: '>=12'} @@ -1885,15 +931,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.13: - resolution: {integrity: sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.19.7: resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==} engines: {node: '>=12'} @@ -1903,15 +940,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.13: - resolution: {integrity: sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.19.7: resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==} engines: {node: '>=12'} @@ -1921,15 +949,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.13: - resolution: {integrity: sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.19.7: resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==} engines: {node: '>=12'} @@ -1939,15 +958,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.13: - resolution: {integrity: sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.19.7: resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==} engines: {node: '>=12'} @@ -1957,15 +967,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.13: - resolution: {integrity: sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.19.7: resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==} engines: {node: '>=12'} @@ -1975,15 +976,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.13: - resolution: {integrity: sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.19.7: resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==} engines: {node: '>=12'} @@ -1993,15 +985,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.13: - resolution: {integrity: sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.19.7: resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==} engines: {node: '>=12'} @@ -2011,15 +994,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.13: - resolution: {integrity: sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.19.7: resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==} engines: {node: '>=12'} @@ -2029,15 +1003,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.13: - resolution: {integrity: sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.19.7: resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==} engines: {node: '>=12'} @@ -2047,15 +1012,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.13: - resolution: {integrity: sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.19.7: resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==} engines: {node: '>=12'} @@ -2065,15 +1021,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.13: - resolution: {integrity: sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.19.7: resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==} engines: {node: '>=12'} @@ -2083,15 +1030,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.13: - resolution: {integrity: sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.19.7: resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==} engines: {node: '>=12'} @@ -2101,15 +1039,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.13: - resolution: {integrity: sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.19.7: resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==} engines: {node: '>=12'} @@ -2119,15 +1048,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.13: - resolution: {integrity: sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.19.7: resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==} engines: {node: '>=12'} @@ -2137,15 +1057,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.13: - resolution: {integrity: sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.19.7: resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==} engines: {node: '>=12'} @@ -2155,15 +1066,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.13: - resolution: {integrity: sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.19.7: resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==} engines: {node: '>=12'} @@ -2173,15 +1075,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.13: - resolution: {integrity: sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.19.7: resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==} engines: {node: '>=12'} @@ -2191,15 +1084,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.13: - resolution: {integrity: sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.19.7: resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==} engines: {node: '>=12'} @@ -2209,15 +1093,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.13: - resolution: {integrity: sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.19.7: resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==} engines: {node: '>=12'} @@ -2227,15 +1102,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.13: - resolution: {integrity: sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.19.7: resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==} engines: {node: '>=12'} @@ -2279,103 +1145,12 @@ packages: /@eslint/js@8.54.0: resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@fastify/busboy@2.1.0: - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} - engines: {node: '>=14'} - dev: true - - /@graphql-tools/executor@0.0.18(graphql@16.8.1): - resolution: {integrity: sha512-xZC0C+/npXoSHBB5bsJdwxDLgtl1Gu4fL9J2TPQmXoZC3L2N506KJoppf9LgWdHU/xK04luJrhP6WjhfkIN0pQ==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) - '@repeaterjs/repeater': 3.0.4 - graphql: 16.8.1 - tslib: 2.6.2 - value-or-promise: 1.0.12 - dev: true - - /@graphql-tools/merge@8.4.2(graphql@16.8.1): - resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-tools/schema@9.0.19(graphql@16.8.1): - resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-tools/merge': 8.4.2(graphql@16.8.1) - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - value-or-promise: 1.0.12 - dev: true - - /@graphql-tools/utils@9.2.1(graphql@16.8.1): - resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.8.1 - dev: true - - /@graphql-yoga/logger@0.0.1: - resolution: {integrity: sha512-6npFz7eZz33mXgSm1waBLMjUNG0D5hTc/p5Hcs1mojkT3KsLpCOFokzTEKboNsBhKevYcaVa/xeA7WBj4UYMLg==} - dependencies: - tslib: 2.6.2 - dev: true - - /@graphql-yoga/subscription@3.1.0: - resolution: {integrity: sha512-Vc9lh8KzIHyS3n4jBlCbz7zCjcbtQnOBpsymcRvHhFr2cuH+knmRn0EmzimMQ58jQ8kxoRXXC3KJS3RIxSdPIg==} - dependencies: - '@graphql-yoga/typed-event-target': 1.0.0 - '@repeaterjs/repeater': 3.0.5 - '@whatwg-node/events': 0.0.2 - tslib: 2.6.2 - dev: true - - /@graphql-yoga/typed-event-target@1.0.0: - resolution: {integrity: sha512-Mqni6AEvl3VbpMtKw+TIjc9qS9a8hKhiAjFtqX488yq5oJtj9TkNlFTIacAVS3vnPiswNsmDiQqvwUOcJgi1DA==} - dependencies: - '@repeaterjs/repeater': 3.0.5 - tslib: 2.6.2 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@httptoolkit/websocket-stream@6.0.1: - resolution: {integrity: sha512-A0NOZI+Glp3Xgcz6Na7i7o09+/+xm2m0UCU8gdtM2nIv6/cjLmhMZMqehSpTlgbx9omtLmV8LVqOskPEyWnmZQ==} - dependencies: - '@types/ws': 8.5.10 - duplexify: 3.7.1 - inherits: 2.0.4 - isomorphic-ws: 4.0.1(ws@8.14.2) - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - ws: 8.14.2 - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} dev: true /@humanwhocodes/config-array@0.11.13: @@ -2398,25 +1173,6 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -2447,21 +1203,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@lucia-auth/adapter-prisma@3.0.2(@prisma/client@5.6.0)(lucia@2.7.4): - resolution: {integrity: sha512-EyJWZene1/zasPwPctv8wwNErZt5mwwm5JATbhg+kXr3R8pbC7lJfVzDTAeeFClVH5k/FywRcsBl3JkPaNIcow==} - peerDependencies: - '@prisma/client': ^4.2.0 || ^5.0.0 - lucia: ^2.0.0 - dependencies: - '@prisma/client': 5.6.0(prisma@5.6.0) - lucia: 2.7.4 - dev: false - - /@lukeed/ms@2.0.1: - resolution: {integrity: sha512-Xs/4RZltsAL7pkvaNStUQt7netTkyxrS0K+RILcVr3TRMS/ToOg4I6uNfhB9SlGsnWBym4U+EaXq0f0cEMNkHA==} - engines: {node: '>=8'} - dev: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2483,39 +1224,6 @@ packages: fastq: 1.15.0 dev: true - /@peculiar/asn1-schema@2.3.8: - resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} - dependencies: - asn1js: 3.0.5 - pvtsutils: 1.3.5 - tslib: 2.6.2 - dev: true - - /@peculiar/json-schema@1.1.12: - resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} - engines: {node: '>=8.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - - /@peculiar/webcrypto@1.4.3: - resolution: {integrity: sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A==} - engines: {node: '>=10.12.0'} - dependencies: - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/json-schema': 1.1.12 - pvtsutils: 1.3.5 - tslib: 2.6.2 - webcrypto-core: 1.7.7 - dev: true - - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: true - optional: true - /@pkgr/utils@2.4.2: resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2528,14 +1236,6 @@ packages: tslib: 2.6.2 dev: true - /@playwright/test@1.40.0: - resolution: {integrity: sha512-PdW+kn4eV99iP5gxWNSDQCbhMaDVej+RXL5xr6t04nbKLCBwYtA046t7ofoczHOm8u6c+45hpDKQVZqtqwkeQg==} - engines: {node: '>=16'} - hasBin: true - dependencies: - playwright: 1.40.0 - dev: true - /@polka/url@1.0.0-next.23: resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} dev: true @@ -2566,14 +1266,6 @@ packages: resolution: {integrity: sha512-JFdsnSgBPN8reDTLOI9Vh/6ccCb2aD1LbY/LWQnkcIgNo6IdpzvuM+qRVbBuA6IZP2SdqQI8Lu6RL2P8EFBQUA==} dev: true - /@repeaterjs/repeater@3.0.4: - resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} - dev: true - - /@repeaterjs/repeater@3.0.5: - resolution: {integrity: sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA==} - dev: true - /@rollup/rollup-android-arm-eabi@4.5.2: resolution: {integrity: sha512-ee7BudTwwrglFYSc3UnqInDDjCLWHKrFmGNi4aK7jlEyg4CyPa1DCMrZfsN1O13YT76UFEqXz2CoN7BCGpUlJw==} cpu: [arm] @@ -2670,10 +1362,6 @@ packages: dev: true optional: true - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true - /@skeletonlabs/skeleton@2.5.1(svelte@4.2.7): resolution: {integrity: sha512-llzzKr6PQV1MUsJybdo3Z0SaVwm00KDf8DKhlVTt3X3fbCjIbS9rK6sLzJKZO01L/cQYtAzdVXv9CxALtIuy0w==} peerDependencies: @@ -2691,14 +1379,6 @@ packages: tailwindcss: 3.3.5 dev: true - /@smithy/abort-controller@1.1.0: - resolution: {integrity: sha512-5imgGUlZL4dW4YWdMYAKLmal9ny/tlenM81QZY7xYyb76z9Z/QOg7oM5Ak9HQl8QfFTlGVWwcMXl+54jroRgEQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 1.2.0 - tslib: 2.6.2 - dev: true - /@smithy/abort-controller@2.0.14: resolution: {integrity: sha512-zXtteuYLWbSXnzI3O6xq3FYvigYZFW8mdytGibfarLL2lxHto9L3ILtGVnVGmFZa7SDh62l39EnU5hesLN87Fw==} engines: {node: '>=14.0.0'} @@ -2720,16 +1400,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/config-resolver@1.1.0: - resolution: {integrity: sha512-7WD9eZHp46BxAjNGHJLmxhhyeiNWkBdVStd7SUJPUZqQGeIO/REtIrcIfKUfdiHTQ9jyu2SYoqvzqqaFc6987w==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 1.2.0 - '@smithy/util-config-provider': 1.1.0 - '@smithy/util-middleware': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/config-resolver@2.0.19: resolution: {integrity: sha512-JsghnQ5zjWmjEVY8TFOulLdEOCj09SjRLugrHlkPZTIBBm7PQitCFVLThbsKPZQOP7N3ME1DU1nKUc1UaVnBog==} engines: {node: '>=14.0.0'} @@ -2796,16 +1466,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/fetch-http-handler@1.1.0: - resolution: {integrity: sha512-N22C9R44u5WGlcY+Wuv8EXmCAq62wWwriRAuoczMEwAIjPbvHSthyPSLqI4S7kAST1j6niWg8kwpeJ3ReAv3xg==} - dependencies: - '@smithy/protocol-http': 1.2.0 - '@smithy/querystring-builder': 1.1.0 - '@smithy/types': 1.2.0 - '@smithy/util-base64': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/fetch-http-handler@2.2.7: resolution: {integrity: sha512-iSDBjxuH9TgrtMYAr7j5evjvkvgwLY3y+9D547uep+JNkZ1ZT+BaeU20j6I/bO/i26ilCWFImrlXTPsfQtZdIQ==} dependencies: @@ -2851,13 +1511,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/is-array-buffer@1.1.0: - resolution: {integrity: sha512-twpQ/n+3OWZJ7Z+xu43MJErmhB/WO/mMTnqR6PwWQShvSJ/emx5d1N59LQZk6ZpTAeuRWrc+eHhkzTp9NFjNRQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - /@smithy/is-array-buffer@2.0.0: resolution: {integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==} engines: {node: '>=14.0.0'} @@ -2895,19 +1548,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/middleware-retry@1.1.0: - resolution: {integrity: sha512-lINKYxIvT+W20YFOtHBKeGm7npuJg0/YCoShttU7fVpsmU+a2rdb9zrJn1MHqWfUL6DhTAWGa0tH2O7l4XrDcw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/protocol-http': 1.2.0 - '@smithy/service-error-classification': 1.1.0 - '@smithy/types': 1.2.0 - '@smithy/util-middleware': 1.1.0 - '@smithy/util-retry': 1.1.0 - tslib: 2.6.2 - uuid: 8.3.2 - dev: true - /@smithy/middleware-retry@2.0.21: resolution: {integrity: sha512-EZS1EXv1k6IJX6hyu/0yNQuPcPaXwG8SWljQHYueyRbOxmqYgoWMWPtfZj0xRRQ4YtLawQSpBgAeiJltq8/MPw==} engines: {node: '>=14.0.0'} @@ -2930,13 +1570,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/middleware-stack@1.1.0: - resolution: {integrity: sha512-XynYiIvXNea2BbLcppvpNK0zu8o2woJqgnmxqYTn4FWagH/Hr2QIk8LOsUz7BIJ4tooFhmx8urHKCdlPbbPDCA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - /@smithy/middleware-stack@2.0.8: resolution: {integrity: sha512-7/N59j0zWqVEKExJcA14MrLDZ/IeN+d6nbkN8ucs+eURyaDUXWYlZrQmMOd/TyptcQv0+RDlgag/zSTTV62y/Q==} engines: {node: '>=14.0.0'} @@ -2955,17 +1588,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/node-http-handler@1.1.0: - resolution: {integrity: sha512-d3kRriEgaIiGXLziAM8bjnaLn1fthCJeTLZIwEIpzQqe6yPX0a+yQoLCTyjb2fvdLwkMoG4p7THIIB5cj5lkbg==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/abort-controller': 1.1.0 - '@smithy/protocol-http': 1.2.0 - '@smithy/querystring-builder': 1.1.0 - '@smithy/types': 1.2.0 - tslib: 2.6.2 - dev: true - /@smithy/node-http-handler@2.1.10: resolution: {integrity: sha512-lkALAwtN6odygIM4nB8aHDahINM6WXXjNrZmWQAh0RSossySRT2qa31cFv0ZBuAYVWeprskRk13AFvvLmf1WLw==} engines: {node: '>=14.0.0'} @@ -2985,14 +1607,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/protocol-http@1.2.0: - resolution: {integrity: sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 1.2.0 - tslib: 2.6.2 - dev: true - /@smithy/protocol-http@3.0.10: resolution: {integrity: sha512-6+tjNk7rXW7YTeGo9qwxXj/2BFpJTe37kTj3EnZCoX/nH+NP/WLA7O83fz8XhkGqsaAhLUPo/bB12vvd47nsmg==} engines: {node: '>=14.0.0'} @@ -3001,15 +1615,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/querystring-builder@1.1.0: - resolution: {integrity: sha512-gDEi4LxIGLbdfjrjiY45QNbuDmpkwh9DX4xzrR2AzjjXpxwGyfSpbJaYhXARw9p17VH0h9UewnNQXNwaQyYMDA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/types': 1.2.0 - '@smithy/util-uri-escape': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/querystring-builder@2.0.14: resolution: {integrity: sha512-lQ4pm9vTv9nIhl5jt6uVMPludr6syE2FyJmHsIJJuOD7QPIJnrf9HhUGf1iHh9KJ4CUv21tpOU3X6s0rB6uJ0g==} engines: {node: '>=14.0.0'} @@ -3027,11 +1632,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/service-error-classification@1.1.0: - resolution: {integrity: sha512-OCTEeJ1igatd5kFrS2VDlYbainNNpf7Lj1siFOxnRWqYOP9oNvC5HOJBd3t+Z8MbrmehBtuDJ2QqeBsfeiNkww==} - engines: {node: '>=14.0.0'} - dev: true - /@smithy/service-error-classification@2.0.7: resolution: {integrity: sha512-LLxgW12qGz8doYto15kZ4x1rHjtXl0BnCG6T6Wb8z2DI4PT9cJfOSvzbuLzy7+5I24PAepKgFeWHRd9GYy3Z9w==} engines: {node: '>=14.0.0'} @@ -3061,16 +1661,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/smithy-client@1.1.0: - resolution: {integrity: sha512-j32SGgVhv2G9nBTmel9u3OXux8KG20ssxuFakJrEeDug3kqbl1qrGzVLCe+Eib402UDtA0Sp1a4NZ2SEXDBxag==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/middleware-stack': 1.1.0 - '@smithy/types': 1.2.0 - '@smithy/util-stream': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/smithy-client@2.1.16: resolution: {integrity: sha512-Lw67+yQSpLl4YkDLUzI2KgS8TXclXmbzSeOJUmRFS4ueT56B4pw3RZRF/SRzvgyxM/HxgkUan8oSHXCujPDafQ==} engines: {node: '>=14.0.0'} @@ -3081,13 +1671,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/types@1.2.0: - resolution: {integrity: sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - /@smithy/types@2.6.0: resolution: {integrity: sha512-PgqxJq2IcdMF9iAasxcqZqqoOXBHufEfmbEUdN1pmJrJltT42b0Sc8UiYSWWzKkciIp9/mZDpzYi4qYG1qqg6g==} engines: {node: '>=14.0.0'} @@ -3103,14 +1686,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-base64@1.1.0: - resolution: {integrity: sha512-FpYmDmVbOXAxqvoVCwqehUN0zXS+lN8V7VS9O7I8MKeVHdSTsZzlwiMEvGoyTNOXWn8luF4CTDYgNHnZViR30g==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/util-buffer-from': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/util-base64@2.0.1: resolution: {integrity: sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==} engines: {node: '>=14.0.0'} @@ -3132,14 +1707,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-buffer-from@1.1.0: - resolution: {integrity: sha512-9m6NXE0ww+ra5HKHCHig20T+FAwxBAm7DIdwc/767uGWbRcY720ybgPacQNB96JMOI7xVr/CDa3oMzKmW4a+kw==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/is-array-buffer': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/util-buffer-from@2.0.0: resolution: {integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==} engines: {node: '>=14.0.0'} @@ -3148,13 +1715,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-config-provider@1.1.0: - resolution: {integrity: sha512-rQ47YpNmF6Is4I9GiE3T3+0xQ+r7RKRKbmHYyGSbyep/0cSf9kteKcI0ssJTvveJ1K4QvwrxXj1tEFp/G2UqxQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - /@smithy/util-config-provider@2.0.0: resolution: {integrity: sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==} engines: {node: '>=14.0.0'} @@ -3195,13 +1755,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-hex-encoding@1.1.0: - resolution: {integrity: sha512-7UtIE9eH0u41zpB60Jzr0oNCQ3hMJUabMcKRUVjmyHTXiWDE4vjSqN6qlih7rCNeKGbioS7f/y2Jgym4QZcKFg==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - /@smithy/util-hex-encoding@2.0.0: resolution: {integrity: sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==} engines: {node: '>=14.0.0'} @@ -3209,13 +1762,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-middleware@1.1.0: - resolution: {integrity: sha512-6hhckcBqVgjWAqLy2vqlPZ3rfxLDhFWEmM7oLh2POGvsi7j0tHkbN7w4DFhuBExVJAbJ/qqxqZdRY6Fu7/OezQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - /@smithy/util-middleware@2.0.7: resolution: {integrity: sha512-tRINOTlf1G9B0ECarFQAtTgMhpnrMPSa+5j4ZEwEawCLfTFTavk6757sxhE4RY5RMlD/I3x+DCS8ZUiR8ho9Pw==} engines: {node: '>=14.0.0'} @@ -3224,14 +1770,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-retry@1.1.0: - resolution: {integrity: sha512-ygQW5HBqYXpR3ua09UciS0sL7UGJzGiktrKkOuEJwARoUuzz40yaEGU6xd9Gs7KBmAaFC8gMfnghHtwZ2nyBCQ==} - engines: {node: '>= 14.0.0'} - dependencies: - '@smithy/service-error-classification': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/util-retry@2.0.7: resolution: {integrity: sha512-fIe5yARaF0+xVT1XKcrdnHKTJ1Vc4+3e3tLDjCuIcE9b6fkBzzGFY7AFiX4M+vj6yM98DrwkuZeHf7/hmtVp0Q==} engines: {node: '>= 14.0.0'} @@ -3241,20 +1779,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-stream@1.1.0: - resolution: {integrity: sha512-w3lsdGsntaLQIrwDWJkIFKrFscgZXwU/oxsse09aSTNv5TckPhDeYea3LhsDrU5MGAG3vprhVZAKr33S45coVA==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/fetch-http-handler': 1.1.0 - '@smithy/node-http-handler': 1.1.0 - '@smithy/types': 1.2.0 - '@smithy/util-base64': 1.1.0 - '@smithy/util-buffer-from': 1.1.0 - '@smithy/util-hex-encoding': 1.1.0 - '@smithy/util-utf8': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/util-stream@2.0.21: resolution: {integrity: sha512-0BUE16d7n1x7pi1YluXJdB33jOTyBChT0j/BlOkFa9uxfg6YqXieHxjHNuCdJRARa7AZEj32LLLEPJ1fSa4inA==} engines: {node: '>=14.0.0'} @@ -3269,13 +1793,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-uri-escape@1.1.0: - resolution: {integrity: sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.6.2 - dev: true - /@smithy/util-uri-escape@2.0.0: resolution: {integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==} engines: {node: '>=14.0.0'} @@ -3283,14 +1800,6 @@ packages: tslib: 2.6.2 dev: true - /@smithy/util-utf8@1.1.0: - resolution: {integrity: sha512-p/MYV+JmqmPyjdgyN2UxAeYDj9cBqCjp0C/NsTWnnjoZUVqoeZ6IrW915L9CAKWVECgv9lVQGc4u/yz26/bI1A==} - engines: {node: '>=14.0.0'} - dependencies: - '@smithy/util-buffer-from': 1.1.0 - tslib: 2.6.2 - dev: true - /@smithy/util-utf8@2.0.2: resolution: {integrity: sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==} engines: {node: '>=14.0.0'} @@ -3308,13 +1817,18 @@ packages: tslib: 2.6.2 dev: true - /@sveltejs/adapter-auto@2.1.1(@sveltejs/kit@1.27.6): - resolution: {integrity: sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==} - peerDependencies: - '@sveltejs/kit': ^1.0.0 + /@svelte.kit/adapter-aws@0.2.1(svelte@4.2.7)(vite@5.0.2): + resolution: {integrity: sha512-IYdADzjinpstTw2vb6WP3Dw63fOT3Srz64hcST983h6ElG22P9n3B+qjtc9lXlJY8OT9CgMY7WjDFFHzp/MCxg==} + engines: {node: '>=18', pnpm: ^8.0.0} dependencies: + '@aws-sdk/client-s3': 3.456.0 '@sveltejs/kit': 1.27.6(svelte@4.2.7)(vite@5.0.2) - import-meta-resolve: 4.0.0 + esbuild: 0.19.7 + transitivePeerDependencies: + - aws-crt + - supports-color + - svelte + - vite dev: true /@sveltejs/kit@1.27.6(svelte@4.2.7)(vite@5.0.2): @@ -3381,22 +1895,6 @@ packages: - supports-color dev: true - /@trpc/server@9.16.0: - resolution: {integrity: sha512-IENsJs41ZR4oeFUJhsNNTSgEOtuRN0m9u7ec4u3eG/qOc7bIoo1nDoYtx4bl6OJJSQYEytG9tlcVz9G8OAaHbg==} - dependencies: - tslib: 2.6.2 - dev: true - - /@types/chai-subset@1.3.5: - resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} - dependencies: - '@types/chai': 4.3.11 - dev: true - - /@types/chai@4.3.11: - resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} - dev: true - /@types/cookie@0.5.4: resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} dev: true @@ -3445,12 +1943,6 @@ packages: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true - /@types/ws@8.5.10: - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - dependencies: - '@types/node': 20.10.0 - dev: true - /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2): resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3586,79 +2078,6 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vitest/expect@0.34.6: - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} - dependencies: - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - chai: 4.3.10 - dev: true - - /@vitest/runner@0.34.6: - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} - dependencies: - '@vitest/utils': 0.34.6 - p-limit: 4.0.0 - pathe: 1.1.1 - dev: true - - /@vitest/snapshot@0.34.6: - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} - dependencies: - magic-string: 0.30.5 - pathe: 1.1.1 - pretty-format: 29.7.0 - dev: true - - /@vitest/spy@0.34.6: - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} - dependencies: - tinyspy: 2.2.0 - dev: true - - /@vitest/utils@0.34.6: - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} - dependencies: - diff-sequences: 29.6.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - - /@whatwg-node/events@0.0.2: - resolution: {integrity: sha512-WKj/lI4QjnLuPrim0cfO7i+HsDSXHxNv1y0CrJhdntuO3hxWZmnXCwNDnwOvry11OjRin6cgWNF+j/9Pn8TN4w==} - dev: true - - /@whatwg-node/events@0.0.3: - resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==} - dev: true - - /@whatwg-node/fetch@0.8.8: - resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==} - dependencies: - '@peculiar/webcrypto': 1.4.3 - '@whatwg-node/node-fetch': 0.3.6 - busboy: 1.6.0 - urlpattern-polyfill: 8.0.2 - web-streams-polyfill: 3.2.1 - dev: true - - /@whatwg-node/node-fetch@0.3.6: - resolution: {integrity: sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==} - dependencies: - '@whatwg-node/events': 0.0.3 - busboy: 1.6.0 - fast-querystring: 1.1.2 - fast-url-parser: 1.1.3 - tslib: 2.6.2 - dev: true - - /@whatwg-node/server@0.7.7: - resolution: {integrity: sha512-aHURgNDFm/48WVV3vhTMfnEKCYwYgdaRdRhZsQZx4UVFjGGkGay7Ys0+AYu9QT/jpoImv2oONkstoTMUprDofg==} - dependencies: - '@whatwg-node/fetch': 0.8.8 - tslib: 2.6.2 - dev: true - /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -3667,14 +2086,6 @@ packages: through: 2.3.8 dev: true - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: true - /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3683,33 +2094,12 @@ packages: acorn: 8.11.2 dev: true - /acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} - engines: {node: '>=0.4.0'} - dev: true - /acorn@8.11.2: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /adm-zip@0.5.10: - resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} - engines: {node: '>=6.0'} - dev: true - - /ajv-formats@2.1.1(ajv@8.12.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.12.0 - dev: true - /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -3742,13 +2132,6 @@ packages: type-fest: 1.4.0 dev: true - /ansi-escapes@6.2.0: - resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} - engines: {node: '>=14.16'} - dependencies: - type-fest: 3.13.1 - dev: true - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -3773,71 +2156,21 @@ packages: color-convert: 2.0.1 dev: true - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /archiver-utils@2.1.0: - resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} - engines: {node: '>= 6'} - dependencies: - glob: 7.2.3 - graceful-fs: 4.2.11 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 2.3.8 - dev: true - - /archiver-utils@3.0.4: - resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} - engines: {node: '>= 10'} - dependencies: - glob: 7.2.3 - graceful-fs: 4.2.11 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 3.6.2 + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true - /archiver@5.3.2: - resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} - engines: {node: '>= 10'} + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: - archiver-utils: 2.1.0 - async: 3.2.5 - buffer-crc32: 0.2.13 - readable-stream: 3.6.2 - readdir-glob: 1.1.3 - tar-stream: 2.2.0 - zip-stream: 4.1.1 + normalize-path: 3.0.0 + picomatch: 2.3.1 dev: true /arg@5.0.2: @@ -3861,10 +2194,6 @@ packages: is-array-buffer: 3.0.2 dev: true - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true - /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true @@ -3934,60 +2263,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - dev: true - - /asn1js@3.0.5: - resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} - engines: {node: '>=12.0.0'} - dependencies: - pvtsutils: 1.3.5 - pvutils: 1.1.3 - tslib: 2.6.2 - dev: true - - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true - - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: true - - /async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: true - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true - /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} dev: true - /atomically@1.7.0: - resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==} - engines: {node: '>=10.12.0'} - dev: true - - /auto-bind@5.0.1: - resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /autoprefixer@10.4.16(postcss@8.4.31): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} @@ -4032,64 +2312,6 @@ packages: - table - yaml - /aws-crt@1.19.0: - resolution: {integrity: sha512-pBRSpy4TsL/fxW7Lp1xpN1FhnxvtBXFYx3Njo/j/m8GSV3Ytq/mBetYq7vhDb7CJQmFJCWod9I0yShqjiSUuyQ==} - requiresBuild: true - dependencies: - '@aws-sdk/util-utf8-browser': 3.259.0 - '@httptoolkit/websocket-stream': 6.0.1 - axios: 1.6.2 - buffer: 6.0.3 - crypto-js: 4.2.0 - mqtt: 4.3.7 - process: 0.11.10 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - dev: true - - /aws-iot-device-sdk@2.2.13: - resolution: {integrity: sha512-rUR68vJxna5q0HSvBFy70QD0kFa91H8mQU2Jdor0JpNxmfNaOhQoiGCcgrZAxR69xY1kGHs+JzWOqqVtAfL0+A==} - engines: {node: '>=4.0.0'} - dependencies: - crypto-js: 4.2.0 - minimist: 1.2.6 - mqtt: 4.2.8 - websocket-stream: 5.5.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - - /aws-sdk@2.1502.0: - resolution: {integrity: sha512-mUXUaWmbIyqE6zyIcbUUQIUgw1evK7gV1vQP7ZZEE0qi6hO2Mw99Nc25Bh+187yvRxamMTsFXvvmBViR0Q75SA==} - engines: {node: '>= 10.0.0'} - dependencies: - buffer: 4.9.2 - events: 1.1.1 - ieee754: 1.1.13 - jmespath: 0.16.0 - querystring: 0.2.0 - sax: 1.2.1 - url: 0.10.3 - util: 0.12.5 - uuid: 8.0.0 - xml2js: 0.5.0 - dev: true - - /axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} - dependencies: - follow-redirects: 1.15.3 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: true - /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: @@ -4122,38 +2344,6 @@ packages: readable-stream: 3.6.2 dev: true - /bl@5.1.0: - resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - dependencies: - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: true - - /body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} dev: true @@ -4172,12 +2362,6 @@ packages: concat-map: 0.0.1 dev: true - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: true - /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -4200,18 +2384,6 @@ packages: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.1.13 - isarray: 1.0.0 - dev: true - /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -4219,18 +2391,6 @@ packages: ieee754: 1.2.1 dev: true - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true - - /builtin-modules@3.2.0: - resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} - engines: {node: '>=6'} - dev: true - /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} @@ -4238,23 +2398,6 @@ packages: run-applescript: 5.0.0 dev: true - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - dependencies: - streamsearch: 1.1.0 - dev: true - - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - /cachedir@2.3.0: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} engines: {node: '>=6'} @@ -4296,33 +2439,6 @@ packages: resolution: {integrity: sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==} dev: true - /cdk-assets@2.110.1: - resolution: {integrity: sha512-lquExNYQ1gFw3i+FFKdeNo+LX7JiN/DdpAMrNEIEzXAIkkGiJiGX70Dc/AJ5PuBTuF87CqD9FvFy7099bRnp9Q==} - engines: {node: '>= 14.15.0'} - hasBin: true - dependencies: - '@aws-cdk/cloud-assembly-schema': 2.110.1 - '@aws-cdk/cx-api': 2.110.1(@aws-cdk/cloud-assembly-schema@2.110.1) - archiver: 5.3.2 - aws-sdk: 2.1502.0 - glob: 7.2.3 - mime: 2.6.0 - yargs: 16.2.0 - dev: true - - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true - /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -4349,12 +2465,6 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - dependencies: - get-func-name: 2.0.2 - dev: true - /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -4370,16 +2480,6 @@ packages: fsevents: 2.3.3 dev: true - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - dev: true - - /cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - dev: true - /cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -4412,14 +2512,6 @@ packages: engines: {node: '>= 10'} dev: true - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -4434,13 +2526,6 @@ packages: engines: {node: '>=0.8'} dev: true - /code-excerpt@4.0.0: - resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - convert-to-spaces: 2.0.1 - dev: true - /code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: @@ -4476,13 +2561,6 @@ packages: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} dev: true - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true - /commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} @@ -4498,13 +2576,6 @@ packages: engines: {node: '>= 10'} dev: true - /commist@1.1.0: - resolution: {integrity: sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==} - dependencies: - leven: 2.1.0 - minimist: 1.2.6 - dev: true - /commitizen@4.3.0(typescript@5.3.2): resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} engines: {node: '>= 12'} @@ -4535,63 +2606,15 @@ packages: dot-prop: 5.3.0 dev: true - /compress-commons@4.1.2: - resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} - engines: {node: '>= 10'} - dependencies: - buffer-crc32: 0.2.13 - crc32-stream: 4.0.3 - normalize-path: 3.0.0 - readable-stream: 3.6.2 - dev: true - /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - dev: true - - /conf@10.2.0: - resolution: {integrity: sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==} - engines: {node: '>=12'} - dependencies: - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - atomically: 1.7.0 - debounce-fn: 4.0.0 - dot-prop: 6.0.1 - env-paths: 2.2.1 - json-schema-typed: 7.0.3 - onetime: 5.1.2 - pkg-up: 3.1.0 - semver: 7.5.4 - dev: true - /constructs@10.3.0: resolution: {integrity: sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==} engines: {node: '>= 16.14.0'} dev: true - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: true - /conventional-changelog-angular@7.0.0: resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} engines: {node: '>=16'} @@ -4621,28 +2644,11 @@ packages: split2: 4.2.0 dev: true - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true - - /convert-to-spaces@2.0.1: - resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: true - /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: true - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - /cosmiconfig-typescript-loader@5.0.0(@types/node@18.18.12)(cosmiconfig@8.3.6)(typescript@5.3.2): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} @@ -4675,20 +2681,6 @@ packages: typescript: 5.3.2 dev: true - /crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - dev: true - - /crc32-stream@4.0.3: - resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} - engines: {node: '>= 10'} - dependencies: - crc-32: 1.2.2 - readable-stream: 3.6.2 - dev: true - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -4698,10 +2690,6 @@ packages: which: 2.0.2 dev: true - /crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - dev: true - /css-tree@2.3.1: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -4737,24 +2725,6 @@ packages: engines: {node: '>=8'} dev: true - /debounce-fn@4.0.0: - resolution: {integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==} - engines: {node: '>=10'} - dependencies: - mimic-fn: 3.1.0 - dev: true - - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -4795,13 +2765,6 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - dev: true - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -4858,35 +2821,11 @@ packages: object-keys: 1.1.1 dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - - /dendriform-immer-patch-optimiser@2.1.3(immer@9.0.21): - resolution: {integrity: sha512-QG2IegUCdlhycVwsBOJ7SNd18PgzyWPxBivTzuF0E1KFxaU47fHy/frud74A9E66a4WXyFFp9FLLC2XQDkVj7g==} - engines: {node: '>=10'} - peerDependencies: - immer: '9' - dependencies: - immer: 9.0.21 - dev: true - - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: true - /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} dev: true - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true - /detect-file@1.0.0: resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} engines: {node: '>=0.10.0'} @@ -4924,16 +2863,6 @@ packages: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: true - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -4966,55 +2895,10 @@ packages: is-obj: 2.0.0 dev: true - /dot-prop@6.0.1: - resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} - engines: {node: '>=10'} - dependencies: - is-obj: 2.0.0 - dev: true - - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} - engines: {node: '>=12'} - dev: true - - /dset@3.1.3: - resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} - engines: {node: '>=4'} - dev: true - - /duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.1 - dev: true - - /duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 3.6.2 - stream-shift: 1.0.1 - dev: true - /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true - /electron-to-chromium@1.4.594: resolution: {integrity: sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==} dev: true @@ -5027,22 +2911,6 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: true - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - dev: true - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} requiresBuild: true @@ -5123,36 +2991,6 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - /esbuild@0.18.13: - resolution: {integrity: sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.13 - '@esbuild/android-arm64': 0.18.13 - '@esbuild/android-x64': 0.18.13 - '@esbuild/darwin-arm64': 0.18.13 - '@esbuild/darwin-x64': 0.18.13 - '@esbuild/freebsd-arm64': 0.18.13 - '@esbuild/freebsd-x64': 0.18.13 - '@esbuild/linux-arm': 0.18.13 - '@esbuild/linux-arm64': 0.18.13 - '@esbuild/linux-ia32': 0.18.13 - '@esbuild/linux-loong64': 0.18.13 - '@esbuild/linux-mips64el': 0.18.13 - '@esbuild/linux-ppc64': 0.18.13 - '@esbuild/linux-riscv64': 0.18.13 - '@esbuild/linux-s390x': 0.18.13 - '@esbuild/linux-x64': 0.18.13 - '@esbuild/netbsd-x64': 0.18.13 - '@esbuild/openbsd-x64': 0.18.13 - '@esbuild/sunos-x64': 0.18.13 - '@esbuild/win32-arm64': 0.18.13 - '@esbuild/win32-ia32': 0.18.13 - '@esbuild/win32-x64': 0.18.13 - dev: true - /esbuild@0.19.7: resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==} engines: {node: '>=12'} @@ -5188,20 +3026,11 @@ packages: engines: {node: '>=6'} dev: true - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true - /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -5431,20 +3260,10 @@ packages: engines: {node: '>=0.10.0'} dev: true - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: true - /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true - /events@1.1.1: - resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} - engines: {node: '>=0.4.x'} - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -5497,45 +3316,6 @@ packages: homedir-polyfill: 1.0.3 dev: true - /express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -5545,10 +3325,6 @@ packages: tmp: 0.0.33 dev: true - /fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - dev: true - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -5568,32 +3344,10 @@ packages: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-jwt@3.3.2: - resolution: {integrity: sha512-H+JYxaFy2LepiC1AQWM/2hzKlQOWaWUkEnu/yebhYu4+ameb3qG77WiRZ1Ct6YBk6d/ESsNguBfTT5+q0XMtKg==} - engines: {node: '>=16 <22'} - dependencies: - '@lukeed/ms': 2.0.1 - asn1.js: 5.4.1 - ecdsa-sig-formatter: 1.0.11 - mnemonist: 0.39.5 - dev: true - /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - dependencies: - fast-decode-uri-component: 1.0.1 - dev: true - - /fast-url-parser@1.1.3: - resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} - dependencies: - punycode: 1.4.1 - dev: true - /fast-xml-parser@4.2.5: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true @@ -5628,21 +3382,6 @@ packages: to-regex-range: 5.0.1 dev: true - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /find-node-modules@2.1.3: resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} dependencies: @@ -5654,13 +3393,6 @@ packages: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: true - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: true - /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -5700,57 +3432,16 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: true - /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: true - - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: true - /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: true - - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: true - /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -5774,14 +3465,6 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5808,20 +3491,11 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true - /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: @@ -5831,11 +3505,6 @@ packages: hasown: 2.0.0 dev: true - /get-port@6.1.2: - resolution: {integrity: sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} @@ -5889,18 +3558,6 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 - dev: true - /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: @@ -5950,11 +3607,6 @@ packages: which: 1.3.1 dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globals@13.23.0: resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} @@ -6014,31 +3666,6 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql-yoga@3.9.1(graphql@16.8.1): - resolution: {integrity: sha512-BB6EkN64VBTXWmf9Kym2OsVZFzBC0mAsQNo9eNB5xIr3t+x7qepQ34xW5A353NWol3Js3xpzxwIKFVF6l9VsPg==} - peerDependencies: - graphql: ^15.2.0 || ^16.0.0 - dependencies: - '@envelop/core': 3.0.6 - '@envelop/validation-cache': 5.1.3(@envelop/core@3.0.6)(graphql@16.8.1) - '@graphql-tools/executor': 0.0.18(graphql@16.8.1) - '@graphql-tools/schema': 9.0.19(graphql@16.8.1) - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - '@graphql-yoga/logger': 0.0.1 - '@graphql-yoga/subscription': 3.1.0 - '@whatwg-node/fetch': 0.8.8 - '@whatwg-node/server': 0.7.7 - dset: 3.1.3 - graphql: 16.8.1 - lru-cache: 7.18.3 - tslib: 2.6.2 - dev: true - - /graphql@16.8.1: - resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - dev: true - /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -6081,10 +3708,6 @@ packages: has-symbols: 1.0.3 dev: true - /hash-it@6.0.0: - resolution: {integrity: sha512-KHzmSFx1KwyMPw0kXeeUD752q/Kfbzhy6dAZrjXV9kAIXGqzGvv8vhkUqj+2MGZldTo0IBpw6v7iWE7uxsvH0w==} - dev: true - /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -6092,13 +3715,6 @@ packages: function-bind: 1.1.2 dev: true - /help-me@3.0.0: - resolution: {integrity: sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==} - dependencies: - glob: 7.2.3 - readable-stream: 3.6.2 - dev: true - /homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} @@ -6117,17 +3733,6 @@ packages: lru-cache: 6.0.0 dev: true - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: true - /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -6156,10 +3761,6 @@ packages: safer-buffer: 2.1.2 dev: true - /ieee754@1.1.13: - resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} - dev: true - /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -6169,10 +3770,6 @@ packages: engines: {node: '>= 4'} dev: true - /immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} - dev: true - /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -6181,10 +3778,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - dev: true - /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -6195,11 +3788,6 @@ packages: engines: {node: '>=8'} dev: true - /indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - dev: true - /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -6215,62 +3803,6 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /ink-spinner@5.0.0(ink@4.4.1)(react@18.2.0): - resolution: {integrity: sha512-EYEasbEjkqLGyPOUc8hBJZNuC5GvXGMLu0w5gdTNskPc7Izc5vO3tdQEYnzvshucyGCBXc86ig0ujXPMWaQCdA==} - engines: {node: '>=14.16'} - peerDependencies: - ink: '>=4.0.0' - react: '>=18.0.0' - dependencies: - cli-spinners: 2.9.2 - ink: 4.4.1(react@18.2.0) - react: 18.2.0 - dev: true - - /ink@4.4.1(react@18.2.0): - resolution: {integrity: sha512-rXckvqPBB0Krifk5rn/5LvQGmyXwCUpBfmTwbkQNBY9JY8RSl3b8OftBNEYxg4+SWUhEKcPifgope28uL9inlA==} - engines: {node: '>=14.16'} - peerDependencies: - '@types/react': '>=18.0.0' - react: '>=18.0.0' - react-devtools-core: ^4.19.1 - peerDependenciesMeta: - '@types/react': - optional: true - react-devtools-core: - optional: true - dependencies: - '@alcalzone/ansi-tokenize': 0.1.3 - ansi-escapes: 6.2.0 - auto-bind: 5.0.1 - chalk: 5.3.0 - cli-boxes: 3.0.0 - cli-cursor: 4.0.0 - cli-truncate: 3.1.0 - code-excerpt: 4.0.0 - indent-string: 5.0.0 - is-ci: 3.0.1 - is-lower-case: 2.0.2 - is-upper-case: 2.0.2 - lodash: 4.17.21 - patch-console: 2.0.0 - react: 18.2.0 - react-reconciler: 0.29.0(react@18.2.0) - scheduler: 0.23.0 - signal-exit: 3.0.7 - slice-ansi: 6.0.0 - stack-utils: 2.0.6 - string-width: 5.1.2 - type-fest: 0.12.0 - widest-line: 4.0.1 - wrap-ansi: 8.1.0 - ws: 8.14.2 - yoga-wasm-web: 0.3.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - /inquirer@8.2.5: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} @@ -6301,19 +3833,6 @@ packages: side-channel: 1.0.4 dev: true - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: true - - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - dev: true - /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -6353,13 +3872,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - dependencies: - ci-info: 3.9.0 - dev: true - /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: @@ -6400,13 +3912,6 @@ packages: engines: {node: '>=12'} dev: true - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -6427,17 +3932,6 @@ packages: engines: {node: '>=8'} dev: true - /is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - dev: true - - /is-lower-case@2.0.2: - resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} - dependencies: - tslib: 2.6.2 - dev: true - /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -6538,17 +4032,6 @@ packages: engines: {node: '>=10'} dev: true - /is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - dev: true - - /is-upper-case@2.0.2: - resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} - dependencies: - tslib: 2.6.2 - dev: true - /is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true @@ -6571,10 +4054,6 @@ packages: is-docker: 2.2.1 dev: true - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -6583,41 +4062,11 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /isomorphic-ws@4.0.1(ws@8.14.2): - resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} - peerDependencies: - ws: '*' - dependencies: - ws: 8.14.2 - dev: true - - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: true - /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true dev: true - /jmespath@0.16.0: - resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} - engines: {node: '>= 0.6.0'} - dev: true - - /jose@4.15.4: - resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} - dev: true - - /js-sdsl@4.3.0: - resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} - dev: true - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true @@ -6629,12 +4078,6 @@ packages: argparse: 2.0.1 dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -6652,10 +4095,6 @@ packages: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-schema-typed@7.0.3: - resolution: {integrity: sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==} - dev: true - /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true @@ -6667,16 +4106,6 @@ packages: minimist: 1.2.8 dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true - - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -6690,10 +4119,6 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jsonschema@1.4.1: - resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} - dev: true - /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: @@ -6714,56 +4139,6 @@ packages: resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} dev: true - /kysely-codegen@0.10.1(kysely@0.25.0): - resolution: {integrity: sha512-8Bslh952gN5gtucRv4jTZDFD18RBioS6M50zHfe5kwb5iSyEAunU4ZYMdHzkHraa4zxjg5/183XlOryBCXLRIw==} - hasBin: true - peerDependencies: - better-sqlite3: '>=7.6.2' - kysely: '>=0.19.12' - mysql2: ^2.3.3 || ^3.0.0 - pg: ^8.8.0 - peerDependenciesMeta: - better-sqlite3: - optional: true - mysql2: - optional: true - pg: - optional: true - dependencies: - chalk: 4.1.2 - dotenv: 16.3.1 - kysely: 0.25.0 - micromatch: 4.0.5 - minimist: 1.2.8 - dev: true - - /kysely-data-api@0.2.1(@aws-sdk/client-rds-data@3.454.0)(kysely@0.25.0): - resolution: {integrity: sha512-KmASvF1gmjVqyU9WOUXhCQlv29ofR+xc2DhjaIomz1+Bjd/VtR2/3g4ZuXwG1L4lWGKxMuo5iOvK3XyPbB4LdQ==} - peerDependencies: - '@aws-sdk/client-rds-data': 3.x - kysely: 0.x - dependencies: - '@aws-sdk/client-rds-data': 3.454.0 - kysely: 0.25.0 - dev: true - - /kysely@0.25.0: - resolution: {integrity: sha512-srn0efIMu5IoEBk0tBmtGnoUss4uwvxtbFQWG/U2MosfqIace1l43IFP1PmEpHRDp+Z79xIcKEqmHH3dAvQdQA==} - engines: {node: '>=14.0.0'} - dev: true - - /lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - dependencies: - readable-stream: 2.3.8 - dev: true - - /leven@2.1.0: - resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==} - engines: {node: '>=0.10.0'} - dev: true - /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -6817,23 +4192,10 @@ packages: wrap-ansi: 8.1.0 dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} dev: true - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: true - /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -6852,18 +4214,6 @@ packages: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true - /lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: true - - /lodash.difference@4.5.0: - resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} - dev: true - - /lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - dev: true - /lodash.isfunction@3.0.9: resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} dev: true @@ -6897,14 +4247,6 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: true - - /lodash.union@4.6.0: - resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} - dev: true - /lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} requiresBuild: true @@ -6926,14 +4268,6 @@ packages: is-unicode-supported: 0.1.0 dev: true - /log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} - dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 - dev: true - /log-update@5.0.1: resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6950,30 +4284,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - dev: true - - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - dependencies: - get-func-name: 2.0.2 - dev: true - - /lru-cache@10.1.0: - resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} - engines: {node: 14 || >=16.14} - dev: true - - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: true - /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -6981,15 +4291,6 @@ packages: yallist: 4.0.0 dev: true - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: true - - /lucia@2.7.4: - resolution: {integrity: sha512-do6Aah5kX2DUl7N0CvELWV1/b+qZGF0AUmUrkthYeNfXfgx4RAkWi4BkAlgGDBB/0c1WApb18mUD1pA5qTaWmw==} - dev: false - /magic-string@0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} @@ -7015,12 +4316,7 @@ packages: dev: true /mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: true - - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true /meow@12.1.1: @@ -7045,10 +4341,6 @@ packages: yargs-parser: 20.2.9 dev: true - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - dev: true - /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true @@ -7062,11 +4354,6 @@ packages: resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} dev: true - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true - /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -7075,40 +4362,11 @@ packages: picomatch: 2.3.1 dev: true - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true - - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: true - /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-fn@3.1.0: - resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} - engines: {node: '>=8'} - dev: true - /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -7119,37 +4377,12 @@ packages: engines: {node: '>=4'} dev: true - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: true - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@6.2.0: - resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -7159,10 +4392,6 @@ packages: kind-of: 6.0.3 dev: true - /minimist@1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - dev: true - /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true @@ -7171,11 +4400,6 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - dev: true - /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -7183,84 +4407,6 @@ packages: minimist: 1.2.8 dev: true - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} - dependencies: - acorn: 8.11.2 - pathe: 1.1.1 - pkg-types: 1.0.3 - ufo: 1.3.2 - dev: true - - /mnemonist@0.39.5: - resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} - dependencies: - obliterator: 2.0.4 - dev: true - - /mqtt-packet@6.10.0: - resolution: {integrity: sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==} - dependencies: - bl: 4.1.0 - debug: 4.3.4 - process-nextick-args: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /mqtt@4.2.8: - resolution: {integrity: sha512-DJYjlXODVXtSDecN8jnNzi6ItX3+ufGsEs9OB3YV24HtkRrh7kpx8L5M1LuyF0KzaiGtWr2PzDcMGAY60KGOSA==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - commist: 1.1.0 - concat-stream: 2.0.0 - debug: 4.3.4 - duplexify: 4.1.2 - help-me: 3.0.0 - inherits: 2.0.4 - minimist: 1.2.6 - mqtt-packet: 6.10.0 - pump: 3.0.0 - readable-stream: 3.6.2 - reinterval: 1.1.0 - split2: 3.2.2 - ws: 7.5.9 - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - - /mqtt@4.3.7: - resolution: {integrity: sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - commist: 1.1.0 - concat-stream: 2.0.0 - debug: 4.3.4 - duplexify: 4.1.2 - help-me: 3.0.0 - inherits: 2.0.4 - lru-cache: 6.0.0 - minimist: 1.2.8 - mqtt-packet: 6.10.0 - number-allocator: 1.0.14 - pump: 3.0.0 - readable-stream: 3.6.2 - reinterval: 1.1.0 - rfdc: 1.3.0 - split2: 3.2.2 - ws: 7.5.9 - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -7271,10 +4417,6 @@ packages: engines: {node: '>=10'} dev: true - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -7305,11 +4447,6 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true - /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true @@ -7357,25 +4494,11 @@ packages: path-key: 4.0.0 dev: true - /number-allocator@1.0.14: - resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==} - dependencies: - debug: 4.3.4 - js-sdsl: 4.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: true - /object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - dev: true - /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -7427,22 +4550,6 @@ packages: es-abstract: 1.22.3 dev: true - /obliterator@2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - dev: true - - /oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - dev: true - - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -7473,15 +4580,6 @@ packages: is-wsl: 2.2.0 dev: true - /openid-client@5.6.1: - resolution: {integrity: sha512-PtrWsY+dXg6y8mtMPyL/namZSYVz8pjXz3yJiBNZsEdCnu9miHLB4ELVC85WvneMKo2Rg62Ay7NkuCpM0bgiLQ==} - dependencies: - jose: 4.15.4 - lru-cache: 6.0.0 - object-hash: 2.2.0 - oidc-token-hash: 5.0.3 - dev: true - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -7509,21 +4607,6 @@ packages: wcwidth: 1.0.1 dev: true - /ora@6.3.1: - resolution: {integrity: sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - chalk: 5.3.0 - cli-cursor: 4.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 1.3.0 - log-symbols: 5.1.0 - stdin-discarder: 0.1.0 - strip-ansi: 7.1.0 - wcwidth: 1.0.1 - dev: true - /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -7543,20 +4626,6 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: true - /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -7598,21 +4667,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: true - - /patch-console@2.0.0: - resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true - /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -7637,31 +4691,11 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 10.1.0 - minipass: 7.0.4 - dev: true - - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - dev: true - /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: true - - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true - /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: @@ -7695,37 +4729,6 @@ packages: engines: {node: '>= 6'} dev: true - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.4.2 - pathe: 1.1.1 - dev: true - - /pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - dependencies: - find-up: 3.0.0 - dev: true - - /playwright-core@1.40.0: - resolution: {integrity: sha512-fvKewVJpGeca8t0ipM56jkVSU6Eo0RmFvQ/MaCQNDYm+sdvKkMBBWTE1FdeMqIdumRaXXjZChWHvIzCGM/tA/Q==} - engines: {node: '>=16'} - hasBin: true - dev: true - - /playwright@1.40.0: - resolution: {integrity: sha512-gyHAgQjiDf1m34Xpwzaqb76KgfzYrhK7iih+2IzcOCoZWr/8ZqmdBw+t0RU85ZmfJMgtgAiNtBQ/KS2325INXw==} - engines: {node: '>=16'} - hasBin: true - dependencies: - playwright-core: 1.40.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /postcss-import@15.1.0(postcss@8.4.31): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -7875,15 +4878,6 @@ packages: hasBin: true dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - /prisma@5.6.0: resolution: {integrity: sha512-EEaccku4ZGshdr2cthYHhf7iyvCcXqwJDvnoQRAJg5ge2Tzpv0e2BaMCp+CbbDUwoVTzwgOap9Zp+d4jFa2O9A==} engines: {node: '>=16.13'} @@ -7892,77 +4886,11 @@ packages: dependencies: '@prisma/engines': 5.6.0 - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: true - - /promptly@3.2.0: - resolution: {integrity: sha512-WnR9obtgW+rG4oUV3hSnNGl1pHm3V1H/qD9iJBumGSmVsSC5HpZOLuu8qdMb6yCItGfT7dcRszejr/5P3i9Pug==} - dependencies: - read: 1.0.7 - dev: true - - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: true - - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true - - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - - /punycode@1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - dev: true - - /punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: true - /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} dev: true - /pvtsutils@1.3.5: - resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} - dependencies: - tslib: 2.6.2 - dev: true - - /pvutils@1.1.3: - resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} - engines: {node: '>=6.0.0'} - dev: true - - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: true - - /querystring@0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: true - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -7972,43 +4900,6 @@ packages: engines: {node: '>=8'} dev: true - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: true - - /raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: true - - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true - - /react-reconciler@0.29.0(react@18.2.0): - resolution: {integrity: sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==} - engines: {node: '>=0.10.0'} - peerDependencies: - react: ^18.2.0 - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - dev: true - - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - dev: true - /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: @@ -8034,25 +4925,6 @@ packages: type-fest: 0.6.0 dev: true - /read@1.0.7: - resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} - engines: {node: '>=0.8'} - dependencies: - mute-stream: 0.0.8 - dev: true - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -8062,12 +4934,6 @@ packages: util-deprecate: 1.0.2 dev: true - /readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - dependencies: - minimatch: 5.1.6 - dev: true - /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -8092,14 +4958,6 @@ packages: set-function-name: 2.0.1 dev: true - /reinterval@1.1.0: - resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==} - dev: true - - /remeda@1.29.0: - resolution: {integrity: sha512-M3LQ14KtMdQ1879lj/kKji3zBk158s7Rwg963mEkTfQFMxnKrIEAMxJfo/+0sp/+uGgN/KMVU2MBA4LNjqf8YQ==} - dev: true - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8244,10 +5102,6 @@ packages: isarray: 2.0.5 dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true @@ -8273,16 +5127,6 @@ packages: rimraf: 2.7.1 dev: true - /sax@1.2.1: - resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} - dev: true - - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - dependencies: - loose-envify: 1.4.0 - dev: true - /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -8301,39 +5145,6 @@ packages: lru-cache: 6.0.0 dev: true - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - dev: true - /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true @@ -8357,10 +5168,6 @@ packages: has-property-descriptors: 1.0.1 dev: true - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -8381,10 +5188,6 @@ packages: object-inspect: 1.13.1 dev: true - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true @@ -8413,15 +5216,6 @@ packages: engines: {node: '>=12'} dev: true - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -8430,14 +5224,6 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /slice-ansi@6.0.0: - resolution: {integrity: sha512-6bn4hRfkTvDfUoEQYkERg0BVF1D0vrX9HEkMl08uDiNWvVvjylLHvZFZWkDo6wjT8tUctbYl1nCOuE66ZTaUtA==} - engines: {node: '>=14.16'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - /sorcery@0.11.0: resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} hasBin: true @@ -8503,147 +5289,6 @@ packages: engines: {node: '>= 10.x'} dev: true - /sst-aws-cdk@2.110.1-1: - resolution: {integrity: sha512-fCY0eoB625M6MRFn7Hf3PiANTWyclSzg7gLNCs9vzh4Z11ljU4f9pvM/wjXhv+xDJwOjIMPHyVAG6yo8rrdTOA==} - engines: {node: '>= 14.15.0'} - hasBin: true - dependencies: - archiver: 5.3.2 - chalk: 4.1.2 - fs-extra: 9.1.0 - promptly: 3.2.0 - yaml: 1.10.2 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /sst@2.36.6: - resolution: {integrity: sha512-N5LkreTzAKuQdph1TJVHa4EjR7R2Q571UJ+Jl6yk5/GDaRVgyBWhB4HxOmkOHghLHQu8SnGDPqnGCQJKilJPug==} - hasBin: true - peerDependencies: - '@sls-next/lambda-at-edge': ^3.7.0 - peerDependenciesMeta: - '@sls-next/lambda-at-edge': - optional: true - dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.110.1-alpha.0(aws-cdk-lib@2.110.1)(constructs@10.3.0) - '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.110.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0)(aws-cdk-lib@2.110.1)(constructs@10.3.0) - '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.110.1-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.110.1-alpha.0)(aws-cdk-lib@2.110.1)(constructs@10.3.0) - '@aws-cdk/cloud-assembly-schema': 2.110.1 - '@aws-cdk/cloudformation-diff': 2.110.1 - '@aws-cdk/cx-api': 2.110.1(@aws-cdk/cloud-assembly-schema@2.110.1) - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/client-cloudformation': 3.454.0 - '@aws-sdk/client-ecs': 3.454.0 - '@aws-sdk/client-eventbridge': 3.454.0 - '@aws-sdk/client-iam': 3.454.0 - '@aws-sdk/client-iot': 3.454.0 - '@aws-sdk/client-iot-data-plane': 3.454.0 - '@aws-sdk/client-lambda': 3.454.0 - '@aws-sdk/client-rds-data': 3.454.0 - '@aws-sdk/client-s3': 3.456.0 - '@aws-sdk/client-ssm': 3.454.0 - '@aws-sdk/client-sts': 3.454.0 - '@aws-sdk/config-resolver': 3.374.0 - '@aws-sdk/credential-providers': 3.454.0 - '@aws-sdk/middleware-retry': 3.374.0 - '@aws-sdk/middleware-signing': 3.451.0 - '@aws-sdk/signature-v4-crt': 3.451.0 - '@aws-sdk/smithy-client': 3.374.0 - '@babel/core': 7.23.3 - '@babel/generator': 7.23.4 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) - '@smithy/signature-v4': 2.0.16 - '@trpc/server': 9.16.0 - adm-zip: 0.5.10 - aws-cdk-lib: 2.110.1(constructs@10.3.0) - aws-iot-device-sdk: 2.2.13 - aws-sdk: 2.1502.0 - builtin-modules: 3.2.0 - cdk-assets: 2.110.1 - chalk: 5.3.0 - chokidar: 3.5.3 - ci-info: 3.9.0 - colorette: 2.0.20 - conf: 10.2.0 - constructs: 10.3.0 - cross-spawn: 7.0.3 - dendriform-immer-patch-optimiser: 2.1.3(immer@9.0.21) - dotenv: 16.3.1 - esbuild: 0.18.13 - express: 4.18.2 - fast-jwt: 3.3.2 - get-port: 6.1.2 - glob: 10.3.10 - graphql: 16.8.1 - graphql-yoga: 3.9.1(graphql@16.8.1) - immer: 9.0.21 - ink: 4.4.1(react@18.2.0) - ink-spinner: 5.0.0(ink@4.4.1)(react@18.2.0) - kysely: 0.25.0 - kysely-codegen: 0.10.1(kysely@0.25.0) - kysely-data-api: 0.2.1(@aws-sdk/client-rds-data@3.454.0)(kysely@0.25.0) - minimatch: 6.2.0 - openid-client: 5.6.1 - ora: 6.3.1 - react: 18.2.0 - remeda: 1.29.0 - sst-aws-cdk: 2.110.1-1 - tree-kill: 1.2.2 - undici: 5.28.0 - uuid: 9.0.1 - ws: 8.14.2 - yargs: 17.7.2 - zod: 3.22.4 - transitivePeerDependencies: - - '@types/react' - - aws-crt - - better-sqlite3 - - bufferutil - - debug - - mysql2 - - pg - - react-devtools-core - - supports-color - - utf-8-validate - dev: true - - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: true - - /std-env@3.5.0: - resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} - dev: true - - /stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - bl: 5.1.0 - dev: true - - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} - dev: true - - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: true - /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -8692,12 +5337,6 @@ packages: es-abstract: 1.22.3 dev: true - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -8750,12 +5389,6 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - dependencies: - acorn: 8.11.2 - dev: true - /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: true @@ -8793,7 +5426,7 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-check@3.6.2(@babel/core@7.23.3)(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7): + /svelte-check@3.6.2(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7): resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==} hasBin: true peerDependencies: @@ -8806,7 +5439,7 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.7 - svelte-preprocess: 5.1.1(@babel/core@7.23.3)(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2) + svelte-preprocess: 5.1.1(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2) typescript: 5.3.2 transitivePeerDependencies: - '@babel/core' @@ -8846,11 +5479,7 @@ packages: svelte: 4.2.7 dev: true - /svelte-kit-sst@2.36.6: - resolution: {integrity: sha512-gR1iwtcVmaVUrKqG01mYqxE5tHRkfvaehkctsLgA6stn5stO46VrPd/pm6pdC0MGvq8WR8uNvALISmdDgLyXdA==} - dev: true - - /svelte-preprocess@5.1.1(@babel/core@7.23.3)(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2): + /svelte-preprocess@5.1.1(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2): resolution: {integrity: sha512-p/Dp4hmrBW5mrCCq29lEMFpIJT2FZsRlouxEc5qpbOmXRbaFs7clLs8oKPwD3xCFyZfv1bIhvOzpQkhMEVQdMw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -8888,7 +5517,6 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.23.3 '@types/pug': 2.0.10 detect-indent: 6.1.0 magic-string: 0.27.0 @@ -8927,17 +5555,6 @@ packages: tslib: 2.6.2 dev: true - /table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} - dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /tailwindcss@3.3.5: resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} engines: {node: '>=14.0.0'} @@ -8969,17 +5586,6 @@ packages: - ts-node dev: true - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: true - /text-extensions@2.4.0: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} @@ -9019,20 +5625,6 @@ packages: globrex: 0.1.2 dev: true - /tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} - dev: true - - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} - dev: true - - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} - engines: {node: '>=14.0.0'} - dev: true - /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} @@ -9045,11 +5637,6 @@ packages: os-tmpdir: 1.0.2 dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -9057,21 +5644,11 @@ packages: is-number: 7.0.0 dev: true - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: true - /totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} dev: true - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true - /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -9118,16 +5695,6 @@ packages: prelude-ls: 1.2.1 dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - - /type-fest@0.12.0: - resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==} - engines: {node: '>=10'} - dev: true - /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} @@ -9158,19 +5725,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - dev: true - - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - dev: true - /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} @@ -9209,24 +5763,12 @@ packages: is-typed-array: 1.1.12 dev: true - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true - /typescript@5.3.2: resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} engines: {node: '>=14.17'} hasBin: true dev: true - /ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - dev: true - - /ultron@1.1.1: - resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} - dev: true - /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -9247,23 +5789,11 @@ packages: '@fastify/busboy': 2.1.0 dev: true - /undici@5.28.0: - resolution: {integrity: sha512-gM12DkXhlAc5+/TPe60iy9P6ETgVfqTuRJ6aQ4w8RYu0MqKuXhaq3/b86GfzDQnNA3NUO6aUNdvevrKH59D0Nw==} - engines: {node: '>=14.0'} - dependencies: - '@fastify/busboy': 2.1.0 - dev: true - /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} dev: true - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true - /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -9286,51 +5816,15 @@ packages: punycode: 2.3.1 dev: true - /url@0.10.3: - resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - dev: true - - /urlpattern-polyfill@8.0.2: - resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} - dev: true - /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.13 - dev: true - - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: true - - /uuid@8.0.0: - resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} - hasBin: true - dev: true - /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: true - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: true - /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -9338,38 +5832,6 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /value-or-promise@1.0.12: - resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} - engines: {node: '>=12'} - dev: true - - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: true - - /vite-node@0.34.6(@types/node@20.10.0): - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.4.2 - pathe: 1.1.1 - picocolors: 1.0.0 - vite: 5.0.2(@types/node@20.10.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - /vite@5.0.2(@types/node@20.10.0): resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==} engines: {node: ^18.0.0 || >=20.0.0} @@ -9417,106 +5879,12 @@ packages: vite: 5.0.2(@types/node@20.10.0) dev: true - /vitest@0.34.6: - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.11 - '@types/chai-subset': 1.3.5 - '@types/node': 20.10.0 - '@vitest/expect': 0.34.6 - '@vitest/runner': 0.34.6 - '@vitest/snapshot': 0.34.6 - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - acorn: 8.11.2 - acorn-walk: 8.3.0 - cac: 6.7.14 - chai: 4.3.10 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.5 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.5.0 - strip-literal: 1.3.0 - tinybench: 2.5.1 - tinypool: 0.7.0 - vite: 5.0.2(@types/node@20.10.0) - vite-node: 0.34.6(@types/node@20.10.0) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} - dev: true - - /webcrypto-core@1.7.7: - resolution: {integrity: sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==} - dependencies: - '@peculiar/asn1-schema': 2.3.8 - '@peculiar/json-schema': 1.1.12 - asn1js: 3.0.5 - pvtsutils: 1.3.5 - tslib: 2.6.2 - dev: true - - /websocket-stream@5.5.2: - resolution: {integrity: sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==} - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - ws: 3.3.3 - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -9553,22 +5921,6 @@ packages: isexe: 2.0.0 dev: true - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - dev: true - - /widest-line@4.0.1: - resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - dev: true - /word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -9596,75 +5948,11 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws@3.3.3: - resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - async-limiter: 1.0.1 - safe-buffer: 5.1.2 - ultron: 1.1.1 - dev: true - - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - - /xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - dependencies: - sax: 1.2.1 - xmlbuilder: 11.0.1 - dev: true - - /xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - dev: true - - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true @@ -9689,19 +5977,6 @@ packages: engines: {node: '>=12'} dev: true - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -9719,25 +5994,3 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true - - /yoga-wasm-web@0.3.3: - resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} - dev: true - - /zip-stream@4.1.1: - resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} - engines: {node: '>= 10'} - dependencies: - archiver-utils: 3.0.4 - compress-commons: 4.1.2 - readable-stream: 3.6.2 - dev: true - - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: true diff --git a/svelte.config.js b/svelte.config.js index f3d3076b..7ce1745c 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,7 +1,9 @@ +import adapter from "@svelte.kit/adapter-aws"; import { vitePreprocess } from "@sveltejs/kit/vite"; -import adapter from "svelte-kit-sst"; -/** @type {import('@sveltejs/kit').Config} */ +/** + * @type {import('@sveltejs/kit').Config} + */ const config = { preprocess: [vitePreprocess({})], kit: { From 1a4b3710df34e404a6b15fed566e2f730450c6f2 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:49:14 -0800 Subject: [PATCH 008/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20use=20prettier?= =?UTF-8?q?=20config=20esm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prettier.config.cjs => prettier.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename prettier.config.cjs => prettier.config.js (93%) diff --git a/prettier.config.cjs b/prettier.config.js similarity index 93% rename from prettier.config.cjs rename to prettier.config.js index d5d22d34..fddfe225 100644 --- a/prettier.config.cjs +++ b/prettier.config.js @@ -3,6 +3,7 @@ /** * Prettier plugins only work in VSCode with the `cjs` format. * @see https://github.com/tailwindlabs/prettier-plugin-tailwindcss/issues/113 + * * @type {import("prettier").Config} */ const config = { @@ -11,4 +12,4 @@ const config = { overrides: [{ files: "*.svelte", options: { parser: "svelte" } }], }; -module.exports = config; +export default config; From 64fc25e0d9721d513e45a9958b28060a9483df64 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:49:37 -0800 Subject: [PATCH 009/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20sst=20?= =?UTF-8?q?config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sst.config.ts | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 sst.config.ts diff --git a/sst.config.ts b/sst.config.ts deleted file mode 100644 index bfe69e7f..00000000 --- a/sst.config.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Certificate } from "aws-cdk-lib/aws-certificatemanager"; -import type { SSTConfig } from "sst"; -import { SvelteKitSite } from "sst/constructs"; - -export default { - config(_input) { - return { - name: "ZotMeet", - region: "us-east-1", - }; - }, - stacks(app) { - app.stack(function Site({ stack }) { - if (!process.env.CERTIFICATE_ARN) { - throw new Error("Certificate ARN not provided."); - } - const site = new SvelteKitSite(stack, "site", { - customDomain: { - domainName: `${stack.stage === "prod" ? "" : `${stack.stage}.`}zotmeet.com`, - hostedZone: "zotmeet.com", - cdk: { - // @ts-expect-error Constructs types are broken, see https://github.com/sst/sst/issues/3483 - certificate: Certificate.fromCertificateArn( - stack, - "MyCert", - process.env.CERTIFICATE_ARN, - ), - }, - }, - }); - stack.addOutputs({ url: site.url }); - }); - }, -} satisfies SSTConfig; From 12491c6a9273442ccff2681c739172fc39924813 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:50:44 -0800 Subject: [PATCH 010/115] =?UTF-8?q?feat:=20=E2=9C=A8=20move=20commitlint?= =?UTF-8?q?=20to=20esm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commitlint.config.cjs => commitlint.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename commitlint.config.cjs => commitlint.config.js (84%) diff --git a/commitlint.config.cjs b/commitlint.config.js similarity index 84% rename from commitlint.config.cjs rename to commitlint.config.js index f9889d93..2dbd0b95 100644 --- a/commitlint.config.cjs +++ b/commitlint.config.js @@ -7,4 +7,4 @@ const config = { extends: ["@commitlint/config-conventional"], }; -module.exports = config; +export default config; From c9ac6ab667fbb5dacfd12caae2b6b8273019e2ed Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:51:16 -0800 Subject: [PATCH 011/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20move=20theme=20?= =?UTF-8?q?to=20src?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- theme.js => src/theme.js | 0 tailwind.config.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename theme.js => src/theme.js (100%) diff --git a/theme.js b/src/theme.js similarity index 100% rename from theme.js rename to src/theme.js diff --git a/tailwind.config.js b/tailwind.config.js index b11b30a5..9d30ee2f 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -4,7 +4,7 @@ import { join } from "node:path"; import { skeleton } from "@skeletonlabs/tw-plugin"; -import { zotmeetTheme } from "./theme"; +import { zotmeetTheme } from "./src/theme"; /** * @type {import('tailwindcss').Config} From 14ca29b2a786193c5549623ae9c517aceea14bcf Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:51:54 -0800 Subject: [PATCH 012/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20move=20vite=20c?= =?UTF-8?q?onfig=20to=20js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - it seems more consistent when there's as many ESM JS config files as possible :^) --- vite.config.ts => vite.config.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) rename vite.config.ts => vite.config.js (50%) diff --git a/vite.config.ts b/vite.config.js similarity index 50% rename from vite.config.ts rename to vite.config.js index 49c9e7c1..80864b9d 100644 --- a/vite.config.ts +++ b/vite.config.js @@ -1,9 +1,6 @@ import { sveltekit } from "@sveltejs/kit/vite"; -import { defineConfig } from "vitest/config"; +import { defineConfig } from "vite"; export default defineConfig({ plugins: [sveltekit()], - test: { - include: ["src/**/*.{test,spec}.{js,ts}"], - }, }); From 3c55b3088ab1e810b8115841470919e8a758c6ab Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 19:53:18 -0800 Subject: [PATCH 013/115] =?UTF-8?q?feat:=20=E2=9C=A8=20fully=20type-checke?= =?UTF-8?q?d=20postcss=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postcss.config.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/postcss.config.js b/postcss.config.js index 01dd2546..abb565cb 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,13 +1,15 @@ +// @ts-check + import autoprefixer from "autoprefixer"; import tailwindcss from "tailwindcss"; -const config = { - plugins: [ - //Some plugins, like tailwindcss/nesting, need to run before Tailwind, - tailwindcss(), - //But others, like autoprefixer, need to run after, - autoprefixer, - ], -}; +/** + * @type{import('postcss-load-config').ConfigFn} + */ +function config() { + return { + plugins: [tailwindcss(), autoprefixer()], + }; +} export default config; From 6134023064e5425d5883abb1fd1250d24d577393 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:00:08 -0800 Subject: [PATCH 014/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20totally=20reset?= =?UTF-8?q?=20eslint=20and=20enhanced=20ignore=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintignore | 36 ++++++++++++++++++++++---------- .eslintrc.cjs | 51 --------------------------------------------- .gitignore | 55 +++++++++++++++++++++++++++++++++++++++++-------- .prettierignore | 40 +++++++++++++++++++++++++---------- package.json | 6 ------ 5 files changed, 100 insertions(+), 88 deletions(-) delete mode 100644 .eslintrc.cjs diff --git a/.eslintignore b/.eslintignore index 38972655..f41fd2ee 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,13 +1,27 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example - -# Ignore files for PNPM, NPM and YARN -pnpm-lock.yaml +##################################################################################### +# Generated +##################################################################################### + +## Packages installed by NPM. https://docs.npmjs.com/about-packages-and-modules +node_modules/ + +## Vitest coverage output. https://vitest.dev/guide/coverage.html +coverage/ + +## Build outputs. + +### SvelteKit outputs. +.svelte-kit/ +build/ + +### tsc out directory, specified in tsconfig.json . +dist/ + +##################################################################################### +# Development +##################################################################################### + +### Lock files for NPM, Yarn, and PNPM respectively. package-lock.json yarn.lock +pnpm-lock.yaml diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index facf4a13..00000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,51 +0,0 @@ -/** @type { import("eslint").Linter.FlatConfig } */ -module.exports = { - root: true, - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:svelte/recommended", - "prettier", - ], - parser: "@typescript-eslint/parser", - plugins: ["import", "@typescript-eslint"], - parserOptions: { - sourceType: "module", - ecmaVersion: 2020, - extraFileExtensions: [".svelte"], - }, - env: { - browser: true, - es2017: true, - node: true, - }, - rules: { - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - argsIgnorePattern: "^_", - varsIgnorePattern: "^_", - caughtErrorsIgnorePattern: "^_", - }, - ], - "import/first": "error", - "import/newline-after-import": "error", - "import/order": [ - "error", - { - alphabetize: { order: "asc" }, - "newlines-between": "always", - }, - ], - }, - overrides: [ - { - files: ["*.svelte"], - parser: "svelte-eslint-parser", - parserOptions: { - parser: "@typescript-eslint/parser", - }, - }, - ], -}; diff --git a/.gitignore b/.gitignore index 94f9ba2a..feebd0bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,52 @@ +##################################################################################### +# Generated +##################################################################################### + +## Packages installed by NPM. https://docs.npmjs.com/about-packages-and-modules +node_modules/ + +## Vitest coverage output. https://vitest.dev/guide/coverage.html +coverage/ + +## ESLint cache. https://eslint.org/docs/latest/use/command-line-interface#caching +.eslintcache + +## Build outputs. + +### SvelteKit outputs. +build/ +.svelte-kit/ + +### tsc out directory, specified in tsconfig.json . +dist/ + +# Logs. +*.log +.pnpm-debug.log* + + +##################################################################################### +# Operating System +##################################################################################### + +## MacOS folder settings. https://en.wikipedia.org/wiki/.DS_Store .DS_Store -node_modules -/build -/.svelte-kit -/package + +## Windows folder icon settings. https://learn.microsoft.com/en-us/windows/win32/shell/how-to-customize-folders-with-desktop-ini#use-a-desktopini-file +Desktop.ini + + +##################################################################################### +# Development Environment +##################################################################################### + +## Private environment variables. .env .env.* !.env.example -vite.config.js.timestamp-* -vite.config.ts.timestamp-* + +## JetBrains IDE settings. .idea/ -# sst -.sst -cdk.context.json +## VSCode settings. +.vscode/ diff --git a/.prettierignore b/.prettierignore index 0150850f..877a8b36 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,15 +1,33 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example - -# Ignore files for PNPM, NPM and YARN -pnpm-lock.yaml +##################################################################################### +# Generated +##################################################################################### + +## Packages installed by NPM. https://docs.npmjs.com/about-packages-and-modules +node_modules/ + +## Vitest coverage output. https://vitest.dev/guide/coverage.html +coverage/ + +## Build outputs. + +### SvelteKit outputs. +.svelte-kit/ +build/ + +### tsc out directory, specified in tsconfig.json . +dist/ + +##################################################################################### +# Development +##################################################################################### + +## Lock files for NPM, Yarn, and PNPM respectively. package-lock.json yarn.lock +pnpm-lock.yaml +## JetBrains IDE settings. .idea/ + +## VSCode settings. +.vscode/ diff --git a/package.json b/package.json index 72683428..9fb64f53 100644 --- a/package.json +++ b/package.json @@ -25,16 +25,10 @@ "@sveltejs/kit": "1.27.6", "@types/lint-staged": "13.2.2", "@types/node": "20.10.0", - "@typescript-eslint/eslint-plugin": "6.12.0", - "@typescript-eslint/parser": "6.12.0", "autoprefixer": "^10.4.14", "aws-cdk-lib": "2.110.1", "cz-conventional-changelog": "3.3.0", "devmoji": "2.3.0", - "eslint": "8.54.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-import": "2.29.0", - "eslint-plugin-svelte": "2.35.1", "husky": "8.0.3", "lint-staged": "15.1.0", "postcss": "^8.4.24", From 2f2a3ff8f72843cc82e81258e886e47e2cfe27ea Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:01:12 -0800 Subject: [PATCH 015/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20update=20lock?= =?UTF-8?q?=20file=20and=20prisma=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pnpm-lock.yaml | 1333 ++---------------------------------------- prisma/schema.prisma | 44 +- 2 files changed, 56 insertions(+), 1321 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ce8a6f69..897be342 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,12 +37,6 @@ devDependencies: '@types/node': specifier: 20.10.0 version: 20.10.0 - '@typescript-eslint/eslint-plugin': - specifier: 6.12.0 - version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2) - '@typescript-eslint/parser': - specifier: 6.12.0 - version: 6.12.0(eslint@8.54.0)(typescript@5.3.2) autoprefixer: specifier: ^10.4.14 version: 10.4.16(postcss@8.4.31) @@ -55,18 +49,6 @@ devDependencies: devmoji: specifier: 2.3.0 version: 2.3.0 - eslint: - specifier: 8.54.0 - version: 8.54.0 - eslint-config-prettier: - specifier: 9.0.0 - version: 9.0.0(eslint@8.54.0) - eslint-plugin-import: - specifier: 2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0) - eslint-plugin-svelte: - specifier: 2.35.1 - version: 2.35.1(eslint@8.54.0)(svelte@4.2.7) husky: specifier: 8.0.3 version: 8.0.3 @@ -112,11 +94,6 @@ devDependencies: packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -1111,68 +1088,11 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.54.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.3: - resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.23.0 - ignore: 5.3.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.54.0: - resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} dev: true - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - dev: true - /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -1903,14 +1823,6 @@ packages: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - /@types/lint-staged@13.2.2: resolution: {integrity: sha512-9c2ffPMJ1geob6yBmLuxzYye11HzKyA/I4dRZ8NfrPgY6SyzXt2SROD8vB3YjdPZJqqcu3WXsRvrY3PZbb720A==} dev: true @@ -1939,145 +1851,6 @@ packages: resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} dev: true - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - dev: true - - /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.3.2): - resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/type-utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4 - eslint: 8.54.0 - graphemer: 1.4.0 - ignore: 5.3.0 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.12.0(eslint@8.54.0)(typescript@5.3.2): - resolution: {integrity: sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4 - eslint: 8.54.0 - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@6.12.0: - resolution: {integrity: sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/visitor-keys': 6.12.0 - dev: true - - /@typescript-eslint/type-utils@6.12.0(eslint@8.54.0)(typescript@5.3.2): - resolution: {integrity: sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - debug: 4.3.4 - eslint: 8.54.0 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types@6.12.0: - resolution: {integrity: sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/typescript-estree@6.12.0(typescript@5.3.2): - resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/visitor-keys': 6.12.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils@6.12.0(eslint@8.54.0)(typescript@5.3.2): - resolution: {integrity: sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.12.0 - '@typescript-eslint/types': 6.12.0 - '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) - eslint: 8.54.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys@6.12.0: - resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.12.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -2086,29 +1859,12 @@ packages: through: 2.3.8 dev: true - /acorn-jsx@5.3.2(acorn@8.11.2): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.11.2 - dev: true - /acorn@8.11.2: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: @@ -2187,77 +1943,10 @@ packages: dequal: 2.0.3 dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 - dev: true - /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-string: 1.0.7 - dev: true - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 - dev: true - - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - dev: true - - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 - dev: true - /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} @@ -2284,11 +1973,6 @@ packages: postcss-value-parser: 4.2.0 dev: true - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: true - /aws-cdk-lib@2.110.1(constructs@10.3.0): resolution: {integrity: sha512-Z+42Jc/KSKFdBOpEv4LK9tz6kQUdVvUBquIYhLajam3aGblkonM0/FgexvAqy8iGwUaVEIpVyBTZUP2/VUMalg==} engines: {node: '>= 14.15.0'} @@ -2403,14 +2087,6 @@ packages: engines: {node: '>=6'} dev: true - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 - dev: true - /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2725,17 +2401,6 @@ packages: engines: {node: '>=8'} dev: true - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -2765,10 +2430,6 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -2798,29 +2459,11 @@ packages: clone: 1.0.4 dev: true - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: true - /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} dev: true - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 - object-keys: 1.1.1 - dev: true - /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2874,20 +2517,6 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2918,75 +2547,6 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 - dev: true - - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 - dev: true - - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - dependencies: - hasown: 2.0.0 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true @@ -3031,272 +2591,53 @@ packages: engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} dev: true - /eslint-compat-utils@0.1.2(eslint@8.54.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - eslint: 8.54.0 + '@types/estree': 1.0.5 dev: true - /eslint-config-prettier@9.0.0(eslint@8.54.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.54.0 + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: - debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: - '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - debug: 3.2.7 - eslint: 8.54.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.3.2) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.54.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0) - hasown: 2.0.0 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-svelte@2.35.1(eslint@8.54.0)(svelte@4.2.7): - resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 - svelte: ^3.37.0 || ^4.0.0 - peerDependenciesMeta: - svelte: - optional: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@jridgewell/sourcemap-codec': 1.4.15 - debug: 4.3.4 - eslint: 8.54.0 - eslint-compat-utils: 0.1.2(eslint@8.54.0) - esutils: 2.0.3 - known-css-properties: 0.29.0 - postcss: 8.4.31 - postcss-load-config: 3.1.4(postcss@8.4.31) - postcss-safe-parser: 6.0.0(postcss@8.4.31) - postcss-selector-parser: 6.0.13 - semver: 7.5.4 - svelte: 4.2.7 - svelte-eslint-parser: 0.33.1(svelte@4.2.7) - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.54.0: - resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.3 - '@eslint/js': 8.54.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /esm-env@1.0.0: - resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - eslint-visitor-keys: 3.4.3 - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - dependencies: - '@types/estree': 1.0.5 - dev: true - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: true - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -3340,14 +2681,6 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - /fast-xml-parser@4.2.5: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true @@ -3368,13 +2701,6 @@ packages: escape-string-regexp: 1.0.5 dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - dev: true - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -3419,25 +2745,6 @@ packages: resolve-dir: 1.0.1 dev: true - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: true - - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} - dev: true - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: true - /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true @@ -3477,34 +2784,11 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} - dependencies: - function-bind: 1.1.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - dev: true - /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} @@ -3520,14 +2804,6 @@ packages: engines: {node: '>=16'} dev: true - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - dev: true - /git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} dev: true @@ -3607,36 +2883,10 @@ packages: which: 1.3.1 dev: true - /globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - dev: true - /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - /globby@13.2.2: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3652,29 +2902,15 @@ packages: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.2 - dev: true - /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -3685,29 +2921,6 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - dependencies: - get-intrinsic: 1.2.2 - dev: true - - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: true - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true - - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -3778,11 +2991,6 @@ packages: resolve-from: 4.0.0 dev: true - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -3824,34 +3032,11 @@ packages: wrap-ansi: 7.0.0 dev: true - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 - dev: true - - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - dev: true - /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} requiresBuild: true dev: true - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -3859,32 +3044,12 @@ packages: binary-extensions: 2.2.0 dev: true - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - dev: true - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true - /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -3932,18 +3097,6 @@ packages: engines: {node: '>=8'} dev: true - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3954,11 +3107,6 @@ packages: engines: {node: '>=8'} dev: true - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -3975,20 +3123,6 @@ packages: '@types/estree': 1.0.5 dev: true - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - dev: true - - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.5 - dev: true - /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3999,20 +3133,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - /is-text-path@2.0.0: resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} engines: {node: '>=8'} @@ -4020,13 +3140,6 @@ packages: text-extensions: 2.4.0 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.13 - dev: true - /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -4036,12 +3149,6 @@ packages: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.5 - dev: true - /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -4054,10 +3161,6 @@ packages: is-docker: 2.2.1 dev: true - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true @@ -4078,34 +3181,15 @@ packages: argparse: 2.0.1 dev: true - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} requiresBuild: true dev: true - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -4119,12 +3203,6 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: true - /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -4135,18 +3213,6 @@ packages: engines: {node: '>=6'} dev: true - /known-css-properties@0.29.0: - resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -4421,10 +3487,6 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true @@ -4443,10 +3505,6 @@ packages: hasBin: true dev: true - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true @@ -4504,52 +3562,6 @@ packages: engines: {node: '>= 6'} dev: true - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - dev: true - - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -4580,18 +3592,6 @@ packages: is-wsl: 2.2.0 dev: true - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -4751,23 +3751,6 @@ packages: postcss: 8.4.31 dev: true - /postcss-load-config@3.1.4(postcss@8.4.31): - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - postcss: 8.4.31 - yaml: 1.10.2 - dev: true - /postcss-load-config@4.0.2(postcss@8.4.31): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} @@ -4795,24 +3778,6 @@ packages: postcss-selector-parser: 6.0.13 dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.31): - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.3.3 - dependencies: - postcss: 8.4.31 - dev: true - - /postcss-scss@4.0.9(postcss@8.4.31): - resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.29 - dependencies: - postcss: 8.4.31 - dev: true - /postcss-selector-parser@6.0.13: resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} @@ -4834,11 +3799,6 @@ packages: source-map-js: 1.0.2 dev: true - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - /prettier-plugin-packagejson@2.4.6(prettier@3.1.0): resolution: {integrity: sha512-5JGfzkJRL0DLNyhwmiAV9mV0hZLHDwddFCs2lc9CNxOChpoWUQVe8K4qTMktmevmDlMpok2uT10nvHUyU59sNw==} peerDependencies: @@ -4949,15 +3909,6 @@ packages: strip-indent: 3.0.0 dev: true - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - set-function-name: 2.0.1 - dev: true - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -5034,13 +3985,6 @@ packages: glob: 7.2.3 dev: true - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - /rollup@4.5.2: resolution: {integrity: sha512-CRK1uoROBfkcqrZKyaFcqCcZWNsvJ6yVYZkqTlRocZhO2s5yER6Z3f/QaYtO8RGyloPnmhwgzuPQpNGeK210xQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -5092,28 +4036,10 @@ packages: mri: 1.2.0 dev: true - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true - /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-regex: 1.1.4 - dev: true - /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -5132,11 +4058,6 @@ packages: hasBin: true dev: true - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true - /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -5149,25 +4070,6 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: true - - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.1 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -5180,14 +4082,6 @@ packages: engines: {node: '>=8'} dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - object-inspect: 1.13.1 - dev: true - /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true @@ -5206,11 +4100,6 @@ packages: totalist: 3.0.1 dev: true - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true - /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} @@ -5312,31 +4201,6 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - dev: true - /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -5357,11 +4221,6 @@ packages: ansi-regex: 6.0.1 dev: true - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} @@ -5453,23 +4312,6 @@ packages: - sugarss dev: true - /svelte-eslint-parser@0.33.1(svelte@4.2.7): - resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 - peerDependenciesMeta: - svelte: - optional: true - dependencies: - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - postcss: 8.4.31 - postcss-scss: 4.0.9(postcss@8.4.31) - svelte: 4.2.7 - dev: true - /svelte-hmr@0.15.3(svelte@4.2.7): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} @@ -5591,10 +4433,6 @@ packages: engines: {node: '>=8'} dev: true - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -5654,15 +4492,6 @@ packages: engines: {node: '>=8'} dev: true - /ts-api-utils@1.0.3(typescript@5.3.2): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.3.2 - dev: true - /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true @@ -5671,15 +4500,6 @@ packages: resolution: {integrity: sha512-yUeWbFBDiwPodNqrqpvQpGWheL6PvNu2/pVAb9yy2vzdkkflCgwVA4U2akByPCXzYTum3/5/nB92yKuiLpSo/Q==} dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -5688,23 +4508,11 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} dev: true - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -5725,59 +4533,12 @@ packages: engines: {node: '>=10'} dev: true - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - dev: true - - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - is-typed-array: 1.1.12 - dev: true - /typescript@5.3.2: resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} engines: {node: '>=14.17'} hasBin: true dev: true - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.5 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true @@ -5885,27 +4646,6 @@ packages: defaults: 1.0.4 dev: true - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: true - /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -5957,11 +4697,6 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: true - /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} diff --git a/prisma/schema.prisma b/prisma/schema.prisma index b7a2ca2c..ab10d16d 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,38 +1,38 @@ generator client { - provider = "prisma-client-js" - previewFeatures = ["fullTextSearch", "fullTextIndex"] - binaryTargets = ["native"] + provider = "prisma-client-js" } datasource db { - provider = "postgresql" - url = env("DATABASE_URL") + provider = "sqlite" + url = "file:./dev.db" } -// Do not modify anything above this line unless you know what you are doing. - model User { - id String @id @unique + id String @id @default(cuid()) + + name String? + email String? @unique + image String? - auth_session Session[] - key Key[] + session Session[] + account Account[] } -model Key { - id String @id @unique - hashed_password String? - user_id String - user User @relation(references: [id], fields: [user_id], onDelete: Cascade) +model Account { + id String @id @default(cuid()) + provider String + providerAccountId String + user_id String + + user User @relation(fields: [user_id], references: [id], onDelete: Cascade) - @@index([user_id]) + @@unique([provider, providerAccountId]) } model Session { - id String @id @unique - user_id String - active_expires BigInt - idle_expires BigInt - user User @relation(references: [id], fields: [user_id], onDelete: Cascade) + id String @id @default(cuid()) + user_id String + expires DateTime - @@index([user_id]) + user User @relation(references: [id], fields: [user_id], onDelete: Cascade) } From 5a814911ed34fab2f27d153acf2bbf871b9e14d5 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:01:26 -0800 Subject: [PATCH 016/115] =?UTF-8?q?feat:=20=E2=9C=A8=20sqlite=20db=20for?= =?UTF-8?q?=20simple=20mvp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index feebd0bf..9cee7dbf 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,6 @@ Desktop.ini ## VSCode settings. .vscode/ + +## Local SQLite database. +prisma/dev.db From f9faac13bb30e076bedcc6db8c37d4246c10f781 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:03:06 -0800 Subject: [PATCH 017/115] =?UTF-8?q?feat:=20=E2=9C=A8=20installed=20eslint?= =?UTF-8?q?=20and=20use=20vite@4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- pnpm-lock.yaml | 704 +++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 571 insertions(+), 136 deletions(-) diff --git a/package.json b/package.json index 9fb64f53..6e512ce9 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "aws-cdk-lib": "2.110.1", "cz-conventional-changelog": "3.3.0", "devmoji": "2.3.0", + "eslint": "^8.54.0", "husky": "8.0.3", "lint-staged": "15.1.0", "postcss": "^8.4.24", @@ -42,6 +43,6 @@ "svelte-check": "3.6.2", "tailwindcss": "^3.3.2", "typescript": "5.3.2", - "vite": "5.0.2" + "vite": "4.5.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 897be342..ee789aaf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,10 +27,10 @@ devDependencies: version: 0.2.4(tailwindcss@3.3.5) '@svelte.kit/adapter-aws': specifier: ^0.2.1 - version: 0.2.1(svelte@4.2.7)(vite@5.0.2) + version: 0.2.1(svelte@4.2.7)(vite@4.5.0) '@sveltejs/kit': specifier: 1.27.6 - version: 1.27.6(svelte@4.2.7)(vite@5.0.2) + version: 1.27.6(svelte@4.2.7)(vite@4.5.0) '@types/lint-staged': specifier: 13.2.2 version: 13.2.2 @@ -49,6 +49,9 @@ devDependencies: devmoji: specifier: 2.3.0 version: 2.3.0 + eslint: + specifier: ^8.54.0 + version: 8.54.0 husky: specifier: 8.0.3 version: 8.0.3 @@ -89,11 +92,16 @@ devDependencies: specifier: 5.3.2 version: 5.3.2 vite: - specifier: 5.0.2 - version: 5.0.2(@types/node@20.10.0) + specifier: 4.5.0 + version: 4.5.0(@types/node@20.10.0) packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -890,6 +898,15 @@ packages: chalk: 4.1.2 dev: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.19.7: resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==} engines: {node: '>=12'} @@ -899,6 +916,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.19.7: resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==} engines: {node: '>=12'} @@ -908,6 +934,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.19.7: resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==} engines: {node: '>=12'} @@ -917,6 +952,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.19.7: resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==} engines: {node: '>=12'} @@ -926,6 +970,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.19.7: resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==} engines: {node: '>=12'} @@ -935,6 +988,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.19.7: resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==} engines: {node: '>=12'} @@ -944,6 +1006,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.19.7: resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==} engines: {node: '>=12'} @@ -953,6 +1024,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.19.7: resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==} engines: {node: '>=12'} @@ -962,6 +1042,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.19.7: resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==} engines: {node: '>=12'} @@ -971,6 +1060,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.19.7: resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==} engines: {node: '>=12'} @@ -980,6 +1078,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.19.7: resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==} engines: {node: '>=12'} @@ -989,6 +1096,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.19.7: resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==} engines: {node: '>=12'} @@ -998,6 +1114,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.19.7: resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==} engines: {node: '>=12'} @@ -1007,6 +1132,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.19.7: resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==} engines: {node: '>=12'} @@ -1016,6 +1150,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.19.7: resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==} engines: {node: '>=12'} @@ -1025,6 +1168,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.19.7: resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==} engines: {node: '>=12'} @@ -1034,6 +1186,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.19.7: resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==} engines: {node: '>=12'} @@ -1043,6 +1204,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.19.7: resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==} engines: {node: '>=12'} @@ -1052,6 +1222,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.19.7: resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==} engines: {node: '>=12'} @@ -1061,6 +1240,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.19.7: resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==} engines: {node: '>=12'} @@ -1070,6 +1258,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.19.7: resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==} engines: {node: '>=12'} @@ -1079,6 +1276,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.19.7: resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==} engines: {node: '>=12'} @@ -1088,11 +1294,68 @@ packages: dev: true optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.54.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.54.0: + resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@fastify/busboy@2.1.0: resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} dev: true + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -1186,102 +1449,6 @@ packages: resolution: {integrity: sha512-JFdsnSgBPN8reDTLOI9Vh/6ccCb2aD1LbY/LWQnkcIgNo6IdpzvuM+qRVbBuA6IZP2SdqQI8Lu6RL2P8EFBQUA==} dev: true - /@rollup/rollup-android-arm-eabi@4.5.2: - resolution: {integrity: sha512-ee7BudTwwrglFYSc3UnqInDDjCLWHKrFmGNi4aK7jlEyg4CyPa1DCMrZfsN1O13YT76UFEqXz2CoN7BCGpUlJw==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.5.2: - resolution: {integrity: sha512-xOuhj9HHtn8128ir8veoQsBbAUBasDbHIBniYTEx02pAmu9EXL+ZjJqngnNEy6ZgZ4h1JwL33GMNu3yJL5Mzow==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-arm64@4.5.2: - resolution: {integrity: sha512-NTGJWoL8bKyqyWFn9/RzSv4hQ4wTbaAv0lHHRwf4OnpiiP4P8W0jiXbm8Nc5BCXKmWAwuvJY82mcIU2TayC20g==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-x64@4.5.2: - resolution: {integrity: sha512-hlKqj7bpPvU15sZo4za14u185lpMzdwWLMc9raMqPK4wywt0wR23y1CaVQ4oAFXat3b5/gmRntyfpwWTKl+vvA==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm-gnueabihf@4.5.2: - resolution: {integrity: sha512-7ZIZx8c3u+pfI0ohQsft/GywrXez0uR6dUP0JhBuCK3sFO5TfdLn/YApnVkvPxuTv3+YKPIZend9Mt7Cz6sS3Q==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-gnu@4.5.2: - resolution: {integrity: sha512-7Pk/5mO11JW/cH+a8lL/i0ZxmRGrbpYqN0VwO2DHhU+SJWWOH2zE1RAcPaj8KqiwC8DCDIJOSxjV9+9lLb6aeA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-musl@4.5.2: - resolution: {integrity: sha512-KrRnuG5phJx756e62wxvWH2e+TK84MP2IVuPwfge+GBvWqIUfVzFRn09TKruuQBXzZp52Vyma7FjMDkwlA9xpg==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-gnu@4.5.2: - resolution: {integrity: sha512-My+53GasPa2D2tU5dXiyHYwrELAUouSfkNlZ3bUKpI7btaztO5vpALEs3mvFjM7aKTvEbc7GQckuXeXIDKQ0fg==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-musl@4.5.2: - resolution: {integrity: sha512-/f0Q6Sc+Vw54Ws6N8fxaEe4R7at3b8pFyv+O/F2VaQ4hODUJcRUcCBJh6zuqtgQQt7w845VTkGLFgWZkP3tUoQ==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-arm64-msvc@4.5.2: - resolution: {integrity: sha512-NCKuuZWLht6zj7s6EIFef4BxCRX1GMr83S2W4HPCA0RnJ4iHE4FS1695q6Ewoa6A9nFjJe1//yUu0kgBU07Edw==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-ia32-msvc@4.5.2: - resolution: {integrity: sha512-J5zL3riR4AOyU/J3M/i4k/zZ8eP1yT+nTmAKztCXJtnI36jYH0eepvob22mAQ/kLwfsK2TB6dbyVY1F8c/0H5A==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-x64-msvc@4.5.2: - resolution: {integrity: sha512-pL0RXRHuuGLhvs7ayX/SAHph1hrDPXOM5anyYUQXWJEENxw3nfHkzv8FfVlEVcLyKPAEgDRkd6RKZq2SMqS/yg==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@skeletonlabs/skeleton@2.5.1(svelte@4.2.7): resolution: {integrity: sha512-llzzKr6PQV1MUsJybdo3Z0SaVwm00KDf8DKhlVTt3X3fbCjIbS9rK6sLzJKZO01L/cQYtAzdVXv9CxALtIuy0w==} peerDependencies: @@ -1737,12 +1904,12 @@ packages: tslib: 2.6.2 dev: true - /@svelte.kit/adapter-aws@0.2.1(svelte@4.2.7)(vite@5.0.2): + /@svelte.kit/adapter-aws@0.2.1(svelte@4.2.7)(vite@4.5.0): resolution: {integrity: sha512-IYdADzjinpstTw2vb6WP3Dw63fOT3Srz64hcST983h6ElG22P9n3B+qjtc9lXlJY8OT9CgMY7WjDFFHzp/MCxg==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: '@aws-sdk/client-s3': 3.456.0 - '@sveltejs/kit': 1.27.6(svelte@4.2.7)(vite@5.0.2) + '@sveltejs/kit': 1.27.6(svelte@4.2.7)(vite@4.5.0) esbuild: 0.19.7 transitivePeerDependencies: - aws-crt @@ -1751,7 +1918,7 @@ packages: - vite dev: true - /@sveltejs/kit@1.27.6(svelte@4.2.7)(vite@5.0.2): + /@sveltejs/kit@1.27.6(svelte@4.2.7)(vite@4.5.0): resolution: {integrity: sha512-GsjTkMbKzXdbeRg0tk8S7HNShQ4879ftRr0ZHaZfjbig1xQwG57Bvcm9U9/mpLJtCapLbLWUnygKrgcLISLC8A==} engines: {node: ^16.14 || >=18} hasBin: true @@ -1760,7 +1927,7 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@5.0.2) + '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@4.5.0) '@types/cookie': 0.5.4 cookie: 0.5.0 devalue: 4.3.2 @@ -1774,12 +1941,12 @@ packages: svelte: 4.2.7 tiny-glob: 0.2.9 undici: 5.26.5 - vite: 5.0.2(@types/node@20.10.0) + vite: 4.5.0(@types/node@20.10.0) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@5.0.2): + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@4.5.0): resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -1787,30 +1954,30 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@5.0.2) + '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.7)(vite@4.5.0) debug: 4.3.4 svelte: 4.2.7 - vite: 5.0.2(@types/node@20.10.0) + vite: 4.5.0(@types/node@20.10.0) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.7)(vite@5.0.2): + /@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.7)(vite@4.5.0): resolution: {integrity: sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@5.0.2) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3)(svelte@4.2.7)(vite@4.5.0) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.5 svelte: 4.2.7 svelte-hmr: 0.15.3(svelte@4.2.7) - vite: 5.0.2(@types/node@20.10.0) - vitefu: 0.2.5(vite@5.0.2) + vite: 4.5.0(@types/node@20.10.0) + vitefu: 0.2.5(vite@4.5.0) transitivePeerDependencies: - supports-color dev: true @@ -1851,6 +2018,10 @@ packages: resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -1859,12 +2030,29 @@ packages: through: 2.3.8 dev: true + /acorn-jsx@5.3.2(acorn@8.11.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.2 + dev: true + /acorn@8.11.2: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true dev: true + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + /ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: @@ -2430,6 +2618,10 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -2517,6 +2709,13 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2551,6 +2750,36 @@ packages: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /esbuild@0.19.7: resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==} engines: {node: '>=12'} @@ -2591,16 +2820,114 @@ packages: engines: {node: '>=0.8.0'} dev: true + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.54.0: + resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.54.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} dev: true + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 dev: true + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true @@ -2681,6 +3008,14 @@ packages: micromatch: 4.0.5 dev: true + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + /fast-xml-parser@4.2.5: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true @@ -2701,6 +3036,13 @@ packages: escape-string-regexp: 1.0.5 dev: true + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -2745,6 +3087,19 @@ packages: resolve-dir: 1.0.1 dev: true + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true @@ -2883,6 +3238,13 @@ packages: which: 1.3.1 dev: true + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true @@ -2906,6 +3268,10 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -2991,6 +3357,11 @@ packages: resolve-from: 4.0.0 dev: true + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -3107,6 +3478,11 @@ packages: engines: {node: '>=8'} dev: true + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -3181,15 +3557,27 @@ packages: argparse: 2.0.1 dev: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} requiresBuild: true dev: true + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -3203,6 +3591,12 @@ packages: engines: {'0': node >= 0.2.0} dev: true + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -3213,6 +3607,14 @@ packages: engines: {node: '>=6'} dev: true + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -3505,6 +3907,10 @@ packages: hasBin: true dev: true + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true @@ -3592,6 +3998,18 @@ packages: is-wsl: 2.2.0 dev: true + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -3799,6 +4217,11 @@ packages: source-map-js: 1.0.2 dev: true + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + /prettier-plugin-packagejson@2.4.6(prettier@3.1.0): resolution: {integrity: sha512-5JGfzkJRL0DLNyhwmiAV9mV0hZLHDwddFCs2lc9CNxOChpoWUQVe8K4qTMktmevmDlMpok2uT10nvHUyU59sNw==} peerDependencies: @@ -3985,23 +4408,18 @@ packages: glob: 7.2.3 dev: true - /rollup@4.5.2: - resolution: {integrity: sha512-CRK1uoROBfkcqrZKyaFcqCcZWNsvJ6yVYZkqTlRocZhO2s5yER6Z3f/QaYtO8RGyloPnmhwgzuPQpNGeK210xQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.5.2 - '@rollup/rollup-android-arm64': 4.5.2 - '@rollup/rollup-darwin-arm64': 4.5.2 - '@rollup/rollup-darwin-x64': 4.5.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.5.2 - '@rollup/rollup-linux-arm64-gnu': 4.5.2 - '@rollup/rollup-linux-arm64-musl': 4.5.2 - '@rollup/rollup-linux-x64-gnu': 4.5.2 - '@rollup/rollup-linux-x64-musl': 4.5.2 - '@rollup/rollup-win32-arm64-msvc': 4.5.2 - '@rollup/rollup-win32-ia32-msvc': 4.5.2 - '@rollup/rollup-win32-x64-msvc': 4.5.2 fsevents: 2.3.3 dev: true @@ -4433,6 +4851,10 @@ packages: engines: {node: '>=8'} dev: true + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -4508,11 +4930,23 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + /type-fest@0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} dev: true + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -4593,12 +5027,12 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vite@5.0.2(@types/node@20.10.0): - resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==} - engines: {node: ^18.0.0 || >=20.0.0} + /vite@4.5.0(@types/node@20.10.0): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': '>= 14' less: '*' lightningcss: ^1.21.0 sass: '*' @@ -4622,14 +5056,14 @@ packages: optional: true dependencies: '@types/node': 20.10.0 - esbuild: 0.19.7 + esbuild: 0.18.20 postcss: 8.4.31 - rollup: 4.5.2 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true - /vitefu@0.2.5(vite@5.0.2): + /vitefu@0.2.5(vite@4.5.0): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -4637,7 +5071,7 @@ packages: vite: optional: true dependencies: - vite: 5.0.2(@types/node@20.10.0) + vite: 4.5.0(@types/node@20.10.0) dev: true /wcwidth@1.0.1: From 7af16fd21f260a6916956e246fb059756019d619 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:47:18 -0800 Subject: [PATCH 018/115] =?UTF-8?q?feat:=20=E2=9C=A8=20super=20decked=20ou?= =?UTF-8?q?t=20eslint=20flag=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - literally the most mind-numbing, anal config I can conceive --- eslint.config.js | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 eslint.config.js diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..a8f5159c --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,76 @@ +// @ts-check + +import path from 'node:path' +import url from 'node:url' + +import { FlatCompat } from '@eslint/eslintrc' + +const __filename = url.fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) + +/** + * Backwards compatibility module. + * + * @see https://eslint.org/blog/2022/08/new-config-system-part-2/#backwards-compatibility-utility + */ +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: {}, +}) + +/** + * @type{import('eslint').Linter.FlatConfig[]} + */ +const config = [ + ...compat.config({ + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'], + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'standard-with-typescript', + 'airbnb-base', + 'airbnb-typescript/base', + 'plugin:svelte/recommended', + 'prettier', + ], + plugins: ['import', '@typescript-eslint'], + rules: { + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + }, + ], + 'import/first': 'error', + 'import/newline-after-import': 'error', + 'import/order': [ + 'error', + { + alphabetize: { order: 'asc' }, + 'newlines-between': 'always', + }, + ], + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser', + }, + }, + ], + ignorePatterns: ['.svelte-kit', '*.config.*'], + }), +] + +export default config From ec67f8cc5d8d0bb37276d7b3b811e9db49d4e9b6 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:48:38 -0800 Subject: [PATCH 019/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20update=20packag?= =?UTF-8?q?e=20lock=20and=20dependencies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 16 +- pnpm-lock.yaml | 1306 ++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 1228 insertions(+), 94 deletions(-) diff --git a/package.json b/package.json index 6e512ce9..19063db9 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "dev": "vite", "format": "prettier --write .", "postinstall": "husky install && prisma generate && svelte-kit sync", - "lint": "eslint --quiet --fix .", + "lint": "eslint --fix .", "preview": "vite preview" }, "dependencies": { @@ -19,17 +19,29 @@ "@commitlint/cli": "18.4.3", "@commitlint/config-conventional": "18.4.3", "@commitlint/types": "18.4.3", + "@eslint/js": "^8.54.0", "@skeletonlabs/skeleton": "^2.5.1", "@skeletonlabs/tw-plugin": "^0.2.4", "@svelte.kit/adapter-aws": "^0.2.1", "@sveltejs/kit": "1.27.6", "@types/lint-staged": "13.2.2", "@types/node": "20.10.0", + "@typescript-eslint/eslint-plugin": "^6.12.0", + "@typescript-eslint/parser": "^6.12.0", "autoprefixer": "^10.4.14", "aws-cdk-lib": "2.110.1", "cz-conventional-changelog": "3.3.0", "devmoji": "2.3.0", "eslint": "^8.54.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.1.0", + "eslint-config-prettier": "^9.0.0", + "eslint-config-standard-with-typescript": "^40.0.0", + "eslint-plugin-import": "^2.29.0", + "eslint-plugin-n": "^16.3.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-svelte": "^2.35.1", + "globals": "^13.23.0", "husky": "8.0.3", "lint-staged": "15.1.0", "postcss": "^8.4.24", @@ -42,7 +54,7 @@ "svelte": "4.2.7", "svelte-check": "3.6.2", "tailwindcss": "^3.3.2", - "typescript": "5.3.2", + "typescript": "5.2.2", "vite": "4.5.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee789aaf..0ec8a750 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,13 +12,16 @@ dependencies: devDependencies: '@commitlint/cli': specifier: 18.4.3 - version: 18.4.3(typescript@5.3.2) + version: 18.4.3(typescript@5.2.2) '@commitlint/config-conventional': specifier: 18.4.3 version: 18.4.3 '@commitlint/types': specifier: 18.4.3 version: 18.4.3 + '@eslint/js': + specifier: ^8.54.0 + version: 8.54.0 '@skeletonlabs/skeleton': specifier: ^2.5.1 version: 2.5.1(svelte@4.2.7) @@ -37,6 +40,12 @@ devDependencies: '@types/node': specifier: 20.10.0 version: 20.10.0 + '@typescript-eslint/eslint-plugin': + specifier: ^6.12.0 + version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6.12.0 + version: 6.12.0(eslint@8.54.0)(typescript@5.2.2) autoprefixer: specifier: ^10.4.14 version: 10.4.16(postcss@8.4.31) @@ -45,13 +54,40 @@ devDependencies: version: 2.110.1(constructs@10.3.0) cz-conventional-changelog: specifier: 3.3.0 - version: 3.3.0(typescript@5.3.2) + version: 3.3.0(typescript@5.2.2) devmoji: specifier: 2.3.0 version: 2.3.0 eslint: specifier: ^8.54.0 version: 8.54.0 + eslint-config-airbnb-base: + specifier: ^15.0.0 + version: 15.0.0(eslint-plugin-import@2.29.0)(eslint@8.54.0) + eslint-config-airbnb-typescript: + specifier: ^17.1.0 + version: 17.1.0(@typescript-eslint/eslint-plugin@6.12.0)(@typescript-eslint/parser@6.12.0)(eslint-plugin-import@2.29.0)(eslint@8.54.0) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.54.0) + eslint-config-standard-with-typescript: + specifier: ^40.0.0 + version: 40.0.0(@typescript-eslint/eslint-plugin@6.12.0)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.54.0)(typescript@5.2.2) + eslint-plugin-import: + specifier: ^2.29.0 + version: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0) + eslint-plugin-n: + specifier: ^16.3.1 + version: 16.3.1(eslint@8.54.0) + eslint-plugin-promise: + specifier: ^6.1.1 + version: 6.1.1(eslint@8.54.0) + eslint-plugin-svelte: + specifier: ^2.35.1 + version: 2.35.1(eslint@8.54.0)(svelte@4.2.7) + globals: + specifier: ^13.23.0 + version: 13.23.0 husky: specifier: 8.0.3 version: 8.0.3 @@ -89,8 +125,8 @@ devDependencies: specifier: ^3.3.2 version: 3.3.5 typescript: - specifier: 5.3.2 - version: 5.3.2 + specifier: 5.2.2 + version: 5.2.2 vite: specifier: 4.5.0 version: 4.5.0(@types/node@20.10.0) @@ -731,14 +767,14 @@ packages: js-tokens: 4.0.0 dev: true - /@commitlint/cli@18.4.3(typescript@5.3.2): + /@commitlint/cli@18.4.3(typescript@5.2.2): resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==} engines: {node: '>=v18'} hasBin: true dependencies: '@commitlint/format': 18.4.3 '@commitlint/lint': 18.4.3 - '@commitlint/load': 18.4.3(typescript@5.3.2) + '@commitlint/load': 18.4.3(typescript@5.2.2) '@commitlint/read': 18.4.3 '@commitlint/types': 18.4.3 execa: 5.1.1 @@ -810,7 +846,7 @@ packages: '@commitlint/types': 18.4.3 dev: true - /@commitlint/load@18.4.3(typescript@5.3.2): + /@commitlint/load@18.4.3(typescript@5.2.2): resolution: {integrity: sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q==} engines: {node: '>=v18'} dependencies: @@ -820,8 +856,8 @@ packages: '@commitlint/types': 18.4.3 '@types/node': 18.18.12 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.3.2) - cosmiconfig-typescript-loader: 5.0.0(@types/node@18.18.12)(cosmiconfig@8.3.6)(typescript@5.3.2) + cosmiconfig: 8.3.6(typescript@5.2.2) + cosmiconfig-typescript-loader: 5.0.0(@types/node@18.18.12)(cosmiconfig@8.3.6)(typescript@5.2.2) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -1990,6 +2026,14 @@ packages: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + /@types/lint-staged@13.2.2: resolution: {integrity: sha512-9c2ffPMJ1geob6yBmLuxzYye11HzKyA/I4dRZ8NfrPgY6SyzXt2SROD8vB3YjdPZJqqcu3WXsRvrY3PZbb720A==} dev: true @@ -2018,6 +2062,141 @@ packages: resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} dev: true + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + dev: true + + /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/type-utils': 6.12.0(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.12.0 + debug: 4.3.4 + eslint: 8.54.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.12.0(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.12.0 + debug: 4.3.4 + eslint: 8.54.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.12.0: + resolution: {integrity: sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/visitor-keys': 6.12.0 + dev: true + + /@typescript-eslint/type-utils@6.12.0(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.12.0(eslint@8.54.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.54.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.12.0: + resolution: {integrity: sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.12.0(typescript@5.2.2): + resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/visitor-keys': 6.12.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.12.0(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.12.0 + '@typescript-eslint/types': 6.12.0 + '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.2.2) + eslint: 8.54.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.12.0: + resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.12.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true @@ -2131,10 +2310,77 @@ packages: dequal: 2.0.3 dev: true + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} @@ -2161,6 +2407,11 @@ packages: postcss-value-parser: 4.2.0 dev: true + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + /aws-cdk-lib@2.110.1(constructs@10.3.0): resolution: {integrity: sha512-Z+42Jc/KSKFdBOpEv4LK9tz6kQUdVvUBquIYhLajam3aGblkonM0/FgexvAqy8iGwUaVEIpVyBTZUP2/VUMalg==} engines: {node: '>= 14.15.0'} @@ -2263,6 +2514,17 @@ packages: ieee754: 1.2.1 dev: true + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: true + /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} @@ -2275,6 +2537,14 @@ packages: engines: {node: '>=6'} dev: true + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2440,13 +2710,13 @@ packages: engines: {node: '>= 10'} dev: true - /commitizen@4.3.0(typescript@5.3.2): + /commitizen@4.3.0(typescript@5.2.2): resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} engines: {node: '>= 12'} hasBin: true dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(typescript@5.3.2) + cz-conventional-changelog: 3.3.0(typescript@5.2.2) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -2474,6 +2744,10 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + /constructs@10.3.0: resolution: {integrity: sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==} engines: {node: '>= 16.14.0'} @@ -2513,7 +2787,7 @@ packages: engines: {node: '>= 0.6'} dev: true - /cosmiconfig-typescript-loader@5.0.0(@types/node@18.18.12)(cosmiconfig@8.3.6)(typescript@5.3.2): + /cosmiconfig-typescript-loader@5.0.0(@types/node@18.18.12)(cosmiconfig@8.3.6)(typescript@5.2.2): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} requiresBuild: true @@ -2523,12 +2797,12 @@ packages: typescript: '>=4' dependencies: '@types/node': 18.18.12 - cosmiconfig: 8.3.6(typescript@5.3.2) + cosmiconfig: 8.3.6(typescript@5.2.2) jiti: 1.21.0 - typescript: 5.3.2 + typescript: 5.2.2 dev: true - /cosmiconfig@8.3.6(typescript@5.3.2): + /cosmiconfig@8.3.6(typescript@5.2.2): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} requiresBuild: true @@ -2542,7 +2816,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.3.2 + typescript: 5.2.2 dev: true /cross-spawn@7.0.3: @@ -2568,18 +2842,18 @@ packages: hasBin: true dev: true - /cz-conventional-changelog@3.3.0(typescript@5.3.2): + /cz-conventional-changelog@3.3.0(typescript@5.2.2): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.0(typescript@5.3.2) + commitizen: 4.3.0(typescript@5.2.2) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 18.4.3(typescript@5.3.2) + '@commitlint/load': 18.4.3(typescript@5.2.2) transitivePeerDependencies: - typescript dev: true @@ -2589,6 +2863,17 @@ packages: engines: {node: '>=8'} dev: true + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -2651,11 +2936,29 @@ packages: clone: 1.0.4 dev: true + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} dev: true + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2709,6 +3012,13 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -2746,6 +3056,75 @@ packages: is-arrayish: 0.2.1 dev: true + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true @@ -2825,97 +3204,325 @@ packages: engines: {node: '>=10'} dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-compat-utils@0.1.2(eslint@8.54.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 + eslint: 8.54.0 dev: true - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.0)(eslint@8.54.0): + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.54.0 + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0) + object.assign: 4.1.4 + object.entries: 1.1.7 + semver: 6.3.1 dev: true - /eslint@8.54.0: - resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + /eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@6.12.0)(@typescript-eslint/parser@6.12.0)(eslint-plugin-import@2.29.0)(eslint@8.54.0): + resolution: {integrity: sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.13.0 || ^6.0.0 + '@typescript-eslint/parser': ^5.0.0 || ^6.0.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.3 - '@eslint/js': 8.54.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/eslint-plugin': 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.2.2) + eslint: 8.54.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0)(eslint@8.54.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0) dev: true - /esm-env@1.0.0: - resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + /eslint-config-prettier@9.0.0(eslint@8.54.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.54.0 dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - eslint-visitor-keys: 3.4.3 + /eslint-config-standard-with-typescript@40.0.0(@typescript-eslint/eslint-plugin@6.12.0)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.54.0)(typescript@5.2.2): + resolution: {integrity: sha512-GXUJcwIXiTQaS3H4etv8a1lejVVdZYaxZNz3g7vt6GoJosQqMTurbmSC4FVGyHiGT/d1TjFr3+47A3xsHhsG+Q==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^6.4.0 + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + typescript: '*' + dependencies: + '@typescript-eslint/eslint-plugin': 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.2.2) + eslint: 8.54.0 + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.54.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0) + eslint-plugin-n: 16.3.1(eslint@8.54.0) + eslint-plugin-promise: 6.1.1(eslint@8.54.0) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color dev: true - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.54.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 dependencies: - estraverse: 5.3.0 + eslint: 8.54.0 + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0) + eslint-plugin-n: 16.3.1(eslint@8.54.0) + eslint-plugin-promise: 6.1.1(eslint@8.54.0) dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: - estraverse: 5.3.0 + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color dev: true - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.54.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es-x@7.4.0(eslint@8.54.0): + resolution: {integrity: sha512-WJa3RhYzBtl8I37ebY9p76s61UhZyi4KaFOnX2A5r32RPazkXj5yoT6PGnD02dhwzEUj0KwsUdqfKDd/OuvGsw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/regexpp': 4.10.0 + eslint: 8.54.0 + eslint-compat-utils: 0.1.2(eslint@8.54.0) + dev: true + + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.54.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.54.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-n@16.3.1(eslint@8.54.0): + resolution: {integrity: sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + builtins: 5.0.1 + eslint: 8.54.0 + eslint-plugin-es-x: 7.4.0(eslint@8.54.0) + get-tsconfig: 4.7.2 + ignore: 5.3.0 + is-builtin-module: 3.2.1 + is-core-module: 2.13.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.5.4 + dev: true + + /eslint-plugin-promise@6.1.1(eslint@8.54.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.54.0 + dev: true + + /eslint-plugin-svelte@2.35.1(eslint@8.54.0)(svelte@4.2.7): + resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@jridgewell/sourcemap-codec': 1.4.15 + debug: 4.3.4 + eslint: 8.54.0 + eslint-compat-utils: 0.1.2(eslint@8.54.0) + esutils: 2.0.3 + known-css-properties: 0.29.0 + postcss: 8.4.31 + postcss-load-config: 3.1.4(postcss@8.4.31) + postcss-safe-parser: 6.0.0(postcss@8.4.31) + postcss-selector-parser: 6.0.13 + semver: 7.5.4 + svelte: 4.2.7 + svelte-eslint-parser: 0.33.1(svelte@4.2.7) + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.54.0: + resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.54.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -3100,6 +3707,12 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true @@ -3139,11 +3752,34 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} @@ -3159,6 +3795,20 @@ packages: engines: {node: '>=16'} dev: true + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} dev: true @@ -3245,10 +3895,29 @@ packages: type-fest: 0.20.2 dev: true + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + /globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: true + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + /globby@13.2.2: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3264,6 +3933,12 @@ packages: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true @@ -3277,6 +3952,10 @@ packages: engines: {node: '>=6'} dev: true + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -3287,6 +3966,29 @@ packages: engines: {node: '>=8'} dev: true + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -3403,11 +4105,34 @@ packages: wrap-ansi: 7.0.0 dev: true + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} requiresBuild: true dev: true + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -3415,12 +4140,39 @@ packages: binary-extensions: 2.2.0 dev: true + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 dev: true + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -3468,6 +4220,18 @@ packages: engines: {node: '>=8'} dev: true + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3499,6 +4263,20 @@ packages: '@types/estree': 1.0.5 dev: true + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3509,6 +4287,20 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + /is-text-path@2.0.0: resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} engines: {node: '>=8'} @@ -3516,6 +4308,13 @@ packages: text-extensions: 2.4.0 dev: true + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -3525,6 +4324,12 @@ packages: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.5 + dev: true + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -3537,6 +4342,10 @@ packages: is-docker: 2.2.1 dev: true + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true @@ -3578,6 +4387,13 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -3607,6 +4423,10 @@ packages: engines: {node: '>=6'} dev: true + /known-css-properties@0.29.0: + resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} + dev: true + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3968,6 +4788,61 @@ packages: engines: {node: '>= 6'} dev: true + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -4169,6 +5044,23 @@ packages: postcss: 8.4.31 dev: true + /postcss-load-config@3.1.4(postcss@8.4.31): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.31 + yaml: 1.10.2 + dev: true + /postcss-load-config@4.0.2(postcss@8.4.31): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} @@ -4196,6 +5088,24 @@ packages: postcss-selector-parser: 6.0.13 dev: true + /postcss-safe-parser@6.0.0(postcss@8.4.31): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-scss@4.0.9(postcss@8.4.31): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + dependencies: + postcss: 8.4.31 + dev: true + /postcss-selector-parser@6.0.13: resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} @@ -4332,6 +5242,15 @@ packages: strip-indent: 3.0.0 dev: true + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -4367,6 +5286,10 @@ packages: global-dirs: 0.1.1 dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -4454,10 +5377,28 @@ packages: mri: 1.2.0 dev: true + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + dev: true + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true @@ -4476,6 +5417,11 @@ packages: hasBin: true dev: true + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -4488,6 +5434,25 @@ packages: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4500,6 +5465,14 @@ packages: engines: {node: '>=8'} dev: true + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true @@ -4518,6 +5491,11 @@ packages: totalist: 3.0.1 dev: true + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} @@ -4619,6 +5597,31 @@ packages: strip-ansi: 7.1.0 dev: true + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -4639,6 +5642,11 @@ packages: ansi-regex: 6.0.1 dev: true + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} @@ -4730,6 +5738,23 @@ packages: - sugarss dev: true + /svelte-eslint-parser@0.33.1(svelte@4.2.7): + resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + postcss: 8.4.31 + postcss-scss: 4.0.9(postcss@8.4.31) + svelte: 4.2.7 + dev: true + /svelte-hmr@0.15.3(svelte@4.2.7): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} @@ -4914,6 +5939,15 @@ packages: engines: {node: '>=8'} dev: true + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true @@ -4922,6 +5956,15 @@ packages: resolution: {integrity: sha512-yUeWbFBDiwPodNqrqpvQpGWheL6PvNu2/pVAb9yy2vzdkkflCgwVA4U2akByPCXzYTum3/5/nB92yKuiLpSo/Q==} dev: true + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -4967,12 +6010,65 @@ packages: engines: {node: '>=10'} dev: true + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /typescript@5.3.2: resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} engines: {node: '>=14.17'} hasBin: true dev: true + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true @@ -5080,6 +6176,27 @@ packages: defaults: 1.0.4 dev: true + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -5131,6 +6248,11 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} From 9856d0507838c8ce062236b87ea919a19dc235a4 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:48:52 -0800 Subject: [PATCH 020/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20app.d.?= =?UTF-8?q?ts=20for=20now?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.d.ts | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 src/app.d.ts diff --git a/src/app.d.ts b/src/app.d.ts deleted file mode 100644 index f16747bd..00000000 --- a/src/app.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -// See https://kit.svelte.dev/docs/types#app -// for information about these interfaces -declare global { - namespace App { - interface Locals { - auth: import("lucia").AuthRequest; - } - } -} - -export {}; From c423f4483a204f18b3d453a88f917316705f7990 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:51:14 -0800 Subject: [PATCH 021/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20random?= =?UTF-8?q?=20test=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.test.ts | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 src/index.test.ts diff --git a/src/index.test.ts b/src/index.test.ts deleted file mode 100644 index d1c3ef7a..00000000 --- a/src/index.test.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { describe, it, expect } from "vitest"; - -// You'll write tests eventually, right? - -describe("sum test", () => { - it("adds 1 + 2 to equal 3", () => { - expect(1 + 2).toBe(3); - }); -}); - -// ...right? From 8024dee3907c5fcc31d4f273f878f8973b60f675 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:51:26 -0800 Subject: [PATCH 022/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20sst-en?= =?UTF-8?q?v?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/sst-env.d.ts | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/sst-env.d.ts diff --git a/src/sst-env.d.ts b/src/sst-env.d.ts deleted file mode 100644 index fee1aa0f..00000000 --- a/src/sst-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -import type * as _ from "../.sst/types/index.ts"; From 51f9af21bbafb361638cb600bd93db12b3ab299b Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:51:42 -0800 Subject: [PATCH 023/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20lib?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/server/lucia.ts | 15 --------------- src/lib/server/prisma.ts | 3 --- 2 files changed, 18 deletions(-) delete mode 100644 src/lib/server/lucia.ts delete mode 100644 src/lib/server/prisma.ts diff --git a/src/lib/server/lucia.ts b/src/lib/server/lucia.ts deleted file mode 100644 index 6cf70a22..00000000 --- a/src/lib/server/lucia.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { prisma } from "@lucia-auth/adapter-prisma"; -import { lucia } from "lucia"; -import { sveltekit } from "lucia/middleware"; - -import { dev } from "$app/environment"; -import { prisma as client } from "$lib/server/prisma"; - -export const auth = lucia({ - adapter: prisma(client), - env: dev ? "DEV" : "PROD", - middleware: sveltekit(), - getUserAttributes: (_) => ({}), -}); - -export type Auth = typeof auth; diff --git a/src/lib/server/prisma.ts b/src/lib/server/prisma.ts deleted file mode 100644 index 901f3a0d..00000000 --- a/src/lib/server/prisma.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { PrismaClient } from "@prisma/client"; - -export const prisma = new PrismaClient(); From 5b86f74d58ceaf2190c6022709dba6ddc00ca213 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:51:59 -0800 Subject: [PATCH 024/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20app=20?= =?UTF-8?q?postcss=20file=20for=20now?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.pcss | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 src/app.pcss diff --git a/src/app.pcss b/src/app.pcss deleted file mode 100644 index 5cdd08ae..00000000 --- a/src/app.pcss +++ /dev/null @@ -1,7 +0,0 @@ -/* Write your global styles here, in PostCSS syntax */ -@tailwind base; -@tailwind base; -@tailwind components; -@tailwind utilities; -@tailwind components; -@tailwind utilities; From 2eaa75658afc3fee7b79e052771ad7c5df8a45d5 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:52:21 -0800 Subject: [PATCH 025/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20simplify=20layo?= =?UTF-8?q?ut=20for=20now?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/+layout.svelte | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index d4ebd0e1..4fa864ce 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,15 +1 @@ - - - - - From 91c2b952edd10e8681906edb1c5931fbc3343c26 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:52:39 -0800 Subject: [PATCH 026/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20simplify=20home?= =?UTF-8?q?=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/+page.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5982b0ae..b29305f3 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,2 +1 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

+

HELLO

From 31f3286650cdbb33f3802aa757b62e920ec9e549 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:53:30 -0800 Subject: [PATCH 027/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20ran=20formatter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eslint.config.js | 70 ++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index a8f5159c..4b7da3d7 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,12 +1,12 @@ // @ts-check -import path from 'node:path' -import url from 'node:url' +import path from "node:path"; +import url from "node:url"; -import { FlatCompat } from '@eslint/eslintrc' +import { FlatCompat } from "@eslint/eslintrc"; -const __filename = url.fileURLToPath(import.meta.url) -const __dirname = path.dirname(__filename) +const __filename = url.fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); /** * Backwards compatibility module. @@ -16,7 +16,7 @@ const __dirname = path.dirname(__filename) const compat = new FlatCompat({ baseDirectory: __dirname, recommendedConfig: {}, -}) +}); /** * @type{import('eslint').Linter.FlatConfig[]} @@ -24,53 +24,53 @@ const compat = new FlatCompat({ const config = [ ...compat.config({ root: true, - parser: '@typescript-eslint/parser', + parser: "@typescript-eslint/parser", parserOptions: { - sourceType: 'module', + sourceType: "module", ecmaVersion: 2020, - extraFileExtensions: ['.svelte'], + extraFileExtensions: [".svelte"], }, extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'standard-with-typescript', - 'airbnb-base', - 'airbnb-typescript/base', - 'plugin:svelte/recommended', - 'prettier', + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "standard-with-typescript", + "airbnb-base", + "airbnb-typescript/base", + "plugin:svelte/recommended", + "prettier", ], - plugins: ['import', '@typescript-eslint'], + plugins: ["import", "@typescript-eslint"], rules: { - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + caughtErrorsIgnorePattern: "^_", }, ], - 'import/first': 'error', - 'import/newline-after-import': 'error', - 'import/order': [ - 'error', + "import/first": "error", + "import/newline-after-import": "error", + "import/order": [ + "error", { - alphabetize: { order: 'asc' }, - 'newlines-between': 'always', + alphabetize: { order: "asc" }, + "newlines-between": "always", }, ], }, overrides: [ { - files: ['*.svelte'], - parser: 'svelte-eslint-parser', + files: ["*.svelte"], + parser: "svelte-eslint-parser", parserOptions: { - parser: '@typescript-eslint/parser', + parser: "@typescript-eslint/parser", }, }, ], - ignorePatterns: ['.svelte-kit', '*.config.*'], + ignorePatterns: [".svelte-kit", "*.config.*"], }), -] +]; -export default config +export default config; From b9d7d8eae7f68ed5a08deb46790feb959d51ff07 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:55:14 -0800 Subject: [PATCH 028/115] =?UTF-8?q?feat:=20=E2=9C=A8=20use=20my=20prettier?= =?UTF-8?q?=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I like mine --- prettier.config.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/prettier.config.js b/prettier.config.js index fddfe225..7ca89843 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -7,9 +7,11 @@ * @type {import("prettier").Config} */ const config = { + semi: false, + singleQuote: true, printWidth: 100, - plugins: ["prettier-plugin-packagejson", "prettier-plugin-prisma", "prettier-plugin-svelte"], - overrides: [{ files: "*.svelte", options: { parser: "svelte" } }], -}; + plugins: ['prettier-plugin-packagejson', 'prettier-plugin-prisma', 'prettier-plugin-svelte'], + overrides: [{ files: '*.svelte', options: { parser: 'svelte' } }], +} -export default config; +export default config From 6ecd312e6252e673505a0abbf9c6334740de2215 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 20:55:40 -0800 Subject: [PATCH 029/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20run=20formatter?= =?UTF-8?q?=20on=20everything?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commitlint.config.js | 6 +- devmoji.config.cjs | 120 ++++++++++++++-------------- eslint.config.js | 70 ++++++++--------- lint-staged.config.cjs | 10 +-- postcss.config.js | 8 +- src/theme.js | 174 ++++++++++++++++++++--------------------- svelte.config.js | 8 +- tailwind.config.js | 16 ++-- vite.config.js | 6 +- 9 files changed, 209 insertions(+), 209 deletions(-) diff --git a/commitlint.config.js b/commitlint.config.js index 2dbd0b95..a2c3dbd5 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -4,7 +4,7 @@ * @type {import('@commitlint/types').UserConfig} */ const config = { - extends: ["@commitlint/config-conventional"], -}; + extends: ['@commitlint/config-conventional'], +} -export default config; +export default config diff --git a/devmoji.config.cjs b/devmoji.config.cjs index 5dd04e89..4fb6cac8 100644 --- a/devmoji.config.cjs +++ b/devmoji.config.cjs @@ -5,106 +5,106 @@ */ const devmoji = [ { - code: "feat", - description: "a new feature", - emoji: "sparkles", + code: 'feat', + description: 'a new feature', + emoji: 'sparkles', }, { - code: "fix", - description: "a bug fix", - emoji: "bug", + code: 'fix', + description: 'a bug fix', + emoji: 'bug', }, { - code: "docs", - description: "documentation only changes", - emoji: "books", + code: 'docs', + description: 'documentation only changes', + emoji: 'books', }, { - code: "style", + code: 'style', description: - "changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)", - emoji: "art", + 'changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)', + emoji: 'art', }, { - code: "refactor", - description: "a code change that neither fixes a bug nor adds a feature", - emoji: "recycle", + code: 'refactor', + description: 'a code change that neither fixes a bug nor adds a feature', + emoji: 'recycle', }, { - code: "perf", - description: "a code change that improves performance", - emoji: "zap", + code: 'perf', + description: 'a code change that improves performance', + emoji: 'zap', }, { - code: "test", - description: "adding missing or correcting existing tests", - emoji: "rotating_light", + code: 'test', + description: 'adding missing or correcting existing tests', + emoji: 'rotating_light', }, { - code: "chore", + code: 'chore', description: - "changes to the build process or auxiliary tools and libraries such as documentation generation", - emoji: "wrench", + 'changes to the build process or auxiliary tools and libraries such as documentation generation', + emoji: 'wrench', }, { - code: "chore-release", - description: "code deployment or publishing to external repositories", - emoji: "rocket", + code: 'chore-release', + description: 'code deployment or publishing to external repositories', + emoji: 'rocket', }, { - code: "chore-deps", - description: "add or delete dependencies", - emoji: "link", + code: 'chore-deps', + description: 'add or delete dependencies', + emoji: 'link', }, { - code: "build", - description: "changes related to build processes", - emoji: "package", + code: 'build', + description: 'changes related to build processes', + emoji: 'package', }, { - code: "ci", - description: "updates to the continuous integration system", - emoji: "construction_worker", + code: 'ci', + description: 'updates to the continuous integration system', + emoji: 'construction_worker', }, { - code: "release", - description: "code deployment or publishing to external repositories", - emoji: "rocket", + code: 'release', + description: 'code deployment or publishing to external repositories', + emoji: 'rocket', }, { - code: "security", - gitmoji: "lock", + code: 'security', + gitmoji: 'lock', }, { - code: "i18n", - gitmoji: "globe_with_meridians", + code: 'i18n', + gitmoji: 'globe_with_meridians', }, { - code: "breaking", - gitmoji: "boom", + code: 'breaking', + gitmoji: 'boom', }, { - code: "config", - gitmoji: "wrench", - emoji: "gear", + code: 'config', + gitmoji: 'wrench', + emoji: 'gear', }, { - code: "add", - emoji: "heavy_plus_sign", - description: "add something", + code: 'add', + emoji: 'heavy_plus_sign', + description: 'add something', }, { - code: "remove", - emoji: "heavy_minus_sign", - description: "remove something", + code: 'remove', + emoji: 'heavy_minus_sign', + description: 'remove something', }, { - code: "revert", - emoji: "rewind", - description: "revert changes", + code: 'revert', + emoji: 'rewind', + description: 'revert changes', }, -]; +] /** * Based on the default configuration from devmoji. @@ -116,6 +116,6 @@ const devmoji = [ const config = { types: devmoji.map((devmoji) => devmoji.code), devmoji, -}; +} -module.exports = config; +module.exports = config diff --git a/eslint.config.js b/eslint.config.js index 4b7da3d7..a8f5159c 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,12 +1,12 @@ // @ts-check -import path from "node:path"; -import url from "node:url"; +import path from 'node:path' +import url from 'node:url' -import { FlatCompat } from "@eslint/eslintrc"; +import { FlatCompat } from '@eslint/eslintrc' -const __filename = url.fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); +const __filename = url.fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) /** * Backwards compatibility module. @@ -16,7 +16,7 @@ const __dirname = path.dirname(__filename); const compat = new FlatCompat({ baseDirectory: __dirname, recommendedConfig: {}, -}); +}) /** * @type{import('eslint').Linter.FlatConfig[]} @@ -24,53 +24,53 @@ const compat = new FlatCompat({ const config = [ ...compat.config({ root: true, - parser: "@typescript-eslint/parser", + parser: '@typescript-eslint/parser', parserOptions: { - sourceType: "module", + sourceType: 'module', ecmaVersion: 2020, - extraFileExtensions: [".svelte"], + extraFileExtensions: ['.svelte'], }, extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "standard-with-typescript", - "airbnb-base", - "airbnb-typescript/base", - "plugin:svelte/recommended", - "prettier", + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'standard-with-typescript', + 'airbnb-base', + 'airbnb-typescript/base', + 'plugin:svelte/recommended', + 'prettier', ], - plugins: ["import", "@typescript-eslint"], + plugins: ['import', '@typescript-eslint'], rules: { - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": [ - "error", + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', { - argsIgnorePattern: "^_", - varsIgnorePattern: "^_", - caughtErrorsIgnorePattern: "^_", + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', }, ], - "import/first": "error", - "import/newline-after-import": "error", - "import/order": [ - "error", + 'import/first': 'error', + 'import/newline-after-import': 'error', + 'import/order': [ + 'error', { - alphabetize: { order: "asc" }, - "newlines-between": "always", + alphabetize: { order: 'asc' }, + 'newlines-between': 'always', }, ], }, overrides: [ { - files: ["*.svelte"], - parser: "svelte-eslint-parser", + files: ['*.svelte'], + parser: 'svelte-eslint-parser', parserOptions: { - parser: "@typescript-eslint/parser", + parser: '@typescript-eslint/parser', }, }, ], - ignorePatterns: [".svelte-kit", "*.config.*"], + ignorePatterns: ['.svelte-kit', '*.config.*'], }), -]; +] -export default config; +export default config diff --git a/lint-staged.config.cjs b/lint-staged.config.cjs index 6bb42b61..b3229ed0 100644 --- a/lint-staged.config.cjs +++ b/lint-staged.config.cjs @@ -4,9 +4,9 @@ * @type {import('lint-staged').Config} */ const config = { - "*.?(c|m){js,ts}?(x)": ["eslint --quiet --fix", "prettier --write"], - "*.svelte": ["eslint --quiet --fix", "prettier --write"], - "*.{css,json,md,prisma,yaml,yml}": ["prettier --write"], -}; + '*.?(c|m){js,ts}?(x)': ['eslint --quiet --fix', 'prettier --write'], + '*.svelte': ['eslint --quiet --fix', 'prettier --write'], + '*.{css,json,md,prisma,yaml,yml}': ['prettier --write'], +} -module.exports = config; +module.exports = config diff --git a/postcss.config.js b/postcss.config.js index abb565cb..26f168fe 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,7 +1,7 @@ // @ts-check -import autoprefixer from "autoprefixer"; -import tailwindcss from "tailwindcss"; +import autoprefixer from 'autoprefixer' +import tailwindcss from 'tailwindcss' /** * @type{import('postcss-load-config').ConfigFn} @@ -9,7 +9,7 @@ import tailwindcss from "tailwindcss"; function config() { return { plugins: [tailwindcss(), autoprefixer()], - }; + } } -export default config; +export default config diff --git a/src/theme.js b/src/theme.js index 6725a861..29ed1f3b 100644 --- a/src/theme.js +++ b/src/theme.js @@ -1,101 +1,101 @@ export const zotmeetTheme = { - name: "zotmeet-theme", + name: 'zotmeet-theme', properties: { // =~= Theme Properties =~= - "--theme-font-family-base": `system-ui`, - "--theme-font-family-heading": `system-ui`, - "--theme-font-color-base": "0 0 0", - "--theme-font-color-dark": "255 255 255", - "--theme-rounded-base": "9999px", - "--theme-rounded-container": "8px", - "--theme-border-base": "1px", + '--theme-font-family-base': `system-ui`, + '--theme-font-family-heading': `system-ui`, + '--theme-font-color-base': '0 0 0', + '--theme-font-color-dark': '255 255 255', + '--theme-rounded-base': '9999px', + '--theme-rounded-container': '8px', + '--theme-border-base': '1px', // =~= Theme On-X Colors =~= - "--on-primary": "0 0 0", - "--on-secondary": "0 0 0", - "--on-tertiary": "0 0 0", - "--on-success": "255 255 255", - "--on-warning": "255 255 255", - "--on-error": "255 255 255", - "--on-surface": "0 0 0", + '--on-primary': '0 0 0', + '--on-secondary': '0 0 0', + '--on-tertiary': '0 0 0', + '--on-success': '255 255 255', + '--on-warning': '255 255 255', + '--on-error': '255 255 255', + '--on-surface': '0 0 0', // =~= Theme Colors =~= // primary | #7f9cd7 - "--color-primary-50": "236 240 249", // #ecf0f9 - "--color-primary-100": "229 235 247", // #e5ebf7 - "--color-primary-200": "223 230 245", // #dfe6f5 - "--color-primary-300": "204 215 239", // #ccd7ef - "--color-primary-400": "165 186 227", // #a5bae3 - "--color-primary-500": "127 156 215", // #7f9cd7 - "--color-primary-600": "114 140 194", // #728cc2 - "--color-primary-700": "95 117 161", // #5f75a1 - "--color-primary-800": "76 94 129", // #4c5e81 - "--color-primary-900": "62 76 105", // #3e4c69 + '--color-primary-50': '236 240 249', // #ecf0f9 + '--color-primary-100': '229 235 247', // #e5ebf7 + '--color-primary-200': '223 230 245', // #dfe6f5 + '--color-primary-300': '204 215 239', // #ccd7ef + '--color-primary-400': '165 186 227', // #a5bae3 + '--color-primary-500': '127 156 215', // #7f9cd7 + '--color-primary-600': '114 140 194', // #728cc2 + '--color-primary-700': '95 117 161', // #5f75a1 + '--color-primary-800': '76 94 129', // #4c5e81 + '--color-primary-900': '62 76 105', // #3e4c69 // secondary | #7c6dc9 - "--color-secondary-50": "235 233 247", // #ebe9f7 - "--color-secondary-100": "229 226 244", // #e5e2f4 - "--color-secondary-200": "222 219 242", // #dedbf2 - "--color-secondary-300": "203 197 233", // #cbc5e9 - "--color-secondary-400": "163 153 217", // #a399d9 - "--color-secondary-500": "124 109 201", // #7c6dc9 - "--color-secondary-600": "112 98 181", // #7062b5 - "--color-secondary-700": "93 82 151", // #5d5297 - "--color-secondary-800": "74 65 121", // #4a4179 - "--color-secondary-900": "61 53 98", // #3d3562 + '--color-secondary-50': '235 233 247', // #ebe9f7 + '--color-secondary-100': '229 226 244', // #e5e2f4 + '--color-secondary-200': '222 219 242', // #dedbf2 + '--color-secondary-300': '203 197 233', // #cbc5e9 + '--color-secondary-400': '163 153 217', // #a399d9 + '--color-secondary-500': '124 109 201', // #7c6dc9 + '--color-secondary-600': '112 98 181', // #7062b5 + '--color-secondary-700': '93 82 151', // #5d5297 + '--color-secondary-800': '74 65 121', // #4a4179 + '--color-secondary-900': '61 53 98', // #3d3562 // tertiary | #729597 - "--color-tertiary-50": "234 239 239", // #eaefef - "--color-tertiary-100": "227 234 234", // #e3eaea - "--color-tertiary-200": "220 229 229", // #dce5e5 - "--color-tertiary-300": "199 213 213", // #c7d5d5 - "--color-tertiary-400": "156 181 182", // #9cb5b6 - "--color-tertiary-500": "114 149 151", // #729597 - "--color-tertiary-600": "103 134 136", // #678688 - "--color-tertiary-700": "86 112 113", // #567071 - "--color-tertiary-800": "68 89 91", // #44595b - "--color-tertiary-900": "56 73 74", // #38494a + '--color-tertiary-50': '234 239 239', // #eaefef + '--color-tertiary-100': '227 234 234', // #e3eaea + '--color-tertiary-200': '220 229 229', // #dce5e5 + '--color-tertiary-300': '199 213 213', // #c7d5d5 + '--color-tertiary-400': '156 181 182', // #9cb5b6 + '--color-tertiary-500': '114 149 151', // #729597 + '--color-tertiary-600': '103 134 136', // #678688 + '--color-tertiary-700': '86 112 113', // #567071 + '--color-tertiary-800': '68 89 91', // #44595b + '--color-tertiary-900': '56 73 74', // #38494a // success | #0d5912 - "--color-success-50": "219 230 219", // #dbe6db - "--color-success-100": "207 222 208", // #cfded0 - "--color-success-200": "195 214 196", // #c3d6c4 - "--color-success-300": "158 189 160", // #9ebda0 - "--color-success-400": "86 139 89", // #568b59 - "--color-success-500": "13 89 18", // #0d5912 - "--color-success-600": "12 80 16", // #0c5010 - "--color-success-700": "10 67 14", // #0a430e - "--color-success-800": "8 53 11", // #08350b - "--color-success-900": "6 44 9", // #062c09 + '--color-success-50': '219 230 219', // #dbe6db + '--color-success-100': '207 222 208', // #cfded0 + '--color-success-200': '195 214 196', // #c3d6c4 + '--color-success-300': '158 189 160', // #9ebda0 + '--color-success-400': '86 139 89', // #568b59 + '--color-success-500': '13 89 18', // #0d5912 + '--color-success-600': '12 80 16', // #0c5010 + '--color-success-700': '10 67 14', // #0a430e + '--color-success-800': '8 53 11', // #08350b + '--color-success-900': '6 44 9', // #062c09 // warning | #7e7020 - "--color-warning-50": "236 234 222", // #eceade - "--color-warning-100": "229 226 210", // #e5e2d2 - "--color-warning-200": "223 219 199", // #dfdbc7 - "--color-warning-300": "203 198 166", // #cbc6a6 - "--color-warning-400": "165 155 99", // #a59b63 - "--color-warning-500": "126 112 32", // #7e7020 - "--color-warning-600": "113 101 29", // #71651d - "--color-warning-700": "95 84 24", // #5f5418 - "--color-warning-800": "76 67 19", // #4c4313 - "--color-warning-900": "62 55 16", // #3e3710 + '--color-warning-50': '236 234 222', // #eceade + '--color-warning-100': '229 226 210', // #e5e2d2 + '--color-warning-200': '223 219 199', // #dfdbc7 + '--color-warning-300': '203 198 166', // #cbc6a6 + '--color-warning-400': '165 155 99', // #a59b63 + '--color-warning-500': '126 112 32', // #7e7020 + '--color-warning-600': '113 101 29', // #71651d + '--color-warning-700': '95 84 24', // #5f5418 + '--color-warning-800': '76 67 19', // #4c4313 + '--color-warning-900': '62 55 16', // #3e3710 // error | #a41e1e - "--color-error-50": "241 221 221", // #f1dddd - "--color-error-100": "237 210 210", // #edd2d2 - "--color-error-200": "232 199 199", // #e8c7c7 - "--color-error-300": "219 165 165", // #dba5a5 - "--color-error-400": "191 98 98", // #bf6262 - "--color-error-500": "164 30 30", // #a41e1e - "--color-error-600": "148 27 27", // #941b1b - "--color-error-700": "123 23 23", // #7b1717 - "--color-error-800": "98 18 18", // #621212 - "--color-error-900": "80 15 15", // #500f0f + '--color-error-50': '241 221 221', // #f1dddd + '--color-error-100': '237 210 210', // #edd2d2 + '--color-error-200': '232 199 199', // #e8c7c7 + '--color-error-300': '219 165 165', // #dba5a5 + '--color-error-400': '191 98 98', // #bf6262 + '--color-error-500': '164 30 30', // #a41e1e + '--color-error-600': '148 27 27', // #941b1b + '--color-error-700': '123 23 23', // #7b1717 + '--color-error-800': '98 18 18', // #621212 + '--color-error-900': '80 15 15', // #500f0f // surface | #9c9c9c - "--color-surface-50": "240 240 240", // #f0f0f0 - "--color-surface-100": "235 235 235", // #ebebeb - "--color-surface-200": "230 230 230", // #e6e6e6 - "--color-surface-300": "215 215 215", // #d7d7d7 - "--color-surface-400": "186 186 186", // #bababa - "--color-surface-500": "156 156 156", // #9c9c9c - "--color-surface-600": "140 140 140", // #8c8c8c - "--color-surface-700": "117 117 117", // #757575 - "--color-surface-800": "94 94 94", // #5e5e5e - "--color-surface-900": "76 76 76", // #4c4c4c + '--color-surface-50': '240 240 240', // #f0f0f0 + '--color-surface-100': '235 235 235', // #ebebeb + '--color-surface-200': '230 230 230', // #e6e6e6 + '--color-surface-300': '215 215 215', // #d7d7d7 + '--color-surface-400': '186 186 186', // #bababa + '--color-surface-500': '156 156 156', // #9c9c9c + '--color-surface-600': '140 140 140', // #8c8c8c + '--color-surface-700': '117 117 117', // #757575 + '--color-surface-800': '94 94 94', // #5e5e5e + '--color-surface-900': '76 76 76', // #4c4c4c }, -}; +} -export default zotmeetTheme; +export default zotmeetTheme diff --git a/svelte.config.js b/svelte.config.js index 7ce1745c..40cc619c 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,5 +1,5 @@ -import adapter from "@svelte.kit/adapter-aws"; -import { vitePreprocess } from "@sveltejs/kit/vite"; +import adapter from '@svelte.kit/adapter-aws' +import { vitePreprocess } from '@sveltejs/kit/vite' /** * @type {import('@sveltejs/kit').Config} @@ -9,6 +9,6 @@ const config = { kit: { adapter: adapter(), }, -}; +} -export default config; +export default config diff --git a/tailwind.config.js b/tailwind.config.js index 9d30ee2f..e81a7c75 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,25 +1,25 @@ // @ts-check -import { join } from "node:path"; +import { join } from 'node:path' -import { skeleton } from "@skeletonlabs/tw-plugin"; +import { skeleton } from '@skeletonlabs/tw-plugin' -import { zotmeetTheme } from "./src/theme"; +import { zotmeetTheme } from './src/theme' /** * @type {import('tailwindcss').Config} */ const config = { - darkMode: "class", + darkMode: 'class', content: [ - "./src/**/*.{html,js,svelte,ts}", - join(require.resolve("@skeletonlabs/skeleton"), "../**/*.{html,js,svelte,ts}"), + './src/**/*.{html,js,svelte,ts}', + join(require.resolve('@skeletonlabs/skeleton'), '../**/*.{html,js,svelte,ts}'), ], plugins: [ skeleton({ themes: { custom: [zotmeetTheme] }, }), ], -}; +} -export default config; +export default config diff --git a/vite.config.js b/vite.config.js index 80864b9d..dd1b8b7f 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,6 +1,6 @@ -import { sveltekit } from "@sveltejs/kit/vite"; -import { defineConfig } from "vite"; +import { sveltekit } from '@sveltejs/kit/vite' +import { defineConfig } from 'vite' export default defineConfig({ plugins: [sveltekit()], -}); +}) From 06973289a76987f0345ccee331b7275fa2d94893 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sat, 25 Nov 2023 21:01:25 -0800 Subject: [PATCH 030/115] =?UTF-8?q?feat:=20=E2=9C=A8=20minimum=20working?= =?UTF-8?q?=20skeleton=20ui=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md => apps/zotmeet/README.md | 0 apps/zotmeet/package.json | 39 +++ .../zotmeet/postcss.config.js | 0 {prisma => apps/zotmeet/prisma}/schema.prisma | 0 apps/zotmeet/src/app.css | 3 + {src => apps/zotmeet/src}/app.html | 0 apps/zotmeet/src/routes/+layout.svelte | 5 + apps/zotmeet/src/routes/+page.svelte | 9 + {src => apps/zotmeet/src}/theme.js | 0 {static => apps/zotmeet/static}/favicon.png | Bin .../zotmeet/svelte.config.js | 0 .../zotmeet/tailwind.config.js | 0 tsconfig.json => apps/zotmeet/tsconfig.json | 0 vite.config.js => apps/zotmeet/vite.config.js | 0 package.json | 31 +- pnpm-lock.yaml | 296 ++++++++++-------- pnpm-workspace.yaml | 2 + src/routes/+layout.svelte | 1 - src/routes/+page.svelte | 1 - 19 files changed, 224 insertions(+), 163 deletions(-) rename README.md => apps/zotmeet/README.md (100%) create mode 100644 apps/zotmeet/package.json rename postcss.config.js => apps/zotmeet/postcss.config.js (100%) rename {prisma => apps/zotmeet/prisma}/schema.prisma (100%) create mode 100644 apps/zotmeet/src/app.css rename {src => apps/zotmeet/src}/app.html (100%) create mode 100644 apps/zotmeet/src/routes/+layout.svelte create mode 100644 apps/zotmeet/src/routes/+page.svelte rename {src => apps/zotmeet/src}/theme.js (100%) rename {static => apps/zotmeet/static}/favicon.png (100%) rename svelte.config.js => apps/zotmeet/svelte.config.js (100%) rename tailwind.config.js => apps/zotmeet/tailwind.config.js (100%) rename tsconfig.json => apps/zotmeet/tsconfig.json (100%) rename vite.config.js => apps/zotmeet/vite.config.js (100%) create mode 100644 pnpm-workspace.yaml delete mode 100644 src/routes/+layout.svelte delete mode 100644 src/routes/+page.svelte diff --git a/README.md b/apps/zotmeet/README.md similarity index 100% rename from README.md rename to apps/zotmeet/README.md diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json new file mode 100644 index 00000000..6fb1599e --- /dev/null +++ b/apps/zotmeet/package.json @@ -0,0 +1,39 @@ +{ + "name": "zotmeet", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "check": "svelte-check", + "dev": "vite", + "format": "prettier --write .", + "postinstall": "prisma generate && svelte-kit sync", + "lint": "eslint --fix .", + "prettier": "3.1.0", + "prettier-plugin-packagejson": "2.4.6", + "prettier-plugin-prisma": "5.0.0", + "prettier-plugin-svelte": "3.1.2", + "preview": "vite preview" + }, + "dependencies": { + "@prisma/client": "5.6.0" + }, + "devDependencies": { + "@skeletonlabs/skeleton": "^2.5.1", + "@skeletonlabs/tw-plugin": "^0.2.4", + "@svelte.kit/adapter-aws": "^0.2.1", + "@sveltejs/kit": "1.27.6", + "@types/eslint__eslintrc": "^2.1.1", + "@types/node": "^20.10.0", + "autoprefixer": "^10.4.14", + "postcss": "^8.4.24", + "postcss-load-config": "^4.0.1", + "prisma": "5.6.0", + "svelte": "4.2.7", + "svelte-check": "3.6.2", + "tailwindcss": "^3.3.2", + "typescript": "5.2.2", + "vite": "4.5.0" + } +} diff --git a/postcss.config.js b/apps/zotmeet/postcss.config.js similarity index 100% rename from postcss.config.js rename to apps/zotmeet/postcss.config.js diff --git a/prisma/schema.prisma b/apps/zotmeet/prisma/schema.prisma similarity index 100% rename from prisma/schema.prisma rename to apps/zotmeet/prisma/schema.prisma diff --git a/apps/zotmeet/src/app.css b/apps/zotmeet/src/app.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/apps/zotmeet/src/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/src/app.html b/apps/zotmeet/src/app.html similarity index 100% rename from src/app.html rename to apps/zotmeet/src/app.html diff --git a/apps/zotmeet/src/routes/+layout.svelte b/apps/zotmeet/src/routes/+layout.svelte new file mode 100644 index 00000000..af60cfcb --- /dev/null +++ b/apps/zotmeet/src/routes/+layout.svelte @@ -0,0 +1,5 @@ + + + diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte new file mode 100644 index 00000000..b57e75bb --- /dev/null +++ b/apps/zotmeet/src/routes/+page.svelte @@ -0,0 +1,9 @@ +
+

Hello Skeleton

+

Lorem ipsum dolor sit amet consectetur adipisicing elit.

+
+ SvelteKit + Tailwind + GitHub +
+
diff --git a/src/theme.js b/apps/zotmeet/src/theme.js similarity index 100% rename from src/theme.js rename to apps/zotmeet/src/theme.js diff --git a/static/favicon.png b/apps/zotmeet/static/favicon.png similarity index 100% rename from static/favicon.png rename to apps/zotmeet/static/favicon.png diff --git a/svelte.config.js b/apps/zotmeet/svelte.config.js similarity index 100% rename from svelte.config.js rename to apps/zotmeet/svelte.config.js diff --git a/tailwind.config.js b/apps/zotmeet/tailwind.config.js similarity index 100% rename from tailwind.config.js rename to apps/zotmeet/tailwind.config.js diff --git a/tsconfig.json b/apps/zotmeet/tsconfig.json similarity index 100% rename from tsconfig.json rename to apps/zotmeet/tsconfig.json diff --git a/vite.config.js b/apps/zotmeet/vite.config.js similarity index 100% rename from vite.config.js rename to apps/zotmeet/vite.config.js diff --git a/package.json b/package.json index 19063db9..f09914da 100644 --- a/package.json +++ b/package.json @@ -1,34 +1,22 @@ { - "name": "zotmeet", + "name": "zotmeet-monorepo", "version": "0.0.0", "private": true, + "description": "zotmeet monorepo", "type": "module", "scripts": { - "build": "vite build", - "check": "svelte-check", - "dev": "vite", - "format": "prettier --write .", - "postinstall": "husky install && prisma generate && svelte-kit sync", - "lint": "eslint --fix .", - "preview": "vite preview" - }, - "dependencies": { - "@prisma/client": "5.6.0" + "postinstall": "husky install" }, "devDependencies": { "@commitlint/cli": "18.4.3", "@commitlint/config-conventional": "18.4.3", "@commitlint/types": "18.4.3", "@eslint/js": "^8.54.0", - "@skeletonlabs/skeleton": "^2.5.1", - "@skeletonlabs/tw-plugin": "^0.2.4", - "@svelte.kit/adapter-aws": "^0.2.1", - "@sveltejs/kit": "1.27.6", + "@types/eslint__eslintrc": "^2.1.1", "@types/lint-staged": "13.2.2", - "@types/node": "20.10.0", + "@types/node": "^20.10.0", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", - "autoprefixer": "^10.4.14", "aws-cdk-lib": "2.110.1", "cz-conventional-changelog": "3.3.0", "devmoji": "2.3.0", @@ -41,20 +29,13 @@ "eslint-plugin-n": "^16.3.1", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-svelte": "^2.35.1", - "globals": "^13.23.0", "husky": "8.0.3", "lint-staged": "15.1.0", - "postcss": "^8.4.24", - "postcss-load-config": "^4.0.1", "prettier": "3.1.0", "prettier-plugin-packagejson": "2.4.6", "prettier-plugin-prisma": "5.0.0", "prettier-plugin-svelte": "3.1.2", "prisma": "5.6.0", - "svelte": "4.2.7", - "svelte-check": "3.6.2", - "tailwindcss": "^3.3.2", - "typescript": "5.2.2", - "vite": "4.5.0" + "typescript": "5.2.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ec8a750..7208938f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,132 +4,149 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@prisma/client': - specifier: 5.6.0 - version: 5.6.0(prisma@5.6.0) - -devDependencies: - '@commitlint/cli': - specifier: 18.4.3 - version: 18.4.3(typescript@5.2.2) - '@commitlint/config-conventional': - specifier: 18.4.3 - version: 18.4.3 - '@commitlint/types': - specifier: 18.4.3 - version: 18.4.3 - '@eslint/js': - specifier: ^8.54.0 - version: 8.54.0 - '@skeletonlabs/skeleton': - specifier: ^2.5.1 - version: 2.5.1(svelte@4.2.7) - '@skeletonlabs/tw-plugin': - specifier: ^0.2.4 - version: 0.2.4(tailwindcss@3.3.5) - '@svelte.kit/adapter-aws': - specifier: ^0.2.1 - version: 0.2.1(svelte@4.2.7)(vite@4.5.0) - '@sveltejs/kit': - specifier: 1.27.6 - version: 1.27.6(svelte@4.2.7)(vite@4.5.0) - '@types/lint-staged': - specifier: 13.2.2 - version: 13.2.2 - '@types/node': - specifier: 20.10.0 - version: 20.10.0 - '@typescript-eslint/eslint-plugin': - specifier: ^6.12.0 - version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.2.2) - '@typescript-eslint/parser': - specifier: ^6.12.0 - version: 6.12.0(eslint@8.54.0)(typescript@5.2.2) - autoprefixer: - specifier: ^10.4.14 - version: 10.4.16(postcss@8.4.31) - aws-cdk-lib: - specifier: 2.110.1 - version: 2.110.1(constructs@10.3.0) - cz-conventional-changelog: - specifier: 3.3.0 - version: 3.3.0(typescript@5.2.2) - devmoji: - specifier: 2.3.0 - version: 2.3.0 - eslint: - specifier: ^8.54.0 - version: 8.54.0 - eslint-config-airbnb-base: - specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.29.0)(eslint@8.54.0) - eslint-config-airbnb-typescript: - specifier: ^17.1.0 - version: 17.1.0(@typescript-eslint/eslint-plugin@6.12.0)(@typescript-eslint/parser@6.12.0)(eslint-plugin-import@2.29.0)(eslint@8.54.0) - eslint-config-prettier: - specifier: ^9.0.0 - version: 9.0.0(eslint@8.54.0) - eslint-config-standard-with-typescript: - specifier: ^40.0.0 - version: 40.0.0(@typescript-eslint/eslint-plugin@6.12.0)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.54.0)(typescript@5.2.2) - eslint-plugin-import: - specifier: ^2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0) - eslint-plugin-n: - specifier: ^16.3.1 - version: 16.3.1(eslint@8.54.0) - eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.1.1(eslint@8.54.0) - eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.35.1(eslint@8.54.0)(svelte@4.2.7) - globals: - specifier: ^13.23.0 - version: 13.23.0 - husky: - specifier: 8.0.3 - version: 8.0.3 - lint-staged: - specifier: 15.1.0 - version: 15.1.0 - postcss: - specifier: ^8.4.24 - version: 8.4.31 - postcss-load-config: - specifier: ^4.0.1 - version: 4.0.2(postcss@8.4.31) - prettier: - specifier: 3.1.0 - version: 3.1.0 - prettier-plugin-packagejson: - specifier: 2.4.6 - version: 2.4.6(prettier@3.1.0) - prettier-plugin-prisma: - specifier: 5.0.0 - version: 5.0.0(prettier@3.1.0) - prettier-plugin-svelte: - specifier: 3.1.2 - version: 3.1.2(prettier@3.1.0)(svelte@4.2.7) - prisma: - specifier: 5.6.0 - version: 5.6.0 - svelte: - specifier: 4.2.7 - version: 4.2.7 - svelte-check: - specifier: 3.6.2 - version: 3.6.2(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7) - tailwindcss: - specifier: ^3.3.2 - version: 3.3.5 - typescript: - specifier: 5.2.2 - version: 5.2.2 - vite: - specifier: 4.5.0 - version: 4.5.0(@types/node@20.10.0) +importers: + + .: + devDependencies: + '@commitlint/cli': + specifier: 18.4.3 + version: 18.4.3(typescript@5.2.2) + '@commitlint/config-conventional': + specifier: 18.4.3 + version: 18.4.3 + '@commitlint/types': + specifier: 18.4.3 + version: 18.4.3 + '@eslint/js': + specifier: ^8.54.0 + version: 8.54.0 + '@types/eslint__eslintrc': + specifier: ^2.1.1 + version: 2.1.1 + '@types/lint-staged': + specifier: 13.2.2 + version: 13.2.2 + '@types/node': + specifier: ^20.10.0 + version: 20.10.0 + '@typescript-eslint/eslint-plugin': + specifier: ^6.12.0 + version: 6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6.12.0 + version: 6.12.0(eslint@8.54.0)(typescript@5.2.2) + aws-cdk-lib: + specifier: 2.110.1 + version: 2.110.1(constructs@10.3.0) + cz-conventional-changelog: + specifier: 3.3.0 + version: 3.3.0(typescript@5.2.2) + devmoji: + specifier: 2.3.0 + version: 2.3.0 + eslint: + specifier: ^8.54.0 + version: 8.54.0 + eslint-config-airbnb-base: + specifier: ^15.0.0 + version: 15.0.0(eslint-plugin-import@2.29.0)(eslint@8.54.0) + eslint-config-airbnb-typescript: + specifier: ^17.1.0 + version: 17.1.0(@typescript-eslint/eslint-plugin@6.12.0)(@typescript-eslint/parser@6.12.0)(eslint-plugin-import@2.29.0)(eslint@8.54.0) + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.54.0) + eslint-config-standard-with-typescript: + specifier: ^40.0.0 + version: 40.0.0(@typescript-eslint/eslint-plugin@6.12.0)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.54.0)(typescript@5.2.2) + eslint-plugin-import: + specifier: ^2.29.0 + version: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0) + eslint-plugin-n: + specifier: ^16.3.1 + version: 16.3.1(eslint@8.54.0) + eslint-plugin-promise: + specifier: ^6.1.1 + version: 6.1.1(eslint@8.54.0) + eslint-plugin-svelte: + specifier: ^2.35.1 + version: 2.35.1(eslint@8.54.0)(svelte@4.2.7) + husky: + specifier: 8.0.3 + version: 8.0.3 + lint-staged: + specifier: 15.1.0 + version: 15.1.0 + prettier: + specifier: 3.1.0 + version: 3.1.0 + prettier-plugin-packagejson: + specifier: 2.4.6 + version: 2.4.6(prettier@3.1.0) + prettier-plugin-prisma: + specifier: 5.0.0 + version: 5.0.0(prettier@3.1.0) + prettier-plugin-svelte: + specifier: 3.1.2 + version: 3.1.2(prettier@3.1.0)(svelte@4.2.7) + prisma: + specifier: 5.6.0 + version: 5.6.0 + typescript: + specifier: 5.2.2 + version: 5.2.2 + + apps/zotmeet: + dependencies: + '@prisma/client': + specifier: 5.6.0 + version: 5.6.0(prisma@5.6.0) + devDependencies: + '@skeletonlabs/skeleton': + specifier: ^2.5.1 + version: 2.5.1(svelte@4.2.7) + '@skeletonlabs/tw-plugin': + specifier: ^0.2.4 + version: 0.2.4(tailwindcss@3.3.5) + '@svelte.kit/adapter-aws': + specifier: ^0.2.1 + version: 0.2.1(svelte@4.2.7)(vite@4.5.0) + '@sveltejs/kit': + specifier: 1.27.6 + version: 1.27.6(svelte@4.2.7)(vite@4.5.0) + '@types/eslint__eslintrc': + specifier: ^2.1.1 + version: 2.1.1 + '@types/node': + specifier: ^20.10.0 + version: 20.10.0 + autoprefixer: + specifier: ^10.4.14 + version: 10.4.16(postcss@8.4.31) + postcss: + specifier: ^8.4.24 + version: 8.4.31 + postcss-load-config: + specifier: ^4.0.1 + version: 4.0.2(postcss@8.4.31) + prisma: + specifier: 5.6.0 + version: 5.6.0 + svelte: + specifier: 4.2.7 + version: 4.2.7 + svelte-check: + specifier: 3.6.2 + version: 3.6.2(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7) + tailwindcss: + specifier: ^3.3.2 + version: 3.3.5 + typescript: + specifier: 5.2.2 + version: 5.2.2 + vite: + specifier: 4.5.0 + version: 4.5.0(@types/node@20.10.0) packages: @@ -2022,6 +2039,19 @@ packages: resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} dev: true + /@types/eslint@8.44.7: + resolution: {integrity: sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/eslint__eslintrc@2.1.1: + resolution: {integrity: sha512-LI51vVv3N7WI4+fM7Xkh1+ciLA1gtuQPgXdKdece+vD8f/G2hrFqtwb4YIQyIM6VXpRM4vSy1PW5y3yuHK+Y2w==} + dependencies: + '@types/eslint': 8.44.7 + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -5724,8 +5754,8 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.7 - svelte-preprocess: 5.1.1(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2) - typescript: 5.3.2 + svelte-preprocess: 5.1.1(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -5764,7 +5794,7 @@ packages: svelte: 4.2.7 dev: true - /svelte-preprocess@5.1.1(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.3.2): + /svelte-preprocess@5.1.1(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7)(typescript@5.2.2): resolution: {integrity: sha512-p/Dp4hmrBW5mrCCq29lEMFpIJT2FZsRlouxEc5qpbOmXRbaFs7clLs8oKPwD3xCFyZfv1bIhvOzpQkhMEVQdMw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -5810,7 +5840,7 @@ packages: sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.7 - typescript: 5.3.2 + typescript: 5.2.2 dev: true /svelte@4.2.7: @@ -6054,12 +6084,6 @@ packages: hasBin: true dev: true - /typescript@5.3.2: - resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..ceab98e0 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - apps/**/* diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte deleted file mode 100644 index 4fa864ce..00000000 --- a/src/routes/+layout.svelte +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte deleted file mode 100644 index b29305f3..00000000 --- a/src/routes/+page.svelte +++ /dev/null @@ -1 +0,0 @@ -

HELLO

From fcb57d61804692cb5d82a5763537192f5729e4b3 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 07:36:20 -0800 Subject: [PATCH 031/115] =?UTF-8?q?feat:=20=E2=9C=A8=20perfect=20calendar?= =?UTF-8?q?=20event=20management?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 10 +- apps/zotmeet/src/app.css | 8 ++ apps/zotmeet/src/routes/calendar/+page.svelte | 134 ++++++++++++++++++ pnpm-lock.yaml | 92 ++++++++---- 4 files changed, 218 insertions(+), 26 deletions(-) create mode 100644 apps/zotmeet/src/routes/calendar/+page.svelte diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index 6fb1599e..f7852310 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -17,7 +17,14 @@ "preview": "vite preview" }, "dependencies": { - "@prisma/client": "5.6.0" + "@fullcalendar/core": "^6.1.9", + "@fullcalendar/daygrid": "^6.1.9", + "@fullcalendar/interaction": "^6.1.9", + "@fullcalendar/list": "^6.1.9", + "@fullcalendar/timegrid": "^6.1.9", + "@prisma/client": "5.6.0", + "dayjs": "^1.11.10", + "svelte": "4.2.7" }, "devDependencies": { "@skeletonlabs/skeleton": "^2.5.1", @@ -30,7 +37,6 @@ "postcss": "^8.4.24", "postcss-load-config": "^4.0.1", "prisma": "5.6.0", - "svelte": "4.2.7", "svelte-check": "3.6.2", "tailwindcss": "^3.3.2", "typescript": "5.2.2", diff --git a/apps/zotmeet/src/app.css b/apps/zotmeet/src/app.css index b5c61c95..37b8b95c 100644 --- a/apps/zotmeet/src/app.css +++ b/apps/zotmeet/src/app.css @@ -1,3 +1,11 @@ @tailwind base; @tailwind components; @tailwind utilities; + +.fc .fc-timegrid-col-bg .fc-highlight { + display: none; +} + +.fc-toolbar-title { + background-color: rgb(var(--color-primary-500)); +} diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/calendar/+page.svelte new file mode 100644 index 00000000..37e99bf9 --- /dev/null +++ b/apps/zotmeet/src/routes/calendar/+page.svelte @@ -0,0 +1,134 @@ + + +
+ + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7208938f..a0d82ba4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,9 +98,30 @@ importers: apps/zotmeet: dependencies: + '@fullcalendar/core': + specifier: ^6.1.9 + version: 6.1.9 + '@fullcalendar/daygrid': + specifier: ^6.1.9 + version: 6.1.9(@fullcalendar/core@6.1.9) + '@fullcalendar/interaction': + specifier: ^6.1.9 + version: 6.1.9(@fullcalendar/core@6.1.9) + '@fullcalendar/list': + specifier: ^6.1.9 + version: 6.1.9(@fullcalendar/core@6.1.9) + '@fullcalendar/timegrid': + specifier: ^6.1.9 + version: 6.1.9(@fullcalendar/core@6.1.9) '@prisma/client': specifier: 5.6.0 version: 5.6.0(prisma@5.6.0) + dayjs: + specifier: ^1.11.10 + version: 1.11.10 + svelte: + specifier: 4.2.7 + version: 4.2.7 devDependencies: '@skeletonlabs/skeleton': specifier: ^2.5.1 @@ -132,9 +153,6 @@ importers: prisma: specifier: 5.6.0 version: 5.6.0 - svelte: - specifier: 4.2.7 - version: 4.2.7 svelte-check: specifier: 3.6.2 version: 3.6.2(postcss-load-config@4.0.2)(postcss@8.4.31)(svelte@4.2.7) @@ -166,7 +184,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 - dev: true /@aws-cdk/asset-awscli-v1@2.2.201: resolution: {integrity: sha512-INZqcwDinNaIdb5CtW3ez5s943nX5stGBQS6VOP2JDlOFP81hM3fds/9NDknipqfUkZM43dx+HgVvkXYXXARCQ==} @@ -1389,6 +1406,45 @@ packages: engines: {node: '>=14'} dev: true + /@fullcalendar/core@6.1.9: + resolution: {integrity: sha512-eeG+z9BWerdsU9Ac6j16rpYpPnE0wxtnEHiHrh/u/ADbGTR3hCOjCD9PxQOfhOTHbWOVs7JQunGcksSPu5WZBQ==} + dependencies: + preact: 10.12.1 + dev: false + + /@fullcalendar/daygrid@6.1.9(@fullcalendar/core@6.1.9): + resolution: {integrity: sha512-o/6joH/7lmVHXAkbaa/tUbzWYnGp/LgfdiFyYPkqQbjKEeivNZWF1WhHqFbhx0zbFONSHtrvkjY2bjr+Ef2quQ==} + peerDependencies: + '@fullcalendar/core': ~6.1.9 + dependencies: + '@fullcalendar/core': 6.1.9 + dev: false + + /@fullcalendar/interaction@6.1.9(@fullcalendar/core@6.1.9): + resolution: {integrity: sha512-I3FGnv0kKZpIwujg3HllbKrciNjTqeTYy3oJG226oAn7lV6wnrrDYMmuGmA0jPJAGN46HKrQqKN7ItxQRDec4Q==} + peerDependencies: + '@fullcalendar/core': ~6.1.9 + dependencies: + '@fullcalendar/core': 6.1.9 + dev: false + + /@fullcalendar/list@6.1.9(@fullcalendar/core@6.1.9): + resolution: {integrity: sha512-OCKdC1Gz26cJ5QsXdQyXVyzVu23ypT2xzyAR+Wc8jEytcJLWXw2a914m/MVax8n8EHuaIYY2exhsy/eaSU0XNA==} + peerDependencies: + '@fullcalendar/core': ~6.1.9 + dependencies: + '@fullcalendar/core': 6.1.9 + dev: false + + /@fullcalendar/timegrid@6.1.9(@fullcalendar/core@6.1.9): + resolution: {integrity: sha512-le7UV05wVE1Trdr054kgJXTwa+A1pEI8nlCBnPWdcyrL+dTLoPvQ4AWEVCnV7So+4zRYaCqnqGXfCJsj0RQa0g==} + peerDependencies: + '@fullcalendar/core': ~6.1.9 + dependencies: + '@fullcalendar/core': 6.1.9 + '@fullcalendar/daygrid': 6.1.9(@fullcalendar/core@6.1.9) + dev: false + /@humanwhocodes/config-array@0.11.13: resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} @@ -1416,28 +1472,23 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 - dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true /@jridgewell/trace-mapping@0.3.20: resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -2054,7 +2105,6 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2251,7 +2301,6 @@ packages: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -2338,7 +2387,6 @@ packages: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 - dev: true /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -2469,7 +2517,6 @@ packages: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 - dev: true /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2698,7 +2745,6 @@ packages: acorn: 8.11.2 estree-walker: 3.0.3 periscopic: 3.1.0 - dev: true /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -2864,7 +2910,6 @@ packages: dependencies: mdn-data: 2.0.30 source-map-js: 1.0.2 - dev: true /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -2893,6 +2938,10 @@ packages: engines: {node: '>=8'} dev: true + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -2992,7 +3041,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true /detect-file@1.0.0: resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} @@ -3558,7 +3606,6 @@ packages: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 - dev: true /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -4291,7 +4338,6 @@ packages: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 1.0.5 - dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -4512,7 +4558,6 @@ packages: /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - dev: true /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -4621,7 +4666,6 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} @@ -4635,7 +4679,6 @@ packages: /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: true /meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} @@ -5025,7 +5068,6 @@ packages: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 - dev: true /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -5157,6 +5199,10 @@ packages: source-map-js: 1.0.2 dev: true + /preact@10.12.1: + resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==} + dev: false + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5569,7 +5615,6 @@ packages: /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: true /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -5860,7 +5905,6 @@ packages: locate-character: 3.0.0 magic-string: 0.30.5 periscopic: 3.1.0 - dev: true /synckit@0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} From 22b1300e2c3686b30f480feba47c48cf317e503e Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 07:55:15 -0800 Subject: [PATCH 032/115] =?UTF-8?q?refactor:=20=E2=99=BB=EF=B8=8F=20move?= =?UTF-8?q?=20calendar=20handlers=20to=20separate=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chore: fix eslint errors --- apps/zotmeet/package.json | 2 +- apps/zotmeet/src/lib/calendar.ts | 97 +++++++++++++++++ apps/zotmeet/src/routes/calendar/+page.svelte | 101 +----------------- apps/zotmeet/tsconfig.json | 13 +-- eslint.config.js | 2 + pnpm-lock.yaml | 62 +---------- 6 files changed, 114 insertions(+), 163 deletions(-) create mode 100644 apps/zotmeet/src/lib/calendar.ts diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index f7852310..2ae690c9 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -23,6 +23,7 @@ "@fullcalendar/list": "^6.1.9", "@fullcalendar/timegrid": "^6.1.9", "@prisma/client": "5.6.0", + "@sveltejs/kit": "1.27.6", "dayjs": "^1.11.10", "svelte": "4.2.7" }, @@ -30,7 +31,6 @@ "@skeletonlabs/skeleton": "^2.5.1", "@skeletonlabs/tw-plugin": "^0.2.4", "@svelte.kit/adapter-aws": "^0.2.1", - "@sveltejs/kit": "1.27.6", "@types/eslint__eslintrc": "^2.1.1", "@types/node": "^20.10.0", "autoprefixer": "^10.4.14", diff --git a/apps/zotmeet/src/lib/calendar.ts b/apps/zotmeet/src/lib/calendar.ts new file mode 100644 index 00000000..70129d3a --- /dev/null +++ b/apps/zotmeet/src/lib/calendar.ts @@ -0,0 +1,97 @@ +import type { Calendar, DateSpanApi } from '@fullcalendar/core' +import dayjs from 'dayjs' +import isBetween from 'dayjs/plugin/isBetween' + +dayjs.extend(isBetween) + +export interface DayJSSelection { + start: dayjs.Dayjs + end: dayjs.Dayjs +} + +export function getSelection(arg: DateSpanApi): DayJSSelection { + const start = dayjs(arg.start) + let end = dayjs(arg.end) + + if (start.isSame(end)) { + end = end.add(30, 'minutes') + } + + return start.isBefore(end) ? { start, end } : { start: end, end: start } +} + +export function getDaysOfWeek(arg: DateSpanApi): number[] { + const { start, end } = arg + + const daysOfWeek = [] + + for (let i = start.getDay(); i <= end.getDay(); i += 1) { + daysOfWeek.push(i) + } + + return daysOfWeek +} + +export function handleSelect(arg: DateSpanApi, calendar: Calendar): void { + calendar.getEventById('PENDING')?.remove() + + const startEndTime = getSelection(arg) + + getDaysOfWeek(arg).forEach((day) => { + const start = startEndTime.start.day(day).toDate() + const end = startEndTime.end.day(day).toDate() + calendar.addEvent({ start, end, backgroundColor: 'purple' }) + }) +} + +export function handleSelection(arg: DateSpanApi, calendar: Calendar): boolean { + calendar.getEventById('PENDING')?.remove() + + const daysOfWeek = getDaysOfWeek(arg) + const { start, end } = getSelection(arg) + + calendar.getEvents().forEach((event) => { + if (event.start == null || event.end == null) { + return + } + + if (!daysOfWeek.includes(event.start.getDay())) { + return + } + + /** + * Convert the selection into Dayjs recurring events. + */ + const selectionAsRecurring = daysOfWeek.map((day) => { + const selectionStart = dayjs(start).day(day) + const selectionEnd = dayjs(end).day(day) + return { start: selectionStart, end: selectionEnd } + }) + + selectionAsRecurring.forEach((selection) => { + const eventStart = dayjs(event.start) + const eventEnd = dayjs(event.end) + + const startIsBetween = eventStart.isBetween(selection.start, selection.end, 'minute', '[]') + const endIsBetween = eventEnd.isBetween(selection.start, selection.end, 'minute', '[]') + + if (startIsBetween && endIsBetween) { + event.remove() + } else if (startIsBetween) { + event.setStart(selection.end.toDate()) + } else if (endIsBetween) { + event.setEnd(selection.start.toDate()) + } + }) + }) + + calendar.addEvent({ + id: 'PENDING', + startTime: start.format('HH:mm'), + endTime: end.format('HH:mm'), + daysOfWeek, + backgroundColor: 'pink', + }) + + return true +} diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/calendar/+page.svelte index 37e99bf9..5c52fd18 100644 --- a/apps/zotmeet/src/routes/calendar/+page.svelte +++ b/apps/zotmeet/src/routes/calendar/+page.svelte @@ -1,117 +1,24 @@ + * + * + * + * ``` + */ + type SvelteInputEvent = E & { + currentTarget: EventTarget & Element + } +} + +export {} diff --git a/apps/zotmeet/src/lib/calendar.ts b/apps/zotmeet/src/lib/calendar.ts index 17e756ed..b86c683d 100644 --- a/apps/zotmeet/src/lib/calendar.ts +++ b/apps/zotmeet/src/lib/calendar.ts @@ -45,7 +45,12 @@ export function handleSelect(arg: DateSpanApi, calendar: Calendar): void { getDaysOfWeek(arg).forEach((day) => { const start = startEndTime.start.day(day).toDate() const end = startEndTime.end.day(day).toDate() - calendar.addEvent({ start, end, backgroundColor: 'purple' }) + + calendar.addEvent({ + start, + end, + backgroundColor: 'rgb(var(--color-primary-500))', + }) }) } @@ -92,7 +97,7 @@ export function handleSelection(arg: DateSpanApi, calendar: Calendar): boolean { startTime: start.format('HH:mm:ms'), endTime: end.format('HH:mm:ms'), daysOfWeek, - backgroundColor: 'pink', + backgroundColor: 'rgb(var(--color-secondary-500))', }) return true diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/calendar/+page.svelte index 5c52fd18..f1dd07db 100644 --- a/apps/zotmeet/src/routes/calendar/+page.svelte +++ b/apps/zotmeet/src/routes/calendar/+page.svelte @@ -11,16 +11,28 @@ let calendar: Calendar + let startHour = 0 + let endHour = 24 + onMount(() => { calendar = new Calendar(element, { editable: true, selectable: true, + allDaySlot: false, + height: 'auto', + slotMinTime: `${startHour}:00:00`, + slotMaxTime: `${endHour}:00:00`, select: (arg) => { handleSelect(arg, calendar) }, selectAllow: (arg) => handleSelection(arg, calendar), plugins: [timeGridPlugin, listPlugin, interactionPlugin], initialView: 'timeGridWeek', + headerToolbar: { + left: undefined, + center: undefined, + right: undefined, + }, }) calendar.render() @@ -34,8 +46,55 @@ const events = calendar.getEvents() console.log(events) } + + const hours = Array.from({ length: 25 }, (_, i) => i) + + function handleStartSelect(e: SvelteInputEvent): void { + startHour = +e.currentTarget.value + calendar.setOption('slotMinTime', `${startHour}:00:00`) + } + + function handleEndSelect(e: SvelteInputEvent): void { + endHour = +e.currentTarget.value + calendar.setOption('slotMaxTime', `${endHour}:00:00`) + } -
+
+
+
+
+ +
+
+ +
+ +
+ + + +
- +
+ +
+
+
diff --git a/apps/zotmeet/src/theme.js b/apps/zotmeet/src/theme.js index 29ed1f3b..45c64f13 100644 --- a/apps/zotmeet/src/theme.js +++ b/apps/zotmeet/src/theme.js @@ -2,8 +2,8 @@ export const zotmeetTheme = { name: 'zotmeet-theme', properties: { // =~= Theme Properties =~= - '--theme-font-family-base': `system-ui`, - '--theme-font-family-heading': `system-ui`, + '--theme-font-family-base': `Inter, system-ui`, + '--theme-font-family-heading': `Inter, system-ui`, '--theme-font-color-base': '0 0 0', '--theme-font-color-dark': '255 255 255', '--theme-rounded-base': '9999px', diff --git a/apps/zotmeet/static/fonts/Inter-VariableFont_slnt,wght.ttf b/apps/zotmeet/static/fonts/Inter-VariableFont_slnt,wght.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e72470871b8fc198da424b1e17ed729c202829cf GIT binary patch literal 804612 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

4*9^KT7^n>*M>|wJB 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%0DCo0&`A-%p#lSZ_a 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

r4&=ywuOFzp>FIx^> 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 Uh@3pmyhdg$M{-oyJW7cF3l>xKP5=M^ literal 0 HcmV?d00001 diff --git a/eslint.config.js b/eslint.config.js index e9411de7..0bf26ada 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -44,6 +44,7 @@ const config = [ 'import/no-unresolved': 'off', 'import/extensions': 'off', 'no-unused-vars': 'off', + 'no-undef': 'off', 'import/no-extraneous-dependencies': 'off', '@typescript-eslint/no-unused-vars': [ 'error', From 194e2e0966c132559a8b9a282effb3cbe0c459d5 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 15:07:16 -0800 Subject: [PATCH 038/115] =?UTF-8?q?feat:=20=E2=9C=A8=20hooked=20up=20event?= =?UTF-8?q?=20listeners=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/app.css | 4 ++-- apps/zotmeet/src/routes/calendar/+page.svelte | 23 +++++++++++-------- eslint.config.js | 1 + 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/apps/zotmeet/src/app.css b/apps/zotmeet/src/app.css index da119fd2..d53c3502 100644 --- a/apps/zotmeet/src/app.css +++ b/apps/zotmeet/src/app.css @@ -29,7 +29,7 @@ /* All the row labels. */ .fc-timegrid-slot-label { - /* @apply bg-tertiary-500 !important; */ + @apply bg-tertiary-500 !important; } /* The row labels with the time. */ @@ -39,7 +39,7 @@ /* Column headers. */ .fc-col-header-cell { - @apply bg-red-400 !important; + @apply bg-primary-500 !important; } /* The table where user selects time. */ diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/calendar/+page.svelte index f1dd07db..bf6690f2 100644 --- a/apps/zotmeet/src/routes/calendar/+page.svelte +++ b/apps/zotmeet/src/routes/calendar/+page.svelte @@ -11,8 +11,9 @@ let calendar: Calendar - let startHour = 0 - let endHour = 24 + export let startHour = 9 + + export let endHour = 21 onMount(() => { calendar = new Calendar(element, { @@ -26,6 +27,15 @@ handleSelect(arg, calendar) }, selectAllow: (arg) => handleSelection(arg, calendar), + eventClick: (arg) => { + arg.event.remove() + }, + eventMouseEnter: (arg) => { + arg.event.setProp('backgroundColor', 'red') + }, + eventMouseLeave: (arg) => { + arg.event.setProp('backgroundColor', 'blue') + }, plugins: [timeGridPlugin, listPlugin, interactionPlugin], initialView: 'timeGridWeek', headerToolbar: { @@ -66,13 +76,6 @@

diff --git a/eslint.config.js b/eslint.config.js index 0bf26ada..589b83f1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -45,6 +45,7 @@ const config = [ 'import/extensions': 'off', 'no-unused-vars': 'off', 'no-undef': 'off', + 'import/no-mutable-exports': 'off', 'import/no-extraneous-dependencies': 'off', '@typescript-eslint/no-unused-vars': [ 'error', From 8a80ad7990cf348a3586c2a0aa3f0b2982ed6063 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 15:11:24 -0800 Subject: [PATCH 039/115] =?UTF-8?q?feat:=20=E2=9C=A8=20state=20management?= =?UTF-8?q?=20based=20on=20hovering?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/calendar/+page.svelte | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/calendar/+page.svelte index bf6690f2..a67cacb8 100644 --- a/apps/zotmeet/src/routes/calendar/+page.svelte +++ b/apps/zotmeet/src/routes/calendar/+page.svelte @@ -1,5 +1,6 @@ - + + + diff --git a/apps/zotmeet/src/routes/+layout.ts b/apps/zotmeet/src/routes/+layout.ts new file mode 100644 index 00000000..ef7e9178 --- /dev/null +++ b/apps/zotmeet/src/routes/+layout.ts @@ -0,0 +1,27 @@ +import { createTRPCSvelte } from '@bevm0/trpc-svelte-query' +import { QueryClient } from '@tanstack/svelte-query' +import { httpBatchLink } from '@trpc/client' + +import type { LayoutLoad } from './$types' + +import { transformer } from '$lib/client/transformer' +import type { AppRouter } from '$lib/server/trpc/routers' + +export const load: LayoutLoad = async (event) => { + const queryClient = new QueryClient() + + const trpc = createTRPCSvelte( + { + transformer, + links: [ + httpBatchLink({ + url: 'http://localhost:5173/api/trpc', + fetch: event.fetch, + }), + ], + }, + { svelteQueryContext: queryClient }, + ) + + return { trpc } +} diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index b57e75bb..4cad3924 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -1,5 +1,11 @@ + +
-

Hello Skeleton

+

{$query.data?.greeting}

Lorem ipsum dolor sit amet consectetur adipisicing elit.

SvelteKit diff --git a/apps/zotmeet/src/routes/+page.ts b/apps/zotmeet/src/routes/+page.ts new file mode 100644 index 00000000..2927cbdc --- /dev/null +++ b/apps/zotmeet/src/routes/+page.ts @@ -0,0 +1,12 @@ +import type { PageLoad } from './$types' + +export const load: PageLoad = async (event) => { + const { trpc } = await event.parent() + + // This is a pre-fetching example. + // The query for the page will not have to run on page mount if the data isn't pre-fetched here. + + return { + greeting: trpc.context.hello.fetch({ text: 'Elysia' }), + } +} diff --git a/apps/zotmeet/src/routes/api/trpc/[...trpc]/+server.ts b/apps/zotmeet/src/routes/api/trpc/[...trpc]/+server.ts new file mode 100644 index 00000000..40d90f28 --- /dev/null +++ b/apps/zotmeet/src/routes/api/trpc/[...trpc]/+server.ts @@ -0,0 +1,21 @@ +import { createTRPCRequestHandler } from '@bevm0/trpc-sveltekit' + +import type { RouteParams, RouteId } from './$types' + +import { createContext } from '$lib/server/trpc/context' +import { appRouter } from '$lib/server/trpc/routers' +import type { AppRouter } from '$lib/server/trpc/routers' + +/** + * export GET and POST SvelteKit request handlers + * @see https://trpc.io/docs/api-handler + * @see https://kit.svelte.dev/docs/routing#server + */ + +const requestHandler = createTRPCRequestHandler({ + router: appRouter, + createContext, +}) + +export const GET = requestHandler +export const POST = requestHandler diff --git a/eslint.config.js b/eslint.config.js index 1ff58c49..5a33bdcf 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -47,6 +47,7 @@ const config = [ 'no-undef': 'off', 'import/no-mutable-exports': 'off', 'import/no-extraneous-dependencies': 'off', + 'import/prefer-default-export': 'off', '@typescript-eslint/no-unused-vars': [ 'error', { @@ -72,6 +73,9 @@ const config = [ parserOptions: { parser: '@typescript-eslint/parser', }, + rules: { + '@typescript-eslint/no-unused-vars': 'off', + }, }, ], ignorePatterns: [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0242da0d..7de71b19 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -125,10 +125,28 @@ importers: '@prisma/client': specifier: 5.6.0 version: 5.6.0(prisma@5.6.0) + '@tanstack/svelte-query': + specifier: ^5.8.7 + version: 5.8.7(svelte@4.2.7) + arktype: + specifier: 1.0.28-alpha + version: 1.0.28-alpha dayjs: specifier: ^1.11.10 version: 1.11.10 + devalue: + specifier: ^4.3.2 + version: 4.3.2 + superjson: + specifier: ^2.2.1 + version: 2.2.1 devDependencies: + '@bevm0/trpc-svelte-query': + specifier: ^0.10.0 + version: 0.10.0(@tanstack/svelte-query@5.8.7)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(svelte@4.2.7) + '@bevm0/trpc-sveltekit': + specifier: ^0.9.22 + version: 0.9.22(@sveltejs/kit@1.27.6)(@trpc/server@10.44.1)(svelte@4.2.7) '@skeletonlabs/skeleton': specifier: ^2.5.1 version: 2.5.1(svelte@4.2.7) @@ -144,6 +162,12 @@ importers: '@tailwindcss/forms': specifier: ^0.5.7 version: 0.5.7(tailwindcss@3.3.5) + '@trpc/client': + specifier: ^10.44.1 + version: 10.44.1(@trpc/server@10.44.1) + '@trpc/server': + specifier: ^10.44.1 + version: 10.44.1 '@types/eslint__eslintrc': specifier: ^2.1.1 version: 2.1.1 @@ -205,7 +229,6 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 - dev: true /@aws-cdk/asset-awscli-v1@2.2.201: resolution: {integrity: sha512-INZqcwDinNaIdb5CtW3ez5s943nX5stGBQS6VOP2JDlOFP81hM3fds/9NDknipqfUkZM43dx+HgVvkXYXXARCQ==} @@ -827,6 +850,33 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@bevm0/trpc-svelte-query@0.10.0(@tanstack/svelte-query@5.8.7)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(svelte@4.2.7): + resolution: {integrity: sha512-kwwT8Hb7dvaQaLBeBpYqDqnKmJTwZwm4YvDh8TmkBxiEmi8rKfv6ewDPpUxt2VBbz+rBRITt4uuwQYkTmoJggw==} + peerDependencies: + '@tanstack/svelte-query': ^4.29.5 + '@trpc/client': ^10.25.1 + '@trpc/server': ^10.25.1 + svelte: ^3.58.0 + dependencies: + '@tanstack/svelte-query': 5.8.7(svelte@4.2.7) + '@trpc/client': 10.44.1(@trpc/server@10.44.1) + '@trpc/server': 10.44.1 + svelte: 4.2.7 + dev: true + + /@bevm0/trpc-sveltekit@0.9.22(@sveltejs/kit@1.27.6)(@trpc/server@10.44.1)(svelte@4.2.7): + resolution: {integrity: sha512-J66x5ZW27YlxqvGG1nJ+5unc8SEKJ7CVYt+1A6bVL/UZwh/bbFe9MF23BFi+y5tzyiM/asfYZv+CvZrlDLktDw==} + peerDependencies: + '@sveltejs/kit': ^1.15.7 + '@trpc/server': ^10.25.1 + svelte: ^3.58.0 + dependencies: + '@sveltejs/kit': 1.27.6(svelte@4.2.7)(vite@4.5.0) + '@trpc/client': 10.44.1(@trpc/server@10.44.1) + '@trpc/server': 10.44.1 + svelte: 4.2.7 + dev: true + /@commitlint/cli@18.4.3(typescript@5.2.2): resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==} engines: {node: '>=v18'} @@ -1510,28 +1560,23 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 - dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true /@jridgewell/trace-mapping@0.3.20: resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -2142,6 +2187,30 @@ packages: tailwindcss: 3.3.5 dev: true + /@tanstack/query-core@5.8.7: + resolution: {integrity: sha512-58xOSkxxZK4SGQ/uzX8MDZHLGZCkxlgkPxnfhxUOL2uchnNHyay2UVcR3mQNMgaMwH1e2l+0n+zfS7+UJ/MAJw==} + + /@tanstack/svelte-query@5.8.7(svelte@4.2.7): + resolution: {integrity: sha512-KzilehNQQO4wxxucEy1NJMo0q/NZ0nhrq5TX5MNzklsu0QZ5x+Hn5x7DVox4uKazkCuro1S7PhGEAwFQnHTuwQ==} + peerDependencies: + svelte: '>=3 <5' + dependencies: + '@tanstack/query-core': 5.8.7 + svelte: 4.2.7 + + /@trpc/client@10.44.1(@trpc/server@10.44.1): + resolution: {integrity: sha512-vTWsykNcgz1LnwePVl2fKZnhvzP9N3GaaLYPkfGINo314ZOS0OBqe9x0ytB2LLUnRVTAAZ2WoONzARd8nHiqrA==} + peerDependencies: + '@trpc/server': 10.44.1 + dependencies: + '@trpc/server': 10.44.1 + dev: true + + /@trpc/server@10.44.1: + resolution: {integrity: sha512-mF7B+K6LjuboX8I1RZgKE5GA/fJhsJ8tKGK2UBt3Bwik7hepEPb4NJgNr7vO6BK5IYwPdBLRLTctRw6XZx0sRg==} + engines: {node: '>=18.0.0'} + dev: true + /@types/chai-subset@1.3.5: resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} dependencies: @@ -2171,7 +2240,6 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true /@types/istanbul-lib-coverage@2.0.6: resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -2436,7 +2504,6 @@ packages: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} @@ -2537,7 +2604,10 @@ packages: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 - dev: true + + /arktype@1.0.28-alpha: + resolution: {integrity: sha512-cjakiZXXa4+y1OL0oFk0HRjIrEwJhNNvkqXkiR53SOpyKHwSqFrjrQkY4K8MlnQybRhd/y4OG4NVDR1Ea4WDkQ==} + dev: false /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -2676,7 +2746,6 @@ packages: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 - dev: true /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2929,7 +2998,6 @@ packages: acorn: 8.11.2 estree-walker: 3.0.3 periscopic: 3.1.0 - dev: true /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3059,6 +3127,13 @@ packages: engines: {node: '>= 0.6'} dev: true + /copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.16 + dev: false + /cosmiconfig-typescript-loader@5.0.0(@types/node@18.18.12)(cosmiconfig@8.3.6)(typescript@5.2.2): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} @@ -3106,7 +3181,6 @@ packages: dependencies: mdn-data: 2.0.30 source-map-js: 1.0.2 - dev: true /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -3269,7 +3343,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true /detect-file@1.0.0: resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} @@ -3293,7 +3366,6 @@ packages: /devalue@4.3.2: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} - dev: true /devmoji@2.3.0: resolution: {integrity: sha512-ErQdYUsE7tKxqDzQzRos6fKWaRIFUOJvMkQODq9iYDI3o5X6nxD78XEdGNYaW5AaJW4uxj+XQTkCuJkV86Qg6g==} @@ -3845,7 +3917,6 @@ packages: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 - dev: true /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -4633,7 +4704,6 @@ packages: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 1.0.5 - dev: true /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -4702,6 +4772,11 @@ packages: call-bind: 1.0.5 dev: true + /is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + dev: false + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -4932,7 +5007,6 @@ packages: /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - dev: true /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -5047,7 +5121,6 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -5068,7 +5141,6 @@ packages: /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: true /meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} @@ -5509,7 +5581,6 @@ packages: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 - dev: true /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -6105,7 +6176,6 @@ packages: /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: true /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} @@ -6277,6 +6347,13 @@ packages: ts-interface-checker: 0.1.13 dev: true + /superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + engines: {node: '>=16'} + dependencies: + copy-anything: 3.0.5 + dev: false + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -6415,7 +6492,6 @@ packages: locate-character: 3.0.0 magic-string: 0.30.5 periscopic: 3.1.0 - dev: true /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} From 618180d1fd6623b6b442fa0b9fb23907fcb6baf0 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 16:06:28 -0800 Subject: [PATCH 042/115] =?UTF-8?q?feat:=20=E2=9C=A8=20router=20for=20csl?= =?UTF-8?q?=20and=20science=20library=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/lib/server/trpc/routers/index.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/zotmeet/src/lib/server/trpc/routers/index.ts b/apps/zotmeet/src/lib/server/trpc/routers/index.ts index f1df4b11..f446ec18 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/index.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/index.ts @@ -2,10 +2,17 @@ import { type } from 'arktype' import { router, procedure } from '../init' +import { data as cslData } from '$lib/data/csl' +import { data as scienceLibraryData } from '$lib/data/science-library' + export const appRouter = router({ hello: procedure.input(type({ text: 'string' }).assert).query(({ input }) => ({ greeting: `hello ${input.text}`, })), + + csl: procedure.query(() => cslData), + + scienceLibrary: procedure.query(() => scienceLibraryData), }) // export type definition of API From 4ad2c6959446c98b2f78410d23d303319ca76fa5 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 16:11:45 -0800 Subject: [PATCH 043/115] =?UTF-8?q?feat:=20=E2=9C=A8=20example=20of=20csl?= =?UTF-8?q?=20data=20display?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/calendar/+page.svelte | 5 +++- apps/zotmeet/src/routes/demo/+page.svelte | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 apps/zotmeet/src/routes/demo/+page.svelte diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/calendar/+page.svelte index 50f33536..5a5e59e9 100644 --- a/apps/zotmeet/src/routes/calendar/+page.svelte +++ b/apps/zotmeet/src/routes/calendar/+page.svelte @@ -17,7 +17,10 @@ export let endHour = 21 - export let reservation: Reservation = {} + export let reservation: Reservation = { + id: '', + events: {}, + } let currentEvent: EventImpl | undefined diff --git a/apps/zotmeet/src/routes/demo/+page.svelte b/apps/zotmeet/src/routes/demo/+page.svelte new file mode 100644 index 00000000..4055ac65 --- /dev/null +++ b/apps/zotmeet/src/routes/demo/+page.svelte @@ -0,0 +1,23 @@ + + +
+ {#each $query.data ?? [] as slot} +
+

{slot.segment_id}

+

{slot.segment_start_time}

+
+ {#each slot.rooms as room} +
+

{room.room_id}

+

{room.room_name}

+

{room.room_capacity}

+
+ {/each} +
+
+ {/each} +
From 212088704666870325f624808b4b703ffb59bf2c Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 16:14:49 -0800 Subject: [PATCH 044/115] =?UTF-8?q?feat:=20=E2=9C=A8=20csl=20data=20visual?= =?UTF-8?q?izer=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/csl/+page.svelte | 26 +++++++++++++++++++++++ apps/zotmeet/src/routes/demo/+page.svelte | 23 -------------------- 2 files changed, 26 insertions(+), 23 deletions(-) create mode 100644 apps/zotmeet/src/routes/csl/+page.svelte delete mode 100644 apps/zotmeet/src/routes/demo/+page.svelte diff --git a/apps/zotmeet/src/routes/csl/+page.svelte b/apps/zotmeet/src/routes/csl/+page.svelte new file mode 100644 index 00000000..954f8419 --- /dev/null +++ b/apps/zotmeet/src/routes/csl/+page.svelte @@ -0,0 +1,26 @@ + + +
+ {#each $query.data ?? [] as slot} +
+
+

{slot.segment_start_time}

+

Segment ID: {slot.segment_id}

+
+ +
+ {#each slot.rooms as room} +
+

Room ID: {room.room_id}

+

Room Name: {room.room_name}

+

Room Capacity: {room.room_capacity}

+
+ {/each} +
+
+ {/each} +
diff --git a/apps/zotmeet/src/routes/demo/+page.svelte b/apps/zotmeet/src/routes/demo/+page.svelte deleted file mode 100644 index 4055ac65..00000000 --- a/apps/zotmeet/src/routes/demo/+page.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
- {#each $query.data ?? [] as slot} -
-

{slot.segment_id}

-

{slot.segment_start_time}

-
- {#each slot.rooms as room} -
-

{room.room_id}

-

{room.room_name}

-

{room.room_capacity}

-
- {/each} -
-
- {/each} -
From f95ad89df7cd8871de3271d4f4385c92a4c17deb Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 16:18:37 -0800 Subject: [PATCH 045/115] =?UTF-8?q?perf:=20=E2=9A=A1=EF=B8=8F=20prefetch?= =?UTF-8?q?=20csl=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/csl/+page.svelte | 4 ++++ apps/zotmeet/src/routes/csl/+page.ts | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 apps/zotmeet/src/routes/csl/+page.ts diff --git a/apps/zotmeet/src/routes/csl/+page.svelte b/apps/zotmeet/src/routes/csl/+page.svelte index 954f8419..6bc5947c 100644 --- a/apps/zotmeet/src/routes/csl/+page.svelte +++ b/apps/zotmeet/src/routes/csl/+page.svelte @@ -5,6 +5,10 @@
+ {#if $query.data == null} +

Loading data...

+ {/if} + {#each $query.data ?? [] as slot}
diff --git a/apps/zotmeet/src/routes/csl/+page.ts b/apps/zotmeet/src/routes/csl/+page.ts new file mode 100644 index 00000000..48274930 --- /dev/null +++ b/apps/zotmeet/src/routes/csl/+page.ts @@ -0,0 +1,9 @@ +import type { PageLoad } from './$types' + +export const load: PageLoad = async (event) => { + const { trpc } = await event.parent() + + return { + csl: trpc.context.csl.fetch(), + } +} From f98bf61c3a5e55c5e662c169c1a8adc131d66535 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 16:37:03 -0800 Subject: [PATCH 046/115] =?UTF-8?q?feat:=20=E2=9C=A8=20display=20science?= =?UTF-8?q?=20library=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/science/+page.svelte | 29 ++++++++++++++++++++ apps/zotmeet/src/routes/science/+page.ts | 9 ++++++ 2 files changed, 38 insertions(+) create mode 100644 apps/zotmeet/src/routes/science/+page.svelte create mode 100644 apps/zotmeet/src/routes/science/+page.ts diff --git a/apps/zotmeet/src/routes/science/+page.svelte b/apps/zotmeet/src/routes/science/+page.svelte new file mode 100644 index 00000000..26ff98b3 --- /dev/null +++ b/apps/zotmeet/src/routes/science/+page.svelte @@ -0,0 +1,29 @@ + + +
+ {#if $query.data == null} +

Loading...

+ {:else} +
+
+

Is pre-created booking: {$query.data.isPreCreatedBooking}

+

Window end: {$query.data.windowEnd}

+
+
+ {#each $query.data.slots as slot} +
+

Start: {slot.start}

+

End: {slot.end}

+

Item ID: {slot.itemId}

+

Checksum: {slot.checksum}

+

Classname: {slot.className}

+
+ {/each} +
+
+ {/if} +
diff --git a/apps/zotmeet/src/routes/science/+page.ts b/apps/zotmeet/src/routes/science/+page.ts new file mode 100644 index 00000000..e729c605 --- /dev/null +++ b/apps/zotmeet/src/routes/science/+page.ts @@ -0,0 +1,9 @@ +import type { PageLoad } from './$types' + +export const load: PageLoad = async (event) => { + const { trpc } = await event.parent() + + return { + science: trpc.context.scienceLibrary.fetch(), + } +} From c24587642a1766750873d124082b40b0c0a41bce Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 17:04:53 -0800 Subject: [PATCH 047/115] =?UTF-8?q?feat:=20=E2=9C=A8=20mvp=20for=20display?= =?UTF-8?q?in=20csl=20availability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lib/server/trpc/routers/index.ts | 27 ++++++++++++++ apps/zotmeet/src/routes/calendar/+page.svelte | 37 ++++++++++++++++++- apps/zotmeet/src/routes/csl/+page.ts | 1 + 3 files changed, 64 insertions(+), 1 deletion(-) diff --git a/apps/zotmeet/src/lib/server/trpc/routers/index.ts b/apps/zotmeet/src/lib/server/trpc/routers/index.ts index f446ec18..520fa878 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/index.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/index.ts @@ -1,4 +1,5 @@ import { type } from 'arktype' +import dayjs from 'dayjs' import { router, procedure } from '../init' @@ -13,6 +14,32 @@ export const appRouter = router({ csl: procedure.query(() => cslData), scienceLibrary: procedure.query(() => scienceLibraryData), + + cslById: procedure.input(type('number | undefined').assert).query(({ input }) => { + if (input == null) { + return [] + } + + const rooms = cslData + .flatMap((slot) => + slot.rooms.map((room) => ({ + ...room, + start: dayjs(slot.segment_start_time, 'H:mm A'), + })), + ) + .filter((room) => room.room_id === input) + .map((room) => ({ + ...room, + start: room.start.toDate(), + end: room.start.add(30, 'minutes').toDate(), + })) + + return rooms + }), + + cslRoomIds: procedure.query(() => + Array.from(new Set(cslData.flatMap((slot) => slot.rooms).map((room) => room.room_id))), + ), }) // export type definition of API diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/calendar/+page.svelte index 5a5e59e9..633f073a 100644 --- a/apps/zotmeet/src/routes/calendar/+page.svelte +++ b/apps/zotmeet/src/routes/calendar/+page.svelte @@ -5,14 +5,33 @@ import listPlugin from '@fullcalendar/list' import timeGridPlugin from '@fullcalendar/timegrid' import { onMount } from 'svelte' + import { writable } from 'svelte/store' import { handleSelect, handleSelection } from '$lib/calendar' + import { trpc } from '$lib/client/trpc' import type { Reservation } from '$lib/reservation' + let shouldLoadData = false + + export let currentRoomId = writable() + + const byIdquery = trpc.cslById.createQuery(currentRoomId) + + const roomIdQuery = trpc.cslRoomIds.createQuery() + let element: HTMLElement let calendar: Calendar + $: { + if (shouldLoadData && $byIdquery.data != null && $byIdquery.data.length > 0) { + $byIdquery.data?.forEach((room) => { + calendar.addEvent(room) + }) + shouldLoadData = false + } + } + export let startHour = 9 export let endHour = 21 @@ -78,6 +97,11 @@ endHour = +e.currentTarget.value calendar.setOption('slotMaxTime', `${endHour}:00:00`) } + + function handleSelectRoom(e: SvelteInputEvent): void { + currentRoomId.set(+e.currentTarget.value) + shouldLoadData = true + }
@@ -114,7 +138,18 @@ {#if currentEvent}

You're hovering over:

-
{JSON.stringify(currentEvent, null, 2)}
+
{JSON.stringify(currentEvent, undefined, 2)}
{/if} + +
+ +
+
+
{JSON.stringify($byIdquery.data, undefined, 2)}
+
diff --git a/apps/zotmeet/src/routes/csl/+page.ts b/apps/zotmeet/src/routes/csl/+page.ts index 48274930..33149eeb 100644 --- a/apps/zotmeet/src/routes/csl/+page.ts +++ b/apps/zotmeet/src/routes/csl/+page.ts @@ -4,6 +4,7 @@ export const load: PageLoad = async (event) => { const { trpc } = await event.parent() return { + cslRoomIds: trpc.context.cslRoomIds.fetch(), csl: trpc.context.csl.fetch(), } } From fef1c950413c6d558001cb4fbff299822f45f9c4 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 17:19:00 -0800 Subject: [PATCH 048/115] =?UTF-8?q?feat:=20=E2=9C=A8=20auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 4 + apps/zotmeet/src/hooks.server.ts | 22 +++++ apps/zotmeet/src/lib/calendar.ts | 5 ++ apps/zotmeet/src/lib/server/db.ts | 3 + apps/zotmeet/src/routes/calendar/+page.svelte | 30 +++++-- apps/zotmeet/svelte.config.js | 3 + pnpm-lock.yaml | 89 ++++++++++++++++++- 7 files changed, 148 insertions(+), 8 deletions(-) create mode 100644 apps/zotmeet/src/hooks.server.ts create mode 100644 apps/zotmeet/src/lib/server/db.ts diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index 0ecdf843..e4853857 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -15,6 +15,8 @@ "test": "vitest" }, "dependencies": { + "@aponia.js/adapter-prisma": "^0.1.0", + "@auth/core": "^0.18.3", "@fullcalendar/core": "^6.1.9", "@fullcalendar/daygrid": "^6.1.9", "@fullcalendar/interaction": "^6.1.9", @@ -28,6 +30,8 @@ "superjson": "^2.2.1" }, "devDependencies": { + "@aponia.js/core": "^0.1.0", + "@aponia.js/sveltekit": "^0.1.0", "@bevm0/trpc-svelte-query": "^0.10.0", "@bevm0/trpc-sveltekit": "^0.9.22", "@skeletonlabs/skeleton": "^2.5.1", diff --git a/apps/zotmeet/src/hooks.server.ts b/apps/zotmeet/src/hooks.server.ts new file mode 100644 index 00000000..a769e961 --- /dev/null +++ b/apps/zotmeet/src/hooks.server.ts @@ -0,0 +1,22 @@ +import { adapt } from '@aponia.js/adapter-prisma' +import { Auth } from '@aponia.js/core' +import { Session } from '@aponia.js/core/session' +import { createAuthHelpers } from '@aponia.js/sveltekit' +import GitHub from '@auth/core/providers/github' +import Google from '@auth/core/providers/google' +import { sequence } from '@sveltejs/kit/hooks' + +import { prisma } from '$lib/server/db' + +const session = new Session() + +const auth = new Auth({ + session, + providers: [Google({}), GitHub({})], +}) + +adapt(auth, prisma) + +const authHandle = createAuthHelpers(auth) + +export const handle = sequence(authHandle) diff --git a/apps/zotmeet/src/lib/calendar.ts b/apps/zotmeet/src/lib/calendar.ts index ab83bcaa..4cd0f918 100644 --- a/apps/zotmeet/src/lib/calendar.ts +++ b/apps/zotmeet/src/lib/calendar.ts @@ -53,6 +53,7 @@ export function handleSelect( const end = startEndTime.end.day(day).toDate() calendar.addEvent({ + id: 'FINALIZED', start, end, reservation, @@ -76,6 +77,10 @@ export function handleSelection( return } + if (event.id !== 'FINALIZED' && event.id !== 'PENDING') { + return + } + /** * Convert the selection into Dayjs recurring events. */ diff --git a/apps/zotmeet/src/lib/server/db.ts b/apps/zotmeet/src/lib/server/db.ts new file mode 100644 index 00000000..6260dd0f --- /dev/null +++ b/apps/zotmeet/src/lib/server/db.ts @@ -0,0 +1,3 @@ +import { PrismaClient } from '@prisma/client' + +export const prisma = new PrismaClient() diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/calendar/+page.svelte index 633f073a..c82e4cdb 100644 --- a/apps/zotmeet/src/routes/calendar/+page.svelte +++ b/apps/zotmeet/src/routes/calendar/+page.svelte @@ -25,9 +25,21 @@ $: { if (shouldLoadData && $byIdquery.data != null && $byIdquery.data.length > 0) { + calendar + .getEvents() + .filter((event) => event.id === 'CSL') + .forEach((event) => { + event.remove() + }) + $byIdquery.data?.forEach((room) => { - calendar.addEvent(room) + calendar.addEvent({ + id: 'CSL', + display: 'background', + ...room, + }) }) + shouldLoadData = false } } @@ -56,6 +68,9 @@ }, selectAllow: (arg) => handleSelection(arg, calendar, reservation), eventClick: (arg) => { + if (!arg.event.startEditable || !arg.event.durationEditable) { + return + } arg.event.remove() currentEvent = undefined }, @@ -143,11 +158,14 @@ {/if}
- +
{JSON.stringify($byIdquery.data, undefined, 2)}
diff --git a/apps/zotmeet/svelte.config.js b/apps/zotmeet/svelte.config.js index 40cc619c..055157e2 100644 --- a/apps/zotmeet/svelte.config.js +++ b/apps/zotmeet/svelte.config.js @@ -8,6 +8,9 @@ const config = { preprocess: [vitePreprocess({})], kit: { adapter: adapter(), + env: { + dir: '../..', + }, }, } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7de71b19..da80fae6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,6 +107,12 @@ importers: apps/zotmeet: dependencies: + '@aponia.js/adapter-prisma': + specifier: ^0.1.0 + version: 0.1.0 + '@auth/core': + specifier: ^0.18.3 + version: 0.18.3 '@fullcalendar/core': specifier: ^6.1.9 version: 6.1.9 @@ -141,6 +147,12 @@ importers: specifier: ^2.2.1 version: 2.2.1 devDependencies: + '@aponia.js/core': + specifier: ^0.1.0 + version: 0.1.0 + '@aponia.js/sveltekit': + specifier: ^0.1.0 + version: 0.1.0 '@bevm0/trpc-svelte-query': specifier: ^0.10.0 version: 0.10.0(@tanstack/svelte-query@5.8.7)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(svelte@4.2.7) @@ -230,6 +242,49 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 + /@aponia.js/adapter-prisma@0.1.0: + resolution: {integrity: sha512-l8XJ2tYUR5V/Vpyl23p/arVnI0Mz9uIB4m/dQGbaQTrk9NVgS8jDuu+u0F0shmzL+zFpTVobI9P79oSOZlfDsg==} + engines: {node: '>=18', pnpm: ^8.0.0} + dependencies: + '@aponia.js/core': 0.1.0 + dev: false + + /@aponia.js/core@0.1.0: + resolution: {integrity: sha512-T4hiIj6T0Ey2aLnkXLfR14qXJzQzlHc3ooO0Dv0zPn89WESB5eeRCnhVDxDwwZbE9pccBGV7DkzInC924GIDNg==} + engines: {node: '>=18', pnpm: ^8.0.0} + dependencies: + '@panva/hkdf': 1.1.1 + cookie: 0.5.0 + jose: 4.15.4 + oauth4webapi: 2.4.0 + universal-cookie: 6.1.1 + + /@aponia.js/sveltekit@0.1.0: + resolution: {integrity: sha512-VJYm60pnLfCgr8iifSKKkZNanBzLM1YUNZvs6zBSKQvE+I7DlETTQ+LIkqsiEHQBebqmJiKa8mGE0PJgBXCp8A==} + engines: {node: '>=18', pnpm: ^8.0.0} + dependencies: + '@aponia.js/core': 0.1.0 + '@auth/core': 0.18.3 + cookie: 0.5.0 + transitivePeerDependencies: + - nodemailer + dev: true + + /@auth/core@0.18.3: + resolution: {integrity: sha512-YXQWxi3pKxngt+2vo3dq8+wDANlUH8nhQgX6EVdd3Enfe3vweBtHqzaWrtWzQnVb8wdGxdhxaoOlYroEBE+/yw==} + peerDependencies: + nodemailer: ^6.8.0 + peerDependenciesMeta: + nodemailer: + optional: true + dependencies: + '@panva/hkdf': 1.1.1 + cookie: 0.5.0 + jose: 5.1.1 + oauth4webapi: 2.4.0 + preact: 10.11.3 + preact-render-to-string: 5.2.3(preact@10.11.3) + /@aws-cdk/asset-awscli-v1@2.2.201: resolution: {integrity: sha512-INZqcwDinNaIdb5CtW3ez5s943nX5stGBQS6VOP2JDlOFP81hM3fds/9NDknipqfUkZM43dx+HgVvkXYXXARCQ==} dev: true @@ -1599,6 +1654,9 @@ packages: fastq: 1.15.0 dev: true + /@panva/hkdf@1.1.1: + resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} + /@pkgr/utils@2.4.2: resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2223,7 +2281,6 @@ packages: /@types/cookie@0.5.4: resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} - dev: true /@types/eslint@8.44.7: resolution: {integrity: sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==} @@ -3125,7 +3182,6 @@ packages: /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - dev: true /copy-anything@3.0.5: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} @@ -4835,6 +4891,12 @@ packages: hasBin: true dev: true + /jose@4.15.4: + resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} + + /jose@5.1.1: + resolution: {integrity: sha512-bfB+lNxowY49LfrBO0ITUn93JbUhxUN8I11K6oI5hJu/G6PO6fEUddVLjqdD0cQ9SXIHWXuWh7eJYwZF7Z0N/g==} + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true @@ -5343,6 +5405,9 @@ packages: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true + /oauth4webapi@2.4.0: + resolution: {integrity: sha512-ZWl8ov8HeGVyc9Icl1cag76HvIcDAp23eIIT+UVGir+dEu8BMgMlvZeZwqLVd0P8DqaumH4N+QLQXN69G1QjSA==} + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5720,6 +5785,17 @@ packages: source-map-js: 1.0.2 dev: true + /preact-render-to-string@5.2.3(preact@10.11.3): + resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} + peerDependencies: + preact: '>=10' + dependencies: + preact: 10.11.3 + pretty-format: 3.8.0 + + /preact@10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + /preact@10.12.1: resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==} dev: false @@ -5777,6 +5853,9 @@ packages: react-is: 18.2.0 dev: true + /pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + /prisma@5.6.0: resolution: {integrity: sha512-EEaccku4ZGshdr2cthYHhf7iyvCcXqwJDvnoQRAJg5ge2Tzpv0e2BaMCp+CbbDUwoVTzwgOap9Zp+d4jFa2O9A==} engines: {node: '>=16.13'} @@ -6788,6 +6867,12 @@ packages: '@fastify/busboy': 2.1.0 dev: true + /universal-cookie@6.1.1: + resolution: {integrity: sha512-33S9x3CpdUnnjwTNs2Fgc41WGve2tdLtvaK2kPSbZRc5pGpz2vQFbRWMxlATsxNNe/Cy8SzmnmbuBM85jpZPtA==} + dependencies: + '@types/cookie': 0.5.4 + cookie: 0.5.0 + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} From 16f1d671fb29584c826b60186662ea3a8a83777e Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 17:23:03 -0800 Subject: [PATCH 049/115] =?UTF-8?q?style:=20=F0=9F=8E=A8=20cleaned=20up=20?= =?UTF-8?q?hooks=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 6 +++--- apps/zotmeet/src/hooks.server.ts | 15 ++++++++++--- pnpm-lock.yaml | 36 ++++++++++++++++++-------------- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index e4853857..a701f39b 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -15,7 +15,6 @@ "test": "vitest" }, "dependencies": { - "@aponia.js/adapter-prisma": "^0.1.0", "@auth/core": "^0.18.3", "@fullcalendar/core": "^6.1.9", "@fullcalendar/daygrid": "^6.1.9", @@ -30,8 +29,9 @@ "superjson": "^2.2.1" }, "devDependencies": { - "@aponia.js/core": "^0.1.0", - "@aponia.js/sveltekit": "^0.1.0", + "@aponia.js/adapter-prisma": "^0.1.1", + "@aponia.js/core": "^0.1.1", + "@aponia.js/sveltekit": "^0.1.1", "@bevm0/trpc-svelte-query": "^0.10.0", "@bevm0/trpc-sveltekit": "^0.9.22", "@skeletonlabs/skeleton": "^2.5.1", diff --git a/apps/zotmeet/src/hooks.server.ts b/apps/zotmeet/src/hooks.server.ts index a769e961..cf867d9f 100644 --- a/apps/zotmeet/src/hooks.server.ts +++ b/apps/zotmeet/src/hooks.server.ts @@ -1,18 +1,27 @@ import { adapt } from '@aponia.js/adapter-prisma' -import { Auth } from '@aponia.js/core' -import { Session } from '@aponia.js/core/session' +import { Auth, Session } from '@aponia.js/core' import { createAuthHelpers } from '@aponia.js/sveltekit' import GitHub from '@auth/core/providers/github' import Google from '@auth/core/providers/google' import { sequence } from '@sveltejs/kit/hooks' +import { GITHUB_ID, GITHUB_SECRET, GOOGLE_ID, GOOGLE_SECRET } from '$env/static/private' import { prisma } from '$lib/server/db' const session = new Session() const auth = new Auth({ session, - providers: [Google({}), GitHub({})], + providers: [ + Google({ + clientId: GOOGLE_ID, + clientSecret: GOOGLE_SECRET, + }), + GitHub({ + clientId: GITHUB_ID, + clientSecret: GITHUB_SECRET, + }), + ], }) adapt(auth, prisma) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da80fae6..2ef10e63 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,9 +107,6 @@ importers: apps/zotmeet: dependencies: - '@aponia.js/adapter-prisma': - specifier: ^0.1.0 - version: 0.1.0 '@auth/core': specifier: ^0.18.3 version: 0.18.3 @@ -147,12 +144,15 @@ importers: specifier: ^2.2.1 version: 2.2.1 devDependencies: + '@aponia.js/adapter-prisma': + specifier: ^0.1.1 + version: 0.1.1 '@aponia.js/core': - specifier: ^0.1.0 - version: 0.1.0 + specifier: ^0.1.1 + version: 0.1.1 '@aponia.js/sveltekit': - specifier: ^0.1.0 - version: 0.1.0 + specifier: ^0.1.1 + version: 0.1.1 '@bevm0/trpc-svelte-query': specifier: ^0.10.0 version: 0.10.0(@tanstack/svelte-query@5.8.7)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(svelte@4.2.7) @@ -242,15 +242,15 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 - /@aponia.js/adapter-prisma@0.1.0: - resolution: {integrity: sha512-l8XJ2tYUR5V/Vpyl23p/arVnI0Mz9uIB4m/dQGbaQTrk9NVgS8jDuu+u0F0shmzL+zFpTVobI9P79oSOZlfDsg==} + /@aponia.js/adapter-prisma@0.1.1: + resolution: {integrity: sha512-bMZStTPLMvuHS/Im0Rx90dsnIRLhW/2nnqOLh4JPTqqp97kjtgUR7IpRcboArd8Q0c/yiPt3LMobB4irJK9h3g==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: - '@aponia.js/core': 0.1.0 - dev: false + '@aponia.js/core': 0.1.1 + dev: true - /@aponia.js/core@0.1.0: - resolution: {integrity: sha512-T4hiIj6T0Ey2aLnkXLfR14qXJzQzlHc3ooO0Dv0zPn89WESB5eeRCnhVDxDwwZbE9pccBGV7DkzInC924GIDNg==} + /@aponia.js/core@0.1.1: + resolution: {integrity: sha512-OVBV9hbx03645MAPqDX3vKaCgsfQ+u60diYXYEJRpDLE/xqZ3nzznGTTDJUrbMlgH+wuOHBppRrx5zqDTWTCIw==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: '@panva/hkdf': 1.1.1 @@ -258,12 +258,13 @@ packages: jose: 4.15.4 oauth4webapi: 2.4.0 universal-cookie: 6.1.1 + dev: true - /@aponia.js/sveltekit@0.1.0: - resolution: {integrity: sha512-VJYm60pnLfCgr8iifSKKkZNanBzLM1YUNZvs6zBSKQvE+I7DlETTQ+LIkqsiEHQBebqmJiKa8mGE0PJgBXCp8A==} + /@aponia.js/sveltekit@0.1.1: + resolution: {integrity: sha512-wqRluUpXEDWrNLMSbXrXVuhmXJTxGdNbLL/vNTBQSp6p22NSsLEq97Zi3khKyOaMt21y5VM/ydtqFpo+xh4Ipg==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: - '@aponia.js/core': 0.1.0 + '@aponia.js/core': 0.1.1 '@auth/core': 0.18.3 cookie: 0.5.0 transitivePeerDependencies: @@ -2281,6 +2282,7 @@ packages: /@types/cookie@0.5.4: resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} + dev: true /@types/eslint@8.44.7: resolution: {integrity: sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==} @@ -4893,6 +4895,7 @@ packages: /jose@4.15.4: resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} + dev: true /jose@5.1.1: resolution: {integrity: sha512-bfB+lNxowY49LfrBO0ITUn93JbUhxUN8I11K6oI5hJu/G6PO6fEUddVLjqdD0cQ9SXIHWXuWh7eJYwZF7Z0N/g==} @@ -6872,6 +6875,7 @@ packages: dependencies: '@types/cookie': 0.5.4 cookie: 0.5.0 + dev: true /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} From 1c0547a7fd1e5f4e64a0e4f8d66fd77a954900b6 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 17:32:44 -0800 Subject: [PATCH 050/115] =?UTF-8?q?style:=20=F0=9F=8E=A8=20clean=20up=20ap?= =?UTF-8?q?p.html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/app.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/zotmeet/src/app.html b/apps/zotmeet/src/app.html index 19da6311..031e1bf1 100644 --- a/apps/zotmeet/src/app.html +++ b/apps/zotmeet/src/app.html @@ -7,6 +7,6 @@ %sveltekit.head% -
%sveltekit.body%
+
%sveltekit.body%
From fdc96fda81f69c170e75c8aaf9d7cc381b407460 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 17:35:43 -0800 Subject: [PATCH 051/115] =?UTF-8?q?feat:=20=E2=9C=A8=20app=20skeleton?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/+layout.svelte | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/zotmeet/src/routes/+layout.svelte b/apps/zotmeet/src/routes/+layout.svelte index 8a27ea6d..ad62575a 100644 --- a/apps/zotmeet/src/routes/+layout.svelte +++ b/apps/zotmeet/src/routes/+layout.svelte @@ -1,4 +1,5 @@ - + + + + (icon) + (title) + (actions) + + + + From 7b8c19d46ee748eff2009fe4a4428efbc2e0d18e Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 17:36:09 -0800 Subject: [PATCH 052/115] =?UTF-8?q?feat:=20=E2=9C=A8=20icons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 2 + pnpm-lock.yaml | 102 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index a701f39b..b70dd655 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -34,6 +34,7 @@ "@aponia.js/sveltekit": "^0.1.1", "@bevm0/trpc-svelte-query": "^0.10.0", "@bevm0/trpc-sveltekit": "^0.9.22", + "@iconify/json": "^2.2.147", "@skeletonlabs/skeleton": "^2.5.1", "@skeletonlabs/tw-plugin": "^0.2.4", "@svelte.kit/adapter-aws": "^0.2.1", @@ -54,6 +55,7 @@ "svelte-check": "3.6.2", "tailwindcss": "^3.3.2", "typescript": "5.2.2", + "unplugin-icons": "^0.17.4", "vite": "4.5.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ef10e63..50642c74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -159,6 +159,9 @@ importers: '@bevm0/trpc-sveltekit': specifier: ^0.9.22 version: 0.9.22(@sveltejs/kit@1.27.6)(@trpc/server@10.44.1)(svelte@4.2.7) + '@iconify/json': + specifier: ^2.2.147 + version: 2.2.147 '@skeletonlabs/skeleton': specifier: ^2.5.1 version: 2.5.1(svelte@4.2.7) @@ -219,6 +222,9 @@ importers: typescript: specifier: 5.2.2 version: 5.2.2 + unplugin-icons: + specifier: ^0.17.4 + version: 0.17.4 vite: specifier: 4.5.0 version: 4.5.0(@types/node@20.10.0) @@ -242,6 +248,17 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 + /@antfu/install-pkg@0.1.1: + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + dev: true + + /@antfu/utils@0.7.6: + resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==} + dev: true + /@aponia.js/adapter-prisma@0.1.1: resolution: {integrity: sha512-bMZStTPLMvuHS/Im0Rx90dsnIRLhW/2nnqOLh4JPTqqp97kjtgUR7IpRcboArd8Q0c/yiPt3LMobB4irJK9h3g==} engines: {node: '>=18', pnpm: ^8.0.0} @@ -1597,6 +1614,30 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true + /@iconify/json@2.2.147: + resolution: {integrity: sha512-VTW1vVivOq5RVcZu7xqCXWptGH7fo6VPsUxT5QBlbBS042859YZnK1JTXHJu4InMuTwQC/3KLP+InJJ5kawOGg==} + dependencies: + '@iconify/types': 2.0.0 + pathe: 1.1.1 + dev: true + + /@iconify/types@2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + dev: true + + /@iconify/utils@2.1.12: + resolution: {integrity: sha512-7vf3Uk6H7TKX4QMs2gbg5KR1X9J0NJzKSRNWhMZ+PWN92l0t6Q3tj2ZxLDG07rC3ppWBtTtA4FPmkQphuEmdsg==} + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.6 + '@iconify/types': 2.0.0 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: true + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -5012,6 +5053,10 @@ packages: resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} dev: true + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -5070,6 +5115,14 @@ packages: engines: {node: '>=14'} dev: true + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 + dev: true + /locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -6887,6 +6940,46 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /unplugin-icons@0.17.4: + resolution: {integrity: sha512-PHLxjBx3ZV8RUBvfMafFl8uWH88jHeZgOijcRpkwgne7y2Ovx7WI0Ltzzw3fjZQ7dGaDhB8udyKVdm9N2S6BIw==} + peerDependencies: + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + vue-template-compiler: ^2.6.12 + vue-template-es2015-compiler: ^1.9.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + vue-template-compiler: + optional: true + vue-template-es2015-compiler: + optional: true + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.6 + '@iconify/utils': 2.1.12 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.5.0 + unplugin: 1.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /unplugin@1.5.1: + resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==} + dependencies: + acorn: 8.11.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: true + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -7094,6 +7187,15 @@ packages: engines: {node: '>=12'} dev: true + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + dev: true + /whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} From 985c72de73ea63e29afae47cfeaaf517d52a646d Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 17:37:58 -0800 Subject: [PATCH 053/115] =?UTF-8?q?feat:=20=E2=9C=A8=20icons=20in=20vite?= =?UTF-8?q?=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/app.d.ts | 22 ++++++- apps/zotmeet/src/routes/+layout.server.ts | 9 +++ apps/zotmeet/src/routes/+layout.svelte | 23 +++++++- apps/zotmeet/src/routes/+layout.ts | 5 +- apps/zotmeet/src/routes/+page.svelte | 22 ++++++- .../src/routes/auth/login/+page.svelte | 41 +++++++++++++ .../src/routes/auth/signup/+page.svelte | 59 +++++++++++++++++++ apps/zotmeet/vite.config.js | 8 ++- 8 files changed, 181 insertions(+), 8 deletions(-) create mode 100644 apps/zotmeet/src/routes/+layout.server.ts create mode 100644 apps/zotmeet/src/routes/auth/login/+page.svelte create mode 100644 apps/zotmeet/src/routes/auth/signup/+page.svelte diff --git a/apps/zotmeet/src/app.d.ts b/apps/zotmeet/src/app.d.ts index 482ccc80..291bf2d5 100644 --- a/apps/zotmeet/src/app.d.ts +++ b/apps/zotmeet/src/app.d.ts @@ -1,4 +1,24 @@ +import 'unplugin-icons/types/svelte' + +import type { User } from '@auth/core/types' + declare global { + namespace App { + interface Locals { + /** + * Helper function to get the user for the current request. + */ + getUser: () => Promise + } + + interface PageData { + /** + * User parsed from session / cookies. + */ + user?: User + } + } + /** * Utility type for Svelte event handlers. * @@ -20,5 +40,3 @@ declare global { currentTarget: EventTarget & Element } } - -export {} diff --git a/apps/zotmeet/src/routes/+layout.server.ts b/apps/zotmeet/src/routes/+layout.server.ts new file mode 100644 index 00000000..77766dd6 --- /dev/null +++ b/apps/zotmeet/src/routes/+layout.server.ts @@ -0,0 +1,9 @@ +import type { LayoutServerLoad } from './$types' + +export const load: LayoutServerLoad = async (event) => { + const user = await event.locals.getUser() + + console.log({ user }) + + return { user } +} diff --git a/apps/zotmeet/src/routes/+layout.svelte b/apps/zotmeet/src/routes/+layout.svelte index ad62575a..32f509c1 100644 --- a/apps/zotmeet/src/routes/+layout.svelte +++ b/apps/zotmeet/src/routes/+layout.svelte @@ -1,5 +1,12 @@ + + + (icon) - (title) - (actions) +
+

ZotMeet

+
+ +
+ +
+
diff --git a/apps/zotmeet/src/routes/+layout.ts b/apps/zotmeet/src/routes/+layout.ts index ef7e9178..b8bedbce 100644 --- a/apps/zotmeet/src/routes/+layout.ts +++ b/apps/zotmeet/src/routes/+layout.ts @@ -23,5 +23,8 @@ export const load: LayoutLoad = async (event) => { { svelteQueryContext: queryClient }, ) - return { trpc } + return { + trpc, + user: event.data.user, + } } diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index 4cad3924..2800eb32 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -1,11 +1,31 @@
-

{$query.data?.greeting}

+

{$query.data?.greeting} {$page.data.user?.name}

Lorem ipsum dolor sit amet consectetur adipisicing elit.

SvelteKit diff --git a/apps/zotmeet/src/routes/auth/login/+page.svelte b/apps/zotmeet/src/routes/auth/login/+page.svelte new file mode 100644 index 00000000..246b9a95 --- /dev/null +++ b/apps/zotmeet/src/routes/auth/login/+page.svelte @@ -0,0 +1,41 @@ + + +
+
+
+
+

Sign in

+

to continue to ZotMeet

+
+ + + +
+ +
+ + +
+ +
+ No account? + Sign up +
+
+
+
diff --git a/apps/zotmeet/src/routes/auth/signup/+page.svelte b/apps/zotmeet/src/routes/auth/signup/+page.svelte new file mode 100644 index 00000000..0de3a177 --- /dev/null +++ b/apps/zotmeet/src/routes/auth/signup/+page.svelte @@ -0,0 +1,59 @@ + + +
+
+
+
+

Create your account

+

to continue to ZotMeet

+
+ + + +
+ +
+
+ + + +
+ + + + + + +
+ +
+ Have an account? + Log in +
+
+
+
diff --git a/apps/zotmeet/vite.config.js b/apps/zotmeet/vite.config.js index de921dbc..105d7e69 100644 --- a/apps/zotmeet/vite.config.js +++ b/apps/zotmeet/vite.config.js @@ -1,8 +1,14 @@ import { sveltekit } from '@sveltejs/kit/vite' import { defineProject } from 'vitest/config' +import Icons from 'unplugin-icons/vite' export default defineProject({ - plugins: [sveltekit()], + plugins: [ + sveltekit(), + Icons({ + compiler: 'svelte', + }), + ], test: { environment: 'jsdom', }, From 1640e4e843be8ea9f2b26f34073d0d68420e0991 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 20:12:08 -0800 Subject: [PATCH 054/115] =?UTF-8?q?test:=20=F0=9F=9A=A8=20try=20out=20diff?= =?UTF-8?q?erent=20theme=20for=20now?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/app.html | 2 +- apps/zotmeet/tailwind.config.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/zotmeet/src/app.html b/apps/zotmeet/src/app.html index 031e1bf1..cd489776 100644 --- a/apps/zotmeet/src/app.html +++ b/apps/zotmeet/src/app.html @@ -6,7 +6,7 @@ %sveltekit.head% - +
%sveltekit.body%
diff --git a/apps/zotmeet/tailwind.config.js b/apps/zotmeet/tailwind.config.js index 353ad0d9..3de47e5e 100644 --- a/apps/zotmeet/tailwind.config.js +++ b/apps/zotmeet/tailwind.config.js @@ -18,7 +18,10 @@ const config = { ], plugins: [ skeleton({ - themes: { custom: [zotmeetTheme] }, + themes: { + preset: ['modern'], + custom: [zotmeetTheme], + }, }), forms(), ], From ce9a596316bcf20489a4f42c33c96ea2f827db11 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 20:16:02 -0800 Subject: [PATCH 055/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20store?= =?UTF-8?q?=20triggers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/+page.svelte | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index 2800eb32..6c77e5fb 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -1,27 +1,8 @@
From a2a82e00f5f4938d81e8310d12fbc7e8581ed6f7 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 20:20:05 -0800 Subject: [PATCH 056/115] =?UTF-8?q?feat:=20=E2=9C=A8=20cleaned=20up=20home?= =?UTF-8?q?=20page=20and=20layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lib/components/layout/Header.svelte | 15 +++++++++++ .../src/lib/server/trpc/routers/index.ts | 2 +- apps/zotmeet/src/routes/+layout.svelte | 26 +++++-------------- apps/zotmeet/src/routes/+page.svelte | 11 ++------ 4 files changed, 24 insertions(+), 30 deletions(-) create mode 100644 apps/zotmeet/src/lib/components/layout/Header.svelte diff --git a/apps/zotmeet/src/lib/components/layout/Header.svelte b/apps/zotmeet/src/lib/components/layout/Header.svelte new file mode 100644 index 00000000..5efcdc26 --- /dev/null +++ b/apps/zotmeet/src/lib/components/layout/Header.svelte @@ -0,0 +1,15 @@ + + + + (icon) +
+

ZotMeet

+
+ +
+ +
+
+
diff --git a/apps/zotmeet/src/lib/server/trpc/routers/index.ts b/apps/zotmeet/src/lib/server/trpc/routers/index.ts index 520fa878..e0888c64 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/index.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/index.ts @@ -8,7 +8,7 @@ import { data as scienceLibraryData } from '$lib/data/science-library' export const appRouter = router({ hello: procedure.input(type({ text: 'string' }).assert).query(({ input }) => ({ - greeting: `hello ${input.text}`, + greeting: `Hello, ${input.text}~`, })), csl: procedure.query(() => cslData), diff --git a/apps/zotmeet/src/routes/+layout.svelte b/apps/zotmeet/src/routes/+layout.svelte index 32f509c1..76cb624c 100644 --- a/apps/zotmeet/src/routes/+layout.svelte +++ b/apps/zotmeet/src/routes/+layout.svelte @@ -1,17 +1,12 @@ -
-

{$query.data?.greeting} {$page.data.user?.name}

-

Lorem ipsum dolor sit amet consectetur adipisicing elit.

-
- SvelteKit - Tailwind - GitHub -
+
+

{$query.data?.greeting}

From 275788de0a14cd91a061fac68b8904c9944d3133 Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 20:27:51 -0800 Subject: [PATCH 057/115] =?UTF-8?q?feat:=20=E2=9C=A8=20nicer=20home=20page?= =?UTF-8?q?=20with=20card=20as=20"hero"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/+page.svelte | 14 ++++++++++++-- apps/zotmeet/src/routes/auth/login/+page.svelte | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index f0d7d309..71331f37 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -1,9 +1,19 @@ -
-

{$query.data?.greeting}

+
+
+
{$query.data?.greeting}
+
+ + + Get Started + +
+
(footer)
+
diff --git a/apps/zotmeet/src/routes/auth/login/+page.svelte b/apps/zotmeet/src/routes/auth/login/+page.svelte index 246b9a95..8cb6e0a0 100644 --- a/apps/zotmeet/src/routes/auth/login/+page.svelte +++ b/apps/zotmeet/src/routes/auth/login/+page.svelte @@ -27,14 +27,14 @@
No account? - Sign up + Sign up
From c82bbdada9a3a49e92566834027c03034389ff4c Mon Sep 17 00:00:00 2001 From: Aponia Date: Sun, 26 Nov 2023 20:34:58 -0800 Subject: [PATCH 058/115] =?UTF-8?q?feat:=20=E2=9C=A8=20mvp=20header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 6 ++-- apps/zotmeet/src/lib/assets/logo.png | Bin 0 -> 4002 bytes .../src/lib/components/layout/Header.svelte | 14 +++++++-- apps/zotmeet/src/routes/+page.svelte | 3 ++ pnpm-lock.yaml | 28 +++++++++--------- 5 files changed, 31 insertions(+), 20 deletions(-) create mode 100644 apps/zotmeet/src/lib/assets/logo.png diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index b70dd655..086180b9 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -29,9 +29,9 @@ "superjson": "^2.2.1" }, "devDependencies": { - "@aponia.js/adapter-prisma": "^0.1.1", - "@aponia.js/core": "^0.1.1", - "@aponia.js/sveltekit": "^0.1.1", + "@aponia.js/adapter-prisma": "^0.1.2", + "@aponia.js/core": "^0.1.2", + "@aponia.js/sveltekit": "^0.1.2", "@bevm0/trpc-svelte-query": "^0.10.0", "@bevm0/trpc-sveltekit": "^0.9.22", "@iconify/json": "^2.2.147", diff --git a/apps/zotmeet/src/lib/assets/logo.png b/apps/zotmeet/src/lib/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..59624185fb3860a7d363c5ba69bcd8bacb23a9e3 GIT binary patch literal 4002 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 x0EKe!f^K{tvzmY`*{i literal 0 HcmV?d00001 diff --git a/apps/zotmeet/src/lib/components/layout/Header.svelte b/apps/zotmeet/src/lib/components/layout/Header.svelte index 5efcdc26..8dbfe82c 100644 --- a/apps/zotmeet/src/lib/components/layout/Header.svelte +++ b/apps/zotmeet/src/lib/components/layout/Header.svelte @@ -1,11 +1,19 @@ - (icon) -
-

ZotMeet

+ +
+ + ZotMeet Logo + +
+
+
+

ZotMeet

diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index 71331f37..6b445131 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -1,8 +1,11 @@
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50642c74..36c7dd3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -145,14 +145,14 @@ importers: version: 2.2.1 devDependencies: '@aponia.js/adapter-prisma': - specifier: ^0.1.1 - version: 0.1.1 + specifier: ^0.1.2 + version: 0.1.2 '@aponia.js/core': - specifier: ^0.1.1 - version: 0.1.1 + specifier: ^0.1.2 + version: 0.1.2 '@aponia.js/sveltekit': - specifier: ^0.1.1 - version: 0.1.1 + specifier: ^0.1.2 + version: 0.1.2 '@bevm0/trpc-svelte-query': specifier: ^0.10.0 version: 0.10.0(@tanstack/svelte-query@5.8.7)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(svelte@4.2.7) @@ -259,15 +259,15 @@ packages: resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==} dev: true - /@aponia.js/adapter-prisma@0.1.1: - resolution: {integrity: sha512-bMZStTPLMvuHS/Im0Rx90dsnIRLhW/2nnqOLh4JPTqqp97kjtgUR7IpRcboArd8Q0c/yiPt3LMobB4irJK9h3g==} + /@aponia.js/adapter-prisma@0.1.2: + resolution: {integrity: sha512-CPxMh8l+PGkJv6SG9Jx81/FuUi27d5ywnXwYxu+j7ilY0CHRECToMIM6RxLFZMGPEfR8ys9rLqclkz98fGyZ8Q==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: - '@aponia.js/core': 0.1.1 + '@aponia.js/core': 0.1.2 dev: true - /@aponia.js/core@0.1.1: - resolution: {integrity: sha512-OVBV9hbx03645MAPqDX3vKaCgsfQ+u60diYXYEJRpDLE/xqZ3nzznGTTDJUrbMlgH+wuOHBppRrx5zqDTWTCIw==} + /@aponia.js/core@0.1.2: + resolution: {integrity: sha512-ZjuENg+OAskbKEmEU5PlXa9Wol2XZajYsWw+uu26plmO16cmxDm5KEtzJ2Dsce4D3IFy+BkJMobXh16CrDhYRQ==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: '@panva/hkdf': 1.1.1 @@ -277,11 +277,11 @@ packages: universal-cookie: 6.1.1 dev: true - /@aponia.js/sveltekit@0.1.1: - resolution: {integrity: sha512-wqRluUpXEDWrNLMSbXrXVuhmXJTxGdNbLL/vNTBQSp6p22NSsLEq97Zi3khKyOaMt21y5VM/ydtqFpo+xh4Ipg==} + /@aponia.js/sveltekit@0.1.2: + resolution: {integrity: sha512-Uqa1/YzodPCLW1DGcAhd0rlNfjPvkOSHbpp7Jfsh56bv9toVEY4ibjaQHUc3zMzCSulAN6kCqu4ZZ56wUHV/Kg==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: - '@aponia.js/core': 0.1.1 + '@aponia.js/core': 0.1.2 '@auth/core': 0.18.3 cookie: 0.5.0 transitivePeerDependencies: From 677086e60697c12cc9f4cda62b6510260cb43ead Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 06:31:01 -0800 Subject: [PATCH 059/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20ignore=20db?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/.gitignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 apps/zotmeet/.gitignore diff --git a/apps/zotmeet/.gitignore b/apps/zotmeet/.gitignore new file mode 100644 index 00000000..ca7f5374 --- /dev/null +++ b/apps/zotmeet/.gitignore @@ -0,0 +1,6 @@ +##################################################################################### +# Development Environment +##################################################################################### + +## Local SQLite database. +prisma/dev.db From 9111ede84b76adf1c3a82d4a2591c6a57a230c0c Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 06:40:05 -0800 Subject: [PATCH 060/115] =?UTF-8?q?feat:=20=E2=9C=A8=20udpated=20auth=20ve?= =?UTF-8?q?rsion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 6 +++--- pnpm-lock.yaml | 31 +++++++++++++++++-------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index 086180b9..84ee00e5 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -29,9 +29,9 @@ "superjson": "^2.2.1" }, "devDependencies": { - "@aponia.js/adapter-prisma": "^0.1.2", - "@aponia.js/core": "^0.1.2", - "@aponia.js/sveltekit": "^0.1.2", + "@aponia.js/adapter-prisma": "^0.2.0", + "@aponia.js/core": "^0.2.0", + "@aponia.js/sveltekit": "^0.2.0", "@bevm0/trpc-svelte-query": "^0.10.0", "@bevm0/trpc-sveltekit": "^0.9.22", "@iconify/json": "^2.2.147", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36c7dd3c..b0334c74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -145,14 +145,14 @@ importers: version: 2.2.1 devDependencies: '@aponia.js/adapter-prisma': - specifier: ^0.1.2 - version: 0.1.2 + specifier: ^0.2.0 + version: 0.2.0 '@aponia.js/core': - specifier: ^0.1.2 - version: 0.1.2 + specifier: ^0.2.0 + version: 0.2.0 '@aponia.js/sveltekit': - specifier: ^0.1.2 - version: 0.1.2 + specifier: ^0.2.0 + version: 0.2.0 '@bevm0/trpc-svelte-query': specifier: ^0.10.0 version: 0.10.0(@tanstack/svelte-query@5.8.7)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(svelte@4.2.7) @@ -259,15 +259,18 @@ packages: resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==} dev: true - /@aponia.js/adapter-prisma@0.1.2: - resolution: {integrity: sha512-CPxMh8l+PGkJv6SG9Jx81/FuUi27d5ywnXwYxu+j7ilY0CHRECToMIM6RxLFZMGPEfR8ys9rLqclkz98fGyZ8Q==} + /@aponia.js/adapter-prisma@0.2.0: + resolution: {integrity: sha512-Yxkbyhct105mmfS1Yrl2BgEDqNoMl5wc1K5n+zPnuzmhXQo38xeiypnICWFv4bRp9MPRKG8c1pe0hiivsEbowQ==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: - '@aponia.js/core': 0.1.2 + '@aponia.js/core': 0.2.0 + '@auth/core': 0.18.3 + transitivePeerDependencies: + - nodemailer dev: true - /@aponia.js/core@0.1.2: - resolution: {integrity: sha512-ZjuENg+OAskbKEmEU5PlXa9Wol2XZajYsWw+uu26plmO16cmxDm5KEtzJ2Dsce4D3IFy+BkJMobXh16CrDhYRQ==} + /@aponia.js/core@0.2.0: + resolution: {integrity: sha512-I/0qVA22iGwdAGxI5Ky1nA8oDHl3ynunovRzeMkhmp2DsQ+t6/wcSUnWs/LuQm4GK5tjF2z/6aUmuMTq+bjD+w==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: '@panva/hkdf': 1.1.1 @@ -277,11 +280,11 @@ packages: universal-cookie: 6.1.1 dev: true - /@aponia.js/sveltekit@0.1.2: - resolution: {integrity: sha512-Uqa1/YzodPCLW1DGcAhd0rlNfjPvkOSHbpp7Jfsh56bv9toVEY4ibjaQHUc3zMzCSulAN6kCqu4ZZ56wUHV/Kg==} + /@aponia.js/sveltekit@0.2.0: + resolution: {integrity: sha512-2hbN35UFtVhbtD/72ddfjGwhLRoQSjXfI0UI6XtNC5OV3nGqH0qLQbKJPKH9/kyuld+S4nLGlpPjbqzkOLiHSw==} engines: {node: '>=18', pnpm: ^8.0.0} dependencies: - '@aponia.js/core': 0.1.2 + '@aponia.js/core': 0.2.0 '@auth/core': 0.18.3 cookie: 0.5.0 transitivePeerDependencies: From be727f40aa3b035922003c0af7d3048f573387e3 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 06:44:04 -0800 Subject: [PATCH 061/115] =?UTF-8?q?feat:=20=E2=9C=A8=20working=20auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/app.d.ts | 8 ++++---- apps/zotmeet/src/hooks.server.ts | 16 +++++----------- apps/zotmeet/src/routes/+layout.server.ts | 6 ++---- apps/zotmeet/src/routes/+layout.ts | 2 +- apps/zotmeet/src/routes/+page.svelte | 2 +- 5 files changed, 13 insertions(+), 21 deletions(-) diff --git a/apps/zotmeet/src/app.d.ts b/apps/zotmeet/src/app.d.ts index 291bf2d5..6057aece 100644 --- a/apps/zotmeet/src/app.d.ts +++ b/apps/zotmeet/src/app.d.ts @@ -1,6 +1,6 @@ import 'unplugin-icons/types/svelte' -import type { User } from '@auth/core/types' +import type { Session } from '@auth/core/types' declare global { namespace App { @@ -8,14 +8,14 @@ declare global { /** * Helper function to get the user for the current request. */ - getUser: () => Promise + getSession: () => Promise } interface PageData { /** - * User parsed from session / cookies. + * Session parsed from cookies. */ - user?: User + session?: Session } } diff --git a/apps/zotmeet/src/hooks.server.ts b/apps/zotmeet/src/hooks.server.ts index cf867d9f..69de2673 100644 --- a/apps/zotmeet/src/hooks.server.ts +++ b/apps/zotmeet/src/hooks.server.ts @@ -1,6 +1,5 @@ -import { adapt } from '@aponia.js/adapter-prisma' -import { Auth, Session } from '@aponia.js/core' -import { createAuthHelpers } from '@aponia.js/sveltekit' +import adapterPrisma from '@aponia.js/adapter-prisma' +import { SvelteKitAuth } from '@aponia.js/sveltekit' import GitHub from '@auth/core/providers/github' import Google from '@auth/core/providers/google' import { sequence } from '@sveltejs/kit/hooks' @@ -8,10 +7,9 @@ import { sequence } from '@sveltejs/kit/hooks' import { GITHUB_ID, GITHUB_SECRET, GOOGLE_ID, GOOGLE_SECRET } from '$env/static/private' import { prisma } from '$lib/server/db' -const session = new Session() - -const auth = new Auth({ - session, +const authHandle = SvelteKitAuth({ + adapter: adapterPrisma(prisma), + session: {}, providers: [ Google({ clientId: GOOGLE_ID, @@ -24,8 +22,4 @@ const auth = new Auth({ ], }) -adapt(auth, prisma) - -const authHandle = createAuthHelpers(auth) - export const handle = sequence(authHandle) diff --git a/apps/zotmeet/src/routes/+layout.server.ts b/apps/zotmeet/src/routes/+layout.server.ts index 77766dd6..7bc315e8 100644 --- a/apps/zotmeet/src/routes/+layout.server.ts +++ b/apps/zotmeet/src/routes/+layout.server.ts @@ -1,9 +1,7 @@ import type { LayoutServerLoad } from './$types' export const load: LayoutServerLoad = async (event) => { - const user = await event.locals.getUser() + const session = await event.locals.getSession() - console.log({ user }) - - return { user } + return { session } } diff --git a/apps/zotmeet/src/routes/+layout.ts b/apps/zotmeet/src/routes/+layout.ts index b8bedbce..5da89857 100644 --- a/apps/zotmeet/src/routes/+layout.ts +++ b/apps/zotmeet/src/routes/+layout.ts @@ -25,6 +25,6 @@ export const load: LayoutLoad = async (event) => { return { trpc, - user: event.data.user, + session: event.data.session, } } diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index 6b445131..54a1f67e 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -5,7 +5,7 @@ const query = trpc.hello.createQuery({ text: 'Elysia' }) - $: console.log($page.data.user) + $: console.log($page.data.session)
From cf49ab7ebf130bf68e972d8498fe7d1262325b19 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 06:51:32 -0800 Subject: [PATCH 062/115] =?UTF-8?q?style:=20=F0=9F=8E=A8=20landing=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/+page.svelte | 30 ++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index 54a1f67e..6676420d 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -8,15 +8,37 @@ $: console.log($page.data.session) -
+
-
{$query.data?.greeting}
+
+ Coordinating meetings and so much more! +
+
- Get Started + Login with Oauth
-
(footer)
+ +
+
+

Create a Reservation

+

Try creating a reservation without logging in.

+
+ +
+
+ +
+ +
+ +
+
+
From d53506feda76c353438e21897baee19dec56f63d Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 06:53:23 -0800 Subject: [PATCH 063/115] =?UTF-8?q?feat:=20=E2=9C=A8=20proof=20of=20concep?= =?UTF-8?q?t=20calendar=20id=20route?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/calendar/[id]/+page.svelte | 11 +++++++++++ apps/zotmeet/src/routes/calendar/[id]/+page.ts | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 apps/zotmeet/src/routes/calendar/[id]/+page.svelte create mode 100644 apps/zotmeet/src/routes/calendar/[id]/+page.ts diff --git a/apps/zotmeet/src/routes/calendar/[id]/+page.svelte b/apps/zotmeet/src/routes/calendar/[id]/+page.svelte new file mode 100644 index 00000000..21dfc3e3 --- /dev/null +++ b/apps/zotmeet/src/routes/calendar/[id]/+page.svelte @@ -0,0 +1,11 @@ + + +
+

+ Reservation ID: {data.id} +

+
diff --git a/apps/zotmeet/src/routes/calendar/[id]/+page.ts b/apps/zotmeet/src/routes/calendar/[id]/+page.ts new file mode 100644 index 00000000..995c315a --- /dev/null +++ b/apps/zotmeet/src/routes/calendar/[id]/+page.ts @@ -0,0 +1,5 @@ +import type { PageLoad } from './$types' + +export const load: PageLoad = async (event) => ({ + id: event.params.id, +}) From 681cd88e73c605dffd448fea032ee4335f50aa40 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 06:54:06 -0800 Subject: [PATCH 064/115] =?UTF-8?q?refactor:=20=E2=99=BB=EF=B8=8F=20move?= =?UTF-8?q?=20calendar=20route=20to=20reservation=20route?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/{calendar => reservation}/+page.svelte | 0 .../src/routes/{calendar => reservation}/[id]/+page.svelte | 0 apps/zotmeet/src/routes/{calendar => reservation}/[id]/+page.ts | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename apps/zotmeet/src/routes/{calendar => reservation}/+page.svelte (100%) rename apps/zotmeet/src/routes/{calendar => reservation}/[id]/+page.svelte (100%) rename apps/zotmeet/src/routes/{calendar => reservation}/[id]/+page.ts (100%) diff --git a/apps/zotmeet/src/routes/calendar/+page.svelte b/apps/zotmeet/src/routes/reservation/+page.svelte similarity index 100% rename from apps/zotmeet/src/routes/calendar/+page.svelte rename to apps/zotmeet/src/routes/reservation/+page.svelte diff --git a/apps/zotmeet/src/routes/calendar/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte similarity index 100% rename from apps/zotmeet/src/routes/calendar/[id]/+page.svelte rename to apps/zotmeet/src/routes/reservation/[id]/+page.svelte diff --git a/apps/zotmeet/src/routes/calendar/[id]/+page.ts b/apps/zotmeet/src/routes/reservation/[id]/+page.ts similarity index 100% rename from apps/zotmeet/src/routes/calendar/[id]/+page.ts rename to apps/zotmeet/src/routes/reservation/[id]/+page.ts From a8164064d657260b1638c0c54cc83ca650630544 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 06:54:28 -0800 Subject: [PATCH 065/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20prefet?= =?UTF-8?q?ching=20example=20from=20home=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/+page.svelte | 6 ------ apps/zotmeet/src/routes/+page.ts | 12 ------------ 2 files changed, 18 deletions(-) delete mode 100644 apps/zotmeet/src/routes/+page.ts diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index 6676420d..b9a5404e 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -1,11 +1,5 @@
diff --git a/apps/zotmeet/src/routes/+page.ts b/apps/zotmeet/src/routes/+page.ts deleted file mode 100644 index 2927cbdc..00000000 --- a/apps/zotmeet/src/routes/+page.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { PageLoad } from './$types' - -export const load: PageLoad = async (event) => { - const { trpc } = await event.parent() - - // This is a pre-fetching example. - // The query for the page will not have to run on page mount if the data isn't pre-fetched here. - - return { - greeting: trpc.context.hello.fetch({ text: 'Elysia' }), - } -} From 427d0b84482922a19d3c869500bcbe2859d2aeea Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 07:02:52 -0800 Subject: [PATCH 066/115] =?UTF-8?q?feat:=20=E2=9C=A8=20reservation=20examp?= =?UTF-8?q?le?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/+layout.svelte | 3 ++- apps/zotmeet/src/routes/+page.svelte | 30 +++++++++++++++++++++++--- eslint.config.js | 1 + 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/apps/zotmeet/src/routes/+layout.svelte b/apps/zotmeet/src/routes/+layout.svelte index 76cb624c..0542a23c 100644 --- a/apps/zotmeet/src/routes/+layout.svelte +++ b/apps/zotmeet/src/routes/+layout.svelte @@ -1,7 +1,7 @@
@@ -21,16 +43,18 @@

Try creating a reservation without logging in.

-
+
- +
diff --git a/eslint.config.js b/eslint.config.js index 5a33bdcf..d5b88cc1 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -48,6 +48,7 @@ const config = [ 'import/no-mutable-exports': 'off', 'import/no-extraneous-dependencies': 'off', 'import/prefer-default-export': 'off', + 'prefer-const': 'off', '@typescript-eslint/no-unused-vars': [ 'error', { From 911d043ec01c94ea2eb29c296234b080c5b36e4c Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 07:24:01 -0800 Subject: [PATCH 067/115] =?UTF-8?q?feat:=20=E2=9C=A8=20half=20decent=20hea?= =?UTF-8?q?der?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 1 + .../src/lib/components/layout/Header.svelte | 63 ++++++++++++++++--- apps/zotmeet/src/routes/+layout.svelte | 11 +++- pnpm-lock.yaml | 20 ++++++ 4 files changed, 86 insertions(+), 9 deletions(-) diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index 84ee00e5..9b0c1e40 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "@auth/core": "^0.18.3", + "@floating-ui/dom": "^1.5.3", "@fullcalendar/core": "^6.1.9", "@fullcalendar/daygrid": "^6.1.9", "@fullcalendar/interaction": "^6.1.9", diff --git a/apps/zotmeet/src/lib/components/layout/Header.svelte b/apps/zotmeet/src/lib/components/layout/Header.svelte index 8dbfe82c..e15f5e6b 100644 --- a/apps/zotmeet/src/lib/components/layout/Header.svelte +++ b/apps/zotmeet/src/lib/components/layout/Header.svelte @@ -1,23 +1,70 @@ -
-

ZotMeet

-
+ -
+ {#if $page.data.session?.user} +
+ + +
+ {:else} + Login -
+ {/if}
+ +
+ +
diff --git a/apps/zotmeet/src/routes/+layout.svelte b/apps/zotmeet/src/routes/+layout.svelte index 0542a23c..40cc1a92 100644 --- a/apps/zotmeet/src/routes/+layout.svelte +++ b/apps/zotmeet/src/routes/+layout.svelte @@ -1,7 +1,15 @@ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b0334c74..1c232106 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -110,6 +110,9 @@ importers: '@auth/core': specifier: ^0.18.3 version: 0.18.3 + '@floating-ui/dom': + specifier: ^1.5.3 + version: 1.5.3 '@fullcalendar/core': specifier: ^6.1.9 version: 6.1.9 @@ -1558,6 +1561,23 @@ packages: engines: {node: '>=14'} dev: true + /@floating-ui/core@1.5.0: + resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} + dependencies: + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + dependencies: + '@floating-ui/core': 1.5.0 + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: false + /@fullcalendar/core@6.1.9: resolution: {integrity: sha512-eeG+z9BWerdsU9Ac6j16rpYpPnE0wxtnEHiHrh/u/ADbGTR3hCOjCD9PxQOfhOTHbWOVs7JQunGcksSPu5WZBQ==} dependencies: From 9183f890953788d825f57030d3181794d4328f41 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 07:28:39 -0800 Subject: [PATCH 068/115] =?UTF-8?q?feat:=20=E2=9C=A8=20mostly=20functional?= =?UTF-8?q?=20header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 1 + .../src/lib/components/layout/Header.svelte | 20 +++++++++++--- apps/zotmeet/tailwind.config.js | 2 ++ pnpm-lock.yaml | 27 +++++++++++++++++++ 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index 9b0c1e40..e3359ac6 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -41,6 +41,7 @@ "@svelte.kit/adapter-aws": "^0.2.1", "@sveltejs/kit": "1.27.6", "@tailwindcss/forms": "^0.5.7", + "@tailwindcss/typography": "^0.5.10", "@trpc/client": "^10.44.1", "@trpc/server": "^10.44.1", "@types/eslint__eslintrc": "^2.1.1", diff --git a/apps/zotmeet/src/lib/components/layout/Header.svelte b/apps/zotmeet/src/lib/components/layout/Header.svelte index e15f5e6b..ce0b3396 100644 --- a/apps/zotmeet/src/lib/components/layout/Header.svelte +++ b/apps/zotmeet/src/lib/components/layout/Header.svelte @@ -4,6 +4,7 @@ import { page } from '$app/stores' import logo from '$lib/assets/logo.png' import BookIcon from '~icons/material-symbols/book' + import LoginIcon from '~icons/material-symbols/login' import LogoutIcon from '~icons/material-symbols/logout' const popupTarget = 'profile-popup' @@ -36,17 +37,28 @@
{:else} - Login + + + Login + {/if} -
-
From ca6c3f2e4bf78490c5af4cd148c5a271c5af508e Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 07:57:08 -0800 Subject: [PATCH 075/115] =?UTF-8?q?refactor:=20=E2=99=BB=EF=B8=8F=20prisma?= =?UTF-8?q?=20schema=20to=20allow=20arbitrary=20user=20ids?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/prisma/schema.prisma | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/zotmeet/prisma/schema.prisma b/apps/zotmeet/prisma/schema.prisma index d790a7db..515eab5b 100644 --- a/apps/zotmeet/prisma/schema.prisma +++ b/apps/zotmeet/prisma/schema.prisma @@ -63,13 +63,21 @@ model Reservation { // Reservations can have participants that are trying to agree on a meeting date. // Each participant is uniquely identified by their user ID and reservation ID model ReservationParticipant { - user_id String + id String + reservation_id String - user User @relation(references: [id], fields: [user_id], onDelete: Cascade) reservation Reservation @relation(references: [id], fields: [reservation_id], onDelete: Cascade) - @@unique([user_id, reservation_id]) + // Temporary: allow arbitrary IDs to participate instead of verified users. + // user_id String + // user User @relation(references: [id], fields: [user_id], onDelete: Cascade) + // @@unique([user_id, reservation_id]) + User User? @relation(fields: [userId], references: [id]) + userId String? + + @@id([id, reservation_id]) + @@unique([id, reservation_id]) } // A timeslot represents a time range when a participant is available. From 42e13c4cdff8f40df0b2e65426e5a98476fca5bf Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 08:05:57 -0800 Subject: [PATCH 076/115] =?UTF-8?q?feat:=20=E2=9C=A8=20update=20timeslots?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/prisma/schema.prisma | 4 ++- .../lib/server/trpc/routers/reservations.ts | 34 ++++++++++++++++++- .../src/routes/reservation/[id]/+page.svelte | 2 ++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/apps/zotmeet/prisma/schema.prisma b/apps/zotmeet/prisma/schema.prisma index 515eab5b..fcbed908 100644 --- a/apps/zotmeet/prisma/schema.prisma +++ b/apps/zotmeet/prisma/schema.prisma @@ -98,8 +98,10 @@ model TimeSlot { end DateTime // The user that this timeslot is for. - user User @relation(references: [id], fields: [user_id], onDelete: Cascade) + // user User @relation(references: [id], fields: [user_id], onDelete: Cascade) // The reservation that this timeslot is for. reservation Reservation @relation(references: [id], fields: [reservation_id], onDelete: Cascade) + User User? @relation(fields: [userId], references: [id]) + userId String? } diff --git a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts index d6e3bf99..5f04baa9 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts @@ -1,9 +1,14 @@ -import { type } from 'arktype' +import { arrayOf, type } from 'arktype' import { router, procedure } from '../init' import { prisma } from '$lib/server/db' +const EventSchema = type({ + start: 'Date', + end: 'Date', +}) + /** * Handles reservations. */ @@ -34,4 +39,31 @@ export const reservationsRouter = router({ }) return reservation }), + + updateTimeSlots: procedure + .input(type({ id: 'string', reservationId: 'string', events: arrayOf(EventSchema) }).assert) + .mutation(async ({ input }) => { + // Reset all of the user's timeslots. + await prisma.timeSlot.deleteMany({ + where: { + user_id: input.id, + }, + }) + + // Create the new timeslots. + const timeslots = await prisma.$transaction( + input.events.map(async (event) => + prisma.timeSlot.create({ + data: { + user_id: input.id, + reservation_id: input.reservationId, + start: event.start, + end: event.end, + }, + }), + ), + ) + + return timeslots + }), }) diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 21dfc3e3..2e33c21b 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -2,6 +2,8 @@ import type { PageData } from '../$types' export let data: PageData + + let participantId
From 30d10d012963168fcdcd96ca43953c114cf3c3ed Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 08:07:17 -0800 Subject: [PATCH 077/115] =?UTF-8?q?fix:=20=F0=9F=90=9B=20prisma=20transact?= =?UTF-8?q?ion=20eslint=20conflict?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/lib/server/trpc/routers/reservations.ts | 2 +- eslint.config.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts index 5f04baa9..1d80759c 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts @@ -52,7 +52,7 @@ export const reservationsRouter = router({ // Create the new timeslots. const timeslots = await prisma.$transaction( - input.events.map(async (event) => + input.events.map((event) => prisma.timeSlot.create({ data: { user_id: input.id, diff --git a/eslint.config.js b/eslint.config.js index d5b88cc1..4b0f0cab 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -49,6 +49,7 @@ const config = [ 'import/no-extraneous-dependencies': 'off', 'import/prefer-default-export': 'off', 'prefer-const': 'off', + '@typescript-eslint/promise-function-async': 'off', '@typescript-eslint/no-unused-vars': [ 'error', { From 76cc4ad7b160ae6c492f60f9792c38d8ede2519f Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 08:13:11 -0800 Subject: [PATCH 078/115] =?UTF-8?q?feat:=20=E2=9C=A8=20reservation=20id=20?= =?UTF-8?q?loading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lib/server/trpc/routers/reservations.ts | 17 +++++++++++++++++ .../zotmeet/src/routes/reservation/+page.svelte | 1 + .../src/routes/reservation/[id]/+page.svelte | 10 ++++++++-- .../src/routes/reservation/[id]/+page.ts | 4 +--- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts index 1d80759c..e17d4d99 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts @@ -40,6 +40,23 @@ export const reservationsRouter = router({ return reservation }), + getUserTimeslots: procedure + .input(type({ 'userId?': 'string', reservationId: 'string' }).assert) + .query(async ({ input }) => { + if (input.userId == null) { + return [] + } + + const timeslots = await prisma.timeSlot.findMany({ + where: { + user_id: input.userId, + reservation_id: input.reservationId, + }, + }) + + return timeslots + }), + updateTimeSlots: procedure .input(type({ id: 'string', reservationId: 'string', events: arrayOf(EventSchema) }).assert) .mutation(async ({ input }) => { diff --git a/apps/zotmeet/src/routes/reservation/+page.svelte b/apps/zotmeet/src/routes/reservation/+page.svelte index c82e4cdb..9b6d3421 100644 --- a/apps/zotmeet/src/routes/reservation/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/+page.svelte @@ -18,6 +18,7 @@ const byIdquery = trpc.cslById.createQuery(currentRoomId) const roomIdQuery = trpc.cslRoomIds.createQuery() + const q = trpc.reservations.byId.createQuery() let element: HTMLElement diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 2e33c21b..b9022410 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -1,13 +1,19 @@

Reservation ID: {data.id}

+
+ +
diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.ts b/apps/zotmeet/src/routes/reservation/[id]/+page.ts index 995c315a..d5b87261 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.ts +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.ts @@ -1,5 +1,3 @@ import type { PageLoad } from './$types' -export const load: PageLoad = async (event) => ({ - id: event.params.id, -}) +export const load: PageLoad = async (event) => ({ id: event.params.id }) From 2a7e801ae918dbfed2701c77f044b4a02b867656 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 09:10:13 -0800 Subject: [PATCH 079/115] =?UTF-8?q?feat:=20=E2=9C=A8=20can=20make=20reserv?= =?UTF-8?q?ation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/prisma/schema.prisma | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/zotmeet/prisma/schema.prisma b/apps/zotmeet/prisma/schema.prisma index fcbed908..0a2bd329 100644 --- a/apps/zotmeet/prisma/schema.prisma +++ b/apps/zotmeet/prisma/schema.prisma @@ -55,9 +55,12 @@ model Reservation { // A reservation is created by a single person. user_id String - user User @relation(references: [id], fields: [user_id], onDelete: Cascade) ReservationParticipant ReservationParticipant[] TimeSlot TimeSlot[] + + // user User @relation(references: [id], fields: [user_id], onDelete: Cascade) + User User? @relation(fields: [userId], references: [id]) + userId String? } // Reservations can have participants that are trying to agree on a meeting date. From f40d30d9b7ce7eb46642d845c17f974476f5bb59 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 09:32:04 -0800 Subject: [PATCH 080/115] =?UTF-8?q?feat:=20=E2=9C=A8=20mutations=20and=20r?= =?UTF-8?q?eservation=20working?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/server/trpc/routers/reservations.ts | 26 +++++------- .../src/routes/reservation/[id]/+page.svelte | 42 ++++++++++++++++++- 2 files changed, 52 insertions(+), 16 deletions(-) diff --git a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts index e17d4d99..45a9ece5 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts @@ -40,22 +40,18 @@ export const reservationsRouter = router({ return reservation }), - getUserTimeslots: procedure - .input(type({ 'userId?': 'string', reservationId: 'string' }).assert) - .query(async ({ input }) => { - if (input.userId == null) { - return [] - } - - const timeslots = await prisma.timeSlot.findMany({ - where: { - user_id: input.userId, - reservation_id: input.reservationId, - }, - }) + /** + * Returns all of a reservation's timeslots. + */ + getTimeSlots: procedure.input(type('string').assert).query(async ({ input }) => { + const timeslots = await prisma.timeSlot.findMany({ + where: { + reservation_id: input, + }, + }) - return timeslots - }), + return timeslots + }), updateTimeSlots: procedure .input(type({ id: 'string', reservationId: 'string', events: arrayOf(EventSchema) }).assert) diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index b9022410..dfadb6d1 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -1,15 +1,55 @@ -
+

Reservation ID: {data.id}

+ +
+

Time slots

+
{JSON.stringify($query.data, undefined, 2)}
+
+ +
+ +
+
- - - Login with Oauth - -
- -
-
-

Create a Reservation

-

Creating a reservation without logging in.

-
-
- -
-
+ {#if $page.data.session?.user?.name == null} +
+ + + Login with Oauth + +
+ {:else} +
+
+

Create a Reservation

+
+
+ +
+
+ {/if}
diff --git a/apps/zotmeet/src/routes/csl/+page.ts b/apps/zotmeet/src/routes/csl/+page.ts index 33149eeb..080be010 100644 --- a/apps/zotmeet/src/routes/csl/+page.ts +++ b/apps/zotmeet/src/routes/csl/+page.ts @@ -4,7 +4,6 @@ export const load: PageLoad = async (event) => { const { trpc } = await event.parent() return { - cslRoomIds: trpc.context.cslRoomIds.fetch(), - csl: trpc.context.csl.fetch(), + csl: trpc.context.csl.rooms.fetch(), } } diff --git a/apps/zotmeet/src/routes/science/+page.ts b/apps/zotmeet/src/routes/science/+page.ts index e729c605..1dbf9616 100644 --- a/apps/zotmeet/src/routes/science/+page.ts +++ b/apps/zotmeet/src/routes/science/+page.ts @@ -4,6 +4,6 @@ export const load: PageLoad = async (event) => { const { trpc } = await event.parent() return { - science: trpc.context.scienceLibrary.fetch(), + science: trpc.context.scienceLibrary.rooms.fetch(), } } From d41f8bb96fbbb2caef4da972fdbd2af8471a681e Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 11:08:38 -0800 Subject: [PATCH 085/115] =?UTF-8?q?revert:=20=E2=8F=AA=EF=B8=8F=20remove?= =?UTF-8?q?=20foreign=20for=20user=20and=20reservation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/prisma/schema.prisma | 2 +- .../lib/server/trpc/routers/reservations.ts | 2 +- apps/zotmeet/src/routes/+page.svelte | 51 +++++++------------ 3 files changed, 20 insertions(+), 35 deletions(-) diff --git a/apps/zotmeet/prisma/schema.prisma b/apps/zotmeet/prisma/schema.prisma index 0b52e059..4c72ce79 100644 --- a/apps/zotmeet/prisma/schema.prisma +++ b/apps/zotmeet/prisma/schema.prisma @@ -43,7 +43,7 @@ model Session { model Reservation { id String @id @default(cuid()) - userId String + userId String? participants ReservationParticipant[] timeSlot TimeSlot[] user User? @relation(fields: [userId], references: [id]) diff --git a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts index db95a494..95bc846f 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts @@ -16,7 +16,7 @@ export const reservationsRouter = router({ /** * Create. */ - create: procedure.input(type('string').assert).mutation(async ({ input }) => { + create: procedure.input(type('string | null | undefined').assert).mutation(async ({ input }) => { const reservation = await prisma.reservation.create({ data: { userId: input, diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index afb41e46..53536820 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -1,6 +1,4 @@ + +
+ +
diff --git a/apps/zotmeet/svelte.config.js b/apps/zotmeet/svelte.config.js index 055157e2..2aa31fb6 100644 --- a/apps/zotmeet/svelte.config.js +++ b/apps/zotmeet/svelte.config.js @@ -1,11 +1,20 @@ +// @ts-check + import adapter from '@svelte.kit/adapter-aws' +import { mdsvex } from 'mdsvex' import { vitePreprocess } from '@sveltejs/kit/vite' /** * @type {import('@sveltejs/kit').Config} */ const config = { - preprocess: [vitePreprocess({})], + extensions: ['.svelte', '.md'], + preprocess: [ + vitePreprocess({}), + mdsvex({ + extensions: ['.md'], + }), + ], kit: { adapter: adapter(), env: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d950416..e483484a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -143,6 +143,9 @@ importers: devalue: specifier: ^4.3.2 version: 4.3.2 + mdsvex: + specifier: ^0.11.0 + version: 0.11.0(svelte@4.2.7) superjson: specifier: ^2.2.1 version: 2.2.1 @@ -2423,6 +2426,10 @@ packages: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} dev: true + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: false + /@typescript-eslint/eslint-plugin@6.12.0(@typescript-eslint/parser@6.12.0)(eslint@8.54.0)(typescript@5.2.2): resolution: {integrity: sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -5302,6 +5309,18 @@ packages: /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + /mdsvex@0.11.0(svelte@4.2.7): + resolution: {integrity: sha512-gJF1s0N2nCmdxcKn8HDn0LKrN8poStqAicp6bBcsKFd/zkUBGLP5e7vnxu+g0pjBbDFOscUyI1mtHz+YK2TCDw==} + peerDependencies: + svelte: '>=3 <5' + dependencies: + '@types/unist': 2.0.10 + prism-svelte: 0.4.7 + prismjs: 1.29.0 + svelte: 4.2.7 + vfile-message: 2.0.4 + dev: false + /meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} @@ -5962,6 +5981,10 @@ packages: /pretty-format@3.8.0: resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + /prism-svelte@0.4.7: + resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==} + dev: false + /prisma@5.6.0: resolution: {integrity: sha512-EEaccku4ZGshdr2cthYHhf7iyvCcXqwJDvnoQRAJg5ge2Tzpv0e2BaMCp+CbbDUwoVTzwgOap9Zp+d4jFa2O9A==} engines: {node: '>=16.13'} @@ -5970,6 +5993,11 @@ packages: dependencies: '@prisma/engines': 5.6.0 + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true @@ -6973,6 +7001,12 @@ packages: '@fastify/busboy': 2.1.0 dev: true + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.10 + dev: false + /universal-cookie@6.1.1: resolution: {integrity: sha512-33S9x3CpdUnnjwTNs2Fgc41WGve2tdLtvaK2kPSbZRc5pGpz2vQFbRWMxlATsxNNe/Cy8SzmnmbuBM85jpZPtA==} dependencies: @@ -7084,6 +7118,13 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 2.0.3 + dev: false + /vite-node@0.34.6(@types/node@20.10.0): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} From 801cdead92f90656149d045b911285cfb65cd4d1 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 11:22:11 -0800 Subject: [PATCH 088/115] =?UTF-8?q?feat:=20=E2=9C=A8=20about=20route=20and?= =?UTF-8?q?=20proper=20prose=20invert=20colors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/about/+page.svelte | 7 +++++++ apps/zotmeet/src/routes/requirements/+page.svelte | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 apps/zotmeet/src/routes/about/+page.svelte diff --git a/apps/zotmeet/src/routes/about/+page.svelte b/apps/zotmeet/src/routes/about/+page.svelte new file mode 100644 index 00000000..173ecfc9 --- /dev/null +++ b/apps/zotmeet/src/routes/about/+page.svelte @@ -0,0 +1,7 @@ + + +
+ +
diff --git a/apps/zotmeet/src/routes/requirements/+page.svelte b/apps/zotmeet/src/routes/requirements/+page.svelte index 877e09ac..173ecfc9 100644 --- a/apps/zotmeet/src/routes/requirements/+page.svelte +++ b/apps/zotmeet/src/routes/requirements/+page.svelte @@ -2,6 +2,6 @@ import About from '$lib/markdown/About.md' -
+
From 89905ffee258721518d5428e3ee72c411cabfb88 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 11:29:29 -0800 Subject: [PATCH 089/115] =?UTF-8?q?refactor:=20=E2=99=BB=EF=B8=8F=20rename?= =?UTF-8?q?=20timeslot=20to=20timeslots?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/prisma/schema.prisma | 8 +++---- .../lib/server/trpc/routers/reservations.ts | 2 +- apps/zotmeet/src/routes/+page.svelte | 24 ++++++++++++++----- .../src/routes/reservation/[id]/+page.svelte | 2 +- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/apps/zotmeet/prisma/schema.prisma b/apps/zotmeet/prisma/schema.prisma index 4c72ce79..d46341ff 100644 --- a/apps/zotmeet/prisma/schema.prisma +++ b/apps/zotmeet/prisma/schema.prisma @@ -17,9 +17,9 @@ model User { session Session[] account Account[] - reservations Reservation[] - ReservationParticipant ReservationParticipant[] - timeSlots TimeSlot[] + reservations Reservation[] + participations ReservationParticipant[] + timeSlots TimeSlot[] } model Account { @@ -45,7 +45,7 @@ model Reservation { id String @id @default(cuid()) userId String? participants ReservationParticipant[] - timeSlot TimeSlot[] + timeSlots TimeSlot[] user User? @relation(fields: [userId], references: [id]) } diff --git a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts index 95bc846f..fda9598d 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts @@ -34,7 +34,7 @@ export const reservationsRouter = router({ where: { id: input }, include: { participants: true, - timeSlot: true, + timeSlots: true, }, }) return reservation diff --git a/apps/zotmeet/src/routes/+page.svelte b/apps/zotmeet/src/routes/+page.svelte index 53536820..044c4a93 100644 --- a/apps/zotmeet/src/routes/+page.svelte +++ b/apps/zotmeet/src/routes/+page.svelte @@ -8,7 +8,7 @@ async function handleClick(event: Event): Promise { event.preventDefault() - const reservation = await $mutation.mutateAsync($page.data.session?.user?.name) + const reservation = await $mutation.mutateAsync($page.data.session?.user?.id) await goto(`/reservation/${reservation.id}`) } @@ -20,11 +20,23 @@
- - - Login with Oauth - -

Logging in allows you to edit the reservation

+ {#if $page.data.session?.user?.name} +
+

+ Welcome + {$page.data.session.user.name} +

+

Logging in allows you to edit the reservation

+
+ {:else} +
+ + + Login with Oauth + +

Logging in allows you to edit the reservation

+
+ {/if}
diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 0ebd8338..ec36c2c1 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -88,7 +88,7 @@

Time slots

-
{JSON.stringify($timeslotQuery.data, undefined, 2)}
+
{JSON.stringify($reservationQuery.data?.timeSlots, undefined, 2)}
From 1d1ec8af2b7da7a1b72671cdf38f41663f6e1c89 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 11:31:24 -0800 Subject: [PATCH 090/115] =?UTF-8?q?feat:=20=E2=9C=A8=20works?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/reservation/[id]/+page.svelte | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index ec36c2c1..681881a8 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -23,8 +23,6 @@ const reservationQuery = trpc.reservations.byId.createQuery(data.id) - $: console.log($reservationQuery.data) - const mutation = trpc.reservations.updateTimeSlots.createMutation() const utils = trpc.getContext() @@ -41,6 +39,8 @@ return { start, end } } + $: console.log($reservationQuery.data) + $: if ($cslQuery.data !== null && $cslQuery.data !== undefined) { backgroundEvents.set( $cslQuery.data.map((room) => ({ @@ -67,7 +67,7 @@ }, { onSuccess: () => { - void utils.reservations.getTimeSlots.invalidate(data.id) + void utils.reservations.invalidate() void utils.reservations.getTimeSlots.fetch(data.id).then((result) => { reservation.set({ From e71f4b921b70ea82a48a2de6a98422466ae9dd12 Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 11:39:34 -0800 Subject: [PATCH 091/115] =?UTF-8?q?feat:=20=E2=9C=A8=20slider=20calendar?= =?UTF-8?q?=20time=20range?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/package.json | 3 +- .../src/lib/components/Calendar.svelte | 35 +++++-------------- pnpm-lock.yaml | 7 ++++ 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/apps/zotmeet/package.json b/apps/zotmeet/package.json index 9fd2a2ac..b3c08471 100644 --- a/apps/zotmeet/package.json +++ b/apps/zotmeet/package.json @@ -28,7 +28,8 @@ "dayjs": "^1.11.10", "devalue": "^4.3.2", "mdsvex": "^0.11.0", - "superjson": "^2.2.1" + "superjson": "^2.2.1", + "svelte-range-slider-pips": "^2.2.3" }, "devDependencies": { "@aponia.js/adapter-prisma": "^0.2.0", diff --git a/apps/zotmeet/src/lib/components/Calendar.svelte b/apps/zotmeet/src/lib/components/Calendar.svelte index 906bdb8a..bffdf41a 100644 --- a/apps/zotmeet/src/lib/components/Calendar.svelte +++ b/apps/zotmeet/src/lib/components/Calendar.svelte @@ -6,6 +6,7 @@ import timeGridPlugin from '@fullcalendar/timegrid' import { onMount } from 'svelte' import { get, writable } from 'svelte/store' + import RangeSlider from 'svelte-range-slider-pips' import { handleSelect, handleSelection } from '$lib/calendar' import type { Reservation } from '$lib/reservation' @@ -25,6 +26,8 @@ export let backgroundEvents = writable([]) + let startEndHours = [9, 21] + $: if (calendar != null) { calendar .getEvents() @@ -119,16 +122,12 @@ console.log(events) } - const hours = Array.from({ length: 25 }, (_, i) => i) - - function handleStartSelect(e: SvelteInputEvent): void { - startHour = +e.currentTarget.value - calendar.setOption('slotMinTime', `${startHour}:00:00`) + $: if (calendar != null) { + calendar.setOption('slotMinTime', `${startEndHours[0]}:00:00`) } - function handleEndSelect(e: SvelteInputEvent): void { - endHour = +e.currentTarget.value - calendar.setOption('slotMaxTime', `${endHour}:00:00`) + $: if (calendar != null) { + calendar.setOption('slotMaxTime', `${startEndHours[1]}:00:00`) } @@ -138,24 +137,8 @@
-
- - - +
+
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e483484a..f17a7012 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,6 +149,9 @@ importers: superjson: specifier: ^2.2.1 version: 2.2.1 + svelte-range-slider-pips: + specifier: ^2.2.3 + version: 2.2.3 devDependencies: '@aponia.js/adapter-prisma': specifier: ^0.2.0 @@ -6688,6 +6691,10 @@ packages: typescript: 5.2.2 dev: true + /svelte-range-slider-pips@2.2.3: + resolution: {integrity: sha512-ZAwX9+NDOE6cdqUTMfwBw27YI7NFgSXyPS1ARx3Zuaish2q6FuAtgx5d9+uqNzxQ7WVFhxgM7iQp8MvCpvy4Jw==} + dev: false + /svelte@4.2.7: resolution: {integrity: sha512-UExR1KS7raTdycsUrKLtStayu4hpdV3VZQgM0akX8XbXgLBlosdE/Sf3crOgyh9xIjqSYB3UEBuUlIQKRQX2hg==} engines: {node: '>=16'} From 438c553add45ae2d84ae3c85116cecca256dc2fa Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 11:45:49 -0800 Subject: [PATCH 092/115] =?UTF-8?q?feat:=20=E2=9C=A8=20ability=20to=20crea?= =?UTF-8?q?te=20anonymous=20timeslots?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/prisma/schema.prisma | 2 +- .../src/lib/components/Calendar.svelte | 13 +++-- .../lib/server/trpc/routers/reservations.ts | 2 +- .../src/routes/reservation/[id]/+page.svelte | 51 ++++++++----------- 4 files changed, 30 insertions(+), 38 deletions(-) diff --git a/apps/zotmeet/prisma/schema.prisma b/apps/zotmeet/prisma/schema.prisma index d46341ff..3a2b4e73 100644 --- a/apps/zotmeet/prisma/schema.prisma +++ b/apps/zotmeet/prisma/schema.prisma @@ -62,7 +62,7 @@ model ReservationParticipant { model TimeSlot { id String @id @default(cuid()) reservationId String - userId String + userId String? start DateTime end DateTime reservation Reservation @relation(references: [id], fields: [reservationId], onDelete: Cascade) diff --git a/apps/zotmeet/src/lib/components/Calendar.svelte b/apps/zotmeet/src/lib/components/Calendar.svelte index bffdf41a..8574baf8 100644 --- a/apps/zotmeet/src/lib/components/Calendar.svelte +++ b/apps/zotmeet/src/lib/components/Calendar.svelte @@ -133,14 +133,17 @@
-
-
- -
- +

Calendar Time Range

+ +
+ +
+
+
+
diff --git a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts index fda9598d..f7440470 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts @@ -54,7 +54,7 @@ export const reservationsRouter = router({ }), updateTimeSlots: procedure - .input(type({ id: 'string', reservationId: 'string', events: arrayOf(EventSchema) }).assert) + .input(type({ 'id?': 'string', reservationId: 'string', events: arrayOf(EventSchema) }).assert) .mutation(async ({ input }) => { // Reset all of the user's timeslots. await prisma.timeSlot.deleteMany({ diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 681881a8..5ddba0de 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -17,18 +17,16 @@ events: [], }) - const cslQuery = trpc.csl.byId.createQuery(405) - const backgroundEvents = writable([]) + const cslQuery = trpc.csl.byId.createQuery(405) + const reservationQuery = trpc.reservations.byId.createQuery(data.id) const mutation = trpc.reservations.updateTimeSlots.createMutation() const utils = trpc.getContext() - let participantId = $page.data.session?.user?.id ?? 'Anonymous' - function randomTimeSlotThisWeek(): { start: Date; end: Date } { const start = dayjs() .startOf('week') @@ -39,29 +37,12 @@ return { start, end } } - $: console.log($reservationQuery.data) - - $: if ($cslQuery.data !== null && $cslQuery.data !== undefined) { - backgroundEvents.set( - $cslQuery.data.map((room) => ({ - start: room.start, - end: room.end, - display: 'background', - overlap: false, - backgroundColor: 'pink', - editable: false, - durationEditable: false, - startEditable: false, - })), - ) - } - function updateTimeSlots(): void { const { start, end } = randomTimeSlotThisWeek() $mutation.mutate( { - id: participantId, + id: $page.data.session?.user?.id, reservationId: data.id, events: [{ start, end }], }, @@ -79,6 +60,21 @@ }, ) } + + $: if ($cslQuery.data !== null && $cslQuery.data !== undefined) { + backgroundEvents.set( + $cslQuery.data.map((room) => ({ + start: room.start, + end: room.end, + display: 'background', + overlap: false, + backgroundColor: 'pink', + editable: false, + durationEditable: false, + startEditable: false, + })), + ) + }
@@ -86,11 +82,6 @@ Reservation ID: {data.id}

-
-

Time slots

-
{JSON.stringify($reservationQuery.data?.timeSlots, undefined, 2)}
-
-
@@ -98,9 +89,7 @@
- +

Time slots

+
{JSON.stringify($reservationQuery.data?.timeSlots, undefined, 2)}
From 989811a094dc5545415978d334c051d72c542b9c Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 11:47:12 -0800 Subject: [PATCH 093/115] =?UTF-8?q?style:=20=F0=9F=8E=A8=20cleaned=20up=20?= =?UTF-8?q?calendar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lib/components/Calendar.svelte | 21 ++++--------------- .../src/routes/reservation/[id]/+page.svelte | 13 +++--------- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/apps/zotmeet/src/lib/components/Calendar.svelte b/apps/zotmeet/src/lib/components/Calendar.svelte index 8574baf8..858c2ba7 100644 --- a/apps/zotmeet/src/lib/components/Calendar.svelte +++ b/apps/zotmeet/src/lib/components/Calendar.svelte @@ -117,10 +117,10 @@ } }) - function onClick(): void { - const events = calendar.getEvents() - console.log(events) - } + // function onClick(): void { + // const events = calendar.getEvents() + // console.log(events) + // } $: if (calendar != null) { calendar.setOption('slotMinTime', `${startEndHours[0]}:00:00`) @@ -142,17 +142,4 @@
- -
-
- -
-
- - {#if currentEvent} -
-

You're hovering over:

-
{JSON.stringify(currentEvent, undefined, 2)}
-
- {/if}
diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 5ddba0de..003b9cc4 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -77,19 +77,12 @@ } -
-

+

+

Reservation ID: {data.id}

- - -
- -
-
-

Time slots

-
{JSON.stringify($reservationQuery.data?.timeSlots, undefined, 2)}
+
From e1389b1a0fa03e034c08af951841f7986e814fbf Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 12:26:19 -0800 Subject: [PATCH 094/115] =?UTF-8?q?feat:=20=E2=9C=A8=20=20delete=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lib/components/Calendar.svelte | 35 ++++++++++++--- .../lib/server/trpc/routers/reservations.ts | 11 +++++ .../src/routes/reservation/[id]/+page.svelte | 43 +++++++++++-------- 3 files changed, 65 insertions(+), 24 deletions(-) diff --git a/apps/zotmeet/src/lib/components/Calendar.svelte b/apps/zotmeet/src/lib/components/Calendar.svelte index 858c2ba7..bc5537e1 100644 --- a/apps/zotmeet/src/lib/components/Calendar.svelte +++ b/apps/zotmeet/src/lib/components/Calendar.svelte @@ -5,16 +5,18 @@ import listPlugin from '@fullcalendar/list' import timeGridPlugin from '@fullcalendar/timegrid' import { onMount } from 'svelte' - import { get, writable } from 'svelte/store' + import { get, readable, writable } from 'svelte/store' import RangeSlider from 'svelte-range-slider-pips' import { handleSelect, handleSelection } from '$lib/calendar' - import type { Reservation } from '$lib/reservation' + import type { Reservation, ReservationEvent } from '$lib/reservation' let element: HTMLElement let calendar: Calendar + export let onSelect = (event: EventImpl[]): unknown => event + export let startHour = 9 export let endHour = 21 @@ -26,6 +28,8 @@ export let backgroundEvents = writable([]) + export let myEvents = readable([]) + let startEndHours = [9, 21] $: if (calendar != null) { @@ -86,6 +90,7 @@ slotMaxTime: `${endHour}:00:00`, select: (arg) => { handleSelect(arg, calendar, get(reservation)) + onSelect(calendar.getEvents()) }, selectAllow: (arg) => handleSelection(arg, calendar, get(reservation)), eventClick: (arg) => { @@ -117,11 +122,6 @@ } }) - // function onClick(): void { - // const events = calendar.getEvents() - // console.log(events) - // } - $: if (calendar != null) { calendar.setOption('slotMinTime', `${startEndHours[0]}:00:00`) } @@ -129,6 +129,27 @@ $: if (calendar != null) { calendar.setOption('slotMaxTime', `${startEndHours[1]}:00:00`) } + + $: if (calendar != null) { + console.log($myEvents) + + calendar + .getEvents() + .filter((event) => event.id === 'FINALIZED') + .forEach((event) => { + event.remove() + }) + + $myEvents.forEach((event) => { + calendar.addEvent({ + id: 'FINALIZED', + start: event.start, + end: event.end, + display: 'background', + backgroundColor: 'green', + }) + }) + }
diff --git a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts index f7440470..1150598a 100644 --- a/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts +++ b/apps/zotmeet/src/lib/server/trpc/routers/reservations.ts @@ -79,4 +79,15 @@ export const reservationsRouter = router({ return timeslots }), + + /** + * Delete all of a reservation's timeslots. + */ + deleteAllTimeSlots: procedure.input(type('string').assert).mutation(async ({ input }) => { + await prisma.timeSlot.deleteMany({ + where: { + reservationId: input, + }, + }) + }), }) diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 003b9cc4..584b4550 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -1,7 +1,7 @@
@@ -83,6 +92,6 @@

- +
From 4ced64e1dd10d9206efbaeecbc557ced2e34b84f Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 12:33:15 -0800 Subject: [PATCH 095/115] =?UTF-8?q?chore:=20=F0=9F=94=A7=20remove=20commen?= =?UTF-8?q?ted=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/reservation/[id]/+page.svelte | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 584b4550..3732a0ee 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -27,16 +27,6 @@ const utils = trpc.getContext() - // function randomTimeSlotThisWeek(): { start: Date; end: Date } { - // const start = dayjs() - // .startOf('week') - // .add(Math.random() * 3, 'day') - // .hour(10 + Math.random() * 10) - // .toDate() - // const end = dayjs(start).add(1, 'hour').toDate() - // return { start, end } - // } - function updateTimeSlots(events: EventImpl[]): void { const myEvents = events .filter((event) => event.id === 'FINALIZED') From 97ea96b31b16f5c535069dc3c0bda3de2510375c Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 12:42:46 -0800 Subject: [PATCH 096/115] =?UTF-8?q?feat:=20=E2=9C=A8=20delete=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/routes/reservation/[id]/+page.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 3732a0ee..97a87968 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -27,6 +27,8 @@ const utils = trpc.getContext() + const deleteEverythingMutation = trpc.reservations.deleteAllTimeSlots.createMutation() + function updateTimeSlots(events: EventImpl[]): void { const myEvents = events .filter((event) => event.id === 'FINALIZED') @@ -73,7 +75,10 @@ const myEvents = derived(reservationQuery, ($reservation) => $reservation.data?.timeSlots ?? []) - $: console.log($reservationQuery) + async function DELETEEVERYTHING(): Promise { + await $deleteEverythingMutation.mutateAsync(data.id) + await utils.reservations.invalidate() + }
@@ -84,4 +89,8 @@
+ +
+ +
From ebeee3b1b4c1dbb323f7da1f2cdd334b0e71029b Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 12:57:41 -0800 Subject: [PATCH 097/115] =?UTF-8?q?feat:=20=E2=9C=A8=20derived=20stores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/lib/components/Calendar.svelte | 20 +++----- .../src/routes/reservation/[id]/+page.svelte | 50 +++++++++---------- 2 files changed, 32 insertions(+), 38 deletions(-) diff --git a/apps/zotmeet/src/lib/components/Calendar.svelte b/apps/zotmeet/src/lib/components/Calendar.svelte index bc5537e1..bc7d275e 100644 --- a/apps/zotmeet/src/lib/components/Calendar.svelte +++ b/apps/zotmeet/src/lib/components/Calendar.svelte @@ -5,7 +5,7 @@ import listPlugin from '@fullcalendar/list' import timeGridPlugin from '@fullcalendar/timegrid' import { onMount } from 'svelte' - import { get, readable, writable } from 'svelte/store' + import { get, readable } from 'svelte/store' import RangeSlider from 'svelte-range-slider-pips' import { handleSelect, handleSelection } from '$lib/calendar' @@ -17,16 +17,13 @@ export let onSelect = (event: EventImpl[]): unknown => event - export let startHour = 9 + export let startHour = 7 - export let endHour = 21 + export let endHour = 20 - export let reservation = writable({ - id: '', - events: [], - }) + export let reservation = readable({ id: '', events: [] }) - export let backgroundEvents = writable([]) + export let backgroundEvents = readable([]) export let myEvents = readable([]) @@ -94,7 +91,8 @@ }, selectAllow: (arg) => handleSelection(arg, calendar, get(reservation)), eventClick: (arg) => { - if (!arg.event.startEditable || !arg.event.durationEditable) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-boolean-literal-compare + if (arg.event.startEditable === false || arg.event.durationEditable === false) { return } arg.event.remove() @@ -131,8 +129,6 @@ } $: if (calendar != null) { - console.log($myEvents) - calendar .getEvents() .filter((event) => event.id === 'FINALIZED') @@ -145,7 +141,7 @@ id: 'FINALIZED', start: event.start, end: event.end, - display: 'background', + // display: 'background', backgroundColor: 'green', }) }) diff --git a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte index 97a87968..2fdea11d 100644 --- a/apps/zotmeet/src/routes/reservation/[id]/+page.svelte +++ b/apps/zotmeet/src/routes/reservation/[id]/+page.svelte @@ -1,24 +1,15 @@
- +
diff --git a/apps/zotmeet/tailwind.config.js b/apps/zotmeet/tailwind.config.js index 8a5db881..636a3598 100644 --- a/apps/zotmeet/tailwind.config.js +++ b/apps/zotmeet/tailwind.config.js @@ -20,7 +20,7 @@ const config = { plugins: [ skeleton({ themes: { - preset: ['modern'], + preset: ['modern', 'wintry'], custom: [zotmeetTheme], }, }), From 1404875209caf7889cc258010f23435938ee405d Mon Sep 17 00:00:00 2001 From: Aponia Date: Mon, 27 Nov 2023 13:23:01 -0800 Subject: [PATCH 099/115] =?UTF-8?q?feat:=20=E2=9C=A8=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/zotmeet/src/error.html | 26 +++++++++++++++++++ apps/zotmeet/src/hooks.server.ts | 20 +++++++++++++- .../src/lib/components/layout/Header.svelte | 2 +- .../src/routes/profile/[id]/+page.svelte | 1 + 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 apps/zotmeet/src/error.html create mode 100644 apps/zotmeet/src/routes/profile/[id]/+page.svelte diff --git a/apps/zotmeet/src/error.html b/apps/zotmeet/src/error.html new file mode 100644 index 00000000..ac0b47be --- /dev/null +++ b/apps/zotmeet/src/error.html @@ -0,0 +1,26 @@ + + + + + + + + + + %sveltekit.error.message% + + + +
+
+

%sveltekit.status% %sveltekit.error.message%

+
+

Try these links instead

+
+ Home +
+
+
+
+ + diff --git a/apps/zotmeet/src/hooks.server.ts b/apps/zotmeet/src/hooks.server.ts index 69de2673..117285a3 100644 --- a/apps/zotmeet/src/hooks.server.ts +++ b/apps/zotmeet/src/hooks.server.ts @@ -1,7 +1,10 @@ +import { error } from 'console' + import adapterPrisma from '@aponia.js/adapter-prisma' import { SvelteKitAuth } from '@aponia.js/sveltekit' import GitHub from '@auth/core/providers/github' import Google from '@auth/core/providers/google' +import type { Handle } from '@sveltejs/kit' import { sequence } from '@sveltejs/kit/hooks' import { GITHUB_ID, GITHUB_SECRET, GOOGLE_ID, GOOGLE_SECRET } from '$env/static/private' @@ -22,4 +25,19 @@ const authHandle = SvelteKitAuth({ ], }) -export const handle = sequence(authHandle) +const authorizationHandle: Handle = async ({ event, resolve }) => { + if (event.url.pathname.startsWith('/profile')) { + const session = await event.locals.getSession() + + if (session?.user?.id == null) { + // eslint-disable-next-line @typescript-eslint/no-throw-literal, @typescript-eslint/no-confusing-void-expression + throw error(401, { + message: 'Unauthorized', + }) + } + } + + return resolve(event) +} + +export const handle = sequence(authHandle, authorizationHandle) diff --git a/apps/zotmeet/src/lib/components/layout/Header.svelte b/apps/zotmeet/src/lib/components/layout/Header.svelte index dabecb8c..d3d36b45 100644 --- a/apps/zotmeet/src/lib/components/layout/Header.svelte +++ b/apps/zotmeet/src/lib/components/layout/Header.svelte @@ -72,7 +72,7 @@
{:else} - + Login @@ -60,7 +60,7 @@ -
+