diff --git a/bun.lock b/bun.lock index c0929ba081..3ec792db01 100644 --- a/bun.lock +++ b/bun.lock @@ -8,10 +8,10 @@ "@sentry/sveltekit": "^10.28.0", "@statsig/js-client": "^3.33.0", "@statsig/session-replay": "^3.33.0", + "@statsig/statsig-node-core": "^0.19.3", "@statsig/web-analytics": "^3.33.0", "h3": "^1.15.4", "sharp": "^0.34.5", - "statsig-node": "^6.5.1", }, "devDependencies": { "@appwrite.io/console": "^0.6.4", @@ -464,6 +464,22 @@ "@number-flow/svelte": ["@number-flow/svelte@0.3.9", "", { "dependencies": { "esm-env": "1.2.2", "number-flow": "0.5.8" }, "peerDependencies": { "svelte": "5.42.2" } }, "sha512-CTw1+e0074GzbPX2IHcNCaK8nqxGNCOIUnQUjEjhcmBwBxOAhN3GYLQ6cJHvhQnWwplVe4eQ3z+c25Vttr2stQ=="], + "@octokit/auth-token": ["@octokit/auth-token@5.1.2", "", {}, "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="], + + "@octokit/core": ["@octokit/core@6.1.6", "", { "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.2.2", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" } }, "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA=="], + + "@octokit/endpoint": ["@octokit/endpoint@10.1.4", "", { "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA=="], + + "@octokit/graphql": ["@octokit/graphql@8.2.2", "", { "dependencies": { "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA=="], + + "@octokit/openapi-types": ["@octokit/openapi-types@25.1.0", "", {}, "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="], + + "@octokit/request": ["@octokit/request@9.2.4", "", { "dependencies": { "@octokit/endpoint": "^10.1.4", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA=="], + + "@octokit/request-error": ["@octokit/request-error@6.1.8", "", { "dependencies": { "@octokit/types": "^14.0.0" } }, "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ=="], + + "@octokit/types": ["@octokit/types@14.1.0", "", { "dependencies": { "@octokit/openapi-types": "^25.1.0" } }, "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g=="], + "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.208.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg=="], @@ -732,6 +748,24 @@ "@statsig/session-replay": ["@statsig/session-replay@3.33.0", "", { "dependencies": { "@rrweb/record": "2.0.0-alpha.17", "@statsig/client-core": "3.33.0", "rrweb": "2.0.0-alpha.17" } }, "sha512-sHWFczZGnn9E0JzuB5QH02WGX61Q9ZsBEHD6Z0EHcldKMs33KanE1tTvraRlCMSy8hlbyVdtjwjc4KBAmtABxQ=="], + "@statsig/statsig-node-core": ["@statsig/statsig-node-core@0.19.3", "", { "dependencies": { "@octokit/core": "^6", "https-proxy-agent": "^7.0.6", "node-fetch": "2.7.0" }, "optionalDependencies": { "@statsig/statsig-node-core-darwin-arm64": "0.19.3", "@statsig/statsig-node-core-darwin-x64": "0.19.3", "@statsig/statsig-node-core-linux-arm64-gnu": "0.19.3", "@statsig/statsig-node-core-linux-arm64-musl": "0.19.3", "@statsig/statsig-node-core-linux-x64-gnu": "0.19.3", "@statsig/statsig-node-core-linux-x64-musl": "0.19.3", "@statsig/statsig-node-core-win32-ia32-msvc": "0.19.3", "@statsig/statsig-node-core-win32-x64-msvc": "0.19.3" } }, "sha512-dzrG/NSaqg7lf8TgUNgivkbQqQvtfB2PMIIqJ4neHzn5Hb8iU6Zwd0iSkr5W+sEweXtV1Hj4LPtm2uaR0vIxGQ=="], + + "@statsig/statsig-node-core-darwin-arm64": ["@statsig/statsig-node-core-darwin-arm64@0.19.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-B0ck7PkA3IXmGUAZLlZOORI/fR4SPlXdwRyRlwQ//Km/pZ1IlDyXzc90UPXkf6uzOCjc/uuDsN3yDpSb7NNMzQ=="], + + "@statsig/statsig-node-core-darwin-x64": ["@statsig/statsig-node-core-darwin-x64@0.19.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-nKy6r9AqVKuvs/b8oDsuuWS3gycNct2grERZdfSE2557ZIPk69948SmAojWGXPminzaWxcZb+W2aQgITzwr6kg=="], + + "@statsig/statsig-node-core-linux-arm64-gnu": ["@statsig/statsig-node-core-linux-arm64-gnu@0.19.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-wMX4DXAX2jdrhFaOkiPqMyMkD/koQKdeDmf32Ep4ztkPXVFp5LlvNVwxQlJYN9dB/RmYGfrxKHLW3tR5wRr6NQ=="], + + "@statsig/statsig-node-core-linux-arm64-musl": ["@statsig/statsig-node-core-linux-arm64-musl@0.19.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-2aV9UpyksT14UBRDTp0Yw4otSkGb/K7abR+1steY1TtmzQOczxxkkV3kmhzto8R5MzsOFtsvgkdgkEzwBgKJmA=="], + + "@statsig/statsig-node-core-linux-x64-gnu": ["@statsig/statsig-node-core-linux-x64-gnu@0.19.3", "", { "os": "linux", "cpu": "x64" }, "sha512-LpuoKpRyyoGo8gB7HubTbi5au+p7bIhWw3JZfGe6ea/25RjTHmaKo7C9VDSbedwvUlP2VW7YtBsGDMco1r+iAA=="], + + "@statsig/statsig-node-core-linux-x64-musl": ["@statsig/statsig-node-core-linux-x64-musl@0.19.3", "", { "os": "linux", "cpu": "x64" }, "sha512-flD4hod+XK2JB90VgRNhxtl20hwNEI62/kOUoAXsO5wyLQGdW80hib8PmFS2IKDonJpFY0Wh7G9UW2cpv+X67g=="], + + "@statsig/statsig-node-core-win32-ia32-msvc": ["@statsig/statsig-node-core-win32-ia32-msvc@0.19.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-CZOzJ7tQBWiR3ErBM7VQyIWT4aTdUV/yLhdGkJxasb0tYaUop1cK+TB03R0nhOkgX7fVdPVp0aimwbKayP2+OQ=="], + + "@statsig/statsig-node-core-win32-x64-msvc": ["@statsig/statsig-node-core-win32-x64-msvc@0.19.3", "", { "os": "win32", "cpu": "x64" }, "sha512-+BXcNKUvquGjXh4bHAhP/wGXW8kCE2Mzo+5/3bYf2+WuwPHEegX9EcmdohqNGGrttKTZGrVyu1alOrJZaYz78g=="], + "@statsig/web-analytics": ["@statsig/web-analytics@3.33.0", "", { "dependencies": { "@statsig/client-core": "3.33.0", "@statsig/js-client": "3.33.0", "web-vitals": "5.0.3" } }, "sha512-M0uNIWeJHkcWh6f1Dg4YeHMCza7nzBSk1wFktNsu48viwhp6qCz7ucNMdjgpM4s2FL/mzVf+jHvZpuB7Z9aL4A=="], "@sveltejs/acorn-typescript": ["@sveltejs/acorn-typescript@1.0.5", "", { "peerDependencies": { "acorn": "8.15.0" } }, "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ=="], @@ -928,7 +962,7 @@ "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "8.15.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], "agentkeepalive": ["agentkeepalive@4.6.0", "", { "dependencies": { "humanize-ms": "1.2.1" } }, "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ=="], @@ -988,6 +1022,8 @@ "baseline-browser-mapping": ["baseline-browser-mapping@2.8.6", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw=="], + "before-after-hook": ["before-after-hook@3.0.2", "", {}, "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="], + "bidi-js": ["bidi-js@1.0.3", "", { "dependencies": { "require-from-string": "^2.0.2" } }, "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw=="], "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], @@ -1246,6 +1282,8 @@ "exponential-backoff": ["exponential-backoff@3.1.2", "", {}, "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA=="], + "fast-content-type-parse": ["fast-content-type-parse@2.0.1", "", {}, "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "@nodelib/fs.walk": "1.2.8", "glob-parent": "5.1.2", "merge2": "1.4.1", "micromatch": "4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], @@ -1362,7 +1400,7 @@ "http-proxy-agent": ["http-proxy-agent@5.0.0", "", { "dependencies": { "@tootallnate/once": "2.0.0", "agent-base": "6.0.2", "debug": "4.4.1" } }, "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w=="], - "https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6.0.2", "debug": "4.4.1" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], "humanize-ms": ["humanize-ms@1.2.1", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ=="], @@ -1400,8 +1438,6 @@ "ip-address": ["ip-address@10.0.1", "", {}, "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA=="], - "ip3country": ["ip3country@5.0.0", "", {}, "sha512-lcFLMFU4eO1Z7tIpbVFZkaZ5ltqpeaRx7L9NsAbA9uA7/O/rj3RF8+evE5gDitooaTTIqjdzZrenFO/OOxQ2ew=="], - "iron-webcrypto": ["iron-webcrypto@1.2.1", "", {}, "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg=="], "is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="], @@ -1888,8 +1924,6 @@ "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], - "statsig-node": ["statsig-node@6.5.1", "", { "dependencies": { "ip3country": "^5.0.0", "node-fetch": "^2.7.0", "ua-parser-js": "^1.0.2", "uuid": "^8.3.2" } }, "sha512-/rKvMMN9SWTK8+b7MyRP1wOsStsKf55Mdj8O2ffV/bCQ/38bXYCC/GVd3gVvBSwVCibAnkTz2v1gpRJSIKsBIg=="], - "std-env": ["std-env@3.9.0", "", {}, "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw=="], "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "8.0.0", "is-fullwidth-code-point": "3.0.0", "strip-ansi": "6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -2028,8 +2062,6 @@ "typescript-eslint": ["typescript-eslint@8.48.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.48.1", "@typescript-eslint/parser": "8.48.1", "@typescript-eslint/typescript-estree": "8.48.1", "@typescript-eslint/utils": "8.48.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-FbOKN1fqNoXp1hIl5KYpObVrp0mCn+CLgn479nmu2IsRMrx2vyv74MmsBLVlhg8qVwNFGbXSp8fh1zp8pEoC2A=="], - "ua-parser-js": ["ua-parser-js@1.0.41", "", { "bin": { "ua-parser-js": "script/cli.js" } }, "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug=="], - "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="], "ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], @@ -2046,6 +2078,8 @@ "unique-slug": ["unique-slug@3.0.0", "", { "dependencies": { "imurmurhash": "0.1.4" } }, "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w=="], + "universal-user-agent": ["universal-user-agent@7.0.3", "", {}, "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="], + "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], "unplugin": ["unplugin@1.0.1", "", { "dependencies": { "acorn": "8.15.0", "chokidar": "3.6.0", "webpack-sources": "3.3.3", "webpack-virtual-modules": "0.5.0" } }, "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA=="], @@ -2058,8 +2092,6 @@ "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - "uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], - "validator": ["validator@13.15.15", "", {}, "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A=="], "vaul-svelte": ["vaul-svelte@1.0.0-next.7", "", { "dependencies": { "runed": "0.23.4", "svelte-toolbelt": "0.7.1" }, "peerDependencies": { "svelte": "5.42.2" } }, "sha512-7zN7Bi3dFQixvvbUJY9uGDe7Ws/dGZeBQR2pXdXmzQiakjrxBvWo0QrmsX3HK+VH+SZOltz378cmgmCS9f9rSg=="], @@ -2188,6 +2220,8 @@ "@sentry/bundler-plugin-core/magic-string": ["magic-string@0.30.8", "", { "dependencies": { "@jridgewell/sourcemap-codec": "1.5.5" } }, "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ=="], + "@sentry/cli/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6.0.2", "debug": "4.4.1" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], + "@sentry/cli/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "5.0.0" }, "optionalDependencies": { "encoding": "0.1.13" } }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], "@sentry/node/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "2.0.2" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], @@ -2196,6 +2230,8 @@ "@sentry/sveltekit/magic-string": ["magic-string@0.30.7", "", { "dependencies": { "@jridgewell/sourcemap-codec": "1.5.5" } }, "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA=="], + "@statsig/statsig-node-core/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "5.0.0" }, "optionalDependencies": { "encoding": "0.1.13" } }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + "@statsig/web-analytics/web-vitals": ["web-vitals@5.0.3", "", {}, "sha512-4KmOFYxj7qT6RAdCH0SWwq8eKeXNhAFXR4PmgF6nrWFmrJ41n7lq3UCA6UK0GebQ4uu+XP8e8zGjaDO3wZlqTg=="], "@sveltejs/enhanced-img/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], @@ -2256,6 +2292,8 @@ "htmlparser2/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], + "http-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + "image-q/@types/node": ["@types/node@16.9.1", "", {}, "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g=="], "jsonc-eslint-parser/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], @@ -2268,6 +2306,8 @@ "load-bmfont/phin": ["phin@3.7.1", "", { "dependencies": { "centra": "2.7.0" } }, "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ=="], + "make-fetch-happen/https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6.0.2", "debug": "4.4.1" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], + "make-fetch-happen/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], @@ -2304,9 +2344,9 @@ "rimraf/glob": ["glob@7.2.3", "", { "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" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], - "ssri/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], + "socks-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], - "statsig-node/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "5.0.0" }, "optionalDependencies": { "encoding": "0.1.13" } }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + "ssri/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], "string_decoder/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], @@ -2364,6 +2404,8 @@ "@sentry/bundler-plugin-core/glob/minipass": ["minipass@4.2.8", "", {}, "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ=="], + "@sentry/cli/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + "@sentry/node/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "1.0.2" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@emnapi/runtime": ["@emnapi/runtime@1.6.0", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA=="], @@ -2388,6 +2430,8 @@ "glob/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "1.0.2" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "make-fetch-happen/https-proxy-agent/agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4.4.1" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], + "readable-web-to-node-stream/readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "1.5.1", "ieee754": "1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], "sucrase/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "2.0.2" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], diff --git a/package.json b/package.json index 1072c7a41d..8a92193234 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,10 @@ "@sentry/sveltekit": "^10.28.0", "@statsig/js-client": "^3.33.0", "@statsig/session-replay": "^3.33.0", + "@statsig/statsig-node-core": "^0.19.3", "@statsig/web-analytics": "^3.33.0", "h3": "^1.15.4", - "sharp": "^0.34.5", - "statsig-node": "^6.5.1" + "sharp": "^0.34.5" }, "devDependencies": { "@appwrite.io/console": "^0.6.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02619aa48d..58233b332c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,9 @@ importers: '@statsig/session-replay': specifier: ^3.33.0 version: 3.33.0 + '@statsig/statsig-node-core': + specifier: ^0.19.3 + version: 0.19.3(encoding@0.1.13) '@statsig/web-analytics': specifier: ^3.33.0 version: 3.33.0 @@ -25,9 +28,6 @@ importers: sharp: specifier: ^0.34.5 version: 0.34.5 - statsig-node: - specifier: ^6.5.1 - version: 6.5.1(encoding@0.1.13) devDependencies: '@appwrite.io/console': specifier: ^0.6.4 @@ -50,9 +50,6 @@ importers: '@fingerprintjs/fingerprintjs': specifier: ^4.6.2 version: 4.6.2 - '@growthbook/growthbook': - specifier: ^1.6.5 - version: 1.6.5 '@internationalized/date': specifier: 3.5.0 version: 3.5.0 @@ -861,13 +858,6 @@ packages: integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== } - '@growthbook/growthbook@1.6.5': - resolution: - { - integrity: sha512-mUaMsgeUTpRIUOTn33EUXHRK6j7pxBjwqH4WpQyq+pukjd1AIzWlEa6w7i6bInJUcweGgP2beXZmaP6b6UPn7A== - } - engines: { node: '>=10' } - '@humanfs/core@0.19.1': resolution: { @@ -1695,6 +1685,60 @@ packages: peerDependencies: svelte: ^4 || ^5 + '@octokit/auth-token@5.1.2': + resolution: + { + integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw== + } + engines: { node: '>= 18' } + + '@octokit/core@6.1.6': + resolution: + { + integrity: sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA== + } + engines: { node: '>= 18' } + + '@octokit/endpoint@10.1.4': + resolution: + { + integrity: sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA== + } + engines: { node: '>= 18' } + + '@octokit/graphql@8.2.2': + resolution: + { + integrity: sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA== + } + engines: { node: '>= 18' } + + '@octokit/openapi-types@25.1.0': + resolution: + { + integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA== + } + + '@octokit/request-error@6.1.8': + resolution: + { + integrity: sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ== + } + engines: { node: '>= 18' } + + '@octokit/request@9.2.4': + resolution: + { + integrity: sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA== + } + engines: { node: '>= 18' } + + '@octokit/types@14.1.0': + resolution: + { + integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g== + } + '@opentelemetry/api-logs@0.208.0': resolution: { @@ -2732,6 +2776,85 @@ packages: integrity: sha512-sHWFczZGnn9E0JzuB5QH02WGX61Q9ZsBEHD6Z0EHcldKMs33KanE1tTvraRlCMSy8hlbyVdtjwjc4KBAmtABxQ== } + '@statsig/statsig-node-core-darwin-arm64@0.19.3': + resolution: + { + integrity: sha512-B0ck7PkA3IXmGUAZLlZOORI/fR4SPlXdwRyRlwQ//Km/pZ1IlDyXzc90UPXkf6uzOCjc/uuDsN3yDpSb7NNMzQ== + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [darwin] + + '@statsig/statsig-node-core-darwin-x64@0.19.3': + resolution: + { + integrity: sha512-nKy6r9AqVKuvs/b8oDsuuWS3gycNct2grERZdfSE2557ZIPk69948SmAojWGXPminzaWxcZb+W2aQgITzwr6kg== + } + engines: { node: '>= 10' } + cpu: [x64] + os: [darwin] + + '@statsig/statsig-node-core-linux-arm64-gnu@0.19.3': + resolution: + { + integrity: sha512-wMX4DXAX2jdrhFaOkiPqMyMkD/koQKdeDmf32Ep4ztkPXVFp5LlvNVwxQlJYN9dB/RmYGfrxKHLW3tR5wRr6NQ== + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [linux] + + '@statsig/statsig-node-core-linux-arm64-musl@0.19.3': + resolution: + { + integrity: sha512-2aV9UpyksT14UBRDTp0Yw4otSkGb/K7abR+1steY1TtmzQOczxxkkV3kmhzto8R5MzsOFtsvgkdgkEzwBgKJmA== + } + engines: { node: '>= 10' } + cpu: [arm64] + os: [linux] + + '@statsig/statsig-node-core-linux-x64-gnu@0.19.3': + resolution: + { + integrity: sha512-LpuoKpRyyoGo8gB7HubTbi5au+p7bIhWw3JZfGe6ea/25RjTHmaKo7C9VDSbedwvUlP2VW7YtBsGDMco1r+iAA== + } + engines: { node: '>= 10' } + cpu: [x64] + os: [linux] + + '@statsig/statsig-node-core-linux-x64-musl@0.19.3': + resolution: + { + integrity: sha512-flD4hod+XK2JB90VgRNhxtl20hwNEI62/kOUoAXsO5wyLQGdW80hib8PmFS2IKDonJpFY0Wh7G9UW2cpv+X67g== + } + engines: { node: '>= 10' } + cpu: [x64] + os: [linux] + + '@statsig/statsig-node-core-win32-ia32-msvc@0.19.3': + resolution: + { + integrity: sha512-CZOzJ7tQBWiR3ErBM7VQyIWT4aTdUV/yLhdGkJxasb0tYaUop1cK+TB03R0nhOkgX7fVdPVp0aimwbKayP2+OQ== + } + engines: { node: '>= 10' } + cpu: [ia32] + os: [win32] + + '@statsig/statsig-node-core-win32-x64-msvc@0.19.3': + resolution: + { + integrity: sha512-+BXcNKUvquGjXh4bHAhP/wGXW8kCE2Mzo+5/3bYf2+WuwPHEegX9EcmdohqNGGrttKTZGrVyu1alOrJZaYz78g== + } + engines: { node: '>= 10' } + cpu: [x64] + os: [win32] + + '@statsig/statsig-node-core@0.19.3': + resolution: + { + integrity: sha512-dzrG/NSaqg7lf8TgUNgivkbQqQvtfB2PMIIqJ4neHzn5Hb8iU6Zwd0iSkr5W+sEweXtV1Hj4LPtm2uaR0vIxGQ== + } + engines: { node: '>= 6.14.2 < 7 || >= 8.11.2 < 9 || >= 9.11.0 < 10 || >= 10.0.0' } + '@statsig/web-analytics@3.33.0': resolution: { @@ -3484,6 +3607,13 @@ packages: } engines: { node: '>= 6.0.0' } + agent-base@7.1.4: + resolution: + { + integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== + } + engines: { node: '>= 14' } + agentkeepalive@4.6.0: resolution: { @@ -3698,6 +3828,12 @@ packages: } hasBin: true + before-after-hook@3.0.2: + resolution: + { + integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A== + } + bidi-js@1.0.3: resolution: { @@ -4273,13 +4409,6 @@ packages: integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== } - dom-mutator@0.6.0: - resolution: - { - integrity: sha512-iCt9o0aYfXMUkz/43ZOAUFQYotjGB+GNbYJiJdz4TgXkyToXbbRy5S6FbTp72lRBtfpUMwEc1KmpFEU4CZeoNg== - } - engines: { node: '>=10' } - dom-serializer@2.0.0: resolution: { @@ -4679,6 +4808,12 @@ packages: integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA== } + fast-content-type-parse@2.0.1: + resolution: + { + integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q== + } + fast-deep-equal@3.1.3: resolution: { @@ -5134,6 +5269,13 @@ packages: } engines: { node: '>= 6' } + https-proxy-agent@7.0.6: + resolution: + { + integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + } + engines: { node: '>= 14' } + humanize-ms@1.2.1: resolution: { @@ -5258,12 +5400,6 @@ packages: } engines: { node: '>= 12' } - ip3country@5.0.0: - resolution: - { - integrity: sha512-lcFLMFU4eO1Z7tIpbVFZkaZ5ltqpeaRx7L9NsAbA9uA7/O/rj3RF8+evE5gDitooaTTIqjdzZrenFO/OOxQ2ew== - } - iron-webcrypto@1.2.1: resolution: { @@ -7177,13 +7313,6 @@ packages: integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== } - statsig-node@6.5.1: - resolution: - { - integrity: sha512-/rKvMMN9SWTK8+b7MyRP1wOsStsKf55Mdj8O2ffV/bCQ/38bXYCC/GVd3gVvBSwVCibAnkTz2v1gpRJSIKsBIg== - } - engines: { pnpm: never } - std-env@3.10.0: resolution: { @@ -7693,13 +7822,6 @@ packages: engines: { node: '>=14.17' } hasBin: true - ua-parser-js@1.0.41: - resolution: - { - integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug== - } - hasBin: true - uc.micro@2.1.0: resolution: { @@ -7751,6 +7873,12 @@ packages: } engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + universal-user-agent@7.0.3: + resolution: + { + integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A== + } + universalify@2.0.1: resolution: { @@ -7791,13 +7919,6 @@ packages: integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== } - uuid@8.3.2: - resolution: - { - integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - } - hasBin: true - validator@13.15.22: resolution: { @@ -8509,10 +8630,6 @@ snapshots: '@gar/promisify@1.1.3': {} - '@growthbook/growthbook@1.6.5': - dependencies: - dom-mutator: 0.6.0 - '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -9067,6 +9184,47 @@ snapshots: number-flow: 0.5.8 svelte: 5.45.8 + '@octokit/auth-token@5.1.2': {} + + '@octokit/core@6.1.6': + dependencies: + '@octokit/auth-token': 5.1.2 + '@octokit/graphql': 8.2.2 + '@octokit/request': 9.2.4 + '@octokit/request-error': 6.1.8 + '@octokit/types': 14.1.0 + before-after-hook: 3.0.2 + universal-user-agent: 7.0.3 + + '@octokit/endpoint@10.1.4': + dependencies: + '@octokit/types': 14.1.0 + universal-user-agent: 7.0.3 + + '@octokit/graphql@8.2.2': + dependencies: + '@octokit/request': 9.2.4 + '@octokit/types': 14.1.0 + universal-user-agent: 7.0.3 + + '@octokit/openapi-types@25.1.0': {} + + '@octokit/request-error@6.1.8': + dependencies: + '@octokit/types': 14.1.0 + + '@octokit/request@9.2.4': + dependencies: + '@octokit/endpoint': 10.1.4 + '@octokit/request-error': 6.1.8 + '@octokit/types': 14.1.0 + fast-content-type-parse: 2.0.1 + universal-user-agent: 7.0.3 + + '@octokit/types@14.1.0': + dependencies: + '@octokit/openapi-types': 25.1.0 + '@opentelemetry/api-logs@0.208.0': dependencies: '@opentelemetry/api': 1.9.0 @@ -9750,6 +9908,48 @@ snapshots: '@statsig/client-core': 3.33.0 rrweb: 2.0.0-alpha.17 + '@statsig/statsig-node-core-darwin-arm64@0.19.3': + optional: true + + '@statsig/statsig-node-core-darwin-x64@0.19.3': + optional: true + + '@statsig/statsig-node-core-linux-arm64-gnu@0.19.3': + optional: true + + '@statsig/statsig-node-core-linux-arm64-musl@0.19.3': + optional: true + + '@statsig/statsig-node-core-linux-x64-gnu@0.19.3': + optional: true + + '@statsig/statsig-node-core-linux-x64-musl@0.19.3': + optional: true + + '@statsig/statsig-node-core-win32-ia32-msvc@0.19.3': + optional: true + + '@statsig/statsig-node-core-win32-x64-msvc@0.19.3': + optional: true + + '@statsig/statsig-node-core@0.19.3(encoding@0.1.13)': + dependencies: + '@octokit/core': 6.1.6 + https-proxy-agent: 7.0.6 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + '@statsig/statsig-node-core-darwin-arm64': 0.19.3 + '@statsig/statsig-node-core-darwin-x64': 0.19.3 + '@statsig/statsig-node-core-linux-arm64-gnu': 0.19.3 + '@statsig/statsig-node-core-linux-arm64-musl': 0.19.3 + '@statsig/statsig-node-core-linux-x64-gnu': 0.19.3 + '@statsig/statsig-node-core-linux-x64-musl': 0.19.3 + '@statsig/statsig-node-core-win32-ia32-msvc': 0.19.3 + '@statsig/statsig-node-core-win32-x64-msvc': 0.19.3 + transitivePeerDependencies: + - encoding + - supports-color + '@statsig/web-analytics@3.33.0': dependencies: '@statsig/client-core': 3.33.0 @@ -10287,6 +10487,8 @@ snapshots: transitivePeerDependencies: - supports-color + agent-base@7.1.4: {} + agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 @@ -10394,6 +10596,8 @@ snapshots: baseline-browser-mapping@2.8.25: {} + before-after-hook@3.0.2: {} + bidi-js@1.0.3: dependencies: require-from-string: 2.0.2 @@ -10728,8 +10932,6 @@ snapshots: dlv@1.1.3: {} - dom-mutator@0.6.0: {} - dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -10992,6 +11194,8 @@ snapshots: exponential-backoff@3.1.3: {} + fast-content-type-parse@2.0.1: {} + fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -11271,6 +11475,13 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -11326,8 +11537,6 @@ snapshots: ip-address@10.1.0: {} - ip3country@5.0.0: {} - iron-webcrypto@1.2.1: {} is-binary-path@2.1.0: @@ -12383,15 +12592,6 @@ snapshots: stackback@0.0.2: {} - statsig-node@6.5.1(encoding@0.1.13): - dependencies: - ip3country: 5.0.0 - node-fetch: 2.7.0(encoding@0.1.13) - ua-parser-js: 1.0.41 - uuid: 8.3.2 - transitivePeerDependencies: - - encoding - std-env@3.10.0: {} string-width@4.2.3: @@ -12736,8 +12936,6 @@ snapshots: typescript@5.9.3: {} - ua-parser-js@1.0.41: {} - uc.micro@2.1.0: {} ufo@1.6.1: {} @@ -12758,6 +12956,8 @@ snapshots: dependencies: imurmurhash: 0.1.4 + universal-user-agent@7.0.3: {} + universalify@2.0.1: {} unplugin@1.0.1: @@ -12783,8 +12983,6 @@ snapshots: util-deprecate@1.0.2: {} - uuid@8.3.2: {} - validator@13.15.22: {} vaul-svelte@1.0.0-next.7(svelte@5.45.8): diff --git a/src/lib/statsig/hero-statsig.server.ts b/src/lib/statsig/hero-statsig.server.ts index e2e6603219..6f42d348f3 100644 --- a/src/lib/statsig/hero-statsig.server.ts +++ b/src/lib/statsig/hero-statsig.server.ts @@ -1,17 +1,27 @@ import { env } from '$env/dynamic/private'; -import Statsig from 'statsig-node'; -import type { StatsigUser } from 'statsig-node'; +import { Statsig, StatsigUser, type StatsigUserArgs } from '@statsig/statsig-node-core'; import { STATSIG_CLIENT_SDK_KEY, STATSIG_EXPERIMENT_BEST_DESCRIPTION } from './constants'; -let initPromise: ReturnType | null = null; +/** User fields used by marketing home load + Statsig bootstrap (server). */ +export type StatsigServerUserInput = { userID: string } & Partial< + Pick +>; -async function ensureStatsigServer(): Promise { - const secret = env.STATSIG_SERVER_SECRET; - if (!secret?.trim()) return false; +let statsigClient: Statsig | null = null; +let initPromise: Promise | null = null; + +async function getStatsigClient(): Promise { + const secret = env.STATSIG_SERVER_SECRET?.trim(); + if (!secret) return null; if (!initPromise) { - initPromise = Statsig.initialize(secret.trim()).catch((err: unknown) => { + initPromise = (async () => { + const client = new Statsig(secret); + await client.initialize(); + statsigClient = client; + })().catch((err: unknown) => { console.error('[Statsig server] initialize failed', err); + statsigClient = null; initPromise = null; throw err; }); @@ -19,27 +29,40 @@ async function ensureStatsigServer(): Promise { try { await initPromise; - return true; + return statsigClient; } catch { - return false; + return null; + } +} + +function toStatsigUser(user: StatsigUser | StatsigServerUserInput): StatsigUser { + if (user instanceof StatsigUser) { + return user; } + return new StatsigUser({ + userID: user.userID, + ...(user.customIDs ? { customIDs: user.customIDs } : {}), + ...(user.userAgent ? { userAgent: user.userAgent } : {}), + ...(user.ip ? { ip: user.ip } : {}), + ...(user.email ? { email: user.email } : {}) + }); } /** * Evaluates `best_description` for SSR. Exposure is not logged here so the client can log the real view. */ export async function evaluateHeroDescriptionExperiment( - user: StatsigUser, + user: StatsigUser | StatsigServerUserInput, fallback: string ): Promise { - const ready = await ensureStatsigServer(); - if (!ready) return fallback; + const client = await getStatsigClient(); + if (!client) return fallback; try { - const experiment = Statsig.getExperimentWithExposureLoggingDisabledSync( - user, - STATSIG_EXPERIMENT_BEST_DESCRIPTION - ); + const statsigUser = toStatsigUser(user); + const experiment = client.getExperiment(statsigUser, STATSIG_EXPERIMENT_BEST_DESCRIPTION, { + disableExposureLogging: true + }); return experiment.get('description', fallback) as string; } catch { return fallback; @@ -49,18 +72,25 @@ export async function evaluateHeroDescriptionExperiment( /** * JSON payload for `StatsigClient.dataAdapter.setData` + `initializeAsync`, so the JS SDK skips * cache-first experiment checks (Group Assignment Health). Requires `STATSIG_SERVER_SECRET`. + * Node Core returns this string directly (no extra `JSON.stringify`). * @see https://docs.statsig.com/client/javascript-mono/UsingEvaluationsDataAdapter#bootstrapping */ -export async function getStatsigClientBootstrapPayload(user: StatsigUser): Promise { - const ready = await ensureStatsigServer(); - if (!ready) return null; +export async function getStatsigClientBootstrapPayload( + user: StatsigUser | StatsigServerUserInput +): Promise { + const client = await getStatsigClient(); + if (!client) return null; try { - const response = Statsig.getClientInitializeResponse(user, STATSIG_CLIENT_SDK_KEY, { - hash: 'djb2' + const statsigUser = toStatsigUser(user); + const response = client.getClientInitializeResponse(statsigUser, { + hashAlgorithm: 'djb2', + clientSdkKey: STATSIG_CLIENT_SDK_KEY }); - if (!response) return null; - return JSON.stringify(response); + if (response == null || response === '') { + return null; + } + return response; } catch { return null; } diff --git a/vite.config.ts b/vite.config.ts index b66ad915c9..bbc1820f9a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,6 +7,11 @@ import { defineConfig } from 'vitest/config'; // import { sentrySvelteKit } from '@sentry/sveltekit'; export default defineConfig({ + // Native N-API binary; must not be bundled by Vite SSR. + // https://docs.statsig.com/server-core/node-core + ssr: { + external: ['@statsig/statsig-node-core'] + }, plugins: [ // sentrySvelteKit({ // sourceMapsUploadOptions: {