diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3629d0efc726..4ffafc9a351d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -263,8 +263,6 @@ jobs: dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }} - name: Lint source files run: yarn lint:lerna - - name: Lint C++ files - run: yarn lint:clang - name: Lint for ES compatibility run: yarn lint:es-compatibility @@ -289,7 +287,7 @@ jobs: id: install_dependencies - name: Check file formatting - run: yarn lint:prettier && yarn lint:biome + run: yarn lint:prettier job_circular_dep_check: name: Circular Dependency Check diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000000..cb7b3db12641 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +packages/browser/test/loader.js +packages/replay-worker/examples/worker.min.js diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 000000000000..ba9a3dc2c246 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "arrowParens": "avoid", + "printWidth": 120, + "proseWrap": "always", + "singleQuote": true, + "trailingComma": "all" +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 9b4a2aa7eb87..3ad96b1733d5 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,7 +3,6 @@ // for the documentation about the extensions.json format "recommendations": [ "esbenp.prettier-vscode", - "biomejs.biome", "dbaeumer.vscode-eslint", "augustocdias.tasks-shell-input", "denoland.vscode-deno" diff --git a/.vscode/settings.json b/.vscode/settings.json index 0f2399922cfc..c3515b80ced8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -25,8 +25,8 @@ } ], "deno.enablePaths": ["packages/deno/test"], - "editor.defaultFormatter": "biomejs.biome", + "editor.defaultFormatter": "esbenp.prettier-vscode", "[typescript]": { - "editor.defaultFormatter": "biomejs.biome" + "editor.defaultFormatter": "esbenp.prettier-vscode" } } diff --git a/biome.json b/biome.json deleted file mode 100644 index 010139fbaa82..000000000000 --- a/biome.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", - "vcs": { - "enabled": true, - "clientKind": "git", - "useIgnoreFile": true, - "defaultBranch": "develop" - }, - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": false, - "correctness": { - "all": false, - "noUnusedVariables": "error", - "noPrecisionLoss": "error" - }, - "complexity": { - "useRegexLiterals": "error" - }, - "suspicious": { - "all": false, - "noControlCharactersInRegex": "error" - }, - "nursery": { - "noUnusedImports": "error" - }, - "performance": { - "all": true, - "noAccumulatingSpread": "error", - "noDelete": "off" - } - }, - "ignore": [ - ".vscode", - "**/*.json", - "**/fixtures/*/*.json", - "**/*.min.js", - ".next", - ".nuxt", - ".svelte-kit", - ".angular", - "angular.json", - "ember/instance-initializers", - "ember/types.d.ts", - "solidstart/*.d.ts", - "solidstart/client/", - "solidstart/server/", - ".output", - ".vinxi" - ] - }, - "files": { - "ignoreUnknown": true - }, - "formatter": { - "enabled": true, - "formatWithErrors": true, - "indentStyle": "space", - "indentWidth": 2, - "lineWidth": 120, - "ignore": [ - "dev-packages/browser-integration-tests/fixtures/loader.js", - "dev-packages/browser-integration-tests/suites/**/*.json", - "dev-packages/browser-integration-tests/loader-suites/**/*.js", - "dev-packages/browser-integration-tests/suites/stacktraces/**/*.js", - ".next/**/*", - "**/fixtures/*/*.json", - "**/*.min.js", - ".next/**", - ".svelte-kit/**", - ".angular/**", - "angular.json", - "**/profiling-node/lib/**", - "ember/instance-initializers/**", - "ember/types.d.ts" - ] - }, - "javascript": { - "formatter": { - "enabled": true, - "quoteStyle": "single", - "arrowParentheses": "asNeeded", - "trailingComma": "all", - "lineEnding": "lf" - }, - "parser": { - "unsafeParameterDecoratorsEnabled": true - } - }, - "json": { - "formatter": { - "enabled": true - }, - "parser": { - "allowComments": true, - "allowTrailingCommas": true - } - } -} diff --git a/package.json b/package.json index 1f63d4c57dda..2d1a90e84ac9 100644 --- a/package.json +++ b/package.json @@ -20,17 +20,14 @@ "clean:tarballs": "rimraf {packages,dev-packages}/*/*.tgz", "clean:watchman": "watchman watch-del \".\"", "clean:all": "run-s clean:build clean:tarballs clean:caches clean:deps clean:watchman", - "fix": "run-s fix:biome fix:prettier fix:lerna", + "fix": "run-s fix:prettier fix:lerna", "fix:lerna": "lerna run fix", - "fix:biome": "biome check --apply .", - "fix:prettier": "prettier \"**/*.md\" \"**/*.css\" --write", + "fix:prettier": "prettier \"**/*.md\" \"**/*.css\" \"packages/**/**.{ts,js}\" --write", "changelog": "ts-node ./scripts/get-commit-list.ts", "link:yarn": "lerna exec yarn link", - "lint": "run-s lint:lerna lint:biome lint:prettier", - "lint:clang": "lerna run lint:clang", + "lint": "run-s lint:prettier lint:lerna", "lint:lerna": "lerna run lint", - "lint:biome": "biome check .", - "lint:prettier": "prettier \"**/*.md\" \"**/*.css\" --check", + "lint:prettier": "prettier \"**/*.md\" \"**/*.css\" \"packages/**/**.{ts,js}\" --check", "lint:es-compatibility": "es-check es2020 ./packages/*/build/{bundles,npm/cjs,cjs}/*.js && es-check es2020 ./packages/*/build/{npm/esm,esm}/*.js --module", "postpublish": "lerna run --stream --concurrency 1 postpublish", "test": "lerna run --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests}\" test", @@ -98,7 +95,6 @@ "dev-packages/rollup-utils" ], "devDependencies": { - "@biomejs/biome": "^1.5.2", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-esm-shim": "^0.1.5", "@rollup/plugin-json": "^6.1.0", diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index ae2ff9c3fa87..ae7adf8bd383 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -82,13 +82,7 @@ export { } from './stack-parsers'; export { eventFromException, eventFromMessage, exceptionFromError } from './eventbuilder'; export { createUserFeedbackEnvelope } from './userfeedback'; -export { - getDefaultIntegrations, - forceLoad, - init, - onLoad, - showReportDialog, -} from './sdk'; +export { getDefaultIntegrations, forceLoad, init, onLoad, showReportDialog } from './sdk'; export { breadcrumbsIntegration } from './integrations/breadcrumbs'; export { globalHandlersIntegration } from './integrations/globalhandlers'; diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 63da52dfd30e..d034330b6283 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -62,10 +62,7 @@ export { makeBrowserOfflineTransport } from './transports/offline'; export { browserProfilingIntegration } from './profiling/integration'; export { spotlightBrowserIntegration } from './integrations/spotlight'; export { browserSessionIntegration } from './integrations/browsersession'; -export { - featureFlagsIntegration, - type FeatureFlagsIntegration, -} from './integrations/featureFlags'; +export { featureFlagsIntegration, type FeatureFlagsIntegration } from './integrations/featureFlags'; export { launchDarklyIntegration, buildLaunchDarklyFlagUsedHandler } from './integrations/featureFlags/launchdarkly'; export { openFeatureIntegration, OpenFeatureIntegrationHook } from './integrations/featureFlags/openfeature'; export { unleashIntegration } from './integrations/featureFlags/unleash'; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index e0e9097bbc53..097a4ef6a69d 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -39,10 +39,7 @@ export { getClient, getTraceContextFromScope, } from './currentScopes'; -export { - getDefaultCurrentScope, - getDefaultIsolationScope, -} from './defaultScopes'; +export { getDefaultCurrentScope, getDefaultIsolationScope } from './defaultScopes'; export { setAsyncContextStrategy } from './asyncContext'; export { getGlobalSingleton, getMainCarrier } from './carrier'; export { makeSession, closeSession, updateSession } from './session'; @@ -60,11 +57,7 @@ export { initAndBind, setCurrentClient } from './sdk'; export { createTransport } from './transports/base'; export { makeOfflineTransport } from './transports/offline'; export { makeMultiplexedTransport } from './transports/multiplexed'; -export { - getIntegrationsToSetup, - addIntegration, - defineIntegration, -} from './integration'; +export { getIntegrationsToSetup, addIntegration, defineIntegration } from './integration'; export { applyScopeDataToEvent, mergeScopeData } from './utils/applyScopeDataToEvent'; export { prepareEvent } from './utils/prepareEvent'; export { createCheckInEnvelope } from './checkin'; diff --git a/packages/core/src/tracing/dynamicSamplingContext.ts b/packages/core/src/tracing/dynamicSamplingContext.ts index f58f373447bb..02e3e3d76e0a 100644 --- a/packages/core/src/tracing/dynamicSamplingContext.ts +++ b/packages/core/src/tracing/dynamicSamplingContext.ts @@ -128,9 +128,7 @@ export function getDynamicSamplingContextFromSpan(span: Span): Readonly { baggage: 'sentry-environment=production', }); - expect(getTraceMetaTags()).toBe(` + expect(getTraceMetaTags()) + .toBe(` `); }); diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index d810b7429266..129f4f1a765e 100644 --- a/packages/deno/src/index.ts +++ b/packages/deno/src/index.ts @@ -85,10 +85,7 @@ export { export { DenoClient } from './client'; -export { - getDefaultIntegrations, - init, -} from './sdk'; +export { getDefaultIntegrations, init } from './sdk'; export { denoContextIntegration } from './integrations/context'; export { globalHandlersIntegration } from './integrations/globalhandlers'; diff --git a/packages/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts b/packages/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts index 810df8005c48..b08bdad5e9ab 100644 --- a/packages/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts +++ b/packages/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts @@ -5,9 +5,7 @@ interface FunctionComponent { } interface ClassComponent { - new ( - ...args: unknown[] - ): { + new (...args: unknown[]): { props?: unknown; render(...args: unknown[]): unknown; }; diff --git a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts index d645ac5c9ec2..4a268eaf31d5 100644 --- a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts +++ b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts @@ -471,7 +471,11 @@ export function recordRequestSession({ requestIsolationScope, response, sessionFlushingDelayMS, -}: { requestIsolationScope: Scope; response: EventEmitter; sessionFlushingDelayMS?: number }): void { +}: { + requestIsolationScope: Scope; + response: EventEmitter; + sessionFlushingDelayMS?: number; +}): void { requestIsolationScope.setSDKProcessingMetadata({ requestSession: { status: 'ok' }, }); diff --git a/packages/opentelemetry/src/custom/client.ts b/packages/opentelemetry/src/custom/client.ts index ee9f21b5b5f5..70afb6f10752 100644 --- a/packages/opentelemetry/src/custom/client.ts +++ b/packages/opentelemetry/src/custom/client.ts @@ -18,12 +18,8 @@ import type { OpenTelemetryClient as OpenTelemetryClientInterface } from '../typ * const client = new OpenTelemetryClient(options); */ export function wrapClientClass< - ClassConstructor extends new ( - ...args: any[] - ) => Client, - WrappedClassConstructor extends new ( - ...args: any[] - ) => Client & OpenTelemetryClientInterface, + ClassConstructor extends new (...args: any[]) => Client, + WrappedClassConstructor extends new (...args: any[]) => Client & OpenTelemetryClientInterface, >(ClientClass: ClassConstructor): WrappedClassConstructor { // @ts-expect-error We just assume that this is non-abstract, if you pass in an abstract class this would make it non-abstract class OpenTelemetryClient extends ClientClass implements OpenTelemetryClientInterface { diff --git a/packages/opentelemetry/src/index.ts b/packages/opentelemetry/src/index.ts index e3ae6536e11e..6958d1c9fbdd 100644 --- a/packages/opentelemetry/src/index.ts +++ b/packages/opentelemetry/src/index.ts @@ -41,15 +41,9 @@ export { setupEventContextTrace } from './setupEventContextTrace'; export { setOpenTelemetryContextAsyncContextStrategy } from './asyncContextStrategy'; export { wrapContextManagerClass } from './contextManager'; -export { - SentryPropagator, - shouldPropagateTraceForUrl, -} from './propagator'; +export { SentryPropagator, shouldPropagateTraceForUrl } from './propagator'; export { SentrySpanProcessor } from './spanProcessor'; -export { - SentrySampler, - wrapSamplingDecision, -} from './sampler'; +export { SentrySampler, wrapSamplingDecision } from './sampler'; export { openTelemetrySetupCheck } from './utils/setupCheck'; diff --git a/packages/remix/src/index.server.ts b/packages/remix/src/index.server.ts index e6c9610df417..9d9fd47efd47 100644 --- a/packages/remix/src/index.server.ts +++ b/packages/remix/src/index.server.ts @@ -1,7 +1,4 @@ export * from './server'; -export { - captureRemixErrorBoundaryError, - withSentry, -} from './client'; +export { captureRemixErrorBoundaryError, withSentry } from './client'; export type { SentryMetaArgs } from './utils/types'; diff --git a/packages/remix/src/utils/vendor/types.ts b/packages/remix/src/utils/vendor/types.ts index ea80085d0780..4181a3d77334 100644 --- a/packages/remix/src/utils/vendor/types.ts +++ b/packages/remix/src/utils/vendor/types.ts @@ -107,12 +107,7 @@ export type DeferredData = { }; export interface MetaFunction { - (args: { - data: AppData; - parentsData: RouteData; - params: Params; - location: Location; - }): HtmlMetaDescriptor; + (args: { data: AppData; parentsData: RouteData; params: Params; location: Location }): HtmlMetaDescriptor; } export interface HtmlMetaDescriptor { @@ -147,11 +142,7 @@ export interface LoaderFunction { } export interface HeadersFunction { - (args: { - loaderHeaders: Headers; - parentHeaders: Headers; - actionHeaders: Headers; - }): Headers | HeadersInit; + (args: { loaderHeaders: Headers; parentHeaders: Headers; actionHeaders: Headers }): Headers | HeadersInit; } export interface ServerRouteModule extends EntryRouteModule { diff --git a/packages/remix/test/integration/test/client/utils/helpers.ts b/packages/remix/test/integration/test/client/utils/helpers.ts index 56e31cc331c8..97007673703b 100644 --- a/packages/remix/test/integration/test/client/utils/helpers.ts +++ b/packages/remix/test/integration/test/client/utils/helpers.ts @@ -137,10 +137,13 @@ export const countEnvelopes = async ( page.on('request', requestHandler); - setTimeout(() => { - page.off('request', requestHandler); - resolve(reqCount); - }, options?.timeout || 1000); + setTimeout( + () => { + page.off('request', requestHandler); + resolve(reqCount); + }, + options?.timeout || 1000, + ); }); if (options?.url) { diff --git a/packages/replay-internal/package.json b/packages/replay-internal/package.json index b1e56c94ad4a..46d3853763f5 100644 --- a/packages/replay-internal/package.json +++ b/packages/replay-internal/package.json @@ -48,10 +48,12 @@ "build:tarball": "npm pack", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf build sentry-replay-*.tgz", - "fix": "run-s fix:biome fix:eslint", + "fix": "run-s fix:prettier fix:eslint", "fix:eslint": "eslint . --format stylish --fix", - "fix:biome": "biome check --apply .", - "lint": "eslint . --format stylish", + "fix:prettier": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "lint": "run-s lint:prettier lint:eslint", + "lint:eslint": "eslint . --format stylish", + "lint:prettier": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"", "test": "vitest run", "test:watch": "vitest --watch", "yalc:publish": "yalc publish --push --sig" diff --git a/packages/sveltekit/src/server-common/handle.ts b/packages/sveltekit/src/server-common/handle.ts index 48167066c6d7..5f69feb9fbad 100644 --- a/packages/sveltekit/src/server-common/handle.ts +++ b/packages/sveltekit/src/server-common/handle.ts @@ -57,9 +57,9 @@ export const FETCH_PROXY_SCRIPT = ` * * Exported only for testing */ -export function addSentryCodeToPage(options: { injectFetchProxyScript: boolean }): NonNullable< - ResolveOptions['transformPageChunk'] -> { +export function addSentryCodeToPage(options: { + injectFetchProxyScript: boolean; +}): NonNullable { return ({ html }) => { const metaTags = getTraceMetaTags(); const headWithMetaTags = metaTags ? `\n${metaTags}` : ''; diff --git a/packages/vercel-edge/src/index.ts b/packages/vercel-edge/src/index.ts index ab03497ea0c6..560f06e00e44 100644 --- a/packages/vercel-edge/src/index.ts +++ b/packages/vercel-edge/src/index.ts @@ -85,9 +85,6 @@ export { } from '@sentry/core'; export { VercelEdgeClient } from './client'; -export { - getDefaultIntegrations, - init, -} from './sdk'; +export { getDefaultIntegrations, init } from './sdk'; export { winterCGFetchIntegration } from './integrations/wintercg-fetch'; diff --git a/yarn.lock b/yarn.lock index 839af7241f7e..32e7b9104153 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2656,60 +2656,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@biomejs/biome@^1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.5.2.tgz#fdc194125a904ec69a87cb48b03141b6c070df66" - integrity sha512-LhycxGQBQLmfv6M3e4tMfn/XKcUWyduDYOlCEBrHXJ2mMth2qzYt1JWypkWp+XmU/7Hl2dKvrP4mZ5W44+nWZw== - optionalDependencies: - "@biomejs/cli-darwin-arm64" "1.5.2" - "@biomejs/cli-darwin-x64" "1.5.2" - "@biomejs/cli-linux-arm64" "1.5.2" - "@biomejs/cli-linux-arm64-musl" "1.5.2" - "@biomejs/cli-linux-x64" "1.5.2" - "@biomejs/cli-linux-x64-musl" "1.5.2" - "@biomejs/cli-win32-arm64" "1.5.2" - "@biomejs/cli-win32-x64" "1.5.2" - -"@biomejs/cli-darwin-arm64@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.5.2.tgz#fc744f6ac454ce18b1b36d306c77b2bdb216d6ae" - integrity sha512-3JVl08aHKsPyf0XL9SEj1lssIMmzOMAn2t1zwZKBiy/mcZdb0vuyMSTM5haMQ/90wEmrkYN7zux777PHEGrGiw== - -"@biomejs/cli-darwin-x64@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.5.2.tgz#2439a338166b9acb6d56939bd9e8e6331ee43dcb" - integrity sha512-QAPW9rZb/AgucUx+ogMg+9eJNipQDqvabktC5Tx4Aqb/mFzS6eDqNP7O0SbGz3DtC5Y2LATEj6o6zKIQ4ZT+3w== - -"@biomejs/cli-linux-arm64-musl@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.5.2.tgz#fe5cafb9ff34ebfed7a5abe28a71cfbddd4de70f" - integrity sha512-Z29SjaOyO4QfajplNXSjLx17S79oPN42D094zjE24z7C7p3NxvLhKLygtSP9emgaXkcoESe2chOzF4IrGy/rlg== - -"@biomejs/cli-linux-arm64@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.5.2.tgz#2fd9305441d9df0aca5dfa9e56004d951aea0ec9" - integrity sha512-fVLrUgIlo05rO4cNu+Py5EwwmXnXhWH+8KrNlWkr2weMYjq85SihUsuWWKpmqU+bUVR+m5gwfcIXZVWYVCJMHw== - -"@biomejs/cli-linux-x64-musl@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.5.2.tgz#80cc7eb91ea10aca0a17e6296fa468b0b3332793" - integrity sha512-ZolquPEjWYUmGeERS8svHOOT7OXEeoriPnV8qptgWJmYF9EO9HUGRn1UtCvdVziDYK+u1A7PxjOdkY1B00ty5A== - -"@biomejs/cli-linux-x64@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.5.2.tgz#9247165d0514a6f0fa17f9c8cd49c7d9769a9641" - integrity sha512-ixqJtUHtF0ho1+1DTZQLAEwHGSqvmvHhAAFXZQoaSdABn+IcITYExlFVA3bGvASy/xtPjRhTx42hVwPtLwMHwg== - -"@biomejs/cli-win32-arm64@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.5.2.tgz#86d709f835547537f87fd07c35b6ef3b97dca54f" - integrity sha512-DN4cXSAoFTdjOoh7f+JITj1uQgQSXt+1pVea9bFrpbgip+ZwkONqQq+jUcmFMMehbp9LuiVtNXFz/ReHn6FY7A== - -"@biomejs/cli-win32-x64@1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.5.2.tgz#607f0e4c01c22e573785bd69be2d7be3415838f8" - integrity sha512-YvWWXZmk936FdrXqc2jcP6rfsXsNBIs9MKBQQoVXIihwNNRiAaBD9Iwa/ouU1b7Zxq2zETgeuRewVJickFuVOw== - "@cloudflare/kv-asset-handler@0.3.4", "@cloudflare/kv-asset-handler@^0.3.4": version "0.3.4" resolved "https://registry.yarnpkg.com/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz#5cc152847c8ae4d280ec5d7f4f6ba8c976b585c3"