Files
klz-cables.com/.pnpm-store/v10/files/54/e021f3f4fdbdd21954e9ac8b76c663e3856c67b6173c81f2ff4a601d593f910fa156a3735bcf8e49e5dd15b1413bcb81c19fe514f8633d235c5271c6f92e09
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

73 lines
2.4 KiB
Plaintext

import { defineIntegration, _INTERNAL_copyFlagsFromScopeToEvent, fill, _INTERNAL_insertFlagToScope, _INTERNAL_addFeatureFlagToActiveSpan, debug } from '@sentry/core';
import { DEBUG_BUILD } from '../../../debug-build.js';
/**
* Sentry integration for capturing feature flag evaluations from the Unleash SDK.
*
* See the [feature flag documentation](https://develop.sentry.dev/sdk/expected-features/#feature-flags) for more information.
*
* @example
* ```
* import { UnleashClient } from 'unleash-proxy-client';
* import * as Sentry from '@sentry/browser';
*
* Sentry.init({
* dsn: '___PUBLIC_DSN___',
* integrations: [Sentry.unleashIntegration({featureFlagClientClass: UnleashClient})],
* });
*
* const unleash = new UnleashClient(...);
* unleash.start();
*
* unleash.isEnabled('my-feature');
* Sentry.captureException(new Error('something went wrong'));
* ```
*/
const unleashIntegration = defineIntegration(
({ featureFlagClientClass: unleashClientClass }) => {
return {
name: 'Unleash',
setupOnce() {
const unleashClientPrototype = unleashClientClass.prototype ;
fill(unleashClientPrototype, 'isEnabled', _wrappedIsEnabled);
},
processEvent(event, _hint, _client) {
return _INTERNAL_copyFlagsFromScopeToEvent(event);
},
};
},
) ;
/**
* Wraps the UnleashClient.isEnabled method to capture feature flag evaluations. Its only side effect is writing to Sentry scope.
*
* This wrapper is safe for all isEnabled signatures. If the signature does not match (this: UnleashClient, toggleName: string, ...args: unknown[]) => boolean,
* we log an error and return the original result.
*
* @param original - The original method.
* @returns Wrapped method. Results should match the original.
*/
function _wrappedIsEnabled(
original,
) {
return function ( ...args) {
const toggleName = args[0];
const result = original.apply(this, args);
if (typeof toggleName === 'string' && typeof result === 'boolean') {
_INTERNAL_insertFlagToScope(toggleName, result);
_INTERNAL_addFeatureFlagToActiveSpan(toggleName, result);
} else if (DEBUG_BUILD) {
debug.error(
`[Feature Flags] UnleashClient.isEnabled does not match expected signature. arg0: ${toggleName} (${typeof toggleName}), result: ${result} (${typeof result})`,
);
}
return result;
};
}
export { unleashIntegration };
//# sourceMappingURL=integration.js.map