From 777a0c7ed30098e0f1a7ac06d4f7533266f6b54f Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 02:23:31 -0400 Subject: [PATCH 01/23] run prettier --- common/src/socials.test.ts | 66 ++++++++++++++++++++++++++++---------- common/src/util/json.ts | 2 +- common/src/util/random.ts | 2 +- common/src/util/string.ts | 2 +- 4 files changed, 52 insertions(+), 20 deletions(-) diff --git a/common/src/socials.test.ts b/common/src/socials.test.ts index e1bfbb2..ce84c8e 100644 --- a/common/src/socials.test.ts +++ b/common/src/socials.test.ts @@ -23,7 +23,9 @@ describe('strip', () => { describe('instagram', () => { it('should strip instagram URLs', () => { - expect(strip('instagram', 'https://instagram.com/username')).toBe('username') + expect(strip('instagram', 'https://instagram.com/username')).toBe( + 'username' + ) expect(strip('instagram', 'instagram.com/username')).toBe('username') expect(strip('instagram', '@username')).toBe('username') expect(strip('instagram', 'username')).toBe('username') @@ -32,7 +34,9 @@ describe('strip', () => { describe('bluesky', () => { it('should strip bluesky URLs', () => { - expect(strip('bluesky', 'https://bsky.app/profile/username')).toBe('username') + expect(strip('bluesky', 'https://bsky.app/profile/username')).toBe( + 'username' + ) expect(strip('bluesky', 'bsky.app/profile/username')).toBe('username') expect(strip('bluesky', '@username')).toBe('username') expect(strip('bluesky', 'username')).toBe('username') @@ -41,16 +45,24 @@ describe('strip', () => { describe('mastodon', () => { it('should handle mastodon handles', () => { - expect(strip('mastodon', '@user@instance.social')).toBe('user@instance.social') - expect(strip('mastodon', 'user@instance.social')).toBe('user@instance.social') + expect(strip('mastodon', '@user@instance.social')).toBe( + 'user@instance.social' + ) + expect(strip('mastodon', 'user@instance.social')).toBe( + 'user@instance.social' + ) }) }) describe('linkedin', () => { it('should strip linkedin URLs', () => { - expect(strip('linkedin', 'https://linkedin.com/in/username')).toBe('username') + expect(strip('linkedin', 'https://linkedin.com/in/username')).toBe( + 'username' + ) expect(strip('linkedin', 'linkedin.com/in/username')).toBe('username') - expect(strip('linkedin', 'https://linkedin.com/company/companyname')).toBe('companyname') + expect( + strip('linkedin', 'https://linkedin.com/company/companyname') + ).toBe('companyname') expect(strip('linkedin', 'username')).toBe('username') }) }) @@ -59,22 +71,42 @@ describe('strip', () => { describe('getSocialUrl', () => { it('should generate correct URLs for each platform', () => { expect(getSocialUrl('x', 'username')).toBe('https://x.com/username') - expect(getSocialUrl('github', 'username')).toBe('https://github.com/username') - expect(getSocialUrl('instagram', 'username')).toBe('https://instagram.com/username') - expect(getSocialUrl('bluesky', 'username')).toBe('https://bsky.app/profile/username') - expect(getSocialUrl('mastodon', 'user@instance.social')).toBe('https://instance.social/@user') - expect(getSocialUrl('linkedin', 'username')).toBe('https://linkedin.com/in/username') - expect(getSocialUrl('facebook', 'username')).toBe('https://facebook.com/username') - expect(getSocialUrl('spotify', 'username')).toBe('https://open.spotify.com/user/username') + expect(getSocialUrl('github', 'username')).toBe( + 'https://github.com/username' + ) + expect(getSocialUrl('instagram', 'username')).toBe( + 'https://instagram.com/username' + ) + expect(getSocialUrl('bluesky', 'username')).toBe( + 'https://bsky.app/profile/username' + ) + expect(getSocialUrl('mastodon', 'user@instance.social')).toBe( + 'https://instance.social/@user' + ) + expect(getSocialUrl('linkedin', 'username')).toBe( + 'https://linkedin.com/in/username' + ) + expect(getSocialUrl('facebook', 'username')).toBe( + 'https://facebook.com/username' + ) + expect(getSocialUrl('spotify', 'username')).toBe( + 'https://open.spotify.com/user/username' + ) }) it('should handle custom website URLs', () => { expect(getSocialUrl('site', 'example.com')).toBe('https://example.com') - expect(getSocialUrl('site', 'https://example.com')).toBe('https://example.com') + expect(getSocialUrl('site', 'https://example.com')).toBe( + 'https://example.com' + ) }) it('should handle discord user IDs and default invite', () => { - expect(getSocialUrl('discord', '123456789012345678')).toBe('https://discord.com/users/123456789012345678') - expect(getSocialUrl('discord', 'not-an-id')).toBe('https://discord.com/invite/AYDw8dbrGS') + expect(getSocialUrl('discord', '123456789012345678')).toBe( + 'https://discord.com/users/123456789012345678' + ) + expect(getSocialUrl('discord', 'not-an-id')).toBe( + 'https://discord.com/invite/AYDw8dbrGS' + ) }) -}) \ No newline at end of file +}) diff --git a/common/src/util/json.ts b/common/src/util/json.ts index bbdf56e..c975f55 100644 --- a/common/src/util/json.ts +++ b/common/src/util/json.ts @@ -1,6 +1,6 @@ export const safeJsonParse = (json: string | undefined | null) => { try { - return JSON.parse(json ?? '') + return JSON.parse(json ?? '') } catch (e) { return null } diff --git a/common/src/util/random.ts b/common/src/util/random.ts index b9c34cc..6162281 100644 --- a/common/src/util/random.ts +++ b/common/src/util/random.ts @@ -51,4 +51,4 @@ export const shuffle = (array: unknown[], rand: () => number) => { const swapIndex = i + Math.floor(rand() * (array.length - i)) ;[array[i], array[swapIndex]] = [array[swapIndex], array[i]] } -} \ No newline at end of file +} diff --git a/common/src/util/string.ts b/common/src/util/string.ts index 4dae265..23e1c73 100644 --- a/common/src/util/string.ts +++ b/common/src/util/string.ts @@ -4,4 +4,4 @@ export function removeEmojis(str: string) { /[\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{1F700}-\u{1F77F}\u{1F780}-\u{1F7FF}\u{1F800}-\u{1F8FF}\u{1F900}-\u{1F9FF}\u{1FA00}-\u{1FA6F}\u{1FA70}-\u{1FAFF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}\u{2300}-\u{23FF}\u{2B50}\u{2B55}\u{2934}\u{2935}\u{2B05}\u{2B06}\u{2B07}\u{2B1B}\u{2B1C}\u{2B50}\u{2B55}\u{3030}\u{303D}\u{3297}\u{3299}\u{FE0F}]/gu, '' ) -} \ No newline at end of file +} From 31b1684ecdeed942c81368746d511bc0ec790b36 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 02:25:01 -0400 Subject: [PATCH 02/23] run npm init @eslint/config --- common/package.json | 6 +- yarn.lock | 363 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 366 insertions(+), 3 deletions(-) diff --git a/common/package.json b/common/package.json index b17f1df..fd42e6c 100644 --- a/common/package.json +++ b/common/package.json @@ -25,11 +25,15 @@ "zod": "3.21.4" }, "devDependencies": { + "@eslint/js": "9.32.0", "@types/jest": "29.2.4", "@types/lodash": "4.14.178", "@types/string-similarity": "4.0.0", + "eslint": "9.32.0", + "globals": "16.3.0", "jest": "29.3.1", "supabase": "2.15.8", - "ts-jest": "29.0.3" + "ts-jest": "29.0.3", + "typescript-eslint": "8.39.0" } } diff --git a/yarn.lock b/yarn.lock index 1bd7abf..a2a98b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1201,11 +1201,44 @@ dependencies: eslint-visitor-keys "^3.3.0" +"@eslint-community/eslint-utils@^4.7.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== +"@eslint/config-array@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636" + integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== + dependencies: + "@eslint/object-schema" "^2.1.6" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/config-helpers@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286" + integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== + +"@eslint/core@^0.15.0", "@eslint/core@^0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60" + integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== + dependencies: + "@types/json-schema" "^7.0.15" + "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -1221,11 +1254,44 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" + integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@eslint/js@8.57.0": version "8.57.0" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@9.32.0": + version "9.32.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.32.0.tgz#a02916f58bd587ea276876cb051b579a3d75d091" + integrity sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg== + +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== + +"@eslint/plugin-kit@^0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz#c6b9f165e94bf4d9fdd493f1c028a94aaf5fc1cc" + integrity sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw== + dependencies: + "@eslint/core" "^0.15.1" + levn "^0.4.1" + "@fastify/busboy@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-1.2.1.tgz#9c6db24a55f8b803b5222753b24fe3aea2ba9ca3" @@ -1835,6 +1901,19 @@ resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-1.0.6.tgz#35dd26987228b39ef2316db3b1245c42eb19e324" integrity sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -1854,6 +1933,16 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== + "@img/sharp-darwin-arm64@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08" @@ -3517,6 +3606,11 @@ "@types/d3-transition" "*" "@types/d3-zoom" "*" +"@types/estree@^1.0.6": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + "@types/express-serve-static-core@^4.17.33": version "4.19.5" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" @@ -3594,7 +3688,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.12": +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -3818,6 +3912,21 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/eslint-plugin@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.39.0.tgz#c9afec1866ee1a6ea3d768b5f8e92201efbbba06" + integrity sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.39.0" + "@typescript-eslint/type-utils" "8.39.0" + "@typescript-eslint/utils" "8.39.0" + "@typescript-eslint/visitor-keys" "8.39.0" + graphemer "^1.4.0" + ignore "^7.0.0" + natural-compare "^1.4.0" + ts-api-utils "^2.1.0" + "@typescript-eslint/parser@7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.4.0.tgz#540f4321de1e52b886c0fa68628af1459954c1f1" @@ -3829,6 +3938,17 @@ "@typescript-eslint/visitor-keys" "7.4.0" debug "^4.3.4" +"@typescript-eslint/parser@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.39.0.tgz#c4b895d7a47f4cd5ee6ee77ea30e61d58b802008" + integrity sha512-g3WpVQHngx0aLXn6kfIYCZxM6rRJlWzEkVpqEFLT3SgEDsp9cpCbxxgwnE504q4H+ruSDh/VGS6nqZIDynP+vg== + dependencies: + "@typescript-eslint/scope-manager" "8.39.0" + "@typescript-eslint/types" "8.39.0" + "@typescript-eslint/typescript-estree" "8.39.0" + "@typescript-eslint/visitor-keys" "8.39.0" + debug "^4.3.4" + "@typescript-eslint/parser@^5.4.2 || ^6.0.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" @@ -3840,6 +3960,15 @@ "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" +"@typescript-eslint/project-service@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.39.0.tgz#71cb29c3f8139f99a905b8705127bffc2ae84759" + integrity sha512-CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.39.0" + "@typescript-eslint/types" "^8.39.0" + debug "^4.3.4" + "@typescript-eslint/scope-manager@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" @@ -3856,6 +3985,19 @@ "@typescript-eslint/types" "7.4.0" "@typescript-eslint/visitor-keys" "7.4.0" +"@typescript-eslint/scope-manager@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.39.0.tgz#ba4bf6d8257bbc172c298febf16bc22df4856570" + integrity sha512-8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A== + dependencies: + "@typescript-eslint/types" "8.39.0" + "@typescript-eslint/visitor-keys" "8.39.0" + +"@typescript-eslint/tsconfig-utils@8.39.0", "@typescript-eslint/tsconfig-utils@^8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.39.0.tgz#b2e87fef41a3067c570533b722f6af47be213f13" + integrity sha512-Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ== + "@typescript-eslint/type-utils@7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz#cfcaab21bcca441c57da5d3a1153555e39028cbd" @@ -3866,6 +4008,17 @@ debug "^4.3.4" ts-api-utils "^1.0.1" +"@typescript-eslint/type-utils@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.39.0.tgz#310ec781ae5e7bb0f5940bfd652573587f22786b" + integrity sha512-6B3z0c1DXVT2vYA9+z9axjtc09rqKUPRmijD5m9iv8iQpHBRYRMBcgxSiKTZKm6FwWw1/cI4v6em35OsKCiN5Q== + dependencies: + "@typescript-eslint/types" "8.39.0" + "@typescript-eslint/typescript-estree" "8.39.0" + "@typescript-eslint/utils" "8.39.0" + debug "^4.3.4" + ts-api-utils "^2.1.0" + "@typescript-eslint/types@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" @@ -3876,6 +4029,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.4.0.tgz#ee9dafa75c99eaee49de6dcc9348b45d354419b6" integrity sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw== +"@typescript-eslint/types@8.39.0", "@typescript-eslint/types@^8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.39.0.tgz#80f010b7169d434a91cd0529d70a528dbc9c99c6" + integrity sha512-ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0Kg== + "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" @@ -3904,6 +4062,22 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/typescript-estree@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.0.tgz#b9477a5c47a0feceffe91adf553ad9a3cd4cb3d6" + integrity sha512-ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw== + dependencies: + "@typescript-eslint/project-service" "8.39.0" + "@typescript-eslint/tsconfig-utils" "8.39.0" + "@typescript-eslint/types" "8.39.0" + "@typescript-eslint/visitor-keys" "8.39.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.1.0" + "@typescript-eslint/utils@7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.4.0.tgz#d889a0630cab88bddedaf7c845c64a00576257bd" @@ -3917,6 +4091,16 @@ "@typescript-eslint/typescript-estree" "7.4.0" semver "^7.5.4" +"@typescript-eslint/utils@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.39.0.tgz#dfea42f3c7ec85f9f3e994ff0bba8f3b2f09e220" + integrity sha512-4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ== + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.39.0" + "@typescript-eslint/types" "8.39.0" + "@typescript-eslint/typescript-estree" "8.39.0" + "@typescript-eslint/visitor-keys@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" @@ -3933,6 +4117,14 @@ "@typescript-eslint/types" "7.4.0" eslint-visitor-keys "^3.4.1" +"@typescript-eslint/visitor-keys@8.39.0": + version "8.39.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.39.0.tgz#5d619a6e810cdd3fd1913632719cbccab08bf875" + integrity sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA== + dependencies: + "@typescript-eslint/types" "8.39.0" + eslint-visitor-keys "^4.2.1" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -3982,6 +4174,11 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== +acorn@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + acorn@^8.4.1, acorn@^8.9.0: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" @@ -4476,6 +4673,13 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + browser-headers@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/browser-headers/-/browser-headers-0.4.1.tgz#4308a7ad3b240f4203dbb45acedb38dc2d65dd02" @@ -4962,6 +5166,15 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + css-background-parser@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/css-background-parser/-/css-background-parser-0.1.0.tgz#48a17f7fe6d4d4f1bca3177ddf16c5617950741b" @@ -5733,11 +5946,24 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + eslint@8.57.0: version "8.57.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" @@ -5782,6 +6008,56 @@ eslint@8.57.0: strip-ansi "^6.0.1" text-table "^0.2.0" +eslint@9.32.0: + version "9.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.32.0.tgz#4ea28df4a8dbc454e1251e0f3aed4bcf4ce50a47" + integrity sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.0" + "@eslint/config-helpers" "^0.3.0" + "@eslint/core" "^0.15.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.32.0" + "@eslint/plugin-kit" "^0.3.4" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.6" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + json-stable-stringify-without-jsonify "^1.0.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + +espree@^10.0.1, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== + dependencies: + acorn "^8.15.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.1" + espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -5803,6 +6079,13 @@ esquery@^1.4.2: dependencies: estraverse "^5.1.0" +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -5929,6 +6212,17 @@ fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -6002,6 +6296,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -6009,6 +6310,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -6098,6 +6406,14 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" @@ -6370,6 +6686,11 @@ glob@^8.0.0: minimatch "^5.0.1" once "^1.3.0" +globals@16.3.0: + version "16.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-16.3.0.tgz#66118e765ddaf9e2d880f7e17658543f93f1f667" + integrity sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ== + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -6382,6 +6703,11 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + globalthis@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -6682,6 +7008,11 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +ignore@^7.0.0: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -7612,7 +7943,7 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" -keyv@^4.5.3: +keyv@^4.5.3, keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -7958,6 +8289,14 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -9663,6 +10002,11 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.6.0: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + semver@^7.6.3: version "7.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" @@ -10370,6 +10714,11 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== +ts-api-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" + integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== + ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -10557,6 +10906,16 @@ typed-emitter@^2.1.0: optionalDependencies: rxjs "^7.5.2" +typescript-eslint@8.39.0: + version "8.39.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.39.0.tgz#b19c1a925cf8566831ae3875d2881ee2349808a5" + integrity sha512-lH8FvtdtzcHJCkMOKnN73LIn6SLTpoojgJqDAxPm1jCR14eWSGPX8ul/gggBdPMk/d5+u9V854vTYQ8T5jF/1Q== + dependencies: + "@typescript-eslint/eslint-plugin" "8.39.0" + "@typescript-eslint/parser" "8.39.0" + "@typescript-eslint/typescript-estree" "8.39.0" + "@typescript-eslint/utils" "8.39.0" + typescript@5.5.4: version "5.5.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" From b9a430ec3dc4271e893df20b2febf5356e67a995 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 02:25:46 -0400 Subject: [PATCH 03/23] explicitly add eslint config --- common/eslint.config.mjs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 common/eslint.config.mjs diff --git a/common/eslint.config.mjs b/common/eslint.config.mjs new file mode 100644 index 0000000..ee6118c --- /dev/null +++ b/common/eslint.config.mjs @@ -0,0 +1,12 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; + + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + {files: ["**/*.{js,mjs,cjs,ts}"]}, + {languageOptions: { globals: {...globals.browser, ...globals.node} }}, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, +]; \ No newline at end of file From 2c51cb33af15aafd16e10c8e4c629fabf5506894 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 02:32:44 -0400 Subject: [PATCH 04/23] rewrite jest.config.js to use import-style dependencies --- common/jest.config.js | 8 ++++---- common/package.json | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/common/jest.config.js b/common/jest.config.js index 22b1bda..fe06753 100644 --- a/common/jest.config.js +++ b/common/jest.config.js @@ -1,11 +1,11 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ -const { pathsToModuleNameMapper } = require('ts-jest') -const { compilerOptions } = require('./tsconfig') +import { pathsToModuleNameMapper } from 'ts-jest'; +import tsconfig from './tsconfig.json' with { type: 'json' }; -module.exports = { +export default { preset: 'ts-jest', testEnvironment: 'node', - moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { + moduleNameMapper: pathsToModuleNameMapper(tsconfig.compilerOptions.paths, { prefix: '/', }), testMatch: ['**/*.test.ts'], diff --git a/common/package.json b/common/package.json index fd42e6c..490402c 100644 --- a/common/package.json +++ b/common/package.json @@ -1,5 +1,6 @@ { "name": "common", + "type": "module", "version": "1.0.0", "private": true, "scripts": { From 61ac83c8c7ec48b40609cae89ed80d88c2b71e53 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 02:44:02 -0400 Subject: [PATCH 05/23] disable @typescript-eslint/no-explicit-any for now --- common/eslint.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/common/eslint.config.mjs b/common/eslint.config.mjs index ee6118c..6e164ad 100644 --- a/common/eslint.config.mjs +++ b/common/eslint.config.mjs @@ -9,4 +9,5 @@ export default [ {languageOptions: { globals: {...globals.browser, ...globals.node} }}, pluginJs.configs.recommended, ...tseslint.configs.recommended, + { rules: { "@typescript-eslint/no-explicit-any": "off" } } // disable this particular rule for now since the `any` annotations are very tricky to get rid of ]; \ No newline at end of file From 65d91e0ab48e28f7cbda8db9be9fb8602425825b Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 02:45:09 -0400 Subject: [PATCH 06/23] change _apiTypeCheck to a type declaration and remove underscore in src/api/schema.ts --- common/src/api/schema.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/src/api/schema.ts b/common/src/api/schema.ts index d0374b0..27633ef 100644 --- a/common/src/api/schema.ts +++ b/common/src/api/schema.ts @@ -36,9 +36,9 @@ type APIGenericSchema = { cache?: string } -let _apiTypeCheck: { [x: string]: APIGenericSchema } +type apiTypeCheck = { [x: string]: APIGenericSchema }; -export const API = (_apiTypeCheck = { +export const API: apiTypeCheck = { health: { method: 'GET', authed: false, @@ -476,7 +476,7 @@ export const API = (_apiTypeCheck = { radius: z.number().min(1).max(500), }), }, -} as const) +} as const; export type APIPath = keyof typeof API export type APISchema = (typeof API)[N] From d112dce9964ca7a70d5058594617c3c789454213 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 02:49:38 -0400 Subject: [PATCH 07/23] remove parameter name from ws.onopen --- common/src/api/websocket-client.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/api/websocket-client.ts b/common/src/api/websocket-client.ts index 74ee83e..ae30565 100644 --- a/common/src/api/websocket-client.ts +++ b/common/src/api/websocket-client.ts @@ -86,7 +86,7 @@ export class APIRealtimeClient { // to connect, so we need to turn on our reconnect in that case this.waitAndReconnect() } - this.ws.onopen = (_ev) => { + this.ws.onopen = () => { if (VERBOSE_LOGGING) { console.info('API websocket opened.') } From ef85bdbad324f3c46b9c38613faef4c35a302f1e Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:22:43 -0400 Subject: [PATCH 08/23] move jest.config.js to jest.config.mjs; run prettier again --- common/eslint.config.mjs | 15 +++++++-------- common/{jest.config.js => jest.config.mjs} | 4 ++-- common/src/api/schema.ts | 4 ++-- 3 files changed, 11 insertions(+), 12 deletions(-) rename common/{jest.config.js => jest.config.mjs} (69%) diff --git a/common/eslint.config.mjs b/common/eslint.config.mjs index 6e164ad..fa8c77c 100644 --- a/common/eslint.config.mjs +++ b/common/eslint.config.mjs @@ -1,13 +1,12 @@ -import globals from "globals"; -import pluginJs from "@eslint/js"; -import tseslint from "typescript-eslint"; - +import globals from 'globals' +import pluginJs from '@eslint/js' +import tseslint from 'typescript-eslint' /** @type {import('eslint').Linter.Config[]} */ export default [ - {files: ["**/*.{js,mjs,cjs,ts}"]}, - {languageOptions: { globals: {...globals.browser, ...globals.node} }}, + { files: ['**/*.{js,mjs,cjs,ts}'] }, + { languageOptions: { globals: { ...globals.browser, ...globals.node } } }, pluginJs.configs.recommended, ...tseslint.configs.recommended, - { rules: { "@typescript-eslint/no-explicit-any": "off" } } // disable this particular rule for now since the `any` annotations are very tricky to get rid of -]; \ No newline at end of file + { rules: { '@typescript-eslint/no-explicit-any': 'off' } }, // disable this particular rule for now since the `any` annotations are very tricky to get rid of +] diff --git a/common/jest.config.js b/common/jest.config.mjs similarity index 69% rename from common/jest.config.js rename to common/jest.config.mjs index fe06753..9fd5188 100644 --- a/common/jest.config.js +++ b/common/jest.config.mjs @@ -1,6 +1,6 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ -import { pathsToModuleNameMapper } from 'ts-jest'; -import tsconfig from './tsconfig.json' with { type: 'json' }; +import { pathsToModuleNameMapper } from 'ts-jest' +import tsconfig from './tsconfig.json' export default { preset: 'ts-jest', diff --git a/common/src/api/schema.ts b/common/src/api/schema.ts index 27633ef..01a6dcd 100644 --- a/common/src/api/schema.ts +++ b/common/src/api/schema.ts @@ -36,7 +36,7 @@ type APIGenericSchema = { cache?: string } -type apiTypeCheck = { [x: string]: APIGenericSchema }; +type apiTypeCheck = { [x: string]: APIGenericSchema } export const API: apiTypeCheck = { health: { @@ -476,7 +476,7 @@ export const API: apiTypeCheck = { radius: z.number().min(1).max(500), }), }, -} as const; +} as const export type APIPath = keyof typeof API export type APISchema = (typeof API)[N] From 909edf02d15cf240995238bee9765a46621413c2 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:26:17 -0400 Subject: [PATCH 09/23] Revert "move jest.config.js to jest.config.mjs; run prettier again" This reverts commit ef85bdbad324f3c46b9c38613faef4c35a302f1e. --- common/eslint.config.mjs | 15 ++++++++------- common/{jest.config.mjs => jest.config.js} | 4 ++-- common/src/api/schema.ts | 4 ++-- 3 files changed, 12 insertions(+), 11 deletions(-) rename common/{jest.config.mjs => jest.config.js} (69%) diff --git a/common/eslint.config.mjs b/common/eslint.config.mjs index fa8c77c..6e164ad 100644 --- a/common/eslint.config.mjs +++ b/common/eslint.config.mjs @@ -1,12 +1,13 @@ -import globals from 'globals' -import pluginJs from '@eslint/js' -import tseslint from 'typescript-eslint' +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; + /** @type {import('eslint').Linter.Config[]} */ export default [ - { files: ['**/*.{js,mjs,cjs,ts}'] }, - { languageOptions: { globals: { ...globals.browser, ...globals.node } } }, + {files: ["**/*.{js,mjs,cjs,ts}"]}, + {languageOptions: { globals: {...globals.browser, ...globals.node} }}, pluginJs.configs.recommended, ...tseslint.configs.recommended, - { rules: { '@typescript-eslint/no-explicit-any': 'off' } }, // disable this particular rule for now since the `any` annotations are very tricky to get rid of -] + { rules: { "@typescript-eslint/no-explicit-any": "off" } } // disable this particular rule for now since the `any` annotations are very tricky to get rid of +]; \ No newline at end of file diff --git a/common/jest.config.mjs b/common/jest.config.js similarity index 69% rename from common/jest.config.mjs rename to common/jest.config.js index 9fd5188..fe06753 100644 --- a/common/jest.config.mjs +++ b/common/jest.config.js @@ -1,6 +1,6 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ -import { pathsToModuleNameMapper } from 'ts-jest' -import tsconfig from './tsconfig.json' +import { pathsToModuleNameMapper } from 'ts-jest'; +import tsconfig from './tsconfig.json' with { type: 'json' }; export default { preset: 'ts-jest', diff --git a/common/src/api/schema.ts b/common/src/api/schema.ts index 01a6dcd..27633ef 100644 --- a/common/src/api/schema.ts +++ b/common/src/api/schema.ts @@ -36,7 +36,7 @@ type APIGenericSchema = { cache?: string } -type apiTypeCheck = { [x: string]: APIGenericSchema } +type apiTypeCheck = { [x: string]: APIGenericSchema }; export const API: apiTypeCheck = { health: { @@ -476,7 +476,7 @@ export const API: apiTypeCheck = { radius: z.number().min(1).max(500), }), }, -} as const +} as const; export type APIPath = keyof typeof API export type APISchema = (typeof API)[N] From 2eddb736c0149d70c8e200612c48c4d78870e99c Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:27:07 -0400 Subject: [PATCH 10/23] use resolveJsonModules in tsconfig.json; run prettier a third time --- common/eslint.config.mjs | 15 +++++++-------- common/jest.config.js | 4 ++-- common/src/api/schema.ts | 4 ++-- common/tsconfig.json | 3 ++- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/common/eslint.config.mjs b/common/eslint.config.mjs index 6e164ad..fa8c77c 100644 --- a/common/eslint.config.mjs +++ b/common/eslint.config.mjs @@ -1,13 +1,12 @@ -import globals from "globals"; -import pluginJs from "@eslint/js"; -import tseslint from "typescript-eslint"; - +import globals from 'globals' +import pluginJs from '@eslint/js' +import tseslint from 'typescript-eslint' /** @type {import('eslint').Linter.Config[]} */ export default [ - {files: ["**/*.{js,mjs,cjs,ts}"]}, - {languageOptions: { globals: {...globals.browser, ...globals.node} }}, + { files: ['**/*.{js,mjs,cjs,ts}'] }, + { languageOptions: { globals: { ...globals.browser, ...globals.node } } }, pluginJs.configs.recommended, ...tseslint.configs.recommended, - { rules: { "@typescript-eslint/no-explicit-any": "off" } } // disable this particular rule for now since the `any` annotations are very tricky to get rid of -]; \ No newline at end of file + { rules: { '@typescript-eslint/no-explicit-any': 'off' } }, // disable this particular rule for now since the `any` annotations are very tricky to get rid of +] diff --git a/common/jest.config.js b/common/jest.config.js index fe06753..9fd5188 100644 --- a/common/jest.config.js +++ b/common/jest.config.js @@ -1,6 +1,6 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ -import { pathsToModuleNameMapper } from 'ts-jest'; -import tsconfig from './tsconfig.json' with { type: 'json' }; +import { pathsToModuleNameMapper } from 'ts-jest' +import tsconfig from './tsconfig.json' export default { preset: 'ts-jest', diff --git a/common/src/api/schema.ts b/common/src/api/schema.ts index 27633ef..01a6dcd 100644 --- a/common/src/api/schema.ts +++ b/common/src/api/schema.ts @@ -36,7 +36,7 @@ type APIGenericSchema = { cache?: string } -type apiTypeCheck = { [x: string]: APIGenericSchema }; +type apiTypeCheck = { [x: string]: APIGenericSchema } export const API: apiTypeCheck = { health: { @@ -476,7 +476,7 @@ export const API: apiTypeCheck = { radius: z.number().min(1).max(500), }), }, -} as const; +} as const export type APIPath = keyof typeof API export type APISchema = (typeof API)[N] diff --git a/common/tsconfig.json b/common/tsconfig.json index 2506d8d..6eaa9aa 100644 --- a/common/tsconfig.json +++ b/common/tsconfig.json @@ -13,7 +13,8 @@ "skipLibCheck": true, "paths": { "common/*": ["./src/*", "../lib/*"] - } + }, + "resolveJsonModule": true }, "include": ["src/**/*.ts"] } From 4dd1ce088c441f39ec632c5bec69e5c7c7b05cb2 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:42:15 -0400 Subject: [PATCH 11/23] sidestep json altogether with tsconfig.js --- common/jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/jest.config.js b/common/jest.config.js index 9fd5188..8f9b097 100644 --- a/common/jest.config.js +++ b/common/jest.config.js @@ -1,6 +1,6 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ import { pathsToModuleNameMapper } from 'ts-jest' -import tsconfig from './tsconfig.json' +import tsconfig from './tsconfig.js' export default { preset: 'ts-jest', From 0c5df931ff3b2ecadb84c4d2cd025f96b5141bf3 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:42:32 -0400 Subject: [PATCH 12/23] explicitly add tsconfig.js --- common/tsconfig.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 common/tsconfig.js diff --git a/common/tsconfig.js b/common/tsconfig.js new file mode 100644 index 0000000..6beb21b --- /dev/null +++ b/common/tsconfig.js @@ -0,0 +1,21 @@ +// hacky workaround for not being able to import tsconfig.json directly +export default { + compilerOptions: { + rootDir: 'src', + composite: true, + module: 'commonjs', + moduleResolution: 'node', + noImplicitReturns: true, + outDir: 'lib', + tsBuildInfoFile: 'lib/tsconfig.tsbuildinfo', + sourceMap: true, + strict: true, + target: 'es2022', + skipLibCheck: true, + paths: { + 'common/*': ['./src/*', '../lib/*'], + }, + resolveJsonModule: true, + }, + include: ['src/**/*.ts'], +} From 4eed39c76bc123b525b8437f43b2ed2e82ad4b6c Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:45:28 -0400 Subject: [PATCH 13/23] disable @typescript-eslint/no-unused-expressions --- common/eslint.config.mjs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/common/eslint.config.mjs b/common/eslint.config.mjs index fa8c77c..0c9cd26 100644 --- a/common/eslint.config.mjs +++ b/common/eslint.config.mjs @@ -8,5 +8,10 @@ export default [ { languageOptions: { globals: { ...globals.browser, ...globals.node } } }, pluginJs.configs.recommended, ...tseslint.configs.recommended, - { rules: { '@typescript-eslint/no-explicit-any': 'off' } }, // disable this particular rule for now since the `any` annotations are very tricky to get rid of + { + rules: { + '@typescript-eslint/no-explicit-any': 'off', // disable this particular rule for now, since the `any` annotations are very tricky to get rid of + '@typescript-eslint/no-unused-expressions': 'off', // turn this off too for now, otherwise ESLint says "Cannot read properties of undefined" + }, + }, ] From f7496192e706c47afd0b5e234f79c4cd21e50f91 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:51:45 -0400 Subject: [PATCH 14/23] remove another require-style import; set esModuleInterop to true --- common/src/envs/is-prod.ts | 4 ++-- common/tsconfig.js | 1 + common/tsconfig.json | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/common/src/envs/is-prod.ts b/common/src/envs/is-prod.ts index 76d98ff..d535e14 100644 --- a/common/src/envs/is-prod.ts +++ b/common/src/envs/is-prod.ts @@ -1,3 +1,5 @@ +import { admin } from 'firebase-admin' + export const isProd = () => { // For cloud run API service if (process.env.ENVIRONMENT) { @@ -7,8 +9,6 @@ export const isProd = () => { return process.env.NEXT_PUBLIC_FIREBASE_ENV == 'PROD' } else { // For local scripts and cloud functions - // eslint-disable-next-line @typescript-eslint/no-var-requires - const admin = require('firebase-admin') return admin.app().options.projectId === 'polylove' } } diff --git a/common/tsconfig.js b/common/tsconfig.js index 6beb21b..e9bb67a 100644 --- a/common/tsconfig.js +++ b/common/tsconfig.js @@ -16,6 +16,7 @@ export default { 'common/*': ['./src/*', '../lib/*'], }, resolveJsonModule: true, + esModuleInterop: true, }, include: ['src/**/*.ts'], } diff --git a/common/tsconfig.json b/common/tsconfig.json index 6eaa9aa..09eab2a 100644 --- a/common/tsconfig.json +++ b/common/tsconfig.json @@ -14,7 +14,8 @@ "paths": { "common/*": ["./src/*", "../lib/*"] }, - "resolveJsonModule": true + "resolveJsonModule": true, + "esModuleInterop": true }, "include": ["src/**/*.ts"] } From 289eea18c9160f51d7e4926068615f6ed40997ef Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:56:53 -0400 Subject: [PATCH 15/23] remove unused variables --- common/src/love/lover.ts | 2 +- common/src/secrets.ts | 2 +- common/src/util/json.ts | 2 +- common/src/util/parse.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/src/love/lover.ts b/common/src/love/lover.ts index f334178..cf2da97 100644 --- a/common/src/love/lover.ts +++ b/common/src/love/lover.ts @@ -1,6 +1,6 @@ import { Row, run, SupabaseClient } from 'common/supabase/utils' import { User } from 'common/user' -import { Database } from 'common/supabase/schema' +//import { Database } from 'common/supabase/schema' export type LoverRow = Row<'lovers'> export type Lover = LoverRow & { user: User } diff --git a/common/src/secrets.ts b/common/src/secrets.ts index fe85a2d..c6dc647 100644 --- a/common/src/secrets.ts +++ b/common/src/secrets.ts @@ -91,7 +91,7 @@ export const getServiceAccountCredentials = (env: 'PROD' | 'DEV') => { try { return JSON.parse(readFileSync(keyPath, { encoding: 'utf8' })) - } catch (e) { + } catch { throw new Error(`Failed to load service account key from ${keyPath}.`) } } diff --git a/common/src/util/json.ts b/common/src/util/json.ts index c975f55..e772069 100644 --- a/common/src/util/json.ts +++ b/common/src/util/json.ts @@ -1,7 +1,7 @@ export const safeJsonParse = (json: string | undefined | null) => { try { return JSON.parse(json ?? '') - } catch (e) { + } catch { return null } } diff --git a/common/src/util/parse.ts b/common/src/util/parse.ts index 74713b1..11a7922 100644 --- a/common/src/util/parse.ts +++ b/common/src/util/parse.ts @@ -2,7 +2,7 @@ import { getText, getSchema, getTextSerializersFromSchema, - Node, + //Node, JSONContent, } from '@tiptap/core' import { Node as ProseMirrorNode } from '@tiptap/pm/model' From bad5851460be1db731ecd22d98aa7e60f980431b Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 03:58:44 -0400 Subject: [PATCH 16/23] make is-prod.ts import a default import --- common/src/envs/is-prod.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/envs/is-prod.ts b/common/src/envs/is-prod.ts index d535e14..251d620 100644 --- a/common/src/envs/is-prod.ts +++ b/common/src/envs/is-prod.ts @@ -1,4 +1,4 @@ -import { admin } from 'firebase-admin' +import admin from 'firebase-admin' export const isProd = () => { // For cloud run API service From f9fac4f6219f6b2d651976f4d6438750be68417f Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 04:00:46 -0400 Subject: [PATCH 17/23] limit while loop for binary search --- common/src/util/algos.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/util/algos.ts b/common/src/util/algos.ts index 7fe2118..9e300da 100644 --- a/common/src/util/algos.ts +++ b/common/src/util/algos.ts @@ -5,7 +5,7 @@ export function binarySearch( ) { let mid = 0 let i = 0 - while (true) { + while (i <= 100002) { mid = min + (max - min) / 2 // Break once we've reached max precision. From 4a1ad60813410bcf823ef41a670675b5f162f1b5 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 04:01:03 -0400 Subject: [PATCH 18/23] remove ts-ignore --- common/src/api/zod-types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/common/src/api/zod-types.ts b/common/src/api/zod-types.ts index c3cab69..853266c 100644 --- a/common/src/api/zod-types.ts +++ b/common/src/api/zod-types.ts @@ -8,7 +8,6 @@ export const arraybeSchema = z .or(z.string()) .transform(arrify) -// @ts-ignore export const contentSchema: z.ZodType = z.lazy(() => z.intersection( z.record(z.any()), From 00a6aee1b2479598b1299f7a3dff63d52446feea Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 04:11:38 -0400 Subject: [PATCH 19/23] fix type error by stringifying path in src/util/api.ts --- common/src/util/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/util/api.ts b/common/src/util/api.ts index 9005cd3..3cf6a43 100644 --- a/common/src/util/api.ts +++ b/common/src/util/api.ts @@ -15,7 +15,7 @@ export const typedAPICall =

( ) => { // parse any params that should part of the path (like market/:id) const newParams: any = {} - let url = getApiUrl(path) + let url: string = getApiUrl(String(path)); // `path` could be a string or number, we don't know forEach(params, (v, k) => { if (url.includes(`:${k}`)) { url = url.replace(`:${k}`, v + '') From bafcbc6399ce5841bdaa25904a5c2160fdb1a6c8 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 04:12:19 -0400 Subject: [PATCH 20/23] run prettier --- common/src/util/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/util/api.ts b/common/src/util/api.ts index 3cf6a43..4849f6c 100644 --- a/common/src/util/api.ts +++ b/common/src/util/api.ts @@ -15,7 +15,7 @@ export const typedAPICall =

( ) => { // parse any params that should part of the path (like market/:id) const newParams: any = {} - let url: string = getApiUrl(String(path)); // `path` could be a string or number, we don't know + let url: string = getApiUrl(String(path)) // `path` could be a string or number, we don't know forEach(params, (v, k) => { if (url.includes(`:${k}`)) { url = url.replace(`:${k}`, v + '') From 5036ebdbbeb1ecd4b27a9fccccf47977fbf67192 Mon Sep 17 00:00:00 2001 From: duck_master Date: Tue, 5 Aug 2025 21:39:32 -0400 Subject: [PATCH 21/23] introduce ci-common.yml --- .github/workflows/ci-common.yml | 66 +++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/ci-common.yml diff --git a/.github/workflows/ci-common.yml b/.github/workflows/ci-common.yml new file mode 100644 index 0000000..2d46287 --- /dev/null +++ b/.github/workflows/ci-common.yml @@ -0,0 +1,66 @@ +name: CI checks for common workspace + +on: + pull_request: + branches: ['main'] + paths: ['common/**/*', '!**/*.{txt,md}'] + push: + branches: ['main'] + paths: ['common/**/*', '!**/*.{txt,md}'] + +defaults: + run: + working-directory: 'common' +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + cache: 'yarn' + - name: Install yarn + run: npm install -g yarn + - name: Install dependencies + run: yarn + - name: Run tests + run: yarn test + eslint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + cache: 'yarn' + - name: Install yarn + run: npm install -g yarn + - name: Install dependencies + run: yarn + - name: Run ESLint + run: yarn eslint . + prettier: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + cache: 'yarn' + - name: Install yarn + run: npm install -g yarn + - name: Install dependencies + run: yarn + - name: Run Prettier + run: yarn prettier . --check --ignore-unknown + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + cache: 'yarn' + - name: Install yarn + run: npm install -g yarn + - name: Install dependencies + run: yarn + - name: Run tsc to check types + run: yarn tsc . --noEmit --strict From f876cb192ea4405b69d78a75d5c9612904a7d1eb Mon Sep 17 00:00:00 2001 From: duck_master Date: Wed, 6 Aug 2025 18:53:41 -0400 Subject: [PATCH 22/23] undo changes to yarn.lock --- yarn.lock | 363 +----------------------------------------------------- 1 file changed, 2 insertions(+), 361 deletions(-) diff --git a/yarn.lock b/yarn.lock index a2a98b6..1bd7abf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1201,44 +1201,11 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/eslint-utils@^4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" - integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== - "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/config-array@^0.21.0": - version "0.21.0" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636" - integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== - dependencies: - "@eslint/object-schema" "^2.1.6" - debug "^4.3.1" - minimatch "^3.1.2" - -"@eslint/config-helpers@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286" - integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== - -"@eslint/core@^0.15.0", "@eslint/core@^0.15.1": - version "0.15.1" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60" - integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== - dependencies: - "@types/json-schema" "^7.0.15" - "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -1254,44 +1221,11 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/eslintrc@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" - integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^10.0.1" - globals "^14.0.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - "@eslint/js@8.57.0": version "8.57.0" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@eslint/js@9.32.0": - version "9.32.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.32.0.tgz#a02916f58bd587ea276876cb051b579a3d75d091" - integrity sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg== - -"@eslint/object-schema@^2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" - integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== - -"@eslint/plugin-kit@^0.3.4": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz#c6b9f165e94bf4d9fdd493f1c028a94aaf5fc1cc" - integrity sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw== - dependencies: - "@eslint/core" "^0.15.1" - levn "^0.4.1" - "@fastify/busboy@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-1.2.1.tgz#9c6db24a55f8b803b5222753b24fe3aea2ba9ca3" @@ -1901,19 +1835,6 @@ resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-1.0.6.tgz#35dd26987228b39ef2316db3b1245c42eb19e324" integrity sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ== -"@humanfs/core@^0.19.1": - version "0.19.1" - resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" - integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== - -"@humanfs/node@^0.16.6": - version "0.16.6" - resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" - integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== - dependencies: - "@humanfs/core" "^0.19.1" - "@humanwhocodes/retry" "^0.3.0" - "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -1933,16 +1854,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@humanwhocodes/retry@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" - integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== - -"@humanwhocodes/retry@^0.4.2": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" - integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== - "@img/sharp-darwin-arm64@0.33.5": version "0.33.5" resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08" @@ -3606,11 +3517,6 @@ "@types/d3-transition" "*" "@types/d3-zoom" "*" -"@types/estree@^1.0.6": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - "@types/express-serve-static-core@^4.17.33": version "4.19.5" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" @@ -3688,7 +3594,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15": +"@types/json-schema@^7.0.12": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -3912,21 +3818,6 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/eslint-plugin@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.39.0.tgz#c9afec1866ee1a6ea3d768b5f8e92201efbbba06" - integrity sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.39.0" - "@typescript-eslint/type-utils" "8.39.0" - "@typescript-eslint/utils" "8.39.0" - "@typescript-eslint/visitor-keys" "8.39.0" - graphemer "^1.4.0" - ignore "^7.0.0" - natural-compare "^1.4.0" - ts-api-utils "^2.1.0" - "@typescript-eslint/parser@7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.4.0.tgz#540f4321de1e52b886c0fa68628af1459954c1f1" @@ -3938,17 +3829,6 @@ "@typescript-eslint/visitor-keys" "7.4.0" debug "^4.3.4" -"@typescript-eslint/parser@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.39.0.tgz#c4b895d7a47f4cd5ee6ee77ea30e61d58b802008" - integrity sha512-g3WpVQHngx0aLXn6kfIYCZxM6rRJlWzEkVpqEFLT3SgEDsp9cpCbxxgwnE504q4H+ruSDh/VGS6nqZIDynP+vg== - dependencies: - "@typescript-eslint/scope-manager" "8.39.0" - "@typescript-eslint/types" "8.39.0" - "@typescript-eslint/typescript-estree" "8.39.0" - "@typescript-eslint/visitor-keys" "8.39.0" - debug "^4.3.4" - "@typescript-eslint/parser@^5.4.2 || ^6.0.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" @@ -3960,15 +3840,6 @@ "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" -"@typescript-eslint/project-service@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.39.0.tgz#71cb29c3f8139f99a905b8705127bffc2ae84759" - integrity sha512-CTzJqaSq30V/Z2Og9jogzZt8lJRR5TKlAdXmWgdu4hgcC9Kww5flQ+xFvMxIBWVNdxJO7OifgdOK4PokMIWPew== - dependencies: - "@typescript-eslint/tsconfig-utils" "^8.39.0" - "@typescript-eslint/types" "^8.39.0" - debug "^4.3.4" - "@typescript-eslint/scope-manager@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" @@ -3985,19 +3856,6 @@ "@typescript-eslint/types" "7.4.0" "@typescript-eslint/visitor-keys" "7.4.0" -"@typescript-eslint/scope-manager@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.39.0.tgz#ba4bf6d8257bbc172c298febf16bc22df4856570" - integrity sha512-8QOzff9UKxOh6npZQ/4FQu4mjdOCGSdO3p44ww0hk8Vu+IGbg0tB/H1LcTARRDzGCC8pDGbh2rissBuuoPgH8A== - dependencies: - "@typescript-eslint/types" "8.39.0" - "@typescript-eslint/visitor-keys" "8.39.0" - -"@typescript-eslint/tsconfig-utils@8.39.0", "@typescript-eslint/tsconfig-utils@^8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.39.0.tgz#b2e87fef41a3067c570533b722f6af47be213f13" - integrity sha512-Fd3/QjmFV2sKmvv3Mrj8r6N8CryYiCS8Wdb/6/rgOXAWGcFuc+VkQuG28uk/4kVNVZBQuuDHEDUpo/pQ32zsIQ== - "@typescript-eslint/type-utils@7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz#cfcaab21bcca441c57da5d3a1153555e39028cbd" @@ -4008,17 +3866,6 @@ debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/type-utils@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.39.0.tgz#310ec781ae5e7bb0f5940bfd652573587f22786b" - integrity sha512-6B3z0c1DXVT2vYA9+z9axjtc09rqKUPRmijD5m9iv8iQpHBRYRMBcgxSiKTZKm6FwWw1/cI4v6em35OsKCiN5Q== - dependencies: - "@typescript-eslint/types" "8.39.0" - "@typescript-eslint/typescript-estree" "8.39.0" - "@typescript-eslint/utils" "8.39.0" - debug "^4.3.4" - ts-api-utils "^2.1.0" - "@typescript-eslint/types@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" @@ -4029,11 +3876,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.4.0.tgz#ee9dafa75c99eaee49de6dcc9348b45d354419b6" integrity sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw== -"@typescript-eslint/types@8.39.0", "@typescript-eslint/types@^8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.39.0.tgz#80f010b7169d434a91cd0529d70a528dbc9c99c6" - integrity sha512-ArDdaOllnCj3yn/lzKn9s0pBQYmmyme/v1HbGIGB0GB/knFI3fWMHloC+oYTJW46tVbYnGKTMDK4ah1sC2v0Kg== - "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" @@ -4062,22 +3904,6 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/typescript-estree@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.0.tgz#b9477a5c47a0feceffe91adf553ad9a3cd4cb3d6" - integrity sha512-ndWdiflRMvfIgQRpckQQLiB5qAKQ7w++V4LlCHwp62eym1HLB/kw7D9f2e8ytONls/jt89TEasgvb+VwnRprsw== - dependencies: - "@typescript-eslint/project-service" "8.39.0" - "@typescript-eslint/tsconfig-utils" "8.39.0" - "@typescript-eslint/types" "8.39.0" - "@typescript-eslint/visitor-keys" "8.39.0" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^2.1.0" - "@typescript-eslint/utils@7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.4.0.tgz#d889a0630cab88bddedaf7c845c64a00576257bd" @@ -4091,16 +3917,6 @@ "@typescript-eslint/typescript-estree" "7.4.0" semver "^7.5.4" -"@typescript-eslint/utils@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.39.0.tgz#dfea42f3c7ec85f9f3e994ff0bba8f3b2f09e220" - integrity sha512-4GVSvNA0Vx1Ktwvf4sFE+exxJ3QGUorQG1/A5mRfRNZtkBT2xrA/BCO2H0eALx/PnvCS6/vmYwRdDA41EoffkQ== - dependencies: - "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.39.0" - "@typescript-eslint/types" "8.39.0" - "@typescript-eslint/typescript-estree" "8.39.0" - "@typescript-eslint/visitor-keys@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" @@ -4117,14 +3933,6 @@ "@typescript-eslint/types" "7.4.0" eslint-visitor-keys "^3.4.1" -"@typescript-eslint/visitor-keys@8.39.0": - version "8.39.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.39.0.tgz#5d619a6e810cdd3fd1913632719cbccab08bf875" - integrity sha512-ldgiJ+VAhQCfIjeOgu8Kj5nSxds0ktPOSO9p4+0VDH2R2pLvQraaM5Oen2d7NxzMCm+Sn/vJT+mv2H5u6b/3fA== - dependencies: - "@typescript-eslint/types" "8.39.0" - eslint-visitor-keys "^4.2.1" - "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -4174,11 +3982,6 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.15.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== - acorn@^8.4.1, acorn@^8.9.0: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" @@ -4673,13 +4476,6 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - browser-headers@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/browser-headers/-/browser-headers-0.4.1.tgz#4308a7ad3b240f4203dbb45acedb38dc2d65dd02" @@ -5166,15 +4962,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - css-background-parser@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/css-background-parser/-/css-background-parser-0.1.0.tgz#48a17f7fe6d4d4f1bca3177ddf16c5617950741b" @@ -5946,24 +5733,11 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-scope@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" - integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" - integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== - eslint@8.57.0: version "8.57.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" @@ -6008,56 +5782,6 @@ eslint@8.57.0: strip-ansi "^6.0.1" text-table "^0.2.0" -eslint@9.32.0: - version "9.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.32.0.tgz#4ea28df4a8dbc454e1251e0f3aed4bcf4ce50a47" - integrity sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.21.0" - "@eslint/config-helpers" "^0.3.0" - "@eslint/core" "^0.15.0" - "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.32.0" - "@eslint/plugin-kit" "^0.3.4" - "@humanfs/node" "^0.16.6" - "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.4.2" - "@types/estree" "^1.0.6" - "@types/json-schema" "^7.0.15" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.6" - debug "^4.3.2" - escape-string-regexp "^4.0.0" - eslint-scope "^8.4.0" - eslint-visitor-keys "^4.2.1" - espree "^10.4.0" - esquery "^1.5.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" - find-up "^5.0.0" - glob-parent "^6.0.2" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - json-stable-stringify-without-jsonify "^1.0.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - -espree@^10.0.1, espree@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" - integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== - dependencies: - acorn "^8.15.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.1" - espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -6079,13 +5803,6 @@ esquery@^1.4.2: dependencies: estraverse "^5.1.0" -esquery@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - dependencies: - estraverse "^5.1.0" - esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -6212,17 +5929,6 @@ fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -6296,13 +6002,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-entry-cache@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" - integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== - dependencies: - flat-cache "^4.0.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -6310,13 +6009,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -6406,14 +6098,6 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" -flat-cache@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" - integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.4" - flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" @@ -6686,11 +6370,6 @@ glob@^8.0.0: minimatch "^5.0.1" once "^1.3.0" -globals@16.3.0: - version "16.3.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-16.3.0.tgz#66118e765ddaf9e2d880f7e17658543f93f1f667" - integrity sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ== - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -6703,11 +6382,6 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== - globalthis@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -7008,11 +6682,6 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -ignore@^7.0.0: - version "7.0.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" - integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== - import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -7943,7 +7612,7 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" -keyv@^4.5.3, keyv@^4.5.4: +keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -8289,14 +7958,6 @@ micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -10002,11 +9663,6 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.6.0: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== - semver@^7.6.3: version "7.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" @@ -10714,11 +10370,6 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== -ts-api-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== - ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -10906,16 +10557,6 @@ typed-emitter@^2.1.0: optionalDependencies: rxjs "^7.5.2" -typescript-eslint@8.39.0: - version "8.39.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.39.0.tgz#b19c1a925cf8566831ae3875d2881ee2349808a5" - integrity sha512-lH8FvtdtzcHJCkMOKnN73LIn6SLTpoojgJqDAxPm1jCR14eWSGPX8ul/gggBdPMk/d5+u9V854vTYQ8T5jF/1Q== - dependencies: - "@typescript-eslint/eslint-plugin" "8.39.0" - "@typescript-eslint/parser" "8.39.0" - "@typescript-eslint/typescript-estree" "8.39.0" - "@typescript-eslint/utils" "8.39.0" - typescript@5.5.4: version "5.5.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" From 04df078af2803d9402275c83569bfee7f5383513 Mon Sep 17 00:00:00 2001 From: duck_master Date: Thu, 14 Aug 2025 20:44:28 -0400 Subject: [PATCH 23/23] fix tsc command in CI, binarysearch iteration loop bound --- .github/workflows/ci-common.yml | 2 +- common/src/util/algos.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-common.yml b/.github/workflows/ci-common.yml index 2d46287..b1f2adc 100644 --- a/.github/workflows/ci-common.yml +++ b/.github/workflows/ci-common.yml @@ -63,4 +63,4 @@ jobs: - name: Install dependencies run: yarn - name: Run tsc to check types - run: yarn tsc . --noEmit --strict + run: yarn tsc --noEmit --strict diff --git a/common/src/util/algos.ts b/common/src/util/algos.ts index 9e300da..95b7a98 100644 --- a/common/src/util/algos.ts +++ b/common/src/util/algos.ts @@ -5,7 +5,7 @@ export function binarySearch( ) { let mid = 0 let i = 0 - while (i <= 100002) { + while (i <= 100000) { mid = min + (max - min) / 2 // Break once we've reached max precision.