Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: use generated integration constants #1959

Merged
merged 4 commits into from
Dec 9, 2024

Conversation

koladilip
Copy link
Contributor

@koladilip koladilip commented Dec 5, 2024

PR Description

I have added the generated destination constants file and updated the integration constants to use it. Additionally, I have replaced the hard-coded destination names and display names with these constants using a script that is also in PR.

Removed ComScore which is an unused integration.

Linear task (optional)

Resolves INT-2930
https://linear.app/rudderstack/issue/INT-2930/add-github-actions-to-generate-files-and-raise-prs

Cross Browser Tests

Please confirm you have tested for the following browsers:

  • Chrome
  • Firefox
  • IE11

Sanity Suite

  • All sanity suite test cases pass locally

Security

  • The code changed/added as part of this pull request won't create any security issues with how the software is being used.

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced a new Destinations.ts file containing constants for various analytics and marketing integrations.
    • Added a script to automate updates of integration name constants across multiple files.
  • Refactor

    • Updated multiple integration constants files to import NAME and DISPLAY_NAME from the new Destinations.ts instead of local declarations.
  • Tests

    • Added a new test suite to validate integration constants against the Destinations file, ensuring consistency.

@koladilip koladilip requested review from a team as code owners December 5, 2024 17:21
Copy link
Contributor

coderabbitai bot commented Dec 5, 2024

📝 Walkthrough

Walkthrough

The pull request introduces significant updates to the constants used across various integrations in the analytics-js-common package. It primarily focuses on importing integration names and display names from a newly created Destinations.ts file, which centralizes these definitions. This change eliminates local constant declarations in individual integration files, ensuring consistency and maintainability. Additionally, the size limit for the "Common - No bundling" configuration has been increased from '17.2 KiB' to '18.4 KiB'.

Changes

File Path Change Summary
packages/analytics-js-common/.size-limit.js Updated size limit from '17.2 KiB' to '18.4 KiB'.
packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts Removed local constants NAME and DISPLAY_NAME, imported ACTIVE_CAMPAIGN_NAME and ACTIVE_CAMPAIGN_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts Removed local constants NAME and DISPLAY_NAME, imported ADOBE_ANALYTICS_NAME and ADOBE_ANALYTICS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts Removed local constants NAME and DISPLAY_NAME, imported ADROLL_NAME and ADROLL_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts Removed local constants NAME and DISPLAY_NAME, imported AM_NAME and AM_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts Removed local constants NAME and DISPLAY_NAME, imported APPCUES_NAME and APPCUES_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts Removed local constants NAME and DISPLAY_NAME, imported AXEPTIO_NAME and AXEPTIO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts Removed local constants NAME and DISPLAY_NAME, imported BINGADS_NAME and BINGADS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Braze/constants.ts Removed local constants NAME and DISPLAY_NAME, imported BRAZE_NAME and BRAZE_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts Removed local constants NAME and DISPLAY_NAME, imported BUGSNAG_NAME and BUGSNAG_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts Removed local constants NAME and DISPLAY_NAME, imported CHARTBEAT_NAME and CHARTBEAT_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts Removed local constants NAME and DISPLAY_NAME, imported CLEVERTAP_NAME and CLEVERTAP_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts Removed local constants NAME and DISPLAY_NAME, imported COMMANDBAR_NAME and COMMANDBAR_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts Removed local constants NAME and DISPLAY_NAME, imported CONVERTFLOW_NAME and CONVERTFLOW_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts Removed local constants NAME and DISPLAY_NAME, imported CRITEO_NAME and CRITEO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts Removed local constants NAME and DISPLAY_NAME, imported CUSTOMERIO_NAME and CUSTOMERIO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts Removed local constants NAME and DISPLAY_NAME, imported DCM_FLOODLIGHT_NAME and DCM_FLOODLIGHT_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Drip/constants.ts Removed local constants NAME and DISPLAY_NAME, imported DRIP_NAME and DRIP_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Engage/constants.ts Removed local constants NAME and DISPLAY_NAME, imported ENGAGE_NAME and ENGAGE_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts Removed local constants NAME and DISPLAY_NAME, imported FACEBOOK_PIXEL_NAME and FACEBOOK_PIXEL_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts Removed local constants NAME and DISPLAY_NAME, imported FULLSTORY_NAME and FULLSTORY_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/GA/constants.ts Removed local constants NAME and DISPLAY_NAME, imported GA_NAME and GA_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/GA360/constants.ts Removed local constants NAME and DISPLAY_NAME, imported GA360_NAME and GA360_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/GA4/constants.ts Removed local constants NAME and DISPLAY_NAME, imported GA4_NAME and GA4_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts Removed local constants NAME and DISPLAY_NAME, imported GA4_V2_NAME and GA4_V2_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts Removed local constants NAME and DISPLAY_NAME, imported GAINSIGHT_PX_NAME and GAINSIGHT_PX_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts Removed local constants NAME and DISPLAY_NAME, imported GOOGLEADS_NAME and GOOGLEADS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts Removed local constants NAME and DISPLAY_NAME, imported GOOGLE_OPTIMIZE_NAME and GOOGLE_OPTIMIZE_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/GoogleTagManager/constants.ts Removed local constants NAME and DISPLAY_NAME, imported GTM_NAME and GTM_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Heap/constants.ts Removed local constants NAME and DISPLAY_NAME, imported HEAP_NAME and HEAP_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Hotjar/constants.ts Removed local constants NAME and DISPLAY_NAME, imported HOTJAR_NAME and HOTJAR_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/HubSpot/constants.ts Removed local constants NAME and DISPLAY_NAME, imported HS_NAME and HS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/INTERCOM/constants.ts Removed local constants NAME and DISPLAY_NAME, imported INTERCOM_NAME and INTERCOM_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Iterable/constants.ts Removed local constants NAME and DISPLAY_NAME, imported ITERABLE_NAME and ITERABLE_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/June/constants.ts Removed local constants NAME and DISPLAY_NAME, imported JUNE_NAME and JUNE_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Keen/constants.ts Removed local constants NAME and DISPLAY_NAME, imported KEEN_NAME and KEEN_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Kissmetrics/constants.ts Removed local constants NAME and DISPLAY_NAME, imported KISSMETRICS_NAME and KISSMETRICS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Klaviyo/constants.ts Removed local constants NAME and DISPLAY_NAME, imported KLAVIYO_NAME and KLAVIYO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/LaunchDarkly/constants.ts Removed local constants NAME and DISPLAY_NAME, imported LAUNCHDARKLY_NAME and LAUNCHDARKLY_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Lemnisk/constants.ts Removed local constants NAME and DISPLAY_NAME, imported LEMNISK_NAME and LEMNISK_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts Removed local constants NAME and DISPLAY_NAME, imported LINKEDIN_INSIGHT_TAG_NAME and LINKEDIN_INSIGHT_TAG_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/LiveChat/constants.ts Removed local constants NAME and DISPLAY_NAME, imported LIVECHAT_NAME and LIVECHAT_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Lotame/constants.ts Removed local constants NAME and DISPLAY_NAME, imported LOTAME_NAME and LOTAME_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Lytics/constants.ts Removed local constants NAME and DISPLAY_NAME, imported LYTICS_NAME and LYTICS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Matomo/constants.ts Removed local constants NAME and DISPLAY_NAME, imported MATOMO_NAME and MATOMO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/MicrosoftClarity/constants.ts Removed local constants NAME and DISPLAY_NAME, imported MICROSOFT_CLARITY_NAME and MICROSOFT_CLARITY_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Mixpanel/constants.ts Removed local constants NAME and DISPLAY_NAME, imported MP_NAME and MP_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/MoEngage/constants.ts Removed local constants NAME and DISPLAY_NAME, imported MOENGAGE_NAME and MOENGAGE_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Mouseflow/constants.ts Removed local constants NAME and DISPLAY_NAME, imported MOUSEFLOW_NAME and MOUSEFLOW_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Ninetailed/constants.ts Removed local constants NAME and DISPLAY_NAME, imported NINETAILED_NAME and NINETAILED_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Olark/constants.ts Removed local constants NAME and DISPLAY_NAME, imported OLARK_NAME and OLARK_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Optimizely/constants.ts Removed local constants NAME and DISPLAY_NAME, imported OPTIMIZELY_NAME and OPTIMIZELY_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Pendo/constants.ts Removed local constants NAME and DISPLAY_NAME, imported PENDO_NAME and PENDO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/PinterestTag/constants.ts Removed local constants NAME and DISPLAY_NAME, imported PINTEREST_TAG_NAME and PINTEREST_TAG_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Podsights/constants.ts Removed local constants NAME and DISPLAY_NAME, imported PODSIGHTS_NAME and PODSIGHTS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/PostAffiliatePro/constants.ts Removed local constants NAME and DISPLAY_NAME, imported POST_AFFILIATE_PRO_NAME and POST_AFFILIATE_PRO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Posthog/constants.ts Removed local constants NAME and DISPLAY_NAME, imported POSTHOG_NAME and POSTHOG_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/ProfitWell/constants.ts Removed local constants NAME and DISPLAY_NAME, imported PROFITWELL_NAME and PROFITWELL_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Qualaroo/constants.ts Removed local constants NAME and DISPLAY_NAME, imported QUALAROO_NAME and QUALAROO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Qualtrics/constants.ts Removed local constants NAME and DISPLAY_NAME, imported QUALTRICS_NAME and QUALTRICS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/QuantumMetric/constants.ts Removed local constants NAME and DISPLAY_NAME, imported QUANTUMMETRIC_NAME and QUANTUMMETRIC_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/QuoraPixel/constants.ts Removed local constants NAME and DISPLAY_NAME, imported QUORA_PIXEL_NAME and QUORA_PIXEL_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/RedditPixel/constants.ts Removed local constants NAME and DISPLAY_NAME, imported REDDIT_PIXEL_NAME and REDDIT_PIXEL_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Refiner/constants.ts Removed local constants NAME and DISPLAY_NAME, imported REFINER_NAME and REFINER_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Rockerbox/constants.ts Removed local constants NAME and DISPLAY_NAME, imported ROCKERBOX_NAME and ROCKERBOX_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/RollBar/constants.ts Removed local constants NAME and DISPLAY_NAME, imported ROLLBAR_NAME and ROLLBAR_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Satismeter/constants.ts Removed local constants NAME and DISPLAY_NAME, imported SATISMETER_NAME and SATISMETER_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts Removed local constants NAME and DISPLAY_NAME, imported SENDINBLUE_NAME and SENDINBLUE_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Sentry/constants.ts Removed local constants NAME and DISPLAY_NAME, imported SENTRY_NAME and SENTRY_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Shynet/constants.ts Removed local constants NAME and DISPLAY_NAME, imported SHYNET_NAME and SHYNET_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/SnapEngage/constants.ts Removed local constants NAME and DISPLAY_NAME, imported SNAPENGAGE_NAME and SNAPENGAGE_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/SnapPixel/constants.ts Removed local constants NAME and DISPLAY_NAME, imported SNAP_PIXEL_NAME and SNAP_PIXEL_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/SpotifyPixel/constants.ts Removed local constants NAME and DISPLAY_NAME, imported SPOTIFYPIXEL_NAME and SPOTIFYPIXEL_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Sprig/constants.ts Removed local constants NAME and DISPLAY_NAME, imported SPRIG_NAME and SPRIG_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/TVSquared/constants.ts Removed local constants NAME and DISPLAY_NAME, imported TVSQUARED_NAME and TVSQUARED_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/TiktokAds/constants.ts Removed local constants NAME and DISPLAY_NAME, imported TIKTOK_ADS_NAME and TIKTOK_ADS_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/VWO/constants.ts Removed local constants NAME and DISPLAY_NAME, imported VWO_NAME and VWO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Vero/constants.ts Removed local constants NAME and DISPLAY_NAME, imported VERO_NAME and VERO_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Woopra/constants.ts Removed local constants NAME and DISPLAY_NAME, imported WOOPRA_NAME and WOOPRA_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/XPixel/constants.ts Removed local constants NAME and DISPLAY_NAME, imported XPIXEL_NAME and XPIXEL_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/YandexMetrica/constants.ts Removed local constants NAME and DISPLAY_NAME, imported YANDEX_METRICA_NAME and YANDEX_METRICA_DISPLAY_NAME from ../Destinations. Updated export statements accordingly.
packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts File deleted, removing local constants DIR_NAME, NAME, and DISPLAY_NAME, along with mapping objects.
packages/analytics-js-common/src/constants/integrations/Destinations.ts New file created to centralize destination constants for various integrations.
packages/analytics-js-common/tests/constants/integrations/constants.test.ts New test file created to validate integration constants against a central set of destination constants.
scripts/update-integration-name-constants-references.js New script created to automate updates of constant references in integration files, ensuring they align with the new Destinations.ts.

Possibly related PRs

  • feat: gainsight PX destination #1852: This PR introduces constants related to the Gainsight PX integration, which is directly relevant to the main PR's updates regarding the Gainsight PX destination.
  • feat: gainsight PX destination (#1852) #1889: This PR is a continuation of the Gainsight PX integration work, enhancing the implementation and addressing feedback, making it closely related to the main PR.
  • fix: fixing display name issues #1909: This PR addresses display name issues for various integrations, including those related to Gainsight, which connects to the main PR's focus on integration constants.
  • fix: microsoft clarity identify error handling #1948: This PR enhances error handling for the Microsoft Clarity integration, which is not directly related to the main PR but is part of the broader context of integration improvements.
  • fix: integration constants file type #1958: This PR corrects file types for integration constants, which is tangentially related as it deals with the structure of integration files, but does not directly impact the Gainsight PX changes.

Suggested reviewers

  • sanpj2292
  • ItsSudip
  • MoumitaM

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 22

🧹 Outside diff range and nitpick comments (72)
packages/analytics-js-common/src/constants/integrations/Qualtrics/constants.ts (1)

Line range hint 3-11: Consider centralizing DIR_NAME constant

While the changes to use imported constants are good, consider moving DIR_NAME to the centralized Destinations module as well for consistency.

packages/analytics-js-common/src/constants/integrations/GA4/constants.ts (1)

Line range hint 6-17: Consider generating the CNameMapping object.

Since this PR involves generated constants, consider also generating the CNameMapping object to:

  1. Ensure consistency across integrations
  2. Automatically handle variations (case sensitivity, common misspellings)
  3. Reduce manual maintenance

Would you like me to propose a template for generating these mappings?

packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts (1)

Line range hint 1-17: Good architectural direction

The move towards centralized, generated integration constants is a positive architectural change that:

  • Reduces duplication across integration files
  • Makes maintenance easier
  • Ensures consistency in integration naming
  • Facilitates automated updates through GitHub Actions (as mentioned in INT-2930)

Consider documenting this pattern in the project's contribution guidelines to ensure future integrations follow the same approach.

packages/analytics-js-common/src/constants/integrations/TVSquared/constants.ts (1)

18-20: Consolidate export statements

The current implementation has two separate export statements, which could be consolidated for better maintainability.

Consider combining the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { TVSQUARED_NAME as NAME, TVSQUARED_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME
+};
packages/analytics-js-common/src/constants/integrations/SpotifyPixel/constants.ts (1)

16-21: Consider consolidating the exports to avoid duplication.

The current implementation has two separate export statements for the same constants. Consider consolidating them into a single export statement for better maintainability.

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  SPOTIFYPIXEL_NAME as NAME,
-  SPOTIFYPIXEL_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  SPOTIFYPIXEL_NAME as NAME,
+  SPOTIFYPIXEL_DISPLAY_NAME as DISPLAY_NAME,
+};
packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts (1)

16-19: Consider consolidating the export statements.

The current implementation has two separate export mechanisms for the NAME and DISPLAY_NAME constants. This could be simplified by combining them with the other exports on line 14.

Consider applying this change:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  GAINSIGHT_PX_NAME as NAME,
-  GAINSIGHT_PX_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  GAINSIGHT_PX_NAME as NAME,
+  GAINSIGHT_PX_DISPLAY_NAME as DISPLAY_NAME,
+};
packages/analytics-js-common/src/constants/integrations/XPixel/constants.ts (1)

53-55: Consider consolidating export statements

While the current implementation is functionally correct, the exports could be consolidated into a single statement for better maintainability.

Consider applying this change:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME, trackPropertyMapping };
-
-export { XPIXEL_NAME as NAME, XPIXEL_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  trackPropertyMapping,
+  XPIXEL_NAME as NAME,
+  XPIXEL_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts (1)

16-18: Consider consolidating export statements

The current implementation has two separate export statements which could be combined for better maintainability.

Consider applying this change:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { BINGADS_NAME as NAME, BINGADS_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  BINGADS_NAME as NAME,
+  BINGADS_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/GoogleTagManager/constants.ts (1)

Refactoring pattern is consistent, but one integration needs attention

The verification shows that the GTM constants refactoring is correct and matches the previous values. Most integration files follow the centralized pattern of importing from ../../Destinations, however there's one inconsistency:

  • packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts still uses direct constant definitions instead of importing from Destinations
🔗 Analysis chain

Line range hint 1-16: Verify consistency with other integration files

Let's ensure this refactoring pattern is consistently applied across other integration files and that the constant values match their previous definitions.


Let me gather more information to verify if there are any inconsistencies in the constant definitions.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the consistency of integration constant refactoring

# Check for any remaining hardcoded GTM constants that should have been replaced
rg -l "const NAME = 'GTM'" packages/analytics-js-common/src/constants/integrations/

# Verify the pattern of importing from Destinations is consistent across integration files
rg -l "from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/

# Check the Destinations file to verify the constant values
cat packages/analytics-js-common/src/constants/Destinations.ts | grep -A 1 "GTM_"

Length of output: 6672


Script:

#!/bin/bash
# Check the content of GoogleTagManager/constants.ts before this change
git show HEAD^:packages/analytics-js-common/src/constants/integrations/GoogleTagManager/constants.ts

# Check if any other integration files still have direct constant definitions instead of imports
rg "const NAME = ['\"]" packages/analytics-js-common/src/constants/integrations/ -A 1

# Check if other integration files follow the same pattern of importing from Destinations
rg "import.*from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/

Length of output: 9864

packages/analytics-js-common/src/constants/integrations/Optimizely/constants.ts (1)

1-4: Consider simplifying imports and exports

The current implementation imports constants with aliases and then re-exports them later in the file. This could be simplified to a single re-export statement.

Consider replacing both the import and export statements with a single re-export:

-import {
-  OPTIMIZELY_NAME as NAME,
-  OPTIMIZELY_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  OPTIMIZELY_NAME as NAME,
+  OPTIMIZELY_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/Sprig/constants.ts (2)

1-1: Consider simplifying the import statement

The current import uses aliases that match the original names, which adds unnecessary complexity. Consider simplifying to:

-import { SPRIG_NAME as NAME, SPRIG_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+import { SPRIG_NAME, SPRIG_DISPLAY_NAME } from '../../Destinations';

Consistent implementation verified across integration files, with one exception

The verification shows that all integration files follow the same pattern of importing NAME and DISPLAY_NAME from Destinations.ts, except for Comscore which uses hardcoded constants:

  • packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts needs to be updated to use imports instead of hardcoded values:
    const NAME = 'COMSCORE';
    const DISPLAY_NAME = 'Comscore';
🔗 Analysis chain

Line range hint 1-13: Verify consistent implementation across other integration files

Let's ensure this refactoring pattern is consistently applied across other integration constant files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check the pattern of constants usage across other integration files
echo "Checking other integration constant files for consistency..."

# Look for inconsistent import patterns
rg -t ts "import.*as (NAME|DISPLAY_NAME)" "packages/analytics-js-common/src/constants/integrations/"

# Check for any remaining hardcoded NAME/DISPLAY_NAME constants
rg -t ts "const (NAME|DISPLAY_NAME) =" "packages/analytics-js-common/src/constants/integrations/"

# Verify the structure of Destinations.ts
echo "Verifying Destinations.ts structure..."
cat packages/analytics-js-common/src/constants/Destinations.ts

Length of output: 17361

packages/analytics-js-common/src/constants/integrations/RedditPixel/constants.ts (1)

20-25: Simplify exports by combining them

The current implementation has two separate export statements, with the second one re-exporting the imported constants. This can be simplified.

Consider applying this change to reduce redundancy:

-import {
-  REDDIT_PIXEL_NAME as NAME,
-  REDDIT_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  REDDIT_PIXEL_NAME as NAME,
+  REDDIT_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';

const DIR_NAME = 'RedditPixel';

const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
const CNameMapping = {
  [NAME]: NAME,
  Reddit_Pixel: NAME,
  RedditPixel: NAME,
  REDDITPIXEL: NAME,
  redditpixel: NAME,
  'Reddit Pixel': NAME,
  'REDDIT PIXEL': NAME,
  'reddit pixel': NAME,
};

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  REDDIT_PIXEL_NAME as NAME,
-  REDDIT_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts (2)

1-4: Consider simplifying imports

The current import structure uses aliases that are later re-exported. Consider importing without aliases and exporting directly to reduce code complexity.

-import {
-  CUSTOMERIO_NAME as NAME,
-  CUSTOMERIO_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+import { CUSTOMERIO_NAME, CUSTOMERIO_DISPLAY_NAME } from '../../Destinations';

Inconsistent pattern found in Comscore integration

The verification reveals that most integration files follow the pattern of importing NAME and DISPLAY_NAME from Destinations, but the Comscore integration still uses local constant declarations:

  • packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts needs to be updated to use imports instead of local declarations
🔗 Analysis chain

Line range hint 1-22: Verify consistent pattern across other integrations

Let's verify that this refactoring pattern is consistently applied across other integration constant files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if other integration constant files follow the same pattern
# Look for any files still using local NAME and DISPLAY_NAME declarations

# Search for direct constant declarations in other integration files
echo "Checking for local constant declarations in other integration files..."
rg -t ts "const (NAME|DISPLAY_NAME) =" "packages/analytics-js-common/src/constants/integrations/"

# Verify import pattern in other files
echo "Checking import patterns in other integration files..."
rg -t ts "import.*as (NAME|DISPLAY_NAME).*from '../../Destinations'" "packages/analytics-js-common/src/constants/integrations/"

Length of output: 9656

packages/analytics-js-common/src/constants/integrations/YandexMetrica/constants.ts (2)

1-4: Simplify imports by removing redundant aliases

The current import aliases are unnecessary since they map to the same names used in exports. Consider simplifying:

-import {
-  YANDEX_METRICA_NAME as NAME,
-  YANDEX_METRICA_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+import { YANDEX_METRICA_NAME, YANDEX_METRICA_DISPLAY_NAME } from '../../Destinations';

Inconsistency found in Comscore integration constants

The verification reveals that most integration files follow the consistent pattern of importing NAME and DISPLAY_NAME from '../../Destinations', except for the Comscore integration which has hardcoded constants:

  • packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts uses hardcoded values:
    const NAME = 'COMSCORE';
    const DISPLAY_NAME = 'Comscore';
🔗 Analysis chain

Line range hint 1-22: Verify consistent pattern across integration files

Since this is part of a larger refactoring to use generated constants, let's verify the consistency of this pattern across other integration files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if other integration files follow the same pattern
echo "Checking for inconsistent constant definitions across integration files..."

# Look for any remaining hardcoded integration names
rg -t ts "const (NAME|DISPLAY_NAME) = '[^']+'" "packages/analytics-js-common/src/constants/integrations/"

# Check import pattern consistency
rg -t ts "import.*from '../../Destinations'" "packages/analytics-js-common/src/constants/integrations/"

Length of output: 9538

packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts (1)

12-14: Consider consolidating exports

There appears to be duplicate exports of NAME and DISPLAY_NAME:

  1. Line 12 exports the mapping objects
  2. Line 14 re-exports the same constants from Destinations

Consider combining these into a single export statement for better maintainability.

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { BUGSNAG_NAME as NAME, BUGSNAG_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  BUGSNAG_NAME as NAME,
+  BUGSNAG_DISPLAY_NAME as DISPLAY_NAME
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/Mouseflow/constants.ts (1)

Line range hint 18-21: Remove duplicate exports of NAME and DISPLAY_NAME

There are duplicate exports for the same constants, which is redundant and could cause confusion. The constants are exported both directly and through re-export.

Apply this diff to fix the duplicate exports:

 export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { MOUSEFLOW_NAME as NAME, MOUSEFLOW_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

Then update the first export to include the NAME and DISPLAY_NAME:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME, NAME, DISPLAY_NAME };
packages/analytics-js-common/src/constants/integrations/Pendo/constants.ts (1)

12-14: Consider consolidating export statements

The current implementation has redundant export statements. The second export statement essentially duplicates what's already imported at the top of the file.

Consider consolidating into a single export statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { PENDO_NAME as NAME, PENDO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME
+};
packages/analytics-js-common/src/constants/integrations/Drip/constants.ts (2)

1-1: Consider removing redundant import/export pattern

The same constants are being imported with aliases and then re-exported with the same aliases later in the file. This creates unnecessary indirection.

Consider simplifying to a direct re-export:

-import { DRIP_NAME as NAME, DRIP_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export { DRIP_NAME as NAME, DRIP_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

12-14: Consolidate export statements

Having multiple export statements, especially when one duplicates the import functionality, makes the code harder to maintain.

Consider consolidating into a single export statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { DRIP_NAME as NAME, DRIP_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  DRIP_NAME as NAME,
+  DRIP_DISPLAY_NAME as DISPLAY_NAME
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/Engage/constants.ts (1)

20-22: Consider consolidating export statements

The file currently has two different ways to export the NAME and DISPLAY_NAME constants:

  1. Through the general export list
  2. Through a separate re-export statement

This redundancy could lead to confusion about which export to use.

Consider consolidating these into a single export statement:

-export { CNameMapping, identifyExcludeFields, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { ENGAGE_NAME as NAME, ENGAGE_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  identifyExcludeFields,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME
+};
packages/analytics-js-common/src/constants/integrations/TiktokAds/constants.ts (1)

100-103: Consider consolidating exports to avoid duplication.

The constants NAME and DISPLAY_NAME are currently being exported twice:

  1. Through the default export object
  2. Through a separate re-export statement

Consider consolidating these exports to maintain a single source of truth.

export {
  CNameMapping,
  PARTNER_NAME,
  trackMapping,
  eventNameMapping,
  DISPLAY_NAME_TO_DIR_NAME_MAP,
  DIR_NAME,
+ NAME,
+ DISPLAY_NAME,
};

- export {
-   TIKTOK_ADS_NAME as NAME,
-   TIKTOK_ADS_DISPLAY_NAME as DISPLAY_NAME,
- } from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/QuoraPixel/constants.ts (1)

22-27: Optimize export statements

The current implementation has redundant export statements. Consider combining them for better maintainability and potential bundle size optimization.

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  QUORA_PIXEL_NAME as NAME,
-  QUORA_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  QUORA_PIXEL_NAME as NAME,
+  QUORA_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
+};
packages/analytics-js-common/src/constants/integrations/Podsights/constants.ts (2)

17-19: Consider consolidating export statements

While the current implementation works, having separate export statements could be consolidated for better maintainability.

Consider combining the exports:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { PODSIGHTS_NAME as NAME, PODSIGHTS_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  PODSIGHTS_NAME as NAME,
+  PODSIGHTS_DISPLAY_NAME as DISPLAY_NAME
+} from '../../Destinations';

Inconsistency found in Comscore integration constants

The verification reveals that while most integration files follow the new pattern of importing NAME and DISPLAY_NAME from Destinations, the Comscore integration (packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts) still uses hardcoded constants:

  • Uses const DISPLAY_NAME = 'Comscore'
  • Uses const NAME = 'COMSCORE'

This should be updated to match the consistent pattern used across other integrations.

🔗 Analysis chain

Line range hint 1-19: Verify consistent pattern across integrations

Let's ensure this refactoring pattern is consistently applied across other integration files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in integration constant imports across files

# Check if other integration files follow the same pattern
echo "Checking integration files for consistent import pattern..."
rg -l "import.*as NAME.*from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/

# Check for any remaining hardcoded display names
echo "Checking for any remaining hardcoded display names..."
rg "const DISPLAY_NAME = '[^']+" packages/analytics-js-common/src/constants/integrations/

# Verify no direct references to old constant patterns
echo "Checking for old constant patterns..."
rg "const NAME = '[^']+" packages/analytics-js-common/src/constants/integrations/

Length of output: 4837

packages/analytics-js-common/src/constants/integrations/Rockerbox/constants.ts (2)

Line range hint 3-14: Consider centralizing DIR_NAME constant

Since we're moving towards centralized constants, consider moving DIR_NAME to the Destinations file alongside other Rockerbox-related constants. This would maintain consistency with the current refactoring direction.


Line range hint 16-19: Remove duplicate exports

There are duplicate exports for NAME and DISPLAY_NAME. The re-export from Destinations (line 18) makes the previous export redundant.

Apply this diff to fix the issue:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { ROCKERBOX_NAME as NAME, ROCKERBOX_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  ROCKERBOX_NAME as NAME,
+  ROCKERBOX_DISPLAY_NAME as DISPLAY_NAME,
+};
packages/analytics-js-common/src/constants/integrations/QuantumMetric/constants.ts (2)

1-4: Consider using absolute imports for better maintainability

While the relative import works, consider using absolute imports (e.g., '@rudderstack/analytics-js-common/constants/Destinations') to make the code more resilient to directory restructuring.


Line range hint 10-19: Consider using a case-insensitive mapping approach

The current CNameMapping contains multiple entries that differ only in casing. Consider refactoring to use a case-insensitive approach to reduce duplication and improve maintainability.

Example approach:

 const CNameMapping = {
   [NAME]: NAME,
-  'Quantum Metric': NAME,
-  'quantum Metric': NAME,
-  'quantum metric': NAME,
   QuantumMetric: NAME,
-  quantumMetric: NAME,
-  quantummetric: NAME,
   Quantum_Metric: NAME,
 };
+
+// Add a getter that normalizes the key
+Object.defineProperty(CNameMapping, 'get', {
+  value: function(key: string) {
+    return this[key] || this[Object.keys(this).find(k => 
+      k.toLowerCase() === key.toLowerCase()
+    ) || ''];
+  }
+});
packages/analytics-js-common/src/constants/integrations/Posthog/constants.ts (1)

Line range hint 6-13: Consider optimizing the CNameMapping object.

The current mapping includes several variations that might be redundant or could be handled more efficiently:

  1. Some entries like PostHog, Posthog, and posthog could potentially be handled case-insensitively
  2. The entry [NAME]: NAME is self-referential and might be unnecessary

Consider refactoring this to be more maintainable and efficient.

Here's a suggested approach:

 const CNameMapping = {
-  [NAME]: NAME,
   PostHog: NAME,
-  Posthog: NAME,
-  posthog: NAME,
   'Post Hog': NAME,
   'Post hog': NAME,
   'post hog': NAME,
 };
packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts (1)

23-28: Consider combining export statements for better maintainability.

The current implementation has two separate export statements that could be consolidated into a single one.

Consider applying this change:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  LINKEDIN_INSIGHT_TAG_NAME as NAME,
-  LINKEDIN_INSIGHT_TAG_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  LINKEDIN_INSIGHT_TAG_NAME as NAME,
+  LINKEDIN_INSIGHT_TAG_DISPLAY_NAME as DISPLAY_NAME,
+};
packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts (1)

84-89: Consider consolidating export statements

The current implementation uses two separate export statements which could be consolidated for better maintainability.

Consider consolidating the exports into a single statement:

-export { traitsMapper, CNameMapping, reserveTraits, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  FACEBOOK_PIXEL_NAME as NAME,
-  FACEBOOK_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  traitsMapper,
+  CNameMapping,
+  reserveTraits,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  FACEBOOK_PIXEL_NAME as NAME,
+  FACEBOOK_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/Iterable/constants.ts (1)

Line range hint 1-14: Remove duplicate exports to improve maintainability.

The constants NAME and DISPLAY_NAME are currently being exported twice:

  1. Through the initial import with aliases (line 1)
  2. Through direct re-export (line 14)

This creates unnecessary duplication and could lead to maintenance confusion.

Suggested fix:

import { ITERABLE_NAME as NAME, ITERABLE_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

const DIR_NAME = 'Iterable';

const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
const CNameMapping = {
  [NAME]: NAME,
  Iterable: NAME,
  iterable: NAME,
};

export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME, NAME, DISPLAY_NAME };
-export { ITERABLE_NAME as NAME, ITERABLE_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/MoEngage/constants.ts (1)

16-18: Consolidate export statements to avoid duplication

There are currently two export statements for NAME and DISPLAY_NAME:

  1. Implicit export through the re-export of mapping objects that use these constants
  2. Explicit re-export from Destinations

Consider consolidating these into a single export statement to avoid potential confusion.

 export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { MOENGAGE_NAME as NAME, MOENGAGE_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export { NAME, DISPLAY_NAME };
packages/analytics-js-common/src/constants/integrations/RollBar/constants.ts (1)

Line range hint 3-15: Consider moving DIR_NAME to centralized constants

Since we're centralizing constants, consider moving DIR_NAME to the Destinations file alongside other RollBar-related constants for consistency.

packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts (3)

1-1: Consider simplifying the import statement

The current import with aliases seems redundant since these constants are re-exported on line 19. Consider removing this import and keeping only the re-export statement.

-import { FULLSTORY_NAME as NAME, FULLSTORY_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

17-19: Consolidate export statements

Consider combining the exports into a single statement for better readability and maintenance.

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { FULLSTORY_NAME as NAME, FULLSTORY_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  FULLSTORY_NAME as NAME,
+  FULLSTORY_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';

Inconsistency found in Comscore integration constants

The verification reveals an inconsistency where Comscore/constants.ts is still using hardcoded NAME and DISPLAY_NAME constants instead of importing them from '../../Destinations' like other integration files. This deviates from the established pattern seen in Fullstory and numerous other integrations.

  • packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts needs to be updated to:
    • Remove hardcoded NAME and DISPLAY_NAME constants
    • Import them from '../../Destinations' like other integration files
🔗 Analysis chain

Line range hint 1-19: Verify consistent pattern across other integration files

The refactoring pattern looks good, but let's verify it's consistently applied across other integration files.


Let me check the content of the Comscore constants file to verify if it needs updating.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for consistency in other integration constant files
echo "Checking for files still using hardcoded NAME/DISPLAY_NAME..."
rg -l "const (NAME|DISPLAY_NAME) = '[^']+'" "packages/analytics-js-common/src/constants/integrations"

echo "Checking for consistent import pattern..."
rg -l "import.*from '../../Destinations'" "packages/analytics-js-common/src/constants/integrations"

Length of output: 4509


Script:

#!/bin/bash
# Check the content of Comscore constants file
cat packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts

Length of output: 468

packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts (2)

Line range hint 6-11: Consider optimizing the CNameMapping object.

The mapping [NAME]: NAME appears redundant since it maps the constant to itself. Consider removing this entry if it's not explicitly required for backward compatibility.

 const CNameMapping = {
-  [NAME]: NAME,
   Appcues: NAME,
   'App Cues': NAME,
   appcues: NAME,
 };

13-15: Combine export statements for better organization.

Consider consolidating the two export statements into a single statement for better code organization and readability.

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { APPCUES_NAME as NAME, APPCUES_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  APPCUES_NAME as NAME,
+  APPCUES_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts (2)

Line range hint 8-20: Consider implementing case-insensitive name matching.

While the CNameMapping object comprehensively handles various case variations, this approach could become maintenance-heavy. A more scalable solution might be to implement case-insensitive matching logic.

Consider refactoring to something like:

const CNameMapping = {
  [NAME]: NAME,
  // Helper function to handle case variations
  normalize: (input: string) => {
    const normalized = input.toLowerCase().replace(/[_\s]/g, '');
    return normalized === 'dcmfloodlight' ? NAME : undefined;
  }
};

22-27: Consider combining export statements for better maintainability.

The file currently has two separate export statements. These could be combined for better code organization.

Consider refactoring to:

-export { CNameMapping, GTAG, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  DCM_FLOODLIGHT_NAME as NAME,
-  DCM_FLOODLIGHT_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  GTAG,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  DCM_FLOODLIGHT_NAME as NAME,
+  DCM_FLOODLIGHT_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/GA360/constants.ts (1)

18-20: Consider combining export statements

The file currently has two separate export statements which could be combined for better maintainability.

Consider refactoring to:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { GA360_NAME as NAME, GA360_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  GA360_NAME as NAME,
+  GA360_DISPLAY_NAME as DISPLAY_NAME
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/MicrosoftClarity/constants.ts (2)

21-21: Consider consolidating export statements.

The file currently has two separate export statements. Consider combining them for better maintainability and clearer code organization.

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  MICROSOFT_CLARITY_NAME as NAME,
-  MICROSOFT_CLARITY_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  MICROSOFT_CLARITY_NAME as NAME,
+  MICROSOFT_CLARITY_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';

Also applies to: 23-26


Consistent usage of centralized constants verified across integrations

The verification shows that the refactoring pattern is consistently applied across the codebase:

  • All integration files follow the same pattern of importing NAME and DISPLAY_NAME from the centralized Destinations module
  • The DISPLAY_NAME_TO_DIR_NAME_MAP structure is consistently used across all integrations
  • Only one file (Comscore) has hardcoded NAME/DISPLAY_NAME constants, which appears to be an outlier that should be addressed
🔗 Analysis chain

Line range hint 1-26: Verify consistent usage of centralized constants across integrations.

Let's ensure this refactoring pattern is consistently applied across other integration files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistent usage of centralized constants across integration files

# Check if other integration files follow the same pattern
echo "Checking for consistent import patterns across integration files..."
rg -l "from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/

# Verify no hardcoded display names remain
echo "Checking for any remaining hardcoded display names..."
rg -i "const.*DISPLAY_NAME.*=" packages/analytics-js-common/src/constants/integrations/

# Check for consistent export patterns
echo "Checking export patterns..."
rg "export.*{.*NAME.*}" packages/analytics-js-common/src/constants/integrations/

Length of output: 18888


Script:

#!/bin/bash
# Let's check the export patterns with a corrected regex
echo "Checking export patterns..."
rg "export \{.*NAME.*\}" packages/analytics-js-common/src/constants/integrations/

# Let's also check if any integration is not following the centralized constants pattern
echo -e "\nChecking for any hardcoded NAME constants..."
rg "const.*NAME.*=.*['\"]" packages/analytics-js-common/src/constants/integrations/

# Let's verify the Destinations import pattern more specifically
echo -e "\nVerifying Destinations import pattern..."
rg "import.*\{.*NAME.*\}.*from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/

Length of output: 40381

packages/analytics-js-common/src/constants/integrations/Refiner/constants.ts (1)

Line range hint 3-11: Consider consolidating the exports and mappings

The code maintains multiple mappings for backward compatibility, which is good. However, there's potential for optimization.

Consider consolidating the exports and mappings into a single object:

const DIR_NAME = 'Refiner';

-const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
-const CNameMapping = {
-  [NAME]: NAME,
-  Refiner: NAME,
-  refiner: NAME,
-};

+export const CONSTANTS = {
+  DIR_NAME,
+  DISPLAY_NAME_TO_DIR_NAME_MAP: { [DISPLAY_NAME]: DIR_NAME },
+  CNameMapping: {
+    [NAME]: NAME,
+    Refiner: NAME,
+    refiner: NAME,
+  }
+};
packages/analytics-js-common/src/constants/integrations/INTERCOM/constants.ts (1)

Line range hint 3-10: Consider moving DIR_NAME to centralized Destinations module

While the NAME and DISPLAY_NAME constants have been moved to the centralized Destinations module, DIR_NAME remains hardcoded. For consistency with the PR's objective of using generated constants, consider moving this to the Destinations module as well.

The mapping objects correctly use the imported constants while maintaining necessary string literals for case variations.

packages/analytics-js-common/src/constants/integrations/Heap/constants.ts (1)

Line range hint 1-15: Consider enhancing type safety for integration constants

While centralizing constants is a good practice, consider enhancing type safety by:

  1. Adding a type interface for integration constants
  2. Using const assertions (as const) for the mapping objects
  3. Adding JSDoc comments to document the purpose of each constant and mapping

This would provide better IDE support and catch potential issues at compile time.

Example type improvements:

/** Interface defining required constants for each integration */
interface IntegrationConstants {
  NAME: string;
  DISPLAY_NAME: string;
  DIR_NAME: string;
}

const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME } as const;
const CNameMapping = {
  [NAME]: NAME,
  Heap: NAME,
  heap: NAME,
  'Heap.io': NAME,
} as const;
packages/analytics-js-common/src/constants/integrations/SnapPixel/constants.ts (1)

1-4: Consider simplifying imports if maintaining separate constants.

While the current import aliasing works, it could be simplified if the constants aren't needed with their original names elsewhere in this file. However, this pattern aligns with the centralization objective and maintains consistency across integration files.

Alternative import syntax if simplification is desired:

-import {
-  SNAP_PIXEL_NAME as NAME,
-  SNAP_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+import { NAME, DISPLAY_NAME } from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/PostAffiliatePro/constants.ts (1)

1-4: Optimize imports to avoid redundancy

The constants are imported twice - once at the top and once in the export statement. Consider consolidating these imports.

-import {
-  POST_AFFILIATE_PRO_NAME as NAME,
-  POST_AFFILIATE_PRO_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';

// Later in the file, keep only this export
export {
  POST_AFFILIATE_PRO_NAME as NAME,
  POST_AFFILIATE_PRO_DISPLAY_NAME as DISPLAY_NAME,
} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/Satismeter/constants.ts (1)

15-20: Consider combining export statements for better maintainability

The current implementation has two separate export statements which could be consolidated into a single export statement.

Consider applying this change:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  SATISMETER_NAME as NAME,
-  SATISMETER_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  SATISMETER_NAME as NAME,
+  SATISMETER_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts (2)

Line range hint 8-21: Consider centralizing name mapping patterns

The CNameMapping handles various cases and formats well. However, similar patterns might exist across other integration files.

Consider creating a utility function to generate these mappings based on common patterns (lowercase, uppercase, space variations) to reduce duplication across integration files.

Example approach:

function generateNameMappings(baseName: string, officialName: string): Record<string, string> {
  const variations = [
    baseName,
    baseName.toLowerCase(),
    baseName.toUpperCase(),
    // Add more variations...
  ];
  return variations.reduce((acc, variant) => ({ ...acc, [variant]: officialName }), {});
}

22-27: Consider consolidating export statements

The current implementation has split exports which might reduce code clarity. Consider consolidating them.

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  CONVERTFLOW_NAME as NAME,
-  CONVERTFLOW_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  CONVERTFLOW_NAME as NAME,
+  CONVERTFLOW_DISPLAY_NAME as DISPLAY_NAME,
+};
packages/analytics-js-common/src/constants/integrations/GA/constants.ts (1)

Line range hint 3-12: Consider consolidating the DIR_NAME constant

While the current implementation works correctly, consider moving the DIR_NAME constant to the centralized Destinations module as well, following the same pattern as NAME and DISPLAY_NAME.

packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts (2)

20-25: Consider combining export statements for better maintainability

The current implementation has two separate export statements that could be consolidated into a single one for better code organization.

Consider applying this change:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  GOOGLE_OPTIMIZE_NAME as NAME,
-  GOOGLE_OPTIMIZE_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  GOOGLE_OPTIMIZE_NAME as NAME,
+  GOOGLE_OPTIMIZE_DISPLAY_NAME as DISPLAY_NAME,
+};

Inconsistent constant definition pattern found in Comscore integration

The verification reveals that Comscore integration is the only one still using hardcoded constants (NAME = 'COMSCORE' and DISPLAY_NAME = 'Comscore') while all other integrations have migrated to importing these constants from the centralized ../../Destinations module. This inconsistency should be addressed to maintain uniformity across the codebase.

  • packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts: Update to use imported constants from Destinations module like other integrations
🔗 Analysis chain

Line range hint 1-25: Verify consistent usage of centralized constants

As part of the broader refactoring effort to use generated integration constants, let's verify the consistency of this pattern across other integration files.


Let me gather more information to verify if this is part of an ongoing migration or if there are inconsistencies.


Let me check one more thing to verify if Comscore is the only integration not following the pattern.


Let me check the content of the Destinations.ts file to verify if Comscore constants are defined there.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the consistency of constant imports across integration files

# Check for similar import patterns in other integration files
echo "Checking import patterns across integration files..."
ast-grep --pattern 'import { $NAME_CONST as NAME, $DISPLAY_CONST as DISPLAY_NAME } from "../../Destinations"'

# Check for any remaining hardcoded constants that should be centralized
echo "Checking for potentially missed hardcoded constants..."
rg -t ts "const (NAME|DISPLAY_NAME) =" "packages/analytics-js-common/src/constants/integrations/"

Length of output: 657


Script:

#!/bin/bash
# Check for other files following the new pattern of importing from Destinations
rg -t ts "from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/

# Check the Destinations file to see if Comscore constants are defined there
rg -t ts "COMSCORE" packages/analytics-js-common/src/Destinations.ts

# Look for other integration constant files to understand the pattern
fd constants.ts -t f packages/analytics-js-common/src/constants/integrations/

Length of output: 30887


Script:

#!/bin/bash
# Check for any other hardcoded NAME/DISPLAY_NAME constants in integration files
rg -t ts "^const (NAME|DISPLAY_NAME) = '[^']+'" packages/analytics-js-common/src/constants/integrations/

# Check if Destinations.ts exists in a different location
fd -t f Destinations.ts packages/analytics-js-common/src/

Length of output: 448


Script:

#!/bin/bash
# Check the content of Destinations.ts for Comscore-related constants
rg -t ts "COMSCORE" packages/analytics-js-common/src/constants/Destinations.ts

# Also check if there are any recent changes to Comscore integration
git log -n 1 packages/analytics-js-common/src/constants/integrations/Comscore/

Length of output: 78

packages/analytics-js-common/src/constants/integrations/Lotame/constants.ts (1)

12-14: Consolidate export statements for better maintainability

The file currently has two separate export statements that could be combined into a single one for better maintainability.

Consider consolidating the exports like this:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { LOTAME_NAME as NAME, LOTAME_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  LOTAME_NAME as NAME,
+  LOTAME_DISPLAY_NAME as DISPLAY_NAME,
+};
packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts (1)

19-22: Consider consolidating export statements

The file currently has two export statements, with NAME and DISPLAY_NAME being exported twice (once through re-export and once through aliased import). Consider consolidating these exports to reduce redundancy.

- export {
-   COMMANDBAR_NAME as NAME,
-   COMMANDBAR_DISPLAY_NAME as DISPLAY_NAME,
- } from '../../Destinations';

Since these constants are already imported and exported on line 17, the second export statement is redundant.

packages/analytics-js-common/src/constants/integrations/Matomo/constants.ts (1)

Line range hint 6-11: Consider extracting string literals into constants

While the usage of imported constants is correct, there are still string literals ('Matomo', 'matomo') that could be extracted into named constants for better maintainability and consistency with the centralized constants approach.

 import { MATOMO_NAME as NAME, MATOMO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

 const DIR_NAME = 'Matomo';
+const LEGACY_UPPERCASE_NAME = 'Matomo';
+const LEGACY_LOWERCASE_NAME = 'matomo';

 const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
 const CNameMapping = {
   [NAME]: NAME,
-  Matomo: NAME,
-  matomo: NAME,
+  [LEGACY_UPPERCASE_NAME]: NAME,
+  [LEGACY_LOWERCASE_NAME]: NAME,
 };
packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts (1)

40-43: Consider simplifying the re-export pattern.

The current implementation imports and then re-exports the same constants. This could be simplified using a direct re-export.

-import {
-  SENDINBLUE_NAME as NAME,
-  SENDINBLUE_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
-
const DIR_NAME = 'Sendinblue';

const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
const CNameMapping = {
  [NAME]: NAME,
  Sendinblue: NAME,
  sendinblue: NAME,
  SendinBlue: NAME,
};

const excludeReservedTraits = [
  'firstName',
  'firstname',
  'first_name',
  'lastName',
  'lastname',
  'last_name',
  'phone',
  'Phone',
  'email',
  'Email',
  'E-mail',
];

const excludePageProperties = ['url', 'title', 'path', 'referrer'];

export {
  CNameMapping,
  excludeReservedTraits,
  excludePageProperties,
  DISPLAY_NAME_TO_DIR_NAME_MAP,
  DIR_NAME,
};

-export {
-  SENDINBLUE_NAME as NAME,
-  SENDINBLUE_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export { SENDINBLUE_NAME as NAME, SENDINBLUE_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/VWO/constants.ts (1)

17-19: Consider simplifying the export pattern.

The current implementation has redundant import/export statements for the NAME and DISPLAY_NAME constants. This could be simplified to improve maintainability.

Consider this alternative approach:

-import { VWO_NAME as NAME, VWO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export { VWO_NAME as NAME, VWO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

const DIR_NAME = 'VWO';

const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
const CNameMapping = {
  [NAME]: NAME,
  VisualWebsiteOptimizer: NAME,
  Visualwebsiteoptimizer: NAME,
  visualwebsiteoptimizer: NAME,
  vwo: NAME,
  'Visual Website Optimizer': NAME,
  'Visual website optimizer': NAME,
  'visual website optimizer': NAME,
};

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { VWO_NAME as NAME, VWO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
packages/analytics-js-common/src/constants/integrations/Mixpanel/constants.ts (2)

Line range hint 6-13: Consider enhancing type safety and reducing duplication

While the mappings are functional, consider these improvements:

  1. Add TypeScript type definitions for the mapping objects
  2. Consider using a more maintainable approach for name variations

Here's a suggested improvement:

+ type NameMapping = Record<string, typeof NAME>;
+ 
- const CNameMapping = {
+ const CNameMapping: NameMapping = {
  [NAME]: NAME,
  MIXPANEL: NAME,
  Mixpanel: NAME,
  'MIX PANEL': NAME,
  'Mix panel': NAME,
  'Mix Panel': NAME,
};

15-17: Consolidate export statements for better maintainability

The current implementation has two separate export statements which could be combined for better clarity and maintainability.

Consider consolidating the exports:

- export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
- 
- export { MP_NAME as NAME, MP_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+ export {
+   CNameMapping,
+   DISPLAY_NAME_TO_DIR_NAME_MAP,
+   DIR_NAME,
+   MP_NAME as NAME,
+   MP_DISPLAY_NAME as DISPLAY_NAME
+ };
packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts (1)

19-21: Simplify export statements

The current implementation has two separate export statements, with the second one re-exporting the same constants that were imported. This can be simplified.

Consider consolidating the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { GA4_V2_NAME as NAME, GA4_V2_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME,
+};
packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts (1)

Line range hint 1-15: Consider enhancing the constants management system

The centralization of integration constants is a good architectural decision. Consider these enhancements:

  1. Add TypeScript const assertions to prevent accidental modifications:
export const DESTINATIONS = {
  AMPLITUDE: 'AM',
  VERO: 'VERO',
  WOOPRA: 'WOOPRA'
} as const;
  1. Since this is part of an automation task (INT-2930), consider adding:
    • Documentation for the file generation process
    • A template file showing the expected structure
    • Validation scripts to ensure consistency across generated files
packages/analytics-js-common/src/constants/integrations/Klaviyo/constants.ts (1)

1-1: Consider simplifying the import/export pattern

The current pattern of importing with aliases and then re-exporting could be simplified.

Consider either:

  1. Direct re-export:
-import { KLAVIYO_NAME as NAME, KLAVIYO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export { KLAVIYO_NAME as NAME, KLAVIYO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

Or 2. Use the original names internally:

-import { KLAVIYO_NAME as NAME, KLAVIYO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+import { KLAVIYO_NAME, KLAVIYO_DISPLAY_NAME } from '../../Destinations';
packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts (1)

Line range hint 1-16: Consider generating these files automatically

Given that all integration constant files follow the exact same pattern, consider automating the generation of these files to ensure consistency and prevent these structural issues.

This aligns with the PR objective (INT-2930) of adding GitHub Actions for file generation. Consider creating a template that:

  1. Generates the correct import/export pattern
  2. Maintains consistent structure across all integration files
  3. Prevents duplicate exports
  4. Automatically generates the correct mappings

Would you like help creating this template or setting up the GitHub Action?

packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts (1)

1-4: Well-structured centralization of integration constants

The approach of importing constants from a central Destinations module is a good architectural decision that will:

  1. Reduce duplication
  2. Make updates more maintainable
  3. Ensure consistency across integrations
packages/analytics-js-common/src/constants/integrations/Braze/constants.ts (2)

Line range hint 11-11: Consider improving the BrazeOperationString constant

The BrazeOperationString contains a large list of SDK operations without documentation or type safety. Consider:

  1. Adding JSDoc to explain its purpose and usage
  2. Breaking it down into categorized constants (e.g., by feature area)
  3. Using a TypeScript enum or const object for better type safety and IDE support

Example improvement:

/** 
 * Comprehensive list of available Braze SDK operations.
 * Used for validating and handling SDK method calls.
 * @see https://www.braze.com/docs/api/endpoints/sdk/
 */
const BrazeOperations = {
  metadata: ['BrazeSdkMetadata', 'DeviceProperties'],
  cards: [
    'Card',
    'Card.prototype.dismissCard',
    // ... other card operations
  ],
  inAppMessage: [
    'InAppMessage',
    'InAppMessage.SlideFrom',
    // ... other in-app message operations
  ],
  // ... other categories
} as const;

const BrazeOperationString = Object.values(BrazeOperations)
  .flat()
  .join(' ');

Hardcoded Braze strings need to be replaced with centralized constants

The verification reveals several files still using hardcoded "BRAZE" or "Braze" strings that should be using the centralized constants:

  • packages/analytics-js/__tests__/components/utilities/destinations.test.ts
  • packages/analytics-js-plugins/__tests__/utilities/destination.test.ts
  • packages/analytics-js-service-worker/src/types.ts
  • packages/analytics-v1.1/types/service-worker/index.d.ts
  • packages/analytics-v1.1/types/index.d.ts
  • packages/analytics-js-common/src/types/Integration.ts

The constants are correctly defined only once in Destinations.ts, but their usage isn't consistent across the codebase. The test files particularly need to be updated to use the imported constants instead of string literals.

🔗 Analysis chain

Line range hint 1-17: Verify consistent usage of Braze constants

Let's ensure these constants are used consistently across the codebase and there are no duplicate definitions.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistent usage of Braze constants and potential duplicates

# Check for any hardcoded 'BRAZE' strings that should use the constant
echo "Checking for hardcoded 'BRAZE' strings..."
rg -i "['\"](BRAZE|Braze)['\"]" --type ts

# Check for potential duplicate definitions
echo "Checking for duplicate constant definitions..."
rg "(?i)(const|let|var).*(?:BRAZE_NAME|BRAZE_DISPLAY_NAME).*=" --type ts

# Check for correct imports of Braze constants
echo "Checking usage of centralized constants..."
rg "import.*(?:BRAZE_NAME|BRAZE_DISPLAY_NAME).*from.*Destinations" --type ts

Length of output: 2948

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between b64a3b0 and ea84cf2.

📒 Files selected for processing (82)
  • packages/analytics-js-common/.size-limit.js (1 hunks)
  • packages/analytics-js-common/src/constants/Destinations.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Braze/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Drip/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Engage/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/GA/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/GA360/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/GA4/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/GoogleTagManager/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Heap/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Hotjar/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/HubSpot/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/INTERCOM/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Iterable/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/June/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Keen/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Kissmetrics/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Klaviyo/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/LaunchDarkly/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Lemnisk/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/LiveChat/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Lotame/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Lytics/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Matomo/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/MicrosoftClarity/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Mixpanel/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/MoEngage/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Mouseflow/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Ninetailed/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Olark/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Optimizely/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Pendo/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/PinterestTag/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Podsights/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/PostAffiliatePro/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Posthog/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/ProfitWell/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Qualaroo/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Qualtrics/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/QuantumMetric/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/QuoraPixel/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/RedditPixel/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Refiner/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Rockerbox/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/RollBar/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Satismeter/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Sentry/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Shynet/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/SnapEngage/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/SnapPixel/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/SpotifyPixel/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Sprig/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/TVSquared/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/TiktokAds/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/VWO/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Vero/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Woopra/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/XPixel/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/YandexMetrica/constants.ts (2 hunks)
⛔ Files not processed due to max files limit (2)
  • packages/analytics-js/.size-limit.mjs
  • scripts/update-integration-name-constants-references.js
✅ Files skipped from review due to trivial changes (2)
  • packages/analytics-js-common/.size-limit.js
  • packages/analytics-js-common/src/constants/Destinations.ts
🔇 Additional comments (162)
packages/analytics-js-common/src/constants/integrations/Shynet/constants.ts (2)

Line range hint 6-17: LGTM: Comprehensive name mapping

The CNameMapping object provides thorough coverage of various possible name variations and casing combinations, which is good for maintaining backward compatibility and handling different input formats.


1-1: Verify the existence of constants in Destinations file

Let's ensure that the imported constants are properly defined in the Destinations file.

✅ Verification successful

Constants are properly defined and exported in Destinations file

The verification confirms that both SHYNET_NAME and SHYNET_DISPLAY_NAME constants are correctly defined and exported in packages/analytics-js-common/src/constants/Destinations.ts with the expected values:

  • SHYNET_NAME = 'SHYNET'
  • SHYNET_DISPLAY_NAME = 'Shynet'
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence and values of SHYNET constants in Destinations file

# Search for SHYNET constant definitions
rg "SHYNET_(NAME|DISPLAY_NAME)\s*=\s*['\"](SHYNET|Shynet)['\"]" --type ts

# Verify the exports
ast-grep --pattern 'export const SHYNET_$_'

Length of output: 325

packages/analytics-js-common/src/constants/integrations/LiveChat/constants.ts (2)

5-5: LGTM: Display name mapping is correctly implemented

The DISPLAY_NAME_TO_DIR_NAME_MAP correctly maps the standardized display name to the directory name.


Line range hint 6-14: Verify the completeness of CNameMapping

The mapping looks comprehensive, covering various case formats and common variations. However, let's verify if there are any other variations used in the codebase.

✅ Verification successful

Based on the search results, I can now verify the completeness of the CNameMapping. The search shows that the LiveChat integration is referenced in the codebase with the following variations:

  1. From the constants:
  • LIVECHAT (uppercase)
  • LiveChat (pascal case)
  • livechat (lowercase)
  • Live Chat (space-separated)
  • live chat (lowercase space-separated)
  • Live_Chat (underscore-separated)
  1. From actual usage in code:
  • All these variations are already covered in the CNameMapping object
  • No additional variations were found in the actual implementation files

The CNameMapping is complete and covers all variations used in the codebase

The mapping handles all case variations (uppercase, lowercase, pascal case), different word separators (space, underscore), and common format variations. No additional variations were found in the actual implementation that aren't already covered by the mapping.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Search for LiveChat-related string literals in the codebase
# to ensure all variations are covered in the mapping

# Search for LiveChat-related string literals
rg -i "livechat|live.?chat" --type ts --type js

# Search for direct usage of these constants
rg "LIVECHAT_NAME|LIVECHAT_DISPLAY_NAME" --type ts --type js

Length of output: 73288

packages/analytics-js-common/src/constants/integrations/Qualtrics/constants.ts (1)

1-1: LGTM! Import statement correctly uses generated constants.

The change aligns with the PR objective of using generated integration constants from a centralized location.

packages/analytics-js-common/src/constants/integrations/GA4/constants.ts (1)

1-1: LGTM! Verify the generated constants.

The import statement correctly uses aliasing to maintain backward compatibility while sourcing from the centralized constants.

Let's verify the generated constants exist in the Destinations file:

✅ Verification successful

Import changes verified and constants are correctly defined

The GA4 constants (GA4_NAME and GA4_DISPLAY_NAME) are properly defined in the centralized Destinations file, matching the import statement in the GA4 constants file. The aliasing maintains backward compatibility while successfully centralizing these constants.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify GA4 constants in the Destinations file
# Expected: Should find GA4_NAME and GA4_DISPLAY_NAME declarations

rg -A 1 "GA4_(NAME|DISPLAY_NAME)\s*=" "packages/analytics-js-common/src/constants/Destinations.ts"

Length of output: 226

packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts (1)

1-1: Verify the existence and content of the Destinations module

The import aligns with the PR objective of using generated constants. Let's verify the source module exists and contains these constants.

✅ Verification successful

Import statement is correctly referencing existing constants

The import statement correctly references the GOOGLEADS_NAME and GOOGLEADS_DISPLAY_NAME constants that exist in the Destinations module. The constants are properly defined with the expected values:

  • GOOGLEADS_NAME = 'GOOGLEADS'
  • GOOGLEADS_DISPLAY_NAME = 'Google Ads'
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the Destinations module exists and contains the required constants

# Check if the Destinations.ts file exists and contains the required constants
rg -A 5 "GOOGLEADS_NAME|GOOGLEADS_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts"

Length of output: 402

packages/analytics-js-common/src/constants/integrations/TVSquared/constants.ts (2)

1-1: LGTM! Clean import with proper aliasing

The import statement correctly imports the centralized constants with appropriate aliasing.


Line range hint 4-17: Verify constant references across the codebase

The constant mappings look correct, but we should verify that all references to TVSquared constants are using the centralized imports.

✅ Verification successful

Let me check the content of these files to understand how TVSquared constants are being used.


Based on the analysis of the files, I can now generate the final response:

All TVSquared constant references are properly centralized

The codebase shows consistent usage of TVSquared constants:

  • In Destinations.ts, TVSquared is defined using uppercase constants (TVSQUARED_NAME, TVSQUARED_DISPLAY_NAME)
  • In destinationNames.ts, it properly imports and re-exports the constants from TVSquared/constants.ts using named exports
  • No other hardcoded TVSquared strings were found in the codebase
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining hardcoded TVSquared constants or incorrect imports

# Search for hardcoded TVSquared strings that should use constants
rg -l "TVSQUARED['\"]|TVSquared['\"]" --type ts --glob '!**/constants.ts'

# Verify correct import pattern is used across the codebase
rg -l "from ['\"].*TVSquared/constants['\"]" --type ts

Length of output: 275


Script:

#!/bin/bash
# Check the content of files that have TVSquared references
echo "=== Content of Destinations.ts ==="
cat packages/analytics-js-common/src/constants/Destinations.ts

echo -e "\n=== Content of destinationNames.ts ==="
cat packages/analytics-js-common/src/constants/integrations/destinationNames.ts

Length of output: 17525

packages/analytics-js-common/src/constants/integrations/HubSpot/constants.ts (3)

1-1: LGTM! Good use of aliased imports.

The import statement effectively maintains backward compatibility while centralizing constants.


15-17: 🛠️ Refactor suggestion

Consolidate duplicate exports.

The file currently has two separate export statements, with the second one re-exporting the same constants that were imported. This creates unnecessary duplication and could lead to confusion.

Consider consolidating the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { HS_NAME as NAME, HS_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME,
+};

Likely invalid or redundant comment.


Line range hint 4-13: Verify consistent usage of HubSpot constants across the codebase.

The mapping looks correct, but let's verify that these constants are used consistently across the codebase.

✅ Verification successful

Let me analyze the results from the executed scripts to verify the usage of HubSpot constants across the codebase.

The search results show that:

  1. The HubSpot constants are properly imported and used in the integration files:
packages/analytics-js-integrations/src/integrations/HubSpot/browser.js:} from '@rudderstack/analytics-js-common/constants/integrations/HubSpot/constants';
  1. The CNameMapping is correctly imported and used in the integration name mapping:
packages/analytics-js-common/src/constants/integrations/integration_cname.js:import { CNameMapping as HubSpot } from './HubSpot/constants';
packages/analytics-js-common/src/constants/integrations/integration_cname.js:  ...HubSpot,
  1. The display name and directory name constants are properly used in destination mappings:
packages/analytics-js-common/src/constants/integrations/destinationNames.ts:  DISPLAY_NAME as HubSpotDisplayName,
packages/analytics-js-common/src/constants/integrations/destinationNames.ts:  DIR_NAME as HubSpotDirectoryName,
  1. The constants are used consistently in config mappings:
packages/analytics-js-common/src/constants/integrations/config_to_integration_names.js:  HS: 'HubSpot',
packages/analytics-js-common/src/constants/integrations/client_server_name.js:  HS: 'HubSpot',

The constants are used consistently across the codebase and there are no instances of hardcoded HubSpot strings that should be using the constants instead.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any inconsistent usage of HubSpot constants

# Search for hardcoded HubSpot strings that should use constants
rg -i "hubspot|hub spot" --type ts --type js -g '!**/constants.ts'

# Search for direct imports of HS_NAME or HS_DISPLAY_NAME
rg "import.*\{.*(?:HS_NAME|HS_DISPLAY_NAME).*\}" --type ts

Length of output: 65666

packages/analytics-js-common/src/constants/integrations/SpotifyPixel/constants.ts (2)

1-4: LGTM! Good move to centralize constants.

The change to import constants from a centralized Destinations module improves maintainability and consistency across integrations.


Line range hint 1-21: Verify constant values and usage across the codebase.

Let's ensure the imported constants match the previous values and there are no naming conflicts.

✅ Verification successful

Let me gather more information about the usage of these constants to ensure there are no conflicts or issues.


Based on the verification results, I can now provide the final response:

Constants are properly defined and used consistently across the codebase

  • The SPOTIFYPIXEL_NAME and SPOTIFYPIXEL_DISPLAY_NAME constants are centrally defined in Destinations.ts with correct values
  • The constants are properly imported and re-exported in SpotifyPixel/constants.ts
  • The naming pattern follows the same structure as other integration modules (as seen in the list of similar constants.ts files)
  • No naming conflicts found as constants are properly namespaced through imports and exports
  • The only hardcoded string occurrences are in the source definitions and the CNameMapping for backward compatibility
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify constant values and usage

# Check the values in Destinations module
echo "Checking constant definitions in Destinations:"
rg "SPOTIFYPIXEL_NAME|SPOTIFYPIXEL_DISPLAY_NAME" --type ts

# Verify no direct string usage remains
echo "Checking for any remaining hardcoded values:"
rg "'SPOTIFYPIXEL'|'Spotify Pixel'" --type ts

# Check for potential naming conflicts
echo "Checking for NAME/DISPLAY_NAME conflicts:"
ast-grep --pattern 'import { NAME, DISPLAY_NAME }'

Length of output: 1501


Script:

#!/bin/bash
# Check for all usages of SpotifyPixel related constants
echo "Checking all usages of SpotifyPixel constants:"
rg -A 2 "SPOTIFYPIXEL|SpotifyPixel" --type ts

# Check for any other similar NAME/DISPLAY_NAME exports in other integration constants
echo "Checking other integration constant patterns:"
fd "constants.ts" --type f --exec grep -l "export.*NAME.*DISPLAY_NAME" {}

Length of output: 7511

packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts (3)

1-4: LGTM! Clean import structure with clear aliasing.

The import statement correctly imports the constants from the centralized Destinations module while maintaining backward compatibility through aliases.


14-14: LGTM! Clean export of internal mappings.

The export statement correctly exposes the necessary mapping objects and directory name constant.


1-19: Verify the existence of constants in the Destinations module.

Let's ensure that the imported constants exist in the Destinations module and maintain consistency across all integration files.

✅ Verification successful

Constants are properly defined and imported

The verification confirms that:

  • The constants GAINSIGHT_PX_NAME and GAINSIGHT_PX_DISPLAY_NAME are correctly defined in the Destinations module
  • The imports and exports in the integration files maintain consistency
  • All references to Gainsight PX are properly using the imported constants
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence and consistency of Gainsight PX constants

# Check if the constants exist in the Destinations module
echo "Checking for constants in Destinations module..."
rg "GAINSIGHT_PX_NAME|GAINSIGHT_PX_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts"

# Verify no remaining hardcoded values
echo "Checking for any remaining hardcoded Gainsight PX values..."
rg -i "gainsight.?px" "packages/analytics-js-common/src/" -g "!**/constants.ts"

Length of output: 1958

packages/analytics-js-common/src/constants/integrations/XPixel/constants.ts (2)

Line range hint 1-55: Verify browser compatibility

The PR objectives mention testing across Chrome, Firefox, and IE11. While the changes look safe for browser compatibility, please ensure that the generated constants in the Destinations module are transpiled appropriately for IE11 support.

Let's check the build configuration:

✅ Verification successful

Based on the search results, I can see that the codebase has proper browser compatibility configuration:

  1. The package.json files in relevant packages (analytics-js-common, analytics-js-cookies, etc.) include IE11 in their browserslist configuration:
"browserslist": {
  "IE >= 11"
}
  1. The tsconfig.json files are configured with appropriate ES5 target:
"target": "es5"
  1. The build system includes modern and legacy builds with proper browser targeting:
"build:npm:modern": "BROWSERSLIST_ENV=modern npm run build:npm"
"check:support": "NODE_ENV=production npx browserslist --mobile-to-desktop"

Browser compatibility is properly configured

The constants in the Destinations module will be transpiled appropriately for IE11 support since:

  • The build system respects browserslist configuration
  • TypeScript is configured to target ES5
  • IE11 is explicitly included in browserslist
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify build configuration for browser compatibility
# Expected: Should find appropriate browser targets and transpilation settings

# Search for browserslist config or babel config
fd -t f "^(\.browserslistrc|babel\.config\.js|tsconfig\.json)$"

# Search for IE11 related configurations
rg -i "ie.*11|browser.*list|target" -t js -t json

Length of output: 65653


1-1: LGTM! Verify constant definitions in Destinations module

The import statement correctly implements the PR objective of using generated constants while maintaining backward compatibility through aliasing.

Let's verify the constant definitions in the Destinations module:

✅ Verification successful

Constants are correctly defined in the Destinations module

The verification confirms that both XPIXEL_NAME and XPIXEL_DISPLAY_NAME constants are properly defined in packages/analytics-js-common/src/constants/Destinations.ts with the expected values:

  • XPIXEL_NAME = 'XPIXEL'
  • XPIXEL_DISPLAY_NAME = 'XPixel'
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the constant definitions for XPixel in the Destinations module
# Expected: Should find XPIXEL_NAME and XPIXEL_DISPLAY_NAME definitions

# Search for XPixel-related constant definitions
rg "XPIXEL_(NAME|DISPLAY_NAME)\s*=" "packages/analytics-js-common/src/constants/"

Length of output: 281

packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts (3)

1-1: LGTM! Good use of centralized constants.

The change to import constants from a centralized location improves maintainability and consistency across integrations.


21-23: 🛠️ Refactor suggestion

Remove redundant export statement.

The NAME and DISPLAY_NAME constants are being exported twice:

  1. First through the grouped export
  2. Then through a separate re-export statement

This is redundant and could cause confusion.

Simplify by using a single export statement:

 export { CNameMapping, supportedEvents, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { CRITEO_NAME as NAME, CRITEO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

Likely invalid or redundant comment.


Line range hint 1-23: Verify consistent pattern across other integrations.

Since this is part of a larger refactor to use generated constants, let's verify the pattern is consistent across other integration files.

✅ Verification successful

Let me verify the pattern in other integration files to ensure consistency.


Pattern is consistent across integration files

The verification confirms that the pattern is consistent across integration files. Each integration follows the same structure:

  • Imports NAME and DISPLAY_NAME from Destinations
  • Defines DIR_NAME constant
  • Creates DISPLAY_NAME_TO_DIR_NAME_MAP
  • Defines CNameMapping with aliases
  • Re-exports the constants

The Destinations module is properly maintaining these constants as a generated file, and the changes in the Criteo integration align with the established pattern used across other integrations like Amplitude, GA4, Mixpanel, and Braze.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if other integration files follow the same pattern
# and verify the structure of the Destinations module

# Check the pattern in other integration files
echo "Checking integration files for consistent pattern..."
ast-grep --pattern 'import { $NAME as NAME, $DISPLAY as DISPLAY_NAME } from "../../Destinations"' packages/analytics-js-common/src/constants/integrations/*/constants.ts

# Verify the Destinations module structure
echo "Checking Destinations module structure..."
cat packages/analytics-js-common/src/constants/Destinations.ts

Length of output: 14553


Script:

#!/bin/bash
# Check a few random integration files to verify the consistent pattern
echo "Checking pattern in random integration files..."
for dir in "Amplitude" "Facebook" "GA4" "Mixpanel" "Braze"; do
  echo "\nChecking $dir integration:"
  cat "packages/analytics-js-common/src/constants/integrations/$dir/constants.ts"
done

Length of output: 6073

packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts (2)

1-1: LGTM! Clean import of centralized constants

The import statement correctly brings in the generated constants while maintaining the existing naming convention through aliases.


Line range hint 1-18: Verify consistent usage of the centralized constants

Since this is part of a larger refactor to use generated constants, let's verify the consistency across the codebase.

✅ Verification successful

Let me check the actual content of these files to verify if they are properly using the centralized constants.


Constants usage is properly centralized and consistent

The verification shows that the constants are being used correctly throughout the codebase:

  • Destinations.ts is the source of the centralized constants
  • Other files properly import and use these constants through the BingAds constants module
  • No instances of problematic hardcoded values were found
  • The integration files follow the established pattern for constant usage
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining hardcoded references to 'BINGADS' or 'Bing Ads'
# that might need to be updated to use the centralized constants

echo "Checking for hardcoded BINGADS references..."
rg -l "['\"](BINGADS|Bing ?Ads)['\"]" --type ts --type js

echo "Checking for direct imports from this constants file..."
rg -l "from ['\"].*BingAds/constants['\"]" --type ts --type js

Length of output: 995


Script:

#!/bin/bash
# Check the content of files that have references to BINGADS
echo "=== Checking Destinations.ts ==="
rg -A 5 "(BINGADS|Bing ?Ads)" packages/analytics-js-common/src/constants/Destinations.ts

echo -e "\n=== Checking config_to_integration_names.js ==="
rg -A 5 "(BINGADS|Bing ?Ads)" packages/analytics-js-common/src/constants/integrations/config_to_integration_names.js

echo -e "\n=== Checking client_server_name.js ==="
rg -A 5 "(BINGADS|Bing ?Ads)" packages/analytics-js-common/src/constants/integrations/client_server_name.js

echo -e "\n=== Checking integration_cname.js ==="
rg -A 5 "(BINGADS|Bing ?Ads)" packages/analytics-js-common/src/constants/integrations/integration_cname.js

echo -e "\n=== Checking destinationNames.ts ==="
rg -A 5 "(BINGADS|Bing ?Ads)" packages/analytics-js-common/src/constants/integrations/destinationNames.ts

echo -e "\n=== Checking BingAds browser.js ==="
rg -A 5 "(BINGADS|Bing ?Ads)" packages/analytics-js-integrations/src/integrations/BingAds/browser.js

Length of output: 3017

packages/analytics-js-common/src/constants/integrations/GoogleTagManager/constants.ts (2)

1-1: LGTM! Clean import with proper aliasing

The import statement correctly brings in the centralized constants while maintaining the existing naming convention through aliases.


14-16: 🛠️ Refactor suggestion

Remove duplicate exports

The constants NAME and DISPLAY_NAME are being exported twice:

  1. Indirectly through the named exports on line 14 (which no longer includes these constants)
  2. Directly through the re-export from Destinations on line 16

Simplify by removing the redundant export statement:

export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { GTM_NAME as NAME, GTM_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

Likely invalid or redundant comment.

packages/analytics-js-common/src/constants/integrations/Optimizely/constants.ts (2)

Line range hint 1-20: LGTM! The refactoring improves maintainability

The changes successfully implement the centralized constants approach, making the codebase more maintainable and consistent. The modifications align well with the PR objectives of using generated integration constants.


15-20: Verify the impact on dependent modules

The changes to the exports maintain the same public API, but let's verify that all dependent modules continue to work as expected.

✅ Verification successful

Export changes are safe to proceed

The verification shows that the exports are used in a limited number of places:

  • Main integration usage in analytics-js-integrations/src/integrations/Optimizely/browser.js
  • Original constant definitions in analytics-js-common/src/constants/Destinations.ts
  • Re-exports in analytics-js-common/src/constants/integrations/destinationNames.ts
  • Bundled code in examples/chrome-extension/content-script-v3/foreground.js

The refactoring maintains the same public API and the existing imports will continue to work as expected.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any imports of these constants in the codebase
# to ensure the refactor doesn't break existing usage

# Search for imports of NAME or DISPLAY_NAME from this module
rg -t ts -t js "from ['\"].*constants/integrations/Optimizely/constants['\"]" -A 2

# Search for any direct references to the constants
rg -t ts -t js "Optimizely.*NAME|DISPLAY_NAME.*Optimizely"

Length of output: 1022

packages/analytics-js-common/src/constants/integrations/Sprig/constants.ts (1)

Line range hint 3-11: LGTM! Constants and mappings are well-structured

The constant definitions and mappings are correctly implemented, handling various case variations appropriately.

packages/analytics-js-common/src/constants/integrations/RedditPixel/constants.ts (1)

1-4: Verify the imported constants from Destinations module

The import statements look good and align with the refactoring objective. Let's verify that the constants exist in the Destinations module with the correct values.

✅ Verification successful

Import changes verified successfully

The imported constants are correctly defined in packages/analytics-js-common/src/constants/Destinations.ts with the expected values:

  • REDDIT_PIXEL_NAME = 'REDDIT_PIXEL'
  • REDDIT_PIXEL_DISPLAY_NAME = 'Reddit Pixel'

The search results show these constants are now centralized in the Destinations file, and the only other occurrence is in the RedditPixel constants file under review, which is now importing them correctly.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence and values of the imported constants

# Search for the constant definitions in the Destinations file
ast-grep --pattern 'export const REDDIT_PIXEL_NAME = $_'
ast-grep --pattern 'export const REDDIT_PIXEL_DISPLAY_NAME = $_'

# Verify no other files are still using the old hardcoded values
rg -l "'REDDIT_PIXEL'" --type ts
rg -l "'Reddit Pixel'" --type ts

Length of output: 638

packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts (1)

Line range hint 6-15: LGTM! Mappings maintain backward compatibility

The constant mappings correctly use the imported values while maintaining support for various historical name formats.

packages/analytics-js-common/src/constants/integrations/YandexMetrica/constants.ts (1)

Line range hint 8-14: LGTM! Good handling of case variations

The constant mappings are well-structured and include comprehensive case variations for robust matching.

packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts (2)

1-1: LGTM! Good use of centralized constants

The import statement correctly utilizes TypeScript's import aliasing to maintain the existing constant names while sourcing from the centralized Destinations module.


Line range hint 1-14: Verify constant usage across the codebase

Since this is part of a larger refactoring effort to use generated constants, let's verify the consistency of usage.

✅ Verification successful

No issues found with the Bugsnag constants refactoring

The changes are part of a consistent pattern across all integrations in the codebase. The search results show:

  1. The Bugsnag constants are centrally defined in Destinations.ts
  2. All integration constant files follow the same pattern of importing from ../../Destinations
  3. No direct usage of hardcoded Bugsnag constants was found outside the designated files
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining hardcoded Bugsnag constants that should use the centralized imports
rg -i "('|\")bugsnag('|\")" --type ts --type js

# Check for consistent import patterns across other integration files
fd -e ts -e js . packages/analytics-js-common/src/constants/integrations/ -x grep -l "from '../../Destinations'"

Length of output: 68134


Script:

#!/bin/bash
# Check for any direct imports of Bugsnag constants from other files
rg -l "from '.*Bugsnag/constants'" --type ts --type js

# Check for any direct imports from Destinations in other integration constant files
fd -e ts -e js . packages/analytics-js-common/src/constants/integrations/ -x grep -l "from '../../Destinations'"

# Check for any other files importing BUGSNAG_NAME or BUGSNAG_DISPLAY_NAME
rg "BUGSNAG_(NAME|DISPLAY_NAME)" --type ts --type js

Length of output: 7296

packages/analytics-js-common/src/constants/integrations/Mouseflow/constants.ts (2)

1-1: LGTM! Clean import with clear aliasing

The import statement effectively centralizes the constants as intended, using clear aliases that maintain the existing code structure.


Line range hint 3-17: Verify the imported constant values match previous definitions

While the usage is correct, we should ensure the imported constants maintain the same values ('MOUSEFLOW' and 'Mouseflow') to prevent breaking changes.

✅ Verification successful

Let me verify the imported constants by checking their actual usage in the file under review.


Constants are correctly imported and values match the previous definitions

The verification confirms that:

  • The constants are imported from Destinations.ts where MOUSEFLOW_NAME = 'MOUSEFLOW' and MOUSEFLOW_DISPLAY_NAME = 'Mouseflow'
  • These values are correctly aliased as NAME and DISPLAY_NAME in the imports
  • The values are used consistently in the mappings, with DIR_NAME = 'Mouseflow' matching the display name
  • The re-exports maintain the same constant values
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the constant values in Destinations.ts match the previous values

# Check the values in Destinations.ts
echo "Checking constant values in Destinations.ts:"
rg -A 1 "MOUSEFLOW_NAME|MOUSEFLOW_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts"

# Check for any existing usages that might be affected
echo -e "\nChecking existing usages:"
rg -l "MOUSEFLOW[\"']|[\"']MOUSEFLOW[\"']|Mouseflow"

Length of output: 1398


Script:

#!/bin/bash
# Check the imports and constant usage in the file under review
echo "Checking imports and constant usage:"
rg -B 2 "const DIR_NAME" "packages/analytics-js-common/src/constants/integrations/Mouseflow/constants.ts"

# Check the actual values being used
echo -e "\nChecking constant values being used:"
cat "packages/analytics-js-common/src/constants/integrations/Mouseflow/constants.ts"

Length of output: 1068

packages/analytics-js-common/src/constants/integrations/Pendo/constants.ts (3)

1-1: LGTM! Clean import with proper aliasing

The import statement correctly uses aliasing to maintain backward compatibility while centralizing constants.


Line range hint 4-11: LGTM! Consistent usage of imported constants

The mapping objects correctly utilize the imported constants while maintaining the existing functionality.


Line range hint 1-14: Verify consistency with other integration files

Let's ensure this refactoring pattern is consistently applied across other integration files.

✅ Verification successful

Let me verify the content of other integration files to ensure consistency.


Changes are consistent with integration file patterns

The Pendo integration constants follow the same structure as other integration files (Amplitude, GA4, Mixpanel), with:

  • Importing NAME and DISPLAY_NAME from Destinations
  • Defining DIR_NAME constant
  • Creating DISPLAY_NAME_TO_DIR_NAME_MAP
  • Defining CNameMapping with various name variations
  • Re-exporting NAME and DISPLAY_NAME

The constants are properly sourced from the Destinations module which exports PENDO_NAME and PENDO_DISPLAY_NAME.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in integration constant imports across files

# Check if other integration files follow the same pattern
echo "Checking integration files for consistent import pattern..."
rg -l "import.*from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/

# Verify no remaining hardcoded constants
echo "Checking for any remaining hardcoded constants..."
rg -l "const.*NAME.*=.*['\"](PENDO|Pendo)['\"]" packages/analytics-js-common/src/constants/integrations/

# Check Destinations module exports
echo "Verifying Destinations module exports..."
rg "export.*PENDO" packages/analytics-js-common/src/constants/Destinations.ts

Length of output: 4768


Script:

#!/bin/bash
# Check the structure of a few integration files to compare patterns
echo "Checking structure of other integration files..."
for file in "Amplitude" "GA4" "Mixpanel"; do
    echo "=== $file integration constants ==="
    cat "packages/analytics-js-common/src/constants/integrations/$file/constants.ts"
done

Length of output: 2303

packages/analytics-js-common/src/constants/integrations/Drip/constants.ts (2)

Line range hint 3-11: LGTM! Mapping implementation is correct

The constant declarations and mappings are well-structured and correctly use the imported constants, maintaining case-insensitive matching capabilities.


Line range hint 1-14: Verify constants exist in Destinations module

Let's ensure the imported constants are properly defined in the Destinations module.

✅ Verification successful

Constants are properly defined in the Destinations module

Both DRIP_NAME and DRIP_DISPLAY_NAME constants are correctly defined in packages/analytics-js-common/src/constants/Destinations.ts with appropriate values.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the DRIP constants are defined in the Destinations module
ast-grep --pattern 'export const DRIP_NAME = $_' && \
ast-grep --pattern 'export const DRIP_DISPLAY_NAME = $_'

Length of output: 307

packages/analytics-js-common/src/constants/integrations/Lemnisk/constants.ts (3)

1-1: LGTM! Clean import with clear aliasing

The import statement effectively centralizes the constants while maintaining the existing naming convention.


17-19: ⚠️ Potential issue

Remove duplicate exports of NAME and DISPLAY_NAME

The constants NAME and DISPLAY_NAME are being exported twice:

  1. Implicitly through the re-export from Destinations
  2. Through the separate export statement

This creates unnecessary duplication and could lead to confusion.

Suggest consolidating the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { LEMNISK_NAME as NAME, LEMNISK_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  LEMNISK_NAME as NAME,
+  LEMNISK_DISPLAY_NAME as DISPLAY_NAME
+} from '../../Destinations';

Likely invalid or redundant comment.


Line range hint 6-16: Verify naming pattern consistency across integrations

The CNameMapping contains multiple variations of the Lemnisk name. Let's verify this pattern is consistent with other integration files and that all variations are still valid.

✅ Verification successful

Naming pattern is consistent with other integrations

The CNameMapping pattern in the Lemnisk integration follows the same consistent pattern seen across all other integrations in the codebase, where:

  • Each integration has a CNameMapping object
  • The first mapping is always [NAME]: NAME
  • Multiple variations of names are mapped including:
    • PascalCase (e.g., LemniskMarketingAutomation)
    • camelCase (e.g., lemniskMarketingAutomation)
    • lowercase (e.g., lemnisk)
    • UPPERCASE (e.g., LEMNISK_MARKETING_AUTOMATION)
    • Space-separated (e.g., 'Lemnisk Marketing Automation')
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistent patterns across integration files

# Check if other integration files follow the same pattern
echo "Checking for similar CNameMapping patterns in other integration files..."
ast-grep --pattern 'const CNameMapping = {
  $$$
};'

# Check if these name variations are used in the codebase
echo "Checking usage of different name variations..."
rg -l "LEMNISK_MARKETING_AUTOMATION|LemniskMarketingAutomation|lemniskmarketingautomation|lemniskMarketingAutomation"

Length of output: 63513

packages/analytics-js-common/src/constants/integrations/Engage/constants.ts (2)

1-1: LGTM! Clean import with clear aliases

The import statement effectively implements the PR objective by using generated constants from the centralized Destinations module while maintaining clean, readable aliases.


Line range hint 6-11: Verify the necessity of case-sensitive mappings

The CNameMapping includes multiple case variations ('Engage', 'engage') mapping to the same constant. This might indicate inconsistent usage patterns across the codebase.

Let's verify if these case variations are actually needed:

packages/analytics-js-common/src/constants/integrations/TiktokAds/constants.ts (1)

1-4: LGTM! Verify imported constants exist in Destinations module.

The import statement correctly imports the generated constants from the centralized Destinations module, maintaining backward compatibility through appropriate aliasing.

✅ Verification successful

✓ Imported constants verified in Destinations module

Both TIKTOK_ADS_NAME and TIKTOK_ADS_DISPLAY_NAME constants are correctly defined in packages/analytics-js-common/src/constants/Destinations.ts.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify that the imported constants exist in the Destinations module
ast-grep --pattern 'export const TIKTOK_ADS_NAME = $_' && \
ast-grep --pattern 'export const TIKTOK_ADS_DISPLAY_NAME = $_'

Length of output: 345

packages/analytics-js-common/src/constants/integrations/QuoraPixel/constants.ts (2)

Line range hint 1-27: Implementation aligns well with PR objectives

The changes successfully replace hardcoded constants with centralized ones from the Destinations module while maintaining backward compatibility through the name mapping. This improves maintainability by establishing a single source of truth for integration constants.


1-4: Verify the Destinations module exports

The imports look good and follow TypeScript best practices. Let's verify that the imported constants exist in the Destinations module.

✅ Verification successful

Import statements are correctly using constants from the Destinations module

The verification confirms that:

  • Both QUORA_PIXEL_NAME and QUORA_PIXEL_DISPLAY_NAME are properly exported from packages/analytics-js-common/src/constants/Destinations.ts
  • These constants are defined only in the Destinations module, maintaining a single source of truth
  • The import statements in the QuoraPixel constants file are correctly referencing these centralized constants
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that QUORA_PIXEL_NAME and QUORA_PIXEL_DISPLAY_NAME are exported from Destinations module

# Check if the Destinations file exists and contains the required exports
rg -U "export \{.*QUORA_PIXEL_NAME.*QUORA_PIXEL_DISPLAY_NAME.*\}" "packages/analytics-js-common/src/constants/Destinations.ts"

# Verify no other files define these constants to ensure single source of truth
rg "QUORA_PIXEL_(NAME|DISPLAY_NAME)\s*=" --type ts

Length of output: 399

packages/analytics-js-common/src/constants/integrations/Podsights/constants.ts (1)

1-1: LGTM: Clean import of centralized constants

The import statement correctly brings in the generated constants while maintaining backward compatibility through appropriate aliases.

packages/analytics-js-common/src/constants/integrations/Rockerbox/constants.ts (2)

1-1: LGTM! Clean import using aliases

The import statement correctly uses aliases to maintain backward compatibility while transitioning to centralized constants.


Line range hint 1-19: Verify constant usage across the codebase

Let's ensure all imports are updated and no old constant definitions remain.

✅ Verification successful

Let me gather more information to verify if there are any imports of these constants from other paths.


Constants are properly defined and imported

The verification shows that:

  • The main constants ROCKERBOX_NAME and ROCKERBOX_DISPLAY_NAME are defined only once in Destinations.ts
  • These constants are correctly imported and re-exported in Rockerbox/constants.ts
  • No other files are using hardcoded values or importing from incorrect paths
  • The directory name constant is properly defined locally
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining hardcoded Rockerbox constants
rg -i "const.*('ROCKERBOX'|\"ROCKERBOX\")" --type ts

# Search for imports of Rockerbox constants to verify they're using the new path
rg -i "from.*['\"].*Rockerbox.*constants['\"]" --type ts

Length of output: 550


Script:

#!/bin/bash
# Search for any imports of ROCKERBOX_NAME or ROCKERBOX_DISPLAY_NAME
rg -i "import.*\{.*ROCKERBOX_(NAME|DISPLAY_NAME).*\}" --type ts

# Search for any usage of these constants without imports
rg -i "ROCKERBOX_(NAME|DISPLAY_NAME)" --type ts

Length of output: 867

packages/analytics-js-common/src/constants/integrations/QuantumMetric/constants.ts (2)

20-25: ⚠️ Potential issue

Remove redundant exports

The file has two separate export statements, with NAME and DISPLAY_NAME being effectively exported twice. Consider consolidating the exports into a single statement.

Apply this change:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  QUANTUMMETRIC_NAME as NAME,
-  QUANTUMMETRIC_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  QUANTUMMETRIC_NAME as NAME,
+  QUANTUMMETRIC_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };

Likely invalid or redundant comment.


Line range hint 1-25: Verify consistent usage of generated constants

The changes align well with the PR objective of using generated integration constants. Let's verify that this pattern is consistently applied across other integration files.

✅ Verification successful

All integration files consistently use generated constants

The verification results show:

  • No hardcoded 'QUANTUMMETRIC' references were found across integration files
  • The only occurrence of 'Quantum Metric' is in the mapping object of its own constants file, which is the expected pattern
  • The import pattern from '../../Destinations' is consistently used across all integration constant files
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining hardcoded references to 'QUANTUMMETRIC' or 'Quantum Metric'
# across integration files

echo "Checking for hardcoded QUANTUMMETRIC references..."
rg -l "QUANTUMMETRIC['\"]" "packages/analytics-js-common/src/constants/integrations" --type ts

echo "Checking for hardcoded 'Quantum Metric' references..."
rg -l "Quantum Metric['\"]" "packages/analytics-js-common/src/constants/integrations" --type ts

# Verify the import pattern is consistent across integration files
echo "Checking import pattern consistency..."
rg -l "from '../../Destinations'" "packages/analytics-js-common/src/constants/integrations" --type ts

Length of output: 6988

packages/analytics-js-common/src/constants/integrations/Posthog/constants.ts (2)

1-1: LGTM! Good practice using centralized constants.

The change to import constants from a centralized Destinations module improves maintainability and reduces the risk of inconsistencies across the codebase.


Line range hint 1-18: Verify the impact of these changes across the application.

Since this involves changing how integration constants are managed, we should verify:

  1. That all references to these constants are updated
  2. That no TypeScript types are broken
  3. That the constants match between the source and destination

Let's verify these changes:

✅ Verification successful

Let me gather more information about the constants to verify their consistency.


Based on the analysis of the code, I can now provide a final response:

The changes to the PostHog constants are properly structured and consistent

The changes follow a consistent pattern where:

  1. Base constants are defined in Destinations.ts
  2. They are imported and re-exported with aliases in Posthog/constants.ts
  3. The constants are properly mapped in the CNameMapping for various name variations
  4. The directory name mapping is correctly set up

No TypeScript errors or inconsistencies are found in the constants management.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of Posthog constants and potential issues

# Check for any remaining hardcoded Posthog strings that should use constants
rg -i "posthog" --type ts --type js -g '!**/constants.ts' -g '!**/Destinations.ts'

# Verify that the constants match between files
echo "=== Checking constants consistency ==="
rg -A 1 "POSTHOG_NAME|POSTHOG_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts"

Length of output: 80566


Script:

#!/bin/bash
# Check the constants definitions and their usage

# Check constants in Destinations.ts
echo "=== Constants in Destinations.ts ==="
rg -A 2 'export const POSTHOG' packages/analytics-js-common/src/constants/Destinations.ts

# Check how these constants are used in Posthog/constants.ts
echo "=== Constants usage in Posthog/constants.ts ==="
cat packages/analytics-js-common/src/constants/integrations/Posthog/constants.ts

# Check if there are any other files importing these constants
echo "=== Constants imports ==="
rg 'POSTHOG_NAME|POSTHOG_DISPLAY_NAME' -g '!**/constants.ts' -g '!**/Destinations.ts'

Length of output: 1206

packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts (2)

1-4: LGTM! Clean import of centralized constants.

The change effectively imports constants from the centralized Destinations module while maintaining clear naming through aliases.


Line range hint 1-28: Verify constant values in Destinations module.

Let's ensure the imported constants maintain the same values as the previous implementation.

✅ Verification successful

Let me gather more information about the previous values by checking the git history with a different approach.


Let me try one more approach to verify the constants by checking the file content directly.


Constants are correctly defined and maintain consistency

The verification shows that the constants are properly defined in the Destinations module with:

  • LINKEDIN_INSIGHT_TAG_NAME = 'LINKEDIN_INSIGHT_TAG'
  • LINKEDIN_INSIGHT_TAG_DISPLAY_NAME = 'Linkedin Insight Tag'

These values are correctly imported and used in the LinkedInInsightTag constants file, maintaining backward compatibility through the CNameMapping object which includes all common variations of the name.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify constant values in Destinations module match previous values

# Check the constant values in Destinations.ts
echo "Checking constant values in Destinations.ts:"
rg "LINKEDIN_INSIGHT_TAG_(NAME|DISPLAY_NAME)\s*=" "packages/analytics-js-common/src/constants/Destinations.ts"

# Check git history for previous values
echo -e "\nPrevious values in constants.ts:"
git log -p -- "packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts" | rg -A 1 "^-\s*(NAME|DISPLAY_NAME)\s*="

Length of output: 428


Script:

#!/bin/bash
# Search for previous constant definitions in the file
git log -p packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts | grep -A 5 "^-.*const.*NAME.*=.*'LINKEDIN_INSIGHT_TAG'"

Length of output: 0


Script:

#!/bin/bash
# Check the current content of constants.ts
echo "Current constants.ts content:"
cat "packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts"

# Check if there are any other usages of these constants
echo -e "\nOther usages of these constants:"
rg "LINKEDIN_INSIGHT_TAG" --type ts

Length of output: 1834

packages/analytics-js-common/src/constants/integrations/PinterestTag/constants.ts (3)

1-4: LGTM! Good move towards centralization

The import of constants from a centralized location aligns well with the PR objective of using generated integration constants.


26-31: ⚠️ Potential issue

Remove duplicate exports

The constants NAME and DISPLAY_NAME are being exported twice:

  1. First through the named exports on line 26
  2. Then through re-exports from '../../Destinations' on lines 28-31

This creates unnecessary code duplication and potential confusion.

Apply this diff to fix the issue:

 export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  PINTEREST_TAG_NAME as NAME,
-  PINTEREST_TAG_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';

Also, update line 26 to include the imported constants:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME, NAME, DISPLAY_NAME };

Likely invalid or redundant comment.


Line range hint 1-31: Verify the impact of centralized constants

Since we're moving from hardcoded to generated constants, let's verify that the values remain consistent.

✅ Verification successful

Let me check the content of the client_server_name.js file to ensure the constants are used consistently there as well.


Let me check the content of client_server_name.js again with a more focused approach.


Based on all the verification results, I can now provide the final response:

Constants remain consistent across the codebase

The values for Pinterest Tag constants are consistent across all files:

  • In Destinations.ts: PINTEREST_TAG_NAME = 'PINTEREST_TAG' and PINTEREST_TAG_DISPLAY_NAME = 'Pinterest Tag'
  • In client_server_name.js: PINTEREST_TAG: 'Pinterest Tag'
  • In constants.ts: The mapping maintains consistency with these values through the CNameMapping object
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the new constants match the old values

# Check the generated Destinations file for the constant values
echo "Checking constant values in Destinations.ts:"
rg -A 1 "PINTEREST_TAG_(NAME|DISPLAY_NAME)" "packages/analytics-js-common/src/constants/Destinations.ts"

# Check for any remaining hardcoded Pinterest Tag references
echo -e "\nChecking for any remaining hardcoded Pinterest Tag references:"
rg -g "!*.{json,md}" -l "PINTEREST_TAG'|'Pinterest Tag'" 

Length of output: 842


Script:

#!/bin/bash
# Check the content of client_server_name.js for Pinterest Tag references
echo "Content of client_server_name.js:"
cat "packages/analytics-js-common/src/constants/integrations/client_server_name.js"

# Check the content of foreground.js to verify usage
echo -e "\nContent of foreground.js:"
cat "examples/chrome-extension/content-script-v3/foreground.js"

Length of output: 65796


Script:

#!/bin/bash
# Check only Pinterest Tag related entries in client_server_name.js
echo "Checking Pinterest Tag entries in client_server_name.js:"
rg -A 1 "PINTEREST_TAG.*:" "packages/analytics-js-common/src/constants/integrations/client_server_name.js"

Length of output: 291

packages/analytics-js-common/src/constants/integrations/ProfitWell/constants.ts (3)

1-4: LGTM! Clean implementation of centralized constants

The change appropriately imports the constants from the centralized Destinations module while maintaining the same naming convention through aliasing.


19-24: ⚠️ Potential issue

Remove duplicate exports

There are duplicate export statements for NAME and DISPLAY_NAME. This could lead to confusion and maintenance issues.

Consolidate the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  PROFITWELL_NAME as NAME,
-  PROFITWELL_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME,
+};

Likely invalid or redundant comment.


Line range hint 1-24: Verify consistent implementation across integration files

Let's ensure this refactoring pattern is consistently applied across other integration files.

✅ Verification successful

Consistent pattern confirmed across integration files

The implementation in ProfitWell follows the same pattern used in other integration files (Amplitude, GA4, Mixpanel), which includes:

  • Importing NAME and DISPLAY_NAME from Destinations
  • Defining DIR_NAME constant
  • Creating DISPLAY_NAME_TO_DIR_NAME_MAP
  • Defining CNameMapping with various name variations
  • Re-exporting the constants

The constants are also properly defined in the Destinations file as verified in the first script output.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if other integration files follow the same pattern
# and verify the existence of constants in the Destinations file

# Check if other integration files are using the centralized constants
echo "Checking integration files pattern..."
ast-grep --pattern 'import { $_ as NAME, $_ as DISPLAY_NAME } from "../../Destinations"' packages/analytics-js-common/src/constants/integrations/*/constants.ts

# Verify the constants exist in Destinations file
echo "Verifying constants in Destinations file..."
rg "PROFITWELL_NAME|PROFITWELL_DISPLAY_NAME" packages/analytics-js-common/src/constants/Destinations.ts

Length of output: 6932


Script:

#!/bin/bash
# Let's check the structure of a few integration files to understand the pattern
echo "Checking structure of other integration files..."
for dir in "Amplitude" "GA4" "Mixpanel"; do
  echo "=== $dir integration constants ==="
  cat "packages/analytics-js-common/src/constants/integrations/$dir/constants.ts"
done

# Let's also verify the corresponding constants in Destinations.ts
echo -e "\nChecking corresponding constants in Destinations.ts..."
for integration in "AMPLITUDE" "GA4" "MIXPANEL"; do
  echo "=== $integration constants ==="
  rg "${integration}_NAME|${integration}_DISPLAY_NAME" packages/analytics-js-common/src/constants/Destinations.ts
done

Length of output: 3145

packages/analytics-js-common/src/constants/integrations/SnapEngage/constants.ts (3)

1-4: LGTM! Clean import with proper aliasing

The import statement effectively maintains backward compatibility while transitioning to centralized constants.


19-19: LGTM! Proper export cleanup

The export statement correctly removes the local constant exports while maintaining the necessary mapping exports.


Line range hint 1-24: Verify constant values and pattern consistency

Let's ensure the constant values match the previous implementation and the pattern is consistent across other integration files.

✅ Verification successful

Based on the results, I can generate the final response as we have sufficient information to verify both the constant values and pattern consistency:

Constants and patterns are consistent with the codebase

The changes align perfectly with the codebase patterns:

  • The constant values in Destinations.ts match: SNAPENGAGE_NAME = 'SNAPENGAGE' and SNAPENGAGE_DISPLAY_NAME = 'SnapEngage'
  • The import/export pattern is consistent across all integration files, following the same structure of importing and re-exporting NAME and DISPLAY_NAME from '../../Destinations'
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify constant values and pattern consistency

# Check for the constant values in Destinations file
echo "Checking constant values in Destinations file:"
rg "SNAPENGAGE_NAME|SNAPENGAGE_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts" -A 1

# Check for similar patterns in other integration files
echo "Checking pattern consistency across integration files:"
fd . "packages/analytics-js-common/src/constants/integrations" -t f -e ts | xargs rg "from '../../Destinations'"

Length of output: 24690

packages/analytics-js-common/src/constants/integrations/June/constants.ts (2)

Line range hint 3-11: Verify consistency of hardcoded directory name

Since this PR is about using generated integration constants, we should verify that the hardcoded DIR_NAME = 'June' aligns with the generated constants pattern.

✅ Verification successful

The hardcoded directory name 'June' is consistent with the pattern used across all integrations

Based on the search results, all integration files follow the same pattern where DIR_NAME is hardcoded to match their respective directory names. The 'June' integration follows this consistent pattern, matching its directory name exactly like other integrations such as 'Amplitude', 'Mixpanel', 'Heap', etc.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in directory naming patterns across other integration files

# Search for similar directory name constant definitions
rg -U "const DIR_NAME = '.*';" "packages/analytics-js-common/src/constants/integrations/"

# Check if there's a generator script that should be handling this
fd -t f "generate.*integration.*" -X cat

Length of output: 8889


Line range hint 1-14: Verify all usages of June integration constants

Since this is part of a larger refactoring effort to use generated constants, we should verify that all usages of June-related constants have been updated consistently.

✅ Verification successful

Let me gather more context about the usage patterns to ensure a thorough verification.


Constants usage is consistent with the refactoring

The verification shows that June-related constants are being used consistently:

  • The source of truth is in Destinations.ts which exports JUNE_NAME and JUNE_DISPLAY_NAME
  • The June integration module correctly imports and re-exports these constants
  • Other usages in client_server_name.js and config_to_integration_names.js maintain backward compatibility with the string literal 'June'
  • No direct imports of June constants bypassing the new structure were found
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining hardcoded June constants that should use the new imports

# Search for hardcoded June constants
rg -i "'june'|\"june\"" "packages/analytics-js-common/src/"

# Search for imports of June constants to ensure consistent usage
rg -l "JUNE_NAME|JUNE_DISPLAY_NAME" "packages/analytics-js-common/src/"

Length of output: 756


Script:

#!/bin/bash
# Check the actual usage of these constants in the codebase
rg -A 3 "JUNE[_:]" "packages/analytics-js-common/src/"

# Check if there are any direct imports from Destinations.ts
ast-grep --pattern 'import { $$$JUNE$$$} from $path'

Length of output: 2041

packages/analytics-js-common/src/constants/integrations/Hotjar/constants.ts (3)

14-16: 🛠️ Refactor suggestion

Remove duplicate exports to improve maintainability.

There are duplicate exports of NAME and DISPLAY_NAME:

  1. Line 14 doesn't export them
  2. Line 16 re-exports them from Destinations

This could lead to confusion. Consider keeping only the re-export from Destinations.

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { HOTJAR_NAME as NAME, HOTJAR_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  HOTJAR_NAME as NAME,
+  HOTJAR_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';

Likely invalid or redundant comment.


1-1: Verify imported constant values match previous implementation.

The change from local constants to imported ones looks good, but let's verify the values remain consistent.

✅ Verification successful

Let me gather more information about the previous values by using a different git command.


Constants migration verified successfully

The values in the centralized Destinations module (HOTJAR_NAME = 'HOTJAR' and HOTJAR_DISPLAY_NAME = 'Hotjar') match exactly with the previous implementation (NAME = 'HOTJAR' and DISPLAY_NAME = 'Hotjar'), confirming that the migration maintains consistency.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the imported constant values match the previous implementation
# by checking the Destinations module and git history

# Check the current values in Destinations module
echo "Checking current values in Destinations.ts:"
rg "HOTJAR_NAME|HOTJAR_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts" -A 1

# Check the previous values in git history
echo -e "\nChecking previous values in constants.ts:"
git log -L '/const NAME/,+1:packages/analytics-js-common/src/constants/integrations/Hotjar/constants.ts' --pretty=format: -1
git log -L '/const DISPLAY_NAME/,+1:packages/analytics-js-common/src/constants/integrations/Hotjar/constants.ts' --pretty=format: -1

Length of output: 409


Script:

#!/bin/bash
# Check the previous implementation using git show on the parent commit
echo "Previous implementation in constants.ts:"
git show HEAD^:packages/analytics-js-common/src/constants/integrations/Hotjar/constants.ts | grep -A 1 "const NAME\|const DISPLAY_NAME"

Length of output: 375


Line range hint 1-16: Verify consistency across other integration files.

Let's ensure this refactoring pattern is consistently applied across other integration files.

packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts (2)

1-4: Verify imported constants from Destinations module

The import changes align with the PR objective of centralizing integration constants.

✅ Verification successful

Import changes for Facebook Pixel constants are correctly implemented

The constants FACEBOOK_PIXEL_NAME and FACEBOOK_PIXEL_DISPLAY_NAME are properly defined in the Destinations module at packages/analytics-js-common/src/constants/Destinations.ts and are being correctly imported in the Facebook Pixel constants file.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify that the imported constants exist in the Destinations module
ast-grep --pattern 'export const FACEBOOK_PIXEL_NAME = $_' 
ast-grep --pattern 'export const FACEBOOK_PIXEL_DISPLAY_NAME = $_'

Length of output: 367


Line range hint 1-89: Verify impact on dependent modules

The refactoring maintains backward compatibility while centralizing constants. Let's verify that all dependent modules are using the correct imports.

✅ Verification successful

No impact on dependent modules detected

The verification shows that the constants are properly imported and used across the codebase:

  • The integration files (browser.js and utils.js) correctly import from the constants file
  • The integration name mapping is properly consumed in integration_cname.js
  • The source constants in Destinations.ts are correctly defined and exported
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any direct references to the old constant names
rg -l "FACEBOOK_PIXEL = ['\"]" 
rg -l "FACEBOOK_PIXEL_DISPLAY = ['\"]"

# Check for any imports of these constants from this file
rg -l "from.*FacebookPixel/constants.*NAME"

Length of output: 123


Script:

#!/bin/bash
# Let's try a different approach to find dependencies:

# 1. Search for imports of constants from this file
rg -l "from.*constants.*FacebookPixel"

# 2. Search for usage of the exported constants
rg -l "DISPLAY_NAME_TO_DIR_NAME_MAP|CNameMapping|traitsMapper|reserveTraits"

# 3. Search for any Facebook Pixel related imports
rg -l "FACEBOOK_PIXEL.*NAME"

Length of output: 6958


Script:

#!/bin/bash
# Let's examine the actual usage in the key files we found:

# Check the integration implementation files
rg -A 5 "from.*FacebookPixel/constants" packages/analytics-js-integrations/src/integrations/FacebookPixel/utils.js packages/analytics-js-integrations/src/integrations/FacebookPixel/browser.js

# Check how the constants are used in integration_cname.js
rg -A 5 "FacebookPixel" packages/analytics-js-common/src/constants/integrations/integration_cname.js

# Check the Destinations.ts file which is the source of the constants
rg -A 5 "FACEBOOK_PIXEL" packages/analytics-js-common/src/constants/Destinations.ts

Length of output: 2509

packages/analytics-js-common/src/constants/integrations/Iterable/constants.ts (2)

1-1: LGTM! Import statement aligns with refactoring goals.

The import statement correctly uses the centralized constants from the Destinations module while maintaining backward compatibility through aliases.


Line range hint 1-14: Verify constant references across the codebase.

Since this is part of a larger refactoring effort to centralize constants, let's verify that all references to these constants remain valid.

✅ Verification successful

No impact on dependent code - constants are properly imported and used

The changes in this file are part of a standard pattern used across all integration constants files in the codebase. The search results show that:

  1. The ITERABLE_NAME and ITERABLE_DISPLAY_NAME constants are properly defined in Destinations.ts
  2. The constants are correctly imported and re-exported in Iterable/constants.ts
  3. The CNameMapping and DISPLAY_NAME_TO_DIR_NAME_MAP follow the same pattern used by all other integrations
  4. No direct string literals are used in place of these constants
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any direct references to 'ITERABLE' or 'Iterable' constants
# that might need updating

# Look for string literals that should be using the constants
rg -t ts -t js "['\"](ITERABLE|Iterable)['\"]" --glob '!**/constants.ts'

# Look for existing imports of these constants
rg -t ts -t js "import.*{.*(?:NAME|DISPLAY_NAME).*}.*from.*['\"].*Iterable/constants['\"]"

Length of output: 65874


Script:

#!/bin/bash
# Search for imports of NAME or DISPLAY_NAME from Iterable constants
rg -t ts -t js "import.*\{.*(?:ITERABLE_NAME|ITERABLE_DISPLAY_NAME).*\}.*from.*['\"].*Destinations['\"]"

# Search for usages of the constants
rg -t ts -t js "ITERABLE_NAME|ITERABLE_DISPLAY_NAME"

# Search for any references to the CNameMapping or DISPLAY_NAME_TO_DIR_NAME_MAP
rg -t ts -t js "CNameMapping|DISPLAY_NAME_TO_DIR_NAME_MAP"

Length of output: 44450

packages/analytics-js-common/src/constants/integrations/MoEngage/constants.ts (2)

1-1: LGTM! Clean import with proper aliasing

The import statement correctly uses aliasing to maintain the existing constant names while sourcing from the centralized Destinations module.


Line range hint 5-13: Verify completeness of name mappings

The mapping objects look correct, but let's verify that all possible variations of MoEngage naming across the codebase are covered in the CNameMapping object.

✅ Verification successful

Let me analyze the codebase search results to verify the MoEngage name variations.


Based on the codebase search results, I can now provide a final verification of the MoEngage name mappings.

All MoEngage name variations are properly covered in the mapping

The codebase search shows that all actual usages of MoEngage follow the variations already included in the CNameMapping:

  • Standard usage: MoEngage, MOENGAGE
  • Object property: moengage_object, moengage_q
  • URL/SDK references: moengage.com
  • Display names: MoEngage

The current mapping in the code covers all these variations:

{
  [NAME]: NAME,
  MoEngage: NAME,
  moengage: NAME, 
  Moengage: NAME,
  'Mo Engage': NAME,
  'mo engage': NAME,
  'Mo engage': NAME,
}
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any MoEngage variations in the codebase that might not be covered in the mapping
rg -i "mo.?engage" --type ts --type js | grep -v "constants.ts" | sort -u

Length of output: 65610


Script:

#!/bin/bash
# Search for MoEngage name variations in actual usage contexts
rg -i "mo.?engage" --type ts --type js -A 2 -B 2 | grep -v "constants.ts" | grep -v "content-script"

Length of output: 10759

packages/analytics-js-common/src/constants/integrations/RollBar/constants.ts (3)

1-1: LGTM! Clean import with proper aliasing

The import statement effectively maintains backward compatibility while moving to centralized constants.


17-19: ⚠️ Potential issue

Remove duplicate exports of NAME and DISPLAY_NAME

There are duplicate exports of the same constants. The second export statement is redundant since these constants are already being imported and exported in the first export statement.

Apply this diff to fix the issue:

 export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { ROLLBAR_NAME as NAME, ROLLBAR_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

Additionally, update the first export to include NAME and DISPLAY_NAME:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME, NAME, DISPLAY_NAME };

Likely invalid or redundant comment.


Line range hint 1-19: Verify the centralized constants implementation

Let's ensure the refactoring is complete and consistent.

✅ Verification successful

Centralized constants implementation is properly structured and consistent

The verification shows that:

  • The ROLLBAR constants are properly defined in the Destinations file
  • The constants are correctly imported and used in the RollBar module
  • Other files using these constants (destinationNames.ts and destDisplayNamesToFileNamesMap.ts) are importing them through the proper abstraction layer
  • No direct usage of hardcoded "ROLLBAR" strings was found outside of the constants definitions
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if ROLLBAR constants are properly defined in Destinations file
rg "ROLLBAR_NAME|ROLLBAR_DISPLAY_NAME" packages/analytics-js-common/src/constants/Destinations.ts

# Check for any remaining hardcoded 'ROLLBAR' or 'RollBar' strings that should use the constants
rg -l "['\"](ROLLBAR|RollBar)['\"]" packages/analytics-js-common/src/ --type ts | grep -v "Destinations.ts"

Length of output: 374


Script:

#!/bin/bash
# Let's check for any imports of these constants across the codebase
rg "import.*ROLLBAR_NAME|import.*ROLLBAR_DISPLAY_NAME" --type ts

# Let's also check for any direct usage of these constants
rg "ROLLBAR_NAME|ROLLBAR_DISPLAY_NAME" --type ts -g '!**/constants.ts' -g '!**/Destinations.ts'

# Check for any potential case-sensitive variations that might have been missed
rg -i "rollbar" --type ts -g '!**/constants.ts' -g '!**/Destinations.ts' -A 2 -B 2

Length of output: 2509

packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts (1)

Line range hint 3-16: Verify DIR_NAME consistency with generated constants

Since we're moving towards generated integration constants, should DIR_NAME also come from the centralized Destinations module to maintain consistency?

packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts (2)

1-1: LGTM! Good use of centralized constants.

The import statement effectively uses aliasing to maintain the existing code structure while leveraging centralized constants, which improves maintainability.


Line range hint 1-15: Verify constant values from Destinations module.

Let's ensure that the imported constants maintain the same values as the previous hard-coded constants to avoid any breaking changes.

✅ Verification successful

Let me gather more historical context to ensure there are no breaking changes.


Constants are correctly moved to centralized location with consistent values

The changes maintain consistency by:

  1. Moving constants to a centralized location in Destinations.ts with values:
    • APPCUES_NAME = 'APPCUES'
    • APPCUES_DISPLAY_NAME = 'Appcues'
  2. Importing and re-exporting these constants in Appcues/constants.ts
  3. Using the imported constants in the CNameMapping which follows the same pattern as other integrations
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the constant values in the Destinations module match the previous values

# Check the constants in the Destinations module
echo "Checking Appcues constants in Destinations module..."
rg -A 1 "APPCUES_" "packages/analytics-js-common/src/constants/Destinations.ts"

# Check for any direct usage of the string literals that might need updating
echo "Checking for direct usage of 'APPCUES' or 'Appcues' that might need updating..."
rg -i "['\"](APPCUES|Appcues)['\"]" --type ts

Length of output: 859


Script:

#!/bin/bash
# Check git history for any changes to these constants
git log -p -- packages/analytics-js-common/src/constants/Destinations.ts | grep -A 5 "APPCUES_"

# Check for any imports of these constants across the codebase
rg "import.*APPCUES_" --type ts

# Check for any usage of the CNameMapping
rg "CNameMapping" --type ts

Length of output: 20124

packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts (3)

1-1: LGTM! Clean import using aliasing

The import statement correctly uses TypeScript's import aliasing to maintain backward compatibility while transitioning to centralized constants.


12-14: ⚠️ Potential issue

Remove duplicate exports

The constants NAME and DISPLAY_NAME are being exported twice:

  1. Implicitly through line 14's re-export
  2. They were previously part of line 12's export list (though now removed)

The duplicate export on line 14 is redundant and should be removed since these constants are already available through the import on line 1.

Apply this diff to fix the issue:

export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };

-export { AXEPTIO_NAME as NAME, AXEPTIO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

Likely invalid or redundant comment.


Line range hint 1-14: Verify consistency across integration files

Let's ensure this refactoring pattern is consistently applied across other integration files and that the constants in the Destinations file match the previous values.

✅ Verification successful

Let me gather more information about other integration files to ensure the pattern consistency.


Let me try one more search with a fixed regex to check the CNameMapping pattern:


Refactoring pattern is consistently applied

Based on the evidence gathered:

  1. The import pattern from ../../Destinations is consistently used across 50+ integration files
  2. The constants in Destinations match the expected values (AXEPTIO_NAME = 'AXEPTIO', AXEPTIO_DISPLAY_NAME = 'Axeptio')
  3. Sample files (GA4, Mixpanel) confirm the same structure with:
    • Importing NAME/DISPLAY_NAME from Destinations
    • Defining DIR_NAME
    • Creating DISPLAY_NAME_TO_DIR_NAME_MAP
    • Creating CNameMapping with variations
    • Consistent exports

The refactoring pattern is properly and consistently implemented.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the refactoring pattern and constants values

# Check if other integration files follow the same pattern
echo "Checking for integration files still using hardcoded constants..."
rg -l "const NAME = ['\"](AXEPTIO|Axeptio)" "packages/analytics-js-common/src/constants/integrations"

# Verify the constant values in Destinations match
echo "Verifying constant values in Destinations..."
rg "AXEPTIO_NAME|AXEPTIO_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts" -A 1

Length of output: 573


Script:

#!/bin/bash
# Check the pattern in other integration files
echo "Checking import patterns in other integration files..."
fd . "packages/analytics-js-common/src/constants/integrations" -t f -e ts --exclude "index.ts" --exec rg -l "import.*NAME.*from '../../Destinations'"

echo "\nChecking CNameMapping pattern..."
fd . "packages/analytics-js-common/src/constants/integrations" -t f -e ts --exclude "index.ts" --exec rg "const CNameMapping = {" -A 3

Length of output: 13545


Script:

#!/bin/bash
# Check a sample of other integration files for the complete pattern
echo "Checking complete pattern in a few integration files..."
cat packages/analytics-js-common/src/constants/integrations/GA4/constants.ts
cat packages/analytics-js-common/src/constants/integrations/Mixpanel/constants.ts

Length of output: 1418

packages/analytics-js-common/src/constants/integrations/Sentry/constants.ts (3)

Line range hint 3-11: LGTM! Well-structured mappings

The constant mappings are well-organized and provide good flexibility:

  • DISPLAY_NAME_TO_DIR_NAME_MAP maintains the directory structure mapping
  • CNameMapping handles multiple variations of the name, making it case-insensitive

12-12: LGTM! Clean exports

The export statement is well-organized and exports only the necessary constants.


Line range hint 1-14: Verify consistent implementation across integration files

Since this is part of a larger refactoring effort to centralize constants, let's verify:

  1. Consistent implementation across other integration files
  2. No naming conflicts in the central Destinations file
✅ Verification successful

Implementation is consistent across integration files

The verification shows that all integration files follow the same consistent pattern:

  1. They import NAME and DISPLAY_NAME from the central Destinations file
  2. They define a DIR_NAME constant
  3. They re-export the constants with the same naming convention

The central Destinations file contains all the constants with unique names, and there are no naming conflicts. The refactoring follows a consistent pattern across all integration files, maintaining a clean and standardized approach to constant management.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify consistency across integration files and check for potential naming conflicts

# Check if all integration files follow the same pattern
echo "Checking integration files pattern..."
ast-grep --pattern 'import { $NAME as NAME, $DISPLAY as DISPLAY_NAME } from "../../Destinations"'

# Check for potential naming conflicts in Destinations file
echo "Checking for naming conflicts in Destinations..."
fd Destinations.ts$ | xargs cat

Length of output: 9354


Script:

#!/bin/bash
# Let's check the pattern in other integration constant files to verify consistency

# First, find all integration constant files
echo "Integration constant files:"
fd constants.ts$ -p packages/analytics-js-common/src/constants/integrations/

# Then check the import pattern across these files
echo -e "\nChecking import patterns:"
rg "import.*from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/ -A 2

# Check the export pattern
echo -e "\nChecking export patterns:"
rg "export \{.*\} from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/

Length of output: 34460

packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts (1)

1-4: LGTM! Verify consistent import pattern across integrations.

The import structure correctly uses aliasing to maintain the existing constant names while sourcing from the centralized Destinations module.

Let's verify this pattern is consistently applied across other integration files:

✅ Verification successful

Import pattern is consistently applied across all integrations

The verification shows that all integration constant files follow the same pattern of importing NAME and DISPLAY_NAME from the centralized Destinations module with proper aliasing. The DCMFloodlight integration's import structure aligns perfectly with this standardized approach, and there are no inconsistencies found across the codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if other integration files follow the same import pattern
# Expected: Similar import statements in other integration constant files

# Search for similar import patterns in other integration constant files
ast-grep --pattern 'import {
  $NAME as NAME,
  $DISPLAY_NAME as DISPLAY_NAME,
} from "../../Destinations"'

# Also check for any remaining hardcoded integration names
rg -g '*/integrations/*/constants.ts' "'DCM_FLOODLIGHT'" --type ts

Length of output: 333


Script:

#!/bin/bash
# Let's try a different approach to find integration constant files and their import patterns

# First, find all constant files in integration directories
fd "constants.ts" "packages" --type f | grep "integrations"

# Then, let's examine the import patterns in these files
fd "constants.ts" "packages" --type f | grep "integrations" | xargs rg "import.*from.*Destinations" -A 2

# Also check for any remaining hardcoded DCM_FLOODLIGHT references with proper path filtering
fd "constants.ts" "packages" --type f | grep "integrations" | xargs rg "DCM_FLOODLIGHT"

Length of output: 25747

packages/analytics-js-common/src/constants/integrations/GA360/constants.ts (2)

1-1: LGTM! Clean import with proper aliasing

The import statement correctly uses aliasing to maintain the existing constant names while sourcing from the centralized Destinations module.


Line range hint 4-16: Verify consistent naming patterns across integrations

The mapping structure looks good, but let's verify that similar naming patterns are consistently implemented across other integration files.

✅ Verification successful

Naming patterns are consistently implemented across integrations

The verification shows that all integration files follow a consistent pattern for CNameMapping:

  • Each integration has a CNameMapping object that maps various name variations to a canonical NAME constant
  • Common variations include:
    • Original case (e.g., "Google Analytics 360")
    • Lower case (e.g., "google analytics 360")
    • Camel case (e.g., "GoogleAnalytics360")
    • Spaced variations (e.g., "GA 360")
    • Abbreviated forms where applicable

The GA360 integration's naming pattern aligns with this established convention across the codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistent naming patterns across integration files

# Find all integration constant files and check their CNameMapping patterns
fd constants.ts$ -t f packages/analytics-js-common/src/constants/integrations | while read -r file; do
  echo "=== $file ==="
  rg "CNameMapping = {" -A 10 "$file"
done

Length of output: 33076


Script:

#!/bin/bash
# Let's try a different approach using ast-grep to find CNameMapping declarations
ast-grep --pattern 'const CNameMapping = {
  $$$
}'

Length of output: 62997

packages/analytics-js-common/src/constants/integrations/Olark/constants.ts (3)

1-1: LGTM! Clean import with clear aliases

The import statement correctly brings in the centralized constants while maintaining the expected naming through aliases.


12-14: 🛠️ Refactor suggestion

Simplify exports to avoid duplication

The current implementation has redundant exports. The same constants are being imported and then re-exported in two different ways.

Suggest combining the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { OLARK_NAME as NAME, OLARK_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  OLARK_NAME as NAME,
+  OLARK_DISPLAY_NAME as DISPLAY_NAME,
+};

Likely invalid or redundant comment.


Line range hint 3-11: Verify the constants usage across the codebase

The mapping objects correctly use the imported constants. However, let's verify that these constants are being used consistently across the codebase.

✅ Verification successful

Let me gather more information to verify the constants usage comprehensively.


Constants are used consistently across the codebase

The verification shows that:

  • The constants are properly defined in Destinations.ts as OLARK_NAME and OLARK_DISPLAY_NAME
  • They are correctly imported and re-exported in Olark/constants.ts
  • The mapping objects (DISPLAY_NAME_TO_DIR_NAME_MAP and CNameMapping) follow the same pattern as other integrations
  • No hardcoded "Olark" strings were found in unexpected places
  • The constants are properly imported and used in the destination name mappings
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining hardcoded 'OLARK' or 'Olark' strings that should use the constants

# Search for hardcoded strings that should use the constants
echo "Checking for hardcoded 'OLARK' strings:"
rg -l "['\"](OLARK|Olark)['\"]" --type ts --glob '!**/constants.ts' --glob '!**/Destinations.ts'

# Check if the constants are properly imported where used
echo "Checking for proper imports of OLARK constants:"
rg -l "import.*OLARK_(NAME|DISPLAY_NAME).*from.*Destinations" --type ts

Length of output: 451


Script:

#!/bin/bash
# Let's check how these constants are actually used in the codebase

# Check for any usage of the mapping objects
echo "Checking usage of DISPLAY_NAME_TO_DIR_NAME_MAP and CNameMapping:"
rg -l "DISPLAY_NAME_TO_DIR_NAME_MAP|CNameMapping" --type ts

# Check the actual content of files importing these constants
echo "Checking files that import from Olark constants:"
rg -A 5 "from.*Olark/constants" --type ts

# Check for any other potential variations of Olark string usage
echo "Checking for other variations of Olark strings:"
rg -i "olark" --type ts

Length of output: 8939

packages/analytics-js-common/src/constants/integrations/MicrosoftClarity/constants.ts (1)

1-4: LGTM! Clean import structure with clear aliasing.

The import statement effectively centralizes the constants while maintaining clear aliases that match the existing codebase structure.

packages/analytics-js-common/src/constants/integrations/Refiner/constants.ts (2)

1-1: LGTM! Clean import with proper aliasing

The import statement correctly uses aliasing to maintain backward compatibility while transitioning to centralized constants.


Line range hint 1-14: Verify imports in dependent modules

Since this file is part of a larger refactoring effort to use generated constants, we should verify that all dependent modules are updated accordingly.

✅ Verification successful

Let me gather more information about the usage in the browser.js file to ensure it's properly using the constants.


Based on the results, I can now provide the final response:

No issues found with the Refiner constants refactoring

The verification shows that:

  • The browser.js file correctly imports and uses the NAME and DISPLAY_NAME constants from the new location
  • The string literals 'REFINER' and 'Refiner' are only present in the constants definition files (Destinations.ts and constants.ts)
  • No other files are directly using these string literals
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any direct imports from this constants file
rg -l "from ['\"].*constants/integrations/Refiner/constants['\"]" 

# Search for any direct usage of the string literals to ensure they're all using the constants
rg -i "'REFINER'|\"REFINER\"|'Refiner'|\"Refiner\"" --type ts

Length of output: 523


Script:

#!/bin/bash
# Check how the constants are used in the browser.js file
cat packages/analytics-js-integrations/src/integrations/Refiner/browser.js

# Also check if there are any other files importing from Destinations.ts directly
rg -l "from ['\"].*Destinations['\"]"

Length of output: 9963

packages/analytics-js-common/src/constants/integrations/INTERCOM/constants.ts (2)

12-12: Export statement looks good

The export of mapping objects and DIR_NAME is clean and well-structured.


Line range hint 1-14: Verify consistency across integration files

Let's ensure this refactoring pattern is consistently applied across other integration files and that there are no remaining references to the old constant definitions.

✅ Verification successful

Let me gather more information about other integration files to verify the consistency of the pattern.


Based on the comprehensive results, I can now generate the final response:

Refactoring pattern is consistently applied across integration files

The verification shows that all integration constant files follow the same pattern with:

  • Consistent imports from ../../Destinations
  • Uniform DIR_NAME constant definitions
  • Standardized DISPLAY_NAME_TO_DIR_NAME_MAP structure
  • Consistent CNameMapping declarations
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for consistency in other integration constant files
echo "Checking for inconsistent constant definitions..."
rg -g "*/integrations/*/constants.ts" "const (NAME|DISPLAY_NAME) =" packages/analytics-js-common/src/constants/

# Check for any direct string references to 'INTERCOM' that might need to use the constant
echo "Checking for hardcoded INTERCOM references..."
rg "['\"](INTERCOM|Intercom)['\"]" --type ts --glob '!*/constants.ts' packages/analytics-js-common/src/

Length of output: 748


Script:

#!/bin/bash
# List all integration constant files to see the pattern
echo "Integration constant files:"
fd constants.ts packages/analytics-js-common/src/constants/integrations/

# Check the structure of other integration constant files
echo -e "\nChecking imports from Destinations:"
rg "import.*from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/*/constants.ts

echo -e "\nChecking DIR_NAME definitions:"
rg "const DIR_NAME = " packages/analytics-js-common/src/constants/integrations/*/constants.ts

echo -e "\nChecking DISPLAY_NAME_TO_DIR_NAME_MAP definitions:"
rg "const DISPLAY_NAME_TO_DIR_NAME_MAP = " packages/analytics-js-common/src/constants/integrations/*/constants.ts

echo -e "\nChecking CNameMapping definitions:"
rg "const CNameMapping = " packages/analytics-js-common/src/constants/integrations/*/constants.ts

Length of output: 70633

packages/analytics-js-common/src/constants/integrations/Heap/constants.ts (3)

1-1: LGTM! Clean import with clear aliasing

The import statement effectively uses aliasing to maintain the local naming convention while sourcing from the centralized constants.


13-15: ⚠️ Potential issue

Remove duplicate exports

There are duplicate exports for NAME and DISPLAY_NAME:

  1. The re-export on line 15 is redundant since these constants are already imported at the top and could be included in the main export statement.
  2. This duplication could lead to confusion and maintenance issues.

Apply this diff to fix the duplicate exports:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { HEAP_NAME as NAME, HEAP_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export { 
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME
+};

Likely invalid or redundant comment.


Line range hint 4-11: Verify imported constant values match previous definitions

While the mapping structure is correct, we should verify that the imported NAME and DISPLAY_NAME constants match their previous values ('HEAP' and 'Heap.io' respectively) to prevent breaking changes.

✅ Verification successful

Let me verify the actual values being used in the Heap constants file to compare with the Destinations module values.


Constants are correctly imported and values match

The verification shows that:

  1. The constants are properly imported from Destinations.ts with correct aliasing:
    • HEAP_NAME (value: 'HEAP') is imported as NAME
    • HEAP_DISPLAY_NAME (value: 'Heap.io') is imported as DISPLAY_NAME
  2. These values are correctly used in the mappings:
    • CNameMapping uses 'HEAP' consistently
    • 'Heap.io' is correctly mapped
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the values of HEAP_NAME and HEAP_DISPLAY_NAME in Destinations module

# Check the constants in the Destinations module
echo "Checking Destinations module constants:"
rg -A 1 "HEAP_NAME|HEAP_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts"

# Check for any existing usages that might be affected
echo -e "\nChecking existing usages:"
rg -l "HEAP['\"]|['\"]Heap\.io" --type ts

Length of output: 549


Script:

#!/bin/bash
# Check the actual values being used in Heap constants
echo "Checking Heap constants:"
rg "NAME = |DISPLAY_NAME = " "packages/analytics-js-common/src/constants/integrations/Heap/constants.ts"

# Check the imports to verify where these constants come from
echo -e "\nChecking imports in Heap constants:"
rg "^import.*from.*Destinations" "packages/analytics-js-common/src/constants/integrations/Heap/constants.ts"

Length of output: 475

packages/analytics-js-common/src/constants/integrations/Qualaroo/constants.ts (4)

1-1: LGTM! Clean import with proper aliasing

The import statement correctly maintains the existing interface while sourcing from centralized constants.


12-14: 🛠️ Refactor suggestion

Consolidate export statements to avoid duplication

The constants (NAME and DISPLAY_NAME) are being exported twice:

  1. Indirectly through their usage in the exported mapping objects
  2. Directly through the re-export from Destinations

Consider consolidating the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { QUALAROO_NAME as NAME, QUALAROO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  QUALAROO_NAME as NAME,
+  QUALAROO_DISPLAY_NAME as DISPLAY_NAME,
+} from '../../Destinations';

Likely invalid or redundant comment.


Line range hint 5-10: Verify constant values in Destinations module

The mapping objects use the imported constants. Let's ensure the values match the previous hardcoded ones ('QUALAROO' and 'Qualaroo') to maintain compatibility.

✅ Verification successful

Constants match the expected values - mapping is correct

The verification confirms that the imported constants maintain the expected values:

  • QUALAROO_NAME = 'QUALAROO'
  • QUALAROO_DISPLAY_NAME = 'Qualaroo'

These values match the previous hardcoded strings used in the mapping objects, ensuring backward compatibility is maintained.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the constant values in Destinations module match previous values

# Search for QUALAROO constant definitions in Destinations
rg -A 1 "QUALAROO_NAME.*=.*'QUALAROO'" "packages/analytics-js-common/src/constants/"
rg -A 1 "QUALAROO_DISPLAY_NAME.*=.*'Qualaroo'" "packages/analytics-js-common/src/constants/"

Length of output: 607


Line range hint 1-14: Verify updates to all constant imports

As this is part of a larger refactoring effort to use generated constants, we should verify that all imports of these constants have been updated consistently across the codebase.

✅ Verification successful

Let me check the actual content of these files to better understand the usage patterns.


Let me check one more pattern to ensure we have a complete picture of the imports and usage.


Constants are properly imported and no inconsistencies found

The verification shows that:

  • The constants are properly defined in Destinations.ts
  • They are correctly imported and re-exported in Qualaroo/constants.ts
  • The constants are properly referenced in destinationNames.ts
  • No hardcoded values or inconsistent imports were found
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining direct usage of hardcoded Qualaroo constants

# Search for hardcoded constant usage
rg -l "'QUALAROO'" --type ts
rg -l "'Qualaroo'" --type ts

# Search for imports of these constants
rg -l "from.*Qualaroo/constants" --type ts

Length of output: 390


Script:

#!/bin/bash
# Check the content of files that contain Qualaroo references
rg -A 2 -B 2 "Qualaroo" packages/analytics-js-common/src/constants/Destinations.ts
rg -A 2 -B 2 "Qualaroo" packages/analytics-js-common/src/constants/integrations/destinationNames.ts

# Check if there are any other imports of these constants
rg "import.*Qualaroo.*constants" --type ts

Length of output: 659


Script:

#!/bin/bash
# Check for any imports from the Qualaroo directory
rg "from.*['\"].*Qualaroo" --type ts

# Check for any exports referencing Qualaroo
rg "export.*Qualaroo" --type ts

# Check for any usage of the constants
rg "QUALAROO_NAME|QUALAROO_DISPLAY_NAME" --type ts

Length of output: 904

packages/analytics-js-common/src/constants/integrations/SnapPixel/constants.ts (3)

20-21: LGTM! Well-structured exports with comprehensive mapping.

The exports provide a clean interface for name normalization and directory mapping, with good coverage of various case variations in CNameMapping.


22-25: 🛠️ Refactor suggestion

Remove redundant re-export of constants.

The constants are already imported at the top of the file and can be included in the previous export statement. This duplication increases maintenance overhead and the risk of inconsistencies.

Suggested refactor:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME, NAME, DISPLAY_NAME };

-export {
-  SNAP_PIXEL_NAME as NAME,
-  SNAP_PIXEL_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';

Likely invalid or redundant comment.


Line range hint 1-25: Verify consistent implementation across other integration files.

As part of the larger refactoring effort to use generated integration constants, we should ensure this pattern is consistently implemented across all integration files.

✅ Verification successful

Implementation is consistent across integration files

After examining the integration constant files, including those flagged for potential hardcoded names, I can confirm that all files follow the same consistent pattern:

  • Import NAME and DISPLAY_NAME from Destinations
  • Define DIR_NAME constant
  • Define DISPLAY_NAME_TO_DIR_NAME_MAP with consistent structure
  • Define CNameMapping with integration-specific aliases
  • Export consistent set of constants
  • Re-export NAME and DISPLAY_NAME

The files that were flagged for hardcoded names (VWO, INTERCOM, GA) actually follow the same pattern and don't contain hardcoded integration names - they properly use the imported constants.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in integration constant imports across all integration files

# Find all integration constant files
echo "Checking integration constant files..."
fd constants.ts$ packages/analytics-js-common/src/constants/integrations -x grep -l "from '../../Destinations'"

# Verify import patterns
echo "\nChecking import patterns..."
fd constants.ts$ packages/analytics-js-common/src/constants/integrations -x grep -A 2 "import.*from '../../Destinations'"

# Check for any remaining hardcoded integration names
echo "\nChecking for hardcoded integration names..."
fd constants.ts$ packages/analytics-js-common/src/constants/integrations -x grep -l "const.*NAME.*=.*'[A-Z_]\+'"

Length of output: 13661


Script:

#!/bin/bash
# Let's check the structure of a few integration constant files to verify consistency

echo "Checking structure of VWO constants (flagged for hardcoded names)..."
cat packages/analytics-js-common/src/constants/integrations/VWO/constants.ts

echo "\nChecking structure of INTERCOM constants (flagged for hardcoded names)..."
cat packages/analytics-js-common/src/constants/integrations/INTERCOM/constants.ts

echo "\nChecking structure of GA constants (flagged for hardcoded names)..."
cat packages/analytics-js-common/src/constants/integrations/GA/constants.ts

echo "\nChecking structure of a few other integration files for comparison..."
cat packages/analytics-js-common/src/constants/integrations/SnapPixel/constants.ts

Length of output: 3024

packages/analytics-js-common/src/constants/integrations/PostAffiliatePro/constants.ts (3)

20-20: LGTM! Clean export of local constants

The export statement correctly maintains the module's public API while adapting to the centralized constants approach.


22-25: Verify the existence of constants in Destinations module

Let's ensure these constants are properly defined in the Destinations module to prevent runtime issues.

✅ Verification successful

Constants are properly defined in the Destinations module

The verification confirms that both constants are correctly defined in packages/analytics-js-common/src/constants/Destinations.ts:

  • POST_AFFILIATE_PRO_NAME is defined as 'POST_AFFILIATE_PRO'
  • POST_AFFILIATE_PRO_DISPLAY_NAME is defined as 'Post Affiliate Pro'

The re-export in the reviewed file is valid and maintains proper references.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the constants exist in the Destinations module
# Expected: Find the constant definitions in the Destinations module

# Search for the constant definitions
ast-grep --pattern 'export const POST_AFFILIATE_PRO_NAME = $_'
ast-grep --pattern 'export const POST_AFFILIATE_PRO_DISPLAY_NAME = $_'

# Verify no other files are still using hardcoded values
rg -g '!*.test.*' -g '!*.spec.*' "'POST_AFFILIATE_PRO'" 
rg -g '!*.test.*' -g '!*.spec.*' "'Post Affiliate Pro'"

Length of output: 1148


Line range hint 1-25: Verify consistent pattern across other integration files

Let's ensure this refactoring pattern is consistently applied across all integration constant files.

✅ Verification successful

Pattern is consistently applied across integration files

The verification shows that the pattern is consistently implemented across integration files:

  • All sampled files (PostAffiliatePro, Amplitude, GoogleAds) follow the same structure:
    • Import NAME and DISPLAY_NAME from Destinations
    • Define DIR_NAME constant
    • Define DISPLAY_NAME_TO_DIR_NAME_MAP
    • Define CNameMapping with aliases
    • Export consistent set of constants
  • The Destinations.ts file confirms it's a generated file containing all integration constants
  • No hardcoded integration names were found, all are properly imported from the central Destinations file

The refactoring pattern has been consistently applied, maintaining a clean and standardized approach across the codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in integration constant files
# Expected: Similar import/export patterns in other integration files

# Find all integration constant files
fd 'constants.ts' packages/analytics-js-common/src/constants/integrations -x grep -l "from '../../Destinations'"

# Check for any remaining hardcoded integration names
fd 'constants.ts' packages/analytics-js-common/src/constants/integrations -x grep -l "const NAME = "

Length of output: 6579


Script:

#!/bin/bash
# Let's check the content pattern in a few integration files to verify consistency

# Sample a few integration files and check their content
echo "=== Checking PostAffiliatePro constants.ts ==="
cat packages/analytics-js-common/src/constants/integrations/PostAffiliatePro/constants.ts

echo -e "\n=== Checking Amplitude constants.ts ==="
cat packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts

echo -e "\n=== Checking GoogleAds constants.ts ==="
cat packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts

# Let's also verify the Destinations file that's being imported
echo -e "\n=== Checking Destinations constants ==="
cat packages/analytics-js-common/src/constants/Destinations.ts

Length of output: 10044

packages/analytics-js-common/src/constants/integrations/Satismeter/constants.ts (2)

1-4: LGTM! Import changes align with centralization goal

The import statements correctly utilize the generated constants from the centralized Destinations module while maintaining backward compatibility through aliases.


Line range hint 1-20: Verify constant usage across the codebase

Let's ensure all references to these constants have been updated correctly.

✅ Verification successful

The search results show that the constants are properly defined in Destinations.ts and correctly imported in Satismeter/constants.ts. Let me verify if there are any other files that might be using these constants directly.


Let me check the content of the destinationNames.ts file to ensure it's using the constants correctly.


Let me check the content of both files to ensure they're using the constants correctly.


All constant references are properly updated and consistent

The verification shows that:

  1. The Satismeter constants are correctly defined in Destinations.ts
  2. They are properly imported and re-exported in Satismeter/constants.ts
  3. The constants are correctly used in the destination names mapping through proper imports
  4. No direct usage of hardcoded strings or old constant references were found
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining hardcoded references to Satismeter constants
# and verify the usage of the new imported constants

# Check for any hardcoded Satismeter strings that might need to be replaced
rg -i "('|\")SATISMETER('|\")" --type ts

# Check for direct references to the old constant names
rg -i "Satismeter\.(NAME|DISPLAY_NAME)" --type ts

# Verify the new imports are being used correctly
rg -A 2 "SATISMETER_NAME|SATISMETER_DISPLAY_NAME" --type ts

Length of output: 1684


Script:

#!/bin/bash
# Search for any files importing from Satismeter/constants.ts
rg -l "from.*Satismeter/constants" --type ts

# Search for any direct usage of these constants in other files
rg -l "SATISMETER_NAME|SATISMETER_DISPLAY_NAME" --type ts --glob '!**/Destinations.ts' --glob '!**/Satismeter/constants.ts'

Length of output: 248


Script:

#!/bin/bash
# Check the content and usage in destinationNames.ts
rg -A 5 "SATISMETER" packages/analytics-js-common/src/constants/integrations/destinationNames.ts

# Also verify there are no other files using these constants through destinationNames.ts
rg -l "from.*destinationNames" --type ts

Length of output: 229


Script:

#!/bin/bash
# Check content of both files
cat packages/analytics-js-common/src/constants/integrations/destinationNames.ts
echo "---"
cat packages/analytics-js-common/src/constants/integrations/destDisplayNamesToFileNamesMap.ts

Length of output: 17926

packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts (2)

1-4: Verify imported constants exist in Destinations module

The change to use centralized constants aligns with the PR objectives. Let's verify the imported constants exist.

✅ Verification successful

Import changes verified successfully

Both CONVERTFLOW_NAME and CONVERTFLOW_DISPLAY_NAME constants are correctly defined and exported in packages/analytics-js-common/src/constants/Destinations.ts, making the imports valid and consistent with the PR objectives.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that CONVERTFLOW_NAME and CONVERTFLOW_DISPLAY_NAME are defined in Destinations module

# Search for the constant definitions
ast-grep --pattern 'export const CONVERTFLOW_NAME = $_' && \
ast-grep --pattern 'export const CONVERTFLOW_DISPLAY_NAME = $_'

Length of output: 349


Line range hint 1-27: Verify consistent pattern across other integration files

The changes look good and align with the PR objectives. Let's verify this pattern is consistently applied across other integration files.

✅ Verification successful

Pattern is consistently applied across all integration files

After reviewing the integration constant files, I can confirm that the pattern is consistently applied across all integration files. Each integration follows the same structure:

  1. Imports NAME and DISPLAY_NAME from '../../Destinations'
  2. Defines DIR_NAME constant
  3. Defines DISPLAY_NAME_TO_DIR_NAME_MAP with consistent structure
  4. Defines CNameMapping for name variations
  5. Exports the constants and re-exports from Destinations

The ConvertFlow implementation matches this pattern exactly and is consistent with all other integration files in the codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in integration constant files

# Look for any remaining hardcoded integration names
rg -g "*/integrations/*/constants.ts" "const NAME = '[A-Z_]+'" -l

# Check for consistent import pattern
rg -g "*/integrations/*/constants.ts" "import.*from '../../Destinations'" --stats

Length of output: 614


Script:

#!/bin/bash
# Let's first find all integration constant files
fd "constants.ts" "packages/analytics-js-common/src/constants/integrations"

# Then check their content for import patterns and constant definitions
for file in $(fd "constants.ts" "packages/analytics-js-common/src/constants/integrations"); do
  echo "=== $file ==="
  cat "$file"
  echo -e "\n"
done

Length of output: 89571

packages/analytics-js-common/src/constants/integrations/GA/constants.ts (2)

1-1: LGTM! Clean import with proper aliasing

The import statement correctly uses aliasing to maintain the existing API while sourcing constants from the centralized location.


Line range hint 1-16: Verify constant usage across GA integration

Let's ensure all GA-related files are using these centralized constants consistently.

packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts (1)

1-4: LGTM! Clean import of centralized constants

The import statement correctly sources the Google Optimize constants from the centralized Destinations module while maintaining backward compatibility through appropriate aliasing.

packages/analytics-js-common/src/constants/integrations/Lotame/constants.ts (3)

1-1: LGTM! Clean import with clear aliasing

The import statement effectively brings in the generated constants while maintaining the original naming convention through aliases.


Line range hint 1-14: Verify consistent implementation across other integration files

The changes align well with the PR objective of using generated integration constants. Let's verify the consistency of this implementation across other integration files.

✅ Verification successful

Implementation is consistent across integration files

The verification shows that the implementation pattern in the Lotame integration file is consistently followed across all integration files in the codebase. All integration files:

  • Import NAME and DISPLAY_NAME constants from '../../Destinations'
  • Re-export these constants with the same pattern
  • Follow the same naming convention for their constants

This confirms that the changes align perfectly with the established pattern across the codebase and maintain consistency in the implementation of generated integration constants.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in how other integration files import and use generated constants

# Check import patterns across integration files
echo "Checking import patterns:"
rg -g "*/integrations/*/constants.ts" "import.*from '../../Destinations'" -A 1

# Check export patterns across integration files
echo "\nChecking export patterns:"
rg -g "*/integrations/*/constants.ts" "export.*from '../../Destinations'" -A 1

Length of output: 597


Script:

#!/bin/bash
# Let's first find the correct path pattern for integration files
fd "constants.ts" packages/analytics-js-common/src/constants/integrations

# Then check the import and export patterns
echo "\nChecking import patterns:"
rg "import.*from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/*/constants.ts

echo "\nChecking export patterns:"
rg "export.*from '../../Destinations'" packages/analytics-js-common/src/constants/integrations/*/constants.ts

Length of output: 37547


Line range hint 3-11: Consider consolidating DIR_NAME with other generated constants

While the current implementation is correct, consider moving DIR_NAME to the centralized Destinations module for consistency with other constants.

Let's check if other integration files follow a similar pattern:

packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts (2)

1-4: LGTM! Clean import of centralized constants

The change appropriately imports constants from the centralized Destinations module while maintaining backward compatibility through aliasing.


12-12: Verify the impact of quote removal in CNameMapping

While removing quotes from Commandbar is syntactically valid, let's ensure this doesn't affect any existing integrations.

✅ Verification successful

Let me gather more information about the usage of this constant and its mapping.


Let me gather one final piece of information to check how the NAME constant is used in the CommandBar integration.


Removing quotes from Commandbar in CNameMapping is safe

The change is safe as the CNameMapping object already includes multiple case variations of the CommandBar name, including Commandbar, commandbar, Command Bar, and COMMAND_BAR. The removal of quotes is a syntactically valid change that doesn't affect the functionality, as both quoted and unquoted property names are valid in JavaScript when they are valid identifiers.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any direct string references to 'Commandbar' in integration code
rg -l "'Commandbar'" packages/analytics-js-common/src/integrations/
rg -l "\"Commandbar\"" packages/analytics-js-common/src/integrations/

# Search for any CommandBar initialization or usage patterns
ast-grep --pattern 'new CommandBar($$$)'

Length of output: 910


Script:

#!/bin/bash
# Check the actual usage of NAME constant and CNameMapping
rg -A 2 "CNameMapping" packages/analytics-js-common/src/

# Look for any other references to Commandbar string
rg -l "Commandbar" --type ts --type js

# Check the content of the constants file
cat packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts

Length of output: 65717


Script:

#!/bin/bash
# Check the content of the CommandBar constants file and its imports
cat packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts

# Look for any direct usage of the CommandBar name in the codebase
rg -A 2 "Commandbar" packages/analytics-js-integrations/

Length of output: 4458

packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts (2)

1-1: Verify the Destinations module generation

Since this PR involves using generated integration constants, let's verify the source of these constants.

✅ Verification successful

The Destinations module is properly generated and the constants are correctly sourced

The verification confirms that:

  • The Destinations.ts file contains the generated constants with a clear header indicating it's generated from a template
  • The CLEVERTAP_NAME and CLEVERTAP_DISPLAY_NAME constants are properly defined in the generated file
  • The file includes a reference to the original source template at rudderlabs/rudder-integrations-config repository
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the Destinations module generation

# Check if Destinations.ts exists and its structure
echo "Checking Destinations module structure..."
fd -e ts Destinations.ts -x cat {}

# Look for any generation scripts
echo "Looking for constant generation scripts..."
fd -e js -e ts -e yaml -g "*generate*constant*" -x echo "Found generation script: {}"

Length of output: 9341


Line range hint 3-11: Verify consistency with other integration files

The constant structure looks correct, but let's verify that this pattern is consistently followed across other integration files.

✅ Verification successful

Let me generate another verification script to check the DIR_NAME and DISPLAY_NAME_TO_DIR_NAME_MAP pattern since the previous results only showed the CNameMapping pattern.


Constants structure follows consistent pattern across integration files

The verification confirms that the constant structure in the Clevertap integration file follows the same pattern used consistently across all other integration files in the codebase:

  • All integration files define DIR_NAME as a static string
  • All files use the same DISPLAY_NAME_TO_DIR_NAME_MAP structure mapping display name to directory name
  • The CNameMapping pattern with case variations is consistently implemented

The implementation maintains consistency with the established integration file structure.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if other integration files follow the same pattern

# Check for consistent structure in other integration constant files
echo "Checking for consistent constant structure across integration files..."
ast-grep --pattern 'const DIR_NAME = $_;\n\nconst DISPLAY_NAME_TO_DIR_NAME_MAP = { [$_]: DIR_NAME };'

# Check for consistent CNameMapping pattern
echo "Checking for consistent CNameMapping pattern..."
ast-grep --pattern 'const CNameMapping = {
  [$_]: $_,
  $_: $_,
  $_: $_,
};'

Length of output: 12673


Script:

#!/bin/bash
# Search for DIR_NAME and DISPLAY_NAME_TO_DIR_NAME_MAP patterns
echo "Checking DIR_NAME and DISPLAY_NAME_TO_DIR_NAME_MAP patterns..."
rg -A 3 "const DIR_NAME = '.*';" --type ts

echo -e "\nChecking DISPLAY_NAME_TO_DIR_NAME_MAP pattern..."
rg "const DISPLAY_NAME_TO_DIR_NAME_MAP = \{.*\};" --type ts

Length of output: 47535

packages/analytics-js-common/src/constants/integrations/Matomo/constants.ts (2)

1-1: LGTM! Import statement follows best practices

The import statement correctly uses aliasing to maintain backward compatibility while transitioning to centralized constants.


Line range hint 1-14: Verify the generated Destinations module

Since this PR relies on generated constants from the Destinations module, we should verify its generation and consistency.

✅ Verification successful

The Destinations module is properly generated and the constants are correctly defined

The verification shows that:

  1. The Destinations.ts file is properly generated and contains the required MATOMO_NAME and MATOMO_DISPLAY_NAME constants
  2. The constants are being correctly imported and re-exported in the Matomo integration's constants file
  3. The usage of these constants follows the same pattern as other integrations in the codebase
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the Destinations module exists and contains the expected constants
echo "Checking Destinations module..."
rg -t typescript "export const MATOMO_NAME|export const MATOMO_DISPLAY_NAME" "packages/analytics-js-common/src/constants"

# Verify no other files are still using hardcoded 'MATOMO' or 'Matomo' strings
echo "Checking for hardcoded strings..."
rg -t typescript "['\"](MATOMO|Matomo)['\"]" "packages/analytics-js-common/src" -g '!**/constants.ts'

Length of output: 447


Script:

#!/bin/bash
# Check if the Destinations module exists and contains the expected constants
echo "Checking Destinations module..."
rg "export const MATOMO_NAME|export const MATOMO_DISPLAY_NAME" packages/analytics-js-common/src/Destinations.ts

# Check for any files importing from Destinations
echo "Checking imports from Destinations..."
rg "from ['\"].*Destinations['\"]" packages/analytics-js-common/src/

# Verify no other files are still using hardcoded 'MATOMO' or 'Matomo' strings
echo "Checking for hardcoded strings..."
rg "['\"](MATOMO|Matomo)['\"]" packages/analytics-js-common/src/ --type-not ts-def --glob '!**/constants.ts'

# List all files in the Destinations directory to understand the structure
echo "Listing Destinations related files..."
fd "Destinations?.ts" packages/analytics-js-common/src/

Length of output: 25006


Script:

#!/bin/bash
# Check the content of the Destinations.ts file
echo "Checking Destinations.ts content..."
cat packages/analytics-js-common/src/constants/Destinations.ts

# Check if MATOMO_NAME and MATOMO_DISPLAY_NAME are properly defined
echo "Checking for Matomo constants..."
rg "export const MATOMO_(NAME|DISPLAY_NAME)" packages/analytics-js-common/src/constants/Destinations.ts

# Check for any direct usage of 'Matomo' string
echo "Checking for hardcoded Matomo strings..."
rg -l "Matomo" packages/analytics-js-common/src/ --glob '!**/constants.ts'

Length of output: 8766

packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts (3)

1-4: LGTM! Clean import refactoring.

The import statement correctly uses aliases to maintain the same local names while centralizing the constants.


Line range hint 1-43: Verify browser compatibility across Chrome, Firefox, and IE11.

The PR objectives mention testing across multiple browsers. While the changes look safe for browser compatibility (using standard ES6 features), please ensure the transpilation settings in the build process handle IE11 support correctly, particularly for the ES6 import/export syntax.

✅ Verification successful

Let me check the babel configuration to verify browser compatibility settings.


Browser compatibility is properly configured and maintained

The code changes are safe for cross-browser compatibility including IE11 because:

  • Babel is correctly configured with @babel/env preset
  • Core-js 3.6 polyfills are included via useBuiltIns: "entry"
  • Object-related transforms are enabled through plugins
  • ES6 module syntax will be properly transpiled to compatible formats

The changes in the constants file only use standard JavaScript features that are well-supported by the build toolchain.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check build configuration for browser compatibility

# Check for babel config and browserslist
echo "Checking babel configuration:"
fd "babel.config|.babelrc" --type f

echo "Checking browserslist configuration:"
fd "browserslist|.browserslistrc" --type f

Length of output: 668


Script:

#!/bin/bash
# Check babel configuration for the analytics-js-common package
cat packages/analytics-js-common/babel.config.json

# Check root babel configuration as it might be extended
cat babel.config.json

Length of output: 549


Line range hint 8-14: Verify constant values match previous implementation.

The constants are used in mappings that handle various case variations. Let's ensure the centralized constants maintain the same values.

✅ Verification successful

Constants are correctly imported and used from centralized location

The constants are properly imported from the centralized Destinations module and used consistently throughout the file. The values match the previous implementation:

  • SENDINBLUE_NAME is imported as NAME with value 'SENDINBLUE'
  • SENDINBLUE_DISPLAY_NAME is imported as DISPLAY_NAME with value 'Sendinblue'
  • These constants are correctly used in both DISPLAY_NAME_TO_DIR_NAME_MAP and CNameMapping
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the values of centralized constants match the previous implementation

# Check the Destinations module for the constant definitions
echo "Checking constant definitions in Destinations module:"
rg "SENDINBLUE_NAME.*=.*['\"]SENDINBLUE['\"]" --type ts
rg "SENDINBLUE_DISPLAY_NAME.*=.*['\"]Sendinblue['\"]" --type ts

# Check for any other potential usages of these constants
echo "Checking other potential constant definitions:"
rg "(?:const|let|var)\s+(?:NAME|DISPLAY_NAME)\s*=\s*['\"](?:SENDINBLUE|Sendinblue)['\"]" --type ts

Length of output: 672


Script:

#!/bin/bash
# Let's verify the imports and usage in the Sendinblue constants file

# First, check the imports in the constants file
echo "Checking imports in Sendinblue constants file:"
rg -A 3 "^import.*Destinations" packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts

# Then check the constant declarations
echo "Checking constant declarations:"
rg "^(const|let|var)\s+(NAME|DISPLAY_NAME|DIR_NAME)\s*=" packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts

# Also check if there are any direct string assignments we should be aware of
echo "Checking string assignments:"
rg "'SENDINBLUE'|'Sendinblue'" packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts

Length of output: 682


Script:

#!/bin/bash
# Let's check the full content of the constants file to see imports and usage

echo "Checking full content of Sendinblue constants file:"
cat packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts

# Also check if these constants are imported from Destinations
echo "Checking Destinations imports:"
rg "import.*\{.*SENDINBLUE_(NAME|DISPLAY_NAME).*\}.*from.*Destinations" packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts

Length of output: 1215

packages/analytics-js-common/src/constants/integrations/Kissmetrics/constants.ts (3)

Line range hint 1-13: LGTM! Clean implementation of centralized constants.

The refactoring to use centralized constants from the Destinations module is well-implemented. The imports are properly aliased, and the constant mappings correctly reference the imported values.


15-20: 🛠️ Refactor suggestion

Consolidate duplicate exports.

There are duplicate exports of NAME and DISPLAY_NAME. The second export block (lines 17-20) re-exports the same constants that were already imported and used throughout the file.

Consolidate the exports by including NAME and DISPLAY_NAME in the first export statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
+export { 
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME,
+};
-
-export {
-  KISSMETRICS_NAME as NAME,
-  KISSMETRICS_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';

Likely invalid or redundant comment.


1-4: Verify constant values and imports.

Since this is part of a larger refactoring to use generated constants, let's verify the implementation.

✅ Verification successful

Let me verify the previous values of these constants before the refactoring to ensure consistency.

Let me also check the usage in the files that import these constants to ensure the refactoring maintains compatibility.


Let me try one more verification to check the previous content of the constants file using a different git command:


Constants refactoring verified successfully

The changes are safe as:

  1. The constant values in Destinations.ts (KISSMETRICS_NAME = 'KISSMETRICS' and KISSMETRICS_DISPLAY_NAME = 'Kiss Metrics') match the previous values in the constants file
  2. All importing files (browser.js, integration_cname.js, and destinationNames.ts) are using these constants correctly
  3. The refactoring maintains backward compatibility by preserving the same constant values while centralizing them in Destinations.ts
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the constant values match and check for any potential import issues

# Check the values in Destinations.ts
echo "Checking constant values in Destinations.ts:"
rg "KISSMETRICS_NAME|KISSMETRICS_DISPLAY_NAME" "packages/analytics-js-common/src/constants/Destinations.ts"

# Check for any imports of these constants
echo "Checking imports across the codebase:"
rg "from.*['\"].*Kissmetrics/constants['\"]" 

Length of output: 866


Script:

#!/bin/bash
# Check git history for these constants
git log -p packages/analytics-js-common/src/constants/integrations/Kissmetrics/constants.ts | grep -A 5 "^-.*export const"

Length of output: 0


Script:

#!/bin/bash
# Check usage in importing files
echo "Checking browser.js usage:"
rg -A 3 "NAME|DISPLAY_NAME" "packages/analytics-js-integrations/src/integrations/Kissmetrics/browser.js"

echo "Checking integration_cname.js usage:"
rg -A 3 "Kissmetrics" "packages/analytics-js-common/src/constants/integrations/integration_cname.js"

echo "Checking destinationNames.ts usage:"
rg -A 3 "KISSMETRICS" "packages/analytics-js-common/src/constants/integrations/destinationNames.ts"

Length of output: 1419


Script:

#!/bin/bash
# Get the previous version of the constants file
git show HEAD~1:packages/analytics-js-common/src/constants/integrations/Kissmetrics/constants.ts

# Also check if there are any direct exports of these constants
ast-grep --pattern 'export const KISSMETRICS_NAME = $_'

Length of output: 600

packages/analytics-js-common/src/constants/integrations/VWO/constants.ts (3)

1-1: LGTM! Import statement follows the refactoring pattern.

The import statement correctly brings in the centralized constants while maintaining backward compatibility through aliases.


Line range hint 3-16: LGTM! Constants and mappings are well-structured.

The mappings maintain comprehensive case-insensitive matching while properly utilizing the imported constants. The structure supports various name variations which is important for backward compatibility.


Line range hint 1-19: Verify the usage of VWO constants across the codebase.

Since this is part of a larger refactoring to use generated constants, let's verify that all VWO-related code is updated consistently.

✅ Verification successful

Let me gather more detailed information about the usage of VWO-related constants and strings.


VWO constants are used consistently across the codebase

The verification shows that VWO-related constants are properly defined and used throughout the codebase:

  • The main constants VWO_NAME and VWO_DISPLAY_NAME are defined in Destinations.ts
  • These constants are correctly imported and re-exported in VWO/constants.ts
  • The constants are properly used in the destination names mapping
  • No unexpected hardcoded VWO strings were found outside of the constants definitions

The only occurrence of the 'VWO' string literal is in the DIR_NAME constant definition, which is the correct pattern for this codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining hardcoded VWO strings and verify imports

# Check for hardcoded VWO strings that should use constants
rg -l "'VWO'" --type ts
rg -l '"VWO"' --type ts

# Check current usage of VWO constants
rg -l "VWO_NAME|VWO_DISPLAY_NAME" --type ts

# Verify import patterns
ast-grep --pattern 'import { $$$VWO$$$  } from "$_"'

Length of output: 422


Script:

#!/bin/bash
# Get actual content of files containing VWO references
rg "VWO" --type ts -C 2

# Check specifically for any VWO string literals in code
rg "'VWO'|\"VWO\"" --type ts -C 2

# Look for any potential VWO-related configuration or mapping patterns
ast-grep --pattern 'const $_ = { $$$"VWO"$$$: $_ }'

Length of output: 4734

packages/analytics-js-common/src/constants/integrations/Ninetailed/constants.ts (4)

1-4: LGTM! Clean import structure with proper aliasing

The import statement effectively replaces local constants with centralized ones from the Destinations module while maintaining the same names through aliasing.


16-21: 🛠️ Refactor suggestion

Consolidate export statements to avoid duplication

The file currently has two export statements, with NAME and DISPLAY_NAME being exported twice. This could lead to confusion.

Consider consolidating the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export {
-  NINETAILED_NAME as NAME,
-  NINETAILED_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NINETAILED_NAME as NAME,
+  NINETAILED_DISPLAY_NAME as DISPLAY_NAME,
+};

Likely invalid or redundant comment.


Line range hint 8-14: Verify completeness of name variations in CNameMapping

The mapping handles multiple case variations for "Ninetailed". Let's verify if there are any other variations in use across the codebase.

✅ Verification successful

Based on the search results, I can now generate the final response:

CNameMapping variations are complete and correctly implemented

The codebase search shows that all actual usages of "Ninetailed" follow the variations already covered in the mapping:

  • "Ninetailed" (proper case) - covered
  • "ninetailed" (lowercase) - covered
  • "NineTailed" (camel case) - covered
  • "NINETAILED" (uppercase) - handled via NAME constant

No other case variations are used in the actual integration code or configuration files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Search for any variations of "Ninetailed" that might not be covered in the mapping
# This helps ensure we haven't missed any case variations in actual usage

# Search for any variation of "Ninetailed" in the codebase
rg -i "ninetailed" --type ts --type js -A 2 -B 2

Length of output: 65584


Line range hint 1-21: Verify generated constants match previous values

Since we're switching to generated constants from the Destinations module, let's verify that the values match the previous implementation to prevent any breaking changes.

✅ Verification successful

Let me search for previous implementations to compare with the generated constants.


Let me try a different search pattern to find any previous implementations.


Let me check the content of the other files that reference Ninetailed to compare implementations.


Based on the evidence from the codebase:

Generated constants match the implementation correctly

The changes are verified to be correct because:

  1. The constants are now sourced from a generated Destinations.ts file which shows:
    • NINETAILED_NAME = 'NINETAILED'
    • NINETAILED_DISPLAY_NAME = 'Ninetailed'
  2. These values are correctly used in the mapping objects:
    • DISPLAY_NAME_TO_DIR_NAME_MAP maps the display name to directory name
    • CNameMapping provides consistent aliases for the integration name

The refactoring to use generated constants maintains the same values and behavior while improving maintainability.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Compare the values of the generated constants with the previous implementation

# Check the Destinations module for the constant definitions
cat packages/analytics-js-common/src/constants/Destinations.ts

# Look for any previous usage of these constants
rg -l "const.*NINETAILED.*=.*'NINETAILED'" --type ts

Length of output: 7909


Script:

#!/bin/bash
# Search for previous implementations of Ninetailed constants
rg -A 5 "NINETAILED.*=.*" --type ts --glob '!**/Destinations.ts'

Length of output: 66


Script:

#!/bin/bash
# Search for previous Ninetailed-related files and constants
rg -l "Ninetailed" --type ts

# Also check git history for the specific file
git log -p packages/analytics-js-common/src/constants/integrations/Ninetailed/constants.ts

Length of output: 333


Script:

#!/bin/bash
# Check content of other files referencing Ninetailed
cat packages/analytics-js-common/src/constants/integrations/destinationNames.ts
cat packages/analytics-js-common/src/constants/integrations/destDisplayNamesToFileNamesMap.ts

# Also check if there are any older commits modifying these constants
git log --oneline -5 packages/analytics-js-common/src/constants/integrations/Ninetailed/

Length of output: 17911

packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts (2)

Line range hint 3-13: Verify consistency of mapping pattern across integrations

The mapping pattern looks good, but we should ensure this structure is consistent across all integration constant files.

✅ Verification successful

Based on the output, I can generate the final response as we have comprehensive evidence showing the mapping pattern across all integration constant files.

Mapping pattern is consistent across all integrations

The verification shows that all integration constant files follow the same structure:

  • Every integration has DISPLAY_NAME_TO_DIR_NAME_MAP mapping display name to directory name
  • Every integration has CNameMapping object that handles various case variations and aliases
  • The pattern of mapping implementation is consistent, with each integration handling its specific naming variations appropriately
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if other integration constant files follow the same pattern

# Search for similar constant files
echo "Checking other integration constant files for consistency..."
fd constants.ts$ packages/analytics-js-common/src/constants/integrations -x grep -l "DIR_NAME\|DISPLAY_NAME_TO_DIR_NAME_MAP\|CNameMapping" {} \;

# Check the structure of mapping objects
echo "Checking mapping object structure..."
rg "const DISPLAY_NAME_TO_DIR_NAME_MAP = |const CNameMapping = " -A 5 packages/analytics-js-common/src/constants/integrations/

Length of output: 65932


14-16: Verify usage of exported constants in dependent code

The changes to exports might affect dependent code that uses these constants. Let's verify the impact.

✅ Verification successful

Let me gather more information about the usage of the exported constants and mappings.


Based on the analysis of the shell script outputs, I can now provide a final response:

Export changes follow the standard integration pattern

The changes to exports in the Chartbeat constants file follow the same pattern used across all other integration constant files in the codebase. The exports include:

  1. Common mapping objects (CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME)
  2. Re-exported constants from Destinations (NAME, DISPLAY_NAME)

This is a standardized pattern used consistently across all integration constant files, and no direct dependencies were found importing from this specific file.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check usage of Chartbeat constants in dependent code

# Search for imports of Chartbeat constants
echo "Checking imports of Chartbeat constants..."
rg "from ['\"]\.\./\.\./constants/integrations/Chartbeat/constants['\"]" packages/analytics-js-common/src/

# Search for direct usage of constant names
echo "Checking usage of constant names..."
rg "CHARTBEAT_NAME|CHARTBEAT_DISPLAY_NAME" packages/analytics-js-common/src/ --type ts

Length of output: 949


Script:

#!/bin/bash
# Check usage of other exported constants and mappings
echo "Checking usage of CNameMapping and other exports..."
rg "CNameMapping|DISPLAY_NAME_TO_DIR_NAME_MAP|DIR_NAME" packages/analytics-js-common/src/ --type ts -A 2

echo -e "\nChecking files importing from Chartbeat constants..."
fd -e ts -e js -x rg -l "from.*['\"].*Chartbeat/constants['\"]" {} \;

Length of output: 65901

packages/analytics-js-common/src/constants/integrations/Mixpanel/constants.ts (2)

1-1: LGTM! Clean import with clear aliasing

The import statement effectively maintains the original constant names while sourcing from the centralized Destinations module.


Line range hint 1-17: Verify consistent usage of Mixpanel constants across the codebase

Let's ensure these constants are consistently used across all Mixpanel-related files.

✅ Verification successful

Let me generate additional scripts to verify the usage of these constants more thoroughly.

The previous results show some hardcoded strings in compiled/minified files (chrome-extension), but we need to check the source code for any inconsistencies and verify the proper usage of these constants.


Based on the search results, I can now provide a final assessment of the Mixpanel constants usage:

Constants are being used consistently across the codebase

The verification shows proper usage of Mixpanel constants:

  • The constants are properly imported from '@rudderstack/analytics-js-common/constants/integrations/Mixpanel/constants' in relevant files
  • The NAME and DISPLAY_NAME constants are used consistently in the integration implementation
  • The CNameMapping is properly imported and used in the integration_cname.js file
  • No hardcoded Mixpanel strings found in the source code (only in compiled/minified files and test files)
  • The constants are properly exported and re-exported through the destination names mapping
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any hardcoded Mixpanel strings that should use the constants instead
rg -i "mixpanel" --type ts --type js -g '!**/constants.ts' -g '!**/Destinations.ts'

# Search for imports of Mixpanel constants to verify proper usage
rg -l "from.*Mixpanel.*constants" --type ts --type js

Length of output: 65675


Script:

#!/bin/bash
# Search for Mixpanel-related imports and constants usage
ast-grep --pattern 'import { $_ } from $path' --pattern-filter 'path.includes("Mixpanel")' --pattern-filter 'path.includes("constants")'

# Search for any direct string usage of Mixpanel variants that should use constants
rg -i "mixpanel" --type ts --type js -g '!**/constants.ts' -g '!**/Destinations.ts' -A 2 -B 2

# Search for CNameMapping usage
ast-grep --pattern 'CNameMapping[$_]'

Length of output: 65993

packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts (3)

1-1: LGTM! Clean import using aliasing

The import statement correctly uses aliasing to maintain the existing code structure while sourcing constants from the centralized Destinations module.


Line range hint 1-21: Verify browser compatibility testing

While these changes are primarily TypeScript constants that should work across all browsers, please ensure the PR has been tested in Chrome, Firefox, and IE11 as mentioned in the PR objectives.


Line range hint 6-17: Verify the necessity of multiple name variations

The CNameMapping includes multiple variations of the GA4 V2 name. Consider if all these variations are necessary or if they could be normalized to reduce maintenance overhead.

✅ Verification successful

Let me gather more context about where these mappings are actually used in the code.


Let me search for where these name mappings are actually used in the code.


Let me search for more specific usage patterns.


Based on the analysis of the search results, I can now provide a final response:

Multiple name variations are necessary for backward compatibility

The CNameMapping variations are used to handle different ways integrations might be referenced across the codebase, particularly in the context of integration identification and configuration. The variations serve important purposes:

  1. Case sensitivity handling (e.g., "GA4 V2", "ga4 v2")
  2. Format variations that may come from different sources (e.g., "Google Analytics4 V2" vs "Google Analytics 4 V2")
  3. Common alternative spellings/formats that users might input

This pattern is consistently used across all integrations in the codebase (as seen in Amplitude, Mixpanel, etc.) and helps ensure reliable integration identification regardless of how the name is provided.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if all the name variations are actually used in the codebase

# Search for each variation in the codebase
echo "Checking usage of GA4 V2 name variations..."
variations=(
  "Google Analytics 4 V2"
  "Google analytics 4 V2"
  "google analytics 4 V2"
  "Google Analytics4 V2"
  "Google analytics4 V2"
  "google analytics4 V2"
  "Google Analytics 4 (GA4) V2"
  "google analytics 4 (ga4) V2"
  "GoogleAnalytics4V2"
)

for variation in "${variations[@]}"; do
  echo "Searching for: $variation"
  rg -l "$variation" --type ts --type js
done

Length of output: 2438


Script:

#!/bin/bash
# Check how these mappings are used in the codebase
echo "Searching for usage of CNameMapping..."
rg -A 5 "CNameMapping" --type ts --type js

echo -e "\nSearching for code that might use these name variations..."
rg -A 5 "\.name\s*===|\.name\.toLowerCase\(\)" --type ts --type js

Length of output: 65807


Script:

#!/bin/bash
# Search for code that uses these mappings
echo "Searching for usage of integration names..."
rg -A 5 "commonNames\[" --type ts --type js

echo -e "\nSearching for code that might normalize integration names..."
rg -A 5 "normalizeIntegrationName|getIntegrationName" --type ts --type js

Length of output: 888


Script:

#!/bin/bash
# Search for integration name usage in the codebase
echo "Searching for integration name lookups..."
rg -A 5 "\.name\s*===|\.name\.includes|\.name\.toLowerCase" --type ts --type js

echo -e "\nSearching for integration configuration usage..."
rg -A 5 "integrationsCDNPath|INTEGRATION_PLATFORM|getDestinationInstance" --type ts --type js

echo -e "\nSearching for files that might handle integration names..."
fd -t f -e ts -e js | grep -i "integration.*name\|destination.*name"

Length of output: 69436

packages/analytics-js-common/src/constants/integrations/Woopra/constants.ts (1)

1-1: Same issue: Duplicate exports

This file has the same duplicate export pattern as the Vero constants file.

Also applies to: 14-14

packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts (2)

1-1: Same issue: Duplicate exports

This file has the same duplicate export pattern as the Vero constants file.

Also applies to: 14-14


Line range hint 1-15: Verify consistency of 'AM' abbreviation usage

Let's verify that the 'AM' abbreviation for Amplitude is consistently used across the codebase to prevent confusion.

✅ Verification successful

Let me generate additional verification scripts to check for any inconsistencies in the usage of 'AM' abbreviation.


Based on the gathered information, I can now generate the final response:

'AM' abbreviation usage is consistent across the codebase

The codebase maintains consistency in using 'AM' abbreviation for Amplitude with clear mapping:

  • Base constants AM_NAME and AM_DISPLAY_NAME are defined in Destinations.ts
  • All variations (AMPLITUDE, Amplitude, am) are properly mapped to AM_NAME in the CNameMapping
  • No conflicting or inconsistent abbreviations found in other parts of the codebase
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for Amplitude-related constant definitions and usages
echo "Searching for Amplitude constant definitions and usages..."
rg -i "amplitude|am_name|am " --type ts

# Search for potential inconsistencies in naming
echo "Checking for potential inconsistent abbreviations..."
rg -i "amplitude.*name.*=|amplitude.*constant" --type ts

Length of output: 52415


Script:

#!/bin/bash
# Search for all constant definitions in Amplitude related files
echo "Searching for constant definitions in Amplitude files..."
fd "constants.ts" -t f | grep -i "amplitude" | xargs cat

# Search for all imports of Amplitude constants
echo "Searching for imports of Amplitude constants..."
rg "import.*from.*Amplitude" --type ts

# Search for any other variations of Amplitude naming
echo "Searching for other Amplitude naming variations..."
rg "(?i)(am_|amplitude_|amp_).*=.*" --type ts

Length of output: 1717

packages/analytics-js-common/src/constants/integrations/Klaviyo/constants.ts (1)

12-14: ⚠️ Potential issue

Remove duplicate exports

The constants NAME and DISPLAY_NAME are being exported twice:

  1. Indirectly through the named exports on line 12
  2. Directly re-exported from Destinations on line 14

This creates unnecessary code and potential confusion.

Simplify by removing one of the export statements:

export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
-
-export { KLAVIYO_NAME as NAME, KLAVIYO_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

Likely invalid or redundant comment.

packages/analytics-js-common/src/constants/integrations/Keen/constants.ts (1)

14-16: Same issues as in Klaviyo constants

This file has the same duplicate exports issue and import/export pattern that could be simplified.

Please apply the same fixes as suggested for the Klaviyo constants file.

packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts (1)

14-16: Same issues as in previous files

This file exhibits the same duplicate exports pattern seen in other integration constant files.

Please apply the same fixes as suggested for the Klaviyo constants file.

packages/analytics-js-common/src/constants/integrations/LaunchDarkly/constants.ts (1)

18-23: 🛠️ Refactor suggestion

Remove duplicate exports to maintain a single source of truth

The file currently has two separate export statements, with the second one (lines 20-23) re-exporting the same constants that were imported. This creates confusion and potential maintenance issues.

Consolidate the exports into a single statement:

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };

-export {
-  LAUNCHDARKLY_NAME as NAME,
-  LAUNCHDARKLY_DISPLAY_NAME as DISPLAY_NAME,
-} from '../../Destinations';
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME,
+};

Likely invalid or redundant comment.

packages/analytics-js-common/src/constants/integrations/Braze/constants.ts (2)

1-1: LGTM! Clean import with appropriate aliases

The import statement correctly uses aliases to maintain backward compatibility while transitioning to centralized constants.


15-17: LGTM! Clear separation of exports

The export statements maintain a clear distinction between local constants and re-exported items, making the code's structure more understandable.

packages/analytics-js-common/src/constants/integrations/Lytics/constants.ts (3)

1-1: LGTM! Import statement aligns with centralization goal.

The import statement correctly uses the generated constants from the centralized Destinations module while maintaining backward compatibility through aliasing.


12-14: 🛠️ Refactor suggestion

Consolidate export statements to avoid redundancy.

The constants NAME and DISPLAY_NAME are currently being exported twice:

  1. First through the import and re-export on line 1
  2. Again through the direct re-export on line 14

Suggest consolidating the exports to avoid confusion:

import { LYTICS_NAME as NAME, LYTICS_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

const DIR_NAME = 'Lytics';

const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
const CNameMapping = {
  [NAME]: NAME,
  Lytics: NAME,
  lytics: NAME,
};

-export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME,
+};

-export { LYTICS_NAME as NAME, LYTICS_DISPLAY_NAME as DISPLAY_NAME } from '../../Destinations';

Likely invalid or redundant comment.


Line range hint 3-11: Verify consistency of directory name usage across integrations.

While the constant definitions look correct, we should ensure the DIR_NAME value is consistently used across the codebase.

Let's verify the directory name consistency:

✅ Verification successful

Let me generate additional verification scripts to check for directory name usage specifically in the integrations context.


Let me generate one final verification script to specifically check for directory name patterns in integration-related files.


Let me generate one final verification script to check for the integration directory structure and naming patterns.


Based on all the verification results, I can now provide the final response:

Directory name usage is consistent with integration standards

The DIR_NAME constant in Lytics integration follows the same pattern as other integrations in the codebase, being stored in the standard location at packages/analytics-js-common/src/constants/integrations/Lytics/constants.ts. The integration directory structure follows the established pattern used across all integrations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check consistency of Lytics directory name usage across the codebase

# Search for any variations of the Lytics directory name
rg -i "lytics" --type ts --glob "!**/constants.ts" -A 2 -B 2

# Check directory structure for integration folders
fd -t d "lytics" packages/

Length of output: 65623


Script:

#!/bin/bash
# Search for Lytics directory name usage in integration-related files
rg -i "lytics" --type ts --glob "**/integrations/**" -A 2 -B 2

# Check for integration directory structure
fd -t d "integrations" packages/

# Search for directory name constants in integration files
rg "DIR_NAME.*=.*" --type ts --glob "**/integrations/**"

Length of output: 65690


Script:

#!/bin/bash
# Search for directory name patterns in integration files
rg -i "dir.*name|display.*name.*map" --type ts --glob "**/integrations/**" -A 2 -B 2

# Check for integration directory structure specifically for Lytics
fd -t d -g "*lytics*" packages/analytics-js-integrations/src/integrations/

Length of output: 120780


Script:

#!/bin/bash
# Check integration directory structure and naming patterns
fd -t d "integrations" packages/
fd -t f "constants.ts" packages/ | grep -i "lytics"

Length of output: 8287

Copy link

codecov bot commented Dec 5, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 61.88%. Comparing base (e0f6ff2) to head (48c13c9).
Report is 2 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #1959      +/-   ##
===========================================
+ Coverage    58.29%   61.88%   +3.59%     
===========================================
  Files          485      484       -1     
  Lines        16614    16611       -3     
  Branches      3346     3328      -18     
===========================================
+ Hits          9685    10280     +595     
+ Misses        5684     5124     -560     
+ Partials      1245     1207      -38     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

github-actions bot commented Dec 5, 2024

size-limit report 📦

Name Size (Base) Size (Current) Size Limit Status
Plugins Module Federation Mapping - Legacy - CDN 332 B 332 B (0%) 512 B
Plugins - Legacy - CDN 15.68 KB 15.75 KB (+0.45% ▲) 16 KB
Plugins Module Federation Mapping - Modern - CDN 331 B 331 B (0%) 512 B
Plugins - Modern - CDN 7.2 KB 7.2 KB (0%) 7.5 KB
Common - No bundling 16.24 KB 17.84 KB (+9.89% ▲) 18.4 KB
Cookies Utils - Legacy - NPM (ESM) 1.54 KB 1.54 KB (0%) 2 KB
Cookies Utils - Legacy - NPM (CJS) 1.75 KB 1.75 KB (0%) 2 KB
Cookies Utils - Legacy - NPM (UMD) 1.53 KB 1.53 KB (0%) 2 KB
Cookies Utils - Modern - NPM (ESM) 1.17 KB 1.17 KB (0%) 1.5 KB
Cookies Utils - Modern - NPM (CJS) 1.4 KB 1.4 KB (0%) 1.5 KB
Cookies Utils - Modern - NPM (UMD) 1.16 KB 1.16 KB (0%) 1.5 KB
Load Snippet 758 B 758 B (0%) 1 KB
Core (v1.1) - NPM (ESM) 30.32 KB 30.25 KB (-0.25% ▼) 32 KB
Core (v1.1) - NPM (CJS) 30.55 KB 30.46 KB (-0.29% ▼) 32 KB
Core (v1.1) - NPM (UMD) 30.36 KB 30.28 KB (-0.26% ▼) 32 KB
Core (Content Script - v1.1) - NPM (ESM) 29.89 KB 29.79 KB (-0.34% ▼) 30.5 KB
Core (Content Script - v1.1) - NPM (CJS) 30.07 KB 29.97 KB (-0.31% ▼) 30.5 KB
Core (Content Script - v1.1) - NPM (UMD) 29.93 KB 29.9 KB (-0.09% ▼) 30 KB
Core - Legacy - CDN 48.79 KB 48.89 KB (+0.21% ▲) 49 KB
Core - Modern - CDN 24.99 KB 24.99 KB (0%) 25.5 KB
Core - Legacy - NPM (ESM) 48.66 KB 48.69 KB (+0.07% ▲) 49 KB
Core - Legacy - NPM (CJS) 48.88 KB 49.01 KB (+0.27% ▲) 49.1 KB
Core - Legacy - NPM (UMD) 48.7 KB 48.77 KB (+0.16% ▲) 49 KB
Core - Modern - NPM (ESM) 24.75 KB 24.75 KB (0%) 25 KB
Core - Modern - NPM (CJS) 24.95 KB 24.95 KB (0%) 25.5 KB
Core - Modern - NPM (UMD) 24.78 KB 24.78 KB (0%) 25 KB
Core (Bundled) - Legacy - NPM (ESM) 48.66 KB 48.69 KB (+0.07% ▲) 49 KB
Core (Bundled) - Legacy - NPM (CJS) 48.89 KB 48.96 KB (+0.14% ▲) 49 KB
Core (Bundled) - Legacy - NPM (UMD) 48.7 KB 48.77 KB (+0.16% ▲) 49 KB
Core (Bundled) - Modern - NPM (ESM) 39.72 KB 39.74 KB (+0.05% ▲) 40 KB
Core (Bundled) - Modern - NPM (CJS) 39.96 KB 39.98 KB (+0.06% ▲) 40.5 KB
Core (Bundled) - Modern - NPM (UMD) 39.71 KB 39.76 KB (+0.13% ▲) 40 KB
Core (Content Script) - Legacy - NPM (ESM) 48.09 KB 48.16 KB (+0.14% ▲) 48.5 KB
Core (Content Script) - Legacy - NPM (CJS) 48.36 KB 48.42 KB (+0.14% ▲) 48.5 KB
Core (Content Script) - Legacy - NPM (UMD) 48.1 KB 48.19 KB (+0.19% ▲) 48.5 KB
Core (Content Script) - Modern - NPM (ESM) 39.21 KB 39.16 KB (-0.13% ▼) 39.5 KB
Core (Content Script) - Modern - NPM (CJS) 39.48 KB 39.5 KB (+0.04% ▲) 40 KB
Core (Content Script) - Modern - NPM (UMD) 39.26 KB 39.23 KB (-0.1% ▼) 39.5 KB
Service Worker - Legacy - NPM (ESM) 30.61 KB 30.61 KB (0%) 31 KB
Service Worker - Legacy - NPM (CJS) 30.85 KB 30.85 KB (0%) 31 KB
Service Worker - Legacy - NPM (UMD) 30.65 KB 30.65 KB (0%) 31 KB
Service Worker - Modern - NPM (ESM) 25.77 KB 25.77 KB (0%) 26 KB
Service Worker - Modern - NPM (CJS) 26.03 KB 26.03 KB (0%) 26.5 KB
Service Worker - Modern - NPM (UMD) 25.74 KB 25.74 KB (0%) 26 KB
All Integrations - Legacy - CDN 95.13 KB 94.73 KB (-0.42% ▼) 95.3 KB
All Integrations - Modern - CDN 90.48 KB 90.19 KB (-0.32% ▼) 91 KB

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Outside diff range and nitpick comments (18)
packages/analytics-js-common/src/constants/integrations/GA4/constants.ts (1)

1-1: Consider using path aliases for imports

While the relative import works, consider using path aliases (e.g., '@constants/Destinations') to make the imports more maintainable and resistant to directory restructuring.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA4/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts (1)

1-4: LGTM! Change aligns with centralization objective.

The import statement correctly implements the PR objective by importing constants from the centralized Destinations module while maintaining backward compatibility through aliases.

Consider using path aliases (e.g., '@constants/Destinations') instead of relative paths to make the imports more maintainable and resistant to directory restructuring.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts (1)

1-1: LGTM! Good refactoring to use centralized constants.

The change to import constants from a centralized Destinations module aligns well with the PR objective of using generated integration constants. This approach:

  • Reduces duplication
  • Improves maintainability
  • Makes it easier to manage changes across integrations

Consider documenting the pattern of using the centralized constants in the developer documentation to ensure consistent adoption across the team.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts (1)

Line range hint 19-19: Consider adding type annotations for better type safety

The exports maintain the correct interface, but we could improve type safety.

Consider adding explicit type annotations:

-export { NAME, CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DISPLAY_NAME, DIR_NAME };
+export {
+  NAME,
+  CNameMapping as Record<string, string>,
+  DISPLAY_NAME_TO_DIR_NAME_MAP as Record<string, string>,
+  DISPLAY_NAME,
+  DIR_NAME,
+};
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts (1)

Line range hint 5-11: Consider adding TypeScript interfaces for the mappings

While the mappings are functionally correct, adding TypeScript interfaces would improve type safety and maintainability.

Consider adding these type definitions:

interface DisplayNameMapping {
  [key: string]: string;
}

interface CNameMappingType {
  [key: string]: typeof NAME;
}

const DISPLAY_NAME_TO_DIR_NAME_MAP: DisplayNameMapping = { [DISPLAY_NAME]: DIR_NAME };
const CNameMapping: CNameMappingType = {
  [NAME]: NAME,
  Adroll: NAME,
  'Ad roll': NAME,
  'ad roll': NAME,
  adroll: NAME,
};
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts (1)

1-1: Consider adding integration tests for the constants.

While the codecov warning about uncovered import lines can be safely ignored, it would be valuable to have integration tests verifying that the correct constant values are being used throughout the integration.

Would you like me to help create integration tests to verify the constant values and their usage?

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts (1)

1-4: Consider using absolute imports for better maintainability

While the relative import works, consider using absolute imports (e.g., '@rudderstack/analytics-js-common/constants/Destinations') to make the code more maintainable and resistant to directory restructuring.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts (1)

Line range hint 1-23: Add tests for the constants module

The codecov report indicates that this module lacks test coverage. Consider adding tests to verify:

  1. Correct constant values are imported and exported
  2. Name mappings work for all variations
  3. Directory name mapping functions as expected

Would you like me to help create a test suite for this constants module? I can provide a template that covers all the necessary test cases.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts (1)

9-9: Consider using a type-safe approach for name mappings

While the current implementation works, consider using TypeScript's string literal union types to ensure type safety for the mapping keys.

type CommandBarAliases = 'Command Bar' | 'Commandbar' | 'COMMAND_BAR' | 'commandbar';
const CNameMapping: Record<CommandBarAliases | typeof NAME, typeof NAME> = {
  // ... existing mappings
};
packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts (1)

Line range hint 1-93: Great architectural improvement!

Moving to centralized, generated constants is a solid architectural decision that will:

  • Reduce duplication across integration files
  • Prevent inconsistencies in constant values
  • Make updates more maintainable
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts (1)

Line range hint 5-10: LGTM! Consider adding TypeScript type definitions.

The mapping implementations correctly use the imported constants and handle various name variations.

Consider adding type definitions for better type safety:

+type NameMapping = Record<string, typeof NAME>;
+type DirNameMapping = Record<typeof DISPLAY_NAME, typeof DIR_NAME>;

-const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
-const CNameMapping = {
+const DISPLAY_NAME_TO_DIR_NAME_MAP: DirNameMapping = { [DISPLAY_NAME]: DIR_NAME };
+const CNameMapping: NameMapping = {
   [NAME]: NAME,
   Axeptio: NAME,
   axeptio: NAME,
 };
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts (1)

Line range hint 1-14: Consider adding JSDoc documentation for the constants.

While the code structure is clean, adding JSDoc comments would improve maintainability by documenting:

  • The purpose of each mapping object
  • The relationship with the centralized Destinations module
  • Examples of usage scenarios

Example improvement:

 import { AM_NAME as NAME, AM_DISPLAY_NAME as DISPLAY_NAME } from '../Destinations';

+/** Directory name for Amplitude integration assets */
 const DIR_NAME = 'Amplitude';

+/**
+ * Maps display names to directory names for resource resolution
+ * @example { 'Amplitude': 'Amplitude' }
+ */
 const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
+
+/**
+ * Maps various forms of integration names to the standardized name
+ * Used for backward compatibility and flexible input handling
+ * @example { 'am': 'AM', 'Amplitude': 'AM' }
+ */
 const CNameMapping = {
   [NAME]: NAME,
   AMPLITUDE: NAME,
   Amplitude: NAME,
   am: NAME,
 };
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA/constants.ts (1)

Line range hint 3-11: Consider generating DIR_NAME constant

While NAME and DISPLAY_NAME are now imported from the centralized Destinations module, DIR_NAME remains hardcoded. For consistency with the PR's objective, consider moving this constant to the Destinations module as well.

-const DIR_NAME = 'GA';
+import { GA_DIR_NAME as DIR_NAME } from '../Destinations';
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA360/constants.ts (1)

Line range hint 17-17: LGTM! Consider adding type exports

The export statement maintains the module's public API correctly. As a potential enhancement, consider adding explicit type exports for better TypeScript integration.

+export type GA360MappingType = typeof CNameMapping;
 export { NAME, CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DISPLAY_NAME, DIR_NAME };
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA360/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts (1)

1-1: Consider adding integration tests for constant usage.

While the import statement itself doesn't require direct test coverage, it would be valuable to add integration tests that verify the correct usage of these constants throughout the integration flow.

Would you like me to help generate test cases that verify the correct usage of these constants in the Criteo integration?

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Drip/constants.ts (1)

Line range hint 1-12: Good architectural direction with centralized constants.

The move towards generated integration constants in a centralized location is a positive architectural change that will:

  1. Reduce duplication
  2. Make updates more maintainable
  3. Decrease the likelihood of inconsistencies
  4. Make it easier to generate and validate integration constants

Consider documenting this pattern in the project's contribution guidelines to ensure consistency in future integration additions.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Drip/constants.ts#L1
Added line #L1 was not covered by tests

examples/chrome-extension/content-script-v3/foreground.js (2)

Line range hint 4-4: Reminder: Address the TODO comment.

The TODO comment indicates that tests are missing for this function. Please ensure that the additional parameter change is thoroughly tested to confirm that it behaves as expected.

Do you want me to generate the unit testing code or open a GitHub issue to track this task?


Line range hint 12-24: Consider adjusting the fee structure or discount policy.

The implementation of a flat $20 fee on discounted bills could negate the benefit of the discount, especially for smaller purchases or marginal loyalty tiers. This might lead to customer dissatisfaction, as the intent to reward loyalty paradoxically increases the bill.

Consider revising either the discount percentages or the flat fee application to better align with customer incentives.

Would you like assistance in generating a revised implementation?

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between ea84cf2 and 83bca35.

⛔ Files ignored due to path filters (2)
  • .eslintrc.json is excluded by !**/*.json
  • package.json is excluded by !**/*.json
📒 Files selected for processing (82)
  • examples/chrome-extension/content-script-v3/foreground.js (1 hunks)
  • packages/analytics-js-common/.size-limit.js (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Braze/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts (0 hunks)
  • packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Destinations.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Drip/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Engage/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/GA/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/GA360/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/GA4/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/GoogleTagManager/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Heap/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Hotjar/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/HubSpot/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/INTERCOM/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Iterable/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/June/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Keen/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Kissmetrics/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Klaviyo/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/LaunchDarkly/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Lemnisk/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/LiveChat/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Lotame/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Lytics/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Matomo/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/MicrosoftClarity/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Mixpanel/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/MoEngage/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Mouseflow/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Ninetailed/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Olark/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Optimizely/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Pendo/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/PinterestTag/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Podsights/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/PostAffiliatePro/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Posthog/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/ProfitWell/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Qualaroo/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Qualtrics/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/QuantumMetric/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/QuoraPixel/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/RedditPixel/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Refiner/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Rockerbox/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/RollBar/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Satismeter/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Sentry/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Shynet/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/SnapEngage/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/SnapPixel/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/SpotifyPixel/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/Sprig/constants.ts (2 hunks)
  • packages/analytics-js-common/src/constants/integrations/TVSquared/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/TiktokAds/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/VWO/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Vero/constants.ts (1 hunks)
  • packages/analytics-js-common/src/constants/integrations/Woopra/constants.ts (1 hunks)
⛔ Files not processed due to max files limit (12)
  • packages/analytics-js-common/src/constants/integrations/XPixel/constants.ts
  • packages/analytics-js-common/src/constants/integrations/YandexMetrica/constants.ts
  • packages/analytics-js-common/src/constants/integrations/client_server_name.js
  • packages/analytics-js-common/src/constants/integrations/config_to_integration_names.js
  • packages/analytics-js-common/src/constants/integrations/destDisplayNamesToFileNamesMap.ts
  • packages/analytics-js-common/src/constants/integrations/destinationNames.ts
  • packages/analytics-js-common/src/constants/integrations/integration_cname.js
  • packages/analytics-js-integrations/src/integrations/Comscore/browser.js
  • packages/analytics-js-integrations/src/integrations/Comscore/index.js
  • packages/analytics-js-integrations/src/integrations/Comscore/nativeSdkLoader.js
  • packages/analytics-js-integrations/src/integrations/index.js
  • scripts/update-integration-name-constants-references.js
💤 Files with no reviewable changes (1)
  • packages/analytics-js-common/src/constants/integrations/Comscore/constants.ts
🚧 Files skipped from review as they are similar to previous changes (52)
  • packages/analytics-js-common/.size-limit.js
  • packages/analytics-js-common/src/constants/integrations/Podsights/constants.ts
  • packages/analytics-js-common/src/constants/integrations/MicrosoftClarity/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Refiner/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Satismeter/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Pendo/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Rockerbox/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Olark/constants.ts
  • packages/analytics-js-common/src/constants/integrations/GoogleTagManager/constants.ts
  • packages/analytics-js-common/src/constants/integrations/QuantumMetric/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Keen/constants.ts
  • packages/analytics-js-common/src/constants/integrations/SnapEngage/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Mouseflow/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Matomo/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Lotame/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Optimizely/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Heap/constants.ts
  • packages/analytics-js-common/src/constants/integrations/HubSpot/constants.ts
  • packages/analytics-js-common/src/constants/integrations/June/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Klaviyo/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Qualtrics/constants.ts
  • packages/analytics-js-common/src/constants/integrations/LinkedInInsightTag/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Iterable/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Kissmetrics/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Shynet/constants.ts
  • packages/analytics-js-common/src/constants/integrations/SnapPixel/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Hotjar/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Sentry/constants.ts
  • packages/analytics-js-common/src/constants/integrations/PostAffiliatePro/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Lemnisk/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Vero/constants.ts
  • packages/analytics-js-common/src/constants/integrations/RollBar/constants.ts
  • packages/analytics-js-common/src/constants/integrations/RedditPixel/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Sprig/constants.ts
  • packages/analytics-js-common/src/constants/integrations/LiveChat/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Qualaroo/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Mixpanel/constants.ts
  • packages/analytics-js-common/src/constants/integrations/LaunchDarkly/constants.ts
  • packages/analytics-js-common/src/constants/integrations/INTERCOM/constants.ts
  • packages/analytics-js-common/src/constants/integrations/SpotifyPixel/constants.ts
  • packages/analytics-js-common/src/constants/integrations/VWO/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Sendinblue/constants.ts
  • packages/analytics-js-common/src/constants/integrations/TiktokAds/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Posthog/constants.ts
  • packages/analytics-js-common/src/constants/integrations/ProfitWell/constants.ts
  • packages/analytics-js-common/src/constants/integrations/PinterestTag/constants.ts
  • packages/analytics-js-common/src/constants/integrations/TVSquared/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Woopra/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Lytics/constants.ts
  • packages/analytics-js-common/src/constants/integrations/Ninetailed/constants.ts
  • packages/analytics-js-common/src/constants/integrations/QuoraPixel/constants.ts
  • packages/analytics-js-common/src/constants/integrations/MoEngage/constants.ts
🧰 Additional context used
🪛 GitHub Check: codecov/patch
packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Braze/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Braze/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts#L1
Added line #L1 was not covered by tests


[warning] 14-14: packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts#L14
Added line #L14 was not covered by tests

packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Destinations.ts

[warning] 8-167: packages/analytics-js-common/src/constants/integrations/Destinations.ts#L8-L167
Added lines #L8 - L167 were not covered by tests

packages/analytics-js-common/src/constants/integrations/Drip/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Drip/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Engage/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Engage/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA360/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA360/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA4/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA4/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts#L1
Added line #L1 was not covered by tests

🔇 Additional comments (53)
packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts (2)

1-4: LGTM! Good refactoring to use centralized constants.

The change to import constants from a centralized Destinations module improves maintainability and reduces the risk of inconsistencies across the codebase. The use of aliases maintains backward compatibility while allowing for better organization.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 22-22: Consolidate duplicate exports and commend the refactoring approach

The duplicate exports pattern should be fixed here as well. However, I want to commend the overall approach of centralizing integration constants, which will improve maintainability and reduce the likelihood of inconsistencies.

Apply the same consolidation fix:

-export { NAME, CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DISPLAY_NAME, DIR_NAME };
+export {
+  CNameMapping,
+  DISPLAY_NAME_TO_DIR_NAME_MAP,
+  DIR_NAME,
+  NAME,
+  DISPLAY_NAME,
+};
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/ActiveCampaign/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts (2)

Line range hint 6-11: LGTM! Comprehensive mapping maintains backward compatibility.

The CNameMapping object maintains backward compatibility by supporting various case variations and common misspellings of "Appcues", which is a good practice.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts#L1
Added line #L1 was not covered by tests


1-1: LGTM! Clean approach to centralize integration constants.

The change aligns well with the PR objective of using generated integration constants. The use of aliasing (as) maintains the existing exports while leveraging centralized constants.

Let's verify the constants in the Destinations module:

✅ Verification successful

Constants are correctly defined in the Destinations module

The verification confirms that both APPCUES_NAME and APPCUES_DISPLAY_NAME constants are properly defined in the Destinations module with the expected values:

  • APPCUES_NAME = 'APPCUES'
  • APPCUES_DISPLAY_NAME = 'Appcues'
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the Appcues constants in Destinations module
# Expected: Should find the constant declarations

# Check for the constants in Destinations module
rg -A 1 "APPCUES_(NAME|DISPLAY_NAME)" packages/analytics-js-common/src/constants/integrations/Destinations.ts

Length of output: 236

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Appcues/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA4/constants.ts (2)

Line range hint 19-19: Consolidate export statements

The file still has redundant exports:

  1. Direct export of imported aliases (line 1)
  2. Re-export in the final export statement (line 19)

Consider consolidating these for better maintainability.

-export { NAME, CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DISPLAY_NAME, DIR_NAME };
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA4/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 1-19: Implementation aligns well with refactoring objectives

The changes successfully replace hard-coded constants with generated ones while maintaining backward compatibility through aliasing. The centralized constant management will improve maintainability.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA4/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts (1)

Line range hint 7-15: Verify the constant references across the codebase.

The constant mappings look correct, but let's verify that all references to these constants have been updated accordingly.

Regarding the code coverage warning: Since this is a constants file that's imported and used by other modules, traditional code coverage metrics are less relevant. The important verification is that these constants are actually being used in the integration code.

✅ Verification successful

Constants are properly referenced and imported across the codebase

The verification shows that:

  • All Gainsight PX related constants are properly defined in the main constants file
  • The constants are correctly imported and used in other files (destinationNames.ts, destDisplayNamesToFileNamesMap.ts)
  • No hardcoded strings found that should be using these constants instead
  • The naming and mapping structure is consistent throughout the integration
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify usage of Gainsight PX constants across the codebase

# Search for any hardcoded references that should be using the constants
rg -i "gainsight.?px" --type ts

# Search for imports of these constants
rg "from.*Gainsight_PX/constants" --type ts

Length of output: 1850

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Gainsight_PX/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts (1)

Line range hint 1-15: Verify the constants mapping consistency

The refactoring looks good, but let's ensure the mappings are consistent with other integration files.

✅ Verification successful

The mappings are consistent with other integration files

The verification shows that the Chartbeat integration's constant mappings follow the same pattern as all other integration files in the codebase:

  1. All integration files consistently define DISPLAY_NAME_TO_DIR_NAME_MAP with the same structure: { [DISPLAY_NAME]: DIR_NAME }
  2. All files have a CNameMapping object that maps various name variations to the canonical NAME
  3. The import pattern for NAME and DISPLAY_NAME from '../Destinations' is consistent

The Chartbeat implementation aligns perfectly with this established pattern across all integrations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistency in integration constant patterns across files

# Check if other integration files follow the same pattern
ast-grep --pattern 'import { $NAME as NAME, $DISPLAY as DISPLAY_NAME } from "../Destinations"'

# Check the structure of mapping objects in other integration files
rg -A 5 "const DISPLAY_NAME_TO_DIR_NAME_MAP = \{" "packages/analytics-js-common/src/constants/integrations/"

Length of output: 51134

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Chartbeat/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Engage/constants.ts (1)

Line range hint 3-22: LGTM! Clean and consistent implementation

The implementation maintains a clean structure with:

  • Consistent usage of imported constants
  • Clear mapping objects for name variations
  • Well-organized exports
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Engage/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts (3)

Line range hint 4-11: LGTM! Well-structured constant mappings

The constant mappings are comprehensive and handle various name variations while maintaining backward compatibility. Using centralized constants reduces duplication and improves maintainability.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 13-13: Remove duplicate exports

The constants NAME and DISPLAY_NAME are being exported twice:

  1. First through the direct export
  2. Then indirectly through the import statement

This creates unnecessary duplication and could impact tree-shaking.

-export { NAME, CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DISPLAY_NAME, DIR_NAME };
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts#L1
Added line #L1 was not covered by tests


1-1: Add test coverage for constant imports

The imported constants from the Destinations module lack test coverage. Consider adding integration tests to verify the correct values are being imported and used.

Let's verify the test coverage:

Would you like me to help create test cases for these constants?

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/CustomerIO/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts (1)

1-1: LGTM! Verify other Fullstory references

The import change aligns with the objective to centralize integration constants. The aliasing maintains clean code structure while leveraging the generated constants.

Let's verify that all Fullstory references are consistent:

✅ Verification successful

Let me analyze the results from the search for hardcoded Fullstory references.

The search results show only two files with Fullstory string literals:

  1. examples/chrome-extension/content-script-v3/foreground.js
  2. examples/chrome-extension/content-script-v1.1/foreground.js

These files are in the examples directory and contain minified/bundled code where the Fullstory constants are already compiled in. Since these are example/demo files and not part of the main source code, they don't need to be updated.

No hardcoded Fullstory references found in source code

The import change in constants.ts is safe as there are no other source files using hardcoded Fullstory string literals that need to be updated to use the centralized constants.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining hardcoded Fullstory references
# that should use the centralized constants

# Search for various Fullstory string literals
rg -i "['\"](full\s*story|fullstory)['\"]" \
  --type ts \
  --type js \
  -g '!**/constants.ts' \
  -g '!**/Destinations.ts'

Length of output: 65652

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Fullstory/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts (2)

Line range hint 8-19: LGTM! Consistent usage of imported constants.

The mappings maintain the same logical structure while using the imported constants, providing good flexibility for different name formats.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts#L1
Added line #L1 was not covered by tests


1-4: LGTM! Verify other integration files.

The import changes align well with the refactoring objective to centralize integration constants. The use of aliases maintains backward compatibility while achieving the goal.

Let's verify similar changes across other integration files:

✅ Verification successful

✅ Import changes are consistently implemented across integrations

The verification confirms that:

  1. All integration files correctly import their constants from the centralized Destinations.ts
  2. The constants in Destinations.ts are generated from templates, ensuring consistency
  3. Each integration follows the same pattern of importing and aliasing the constants
  4. No hardcoded NAME or DISPLAY_NAME constants remain in the individual integration files
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistent usage of centralized constants across integration files
# Expect: Similar import patterns in other integration files

# Check for similar import patterns in other integration files
rg -l "from '../Destinations'" "packages/analytics-js-common/src/constants/integrations/"

# Verify no remaining hardcoded constants
rg "const (NAME|DISPLAY_NAME) =" "packages/analytics-js-common/src/constants/integrations/"

Length of output: 6469


Script:

#!/bin/bash
# Let's check the content of a few integration files to verify the import pattern
# and ensure no hardcoded constants remain

# Check content of a few representative files
echo "=== GoogleOptimize/constants.ts ==="
cat "packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts"

echo -e "\n=== GA4/constants.ts ==="
cat "packages/analytics-js-common/src/constants/integrations/GA4/constants.ts"

echo -e "\n=== Amplitude/constants.ts ==="
cat "packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts"

# Also check the Destinations file to verify it's the source of these constants
echo -e "\n=== Destinations.ts ==="
cat "packages/analytics-js-common/src/constants/integrations/Destinations.ts"

Length of output: 9812

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GoogleOptimize/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts (2)

Line range hint 5-17: LGTM! Mappings are consistent with the imported constants

The constant mappings maintain backward compatibility while using the centralized constants.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts#L1
Added line #L1 was not covered by tests


1-1: Ensure test coverage for the imported constants

The change to use centralized constants is good, but we should ensure proper test coverage.

Let's verify the test coverage and constant definitions:

✅ Verification successful

Import change is safe and constants are properly defined

The verification shows that:

  • The constants GA4_V2_NAME and GA4_V2_DISPLAY_NAME are properly defined in both Destinations.ts files with identical values
  • The imported constants are used consistently in the CNameMapping
  • The values match exactly: GA4_V2 for NAME and Google Analytics 4 (GA4) V2 for DISPLAY_NAME
  • The mapping includes various case variations ensuring backward compatibility
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify test coverage and constant definitions

# Check if there are tests covering the GA4_V2 integration
fd -e test.ts -e spec.ts GA4 

# Verify the constant definitions in Destinations
rg "GA4_V2_(NAME|DISPLAY_NAME)\s*=" ../Destinations.ts

Length of output: 146


Script:

#!/bin/bash
# Let's try to find the Destinations file first and then check its content
fd Destinations

# Then search for GA4 related tests in the entire repository
fd -e test.ts -e spec.ts -e test.js -e spec.js GA4

# Search for GA4_V2 constants in the entire repository
rg "GA4_V2_(NAME|DISPLAY_NAME)\s*="

# Let's also check the content of the current file to see the full context
cat packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts

Length of output: 1735

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA4_V2/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts (2)

1-1: LGTM! Import statement follows best practices

The import statement effectively implements the centralization of integration constants while maintaining backward compatibility through aliasing.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts#L1
Added line #L1 was not covered by tests


1-1: Verify test coverage in Destinations module

While the import statement doesn't require direct testing, we should ensure the constants are properly tested in the source module.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Adroll/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Braze/constants.ts (2)

Line range hint 3-42: LGTM! Well-structured constant definitions

The constant definitions and mappings are well-organized and maintain compatibility while integrating with the new centralized constants approach. The comprehensive BrazeOperationString and mapping objects provide good integration support.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Braze/constants.ts#L1
Added line #L1 was not covered by tests


1-1: Add tests for the Destinations import

While the centralization of constants aligns with the PR objectives, we should ensure proper test coverage for this critical integration point.

Let's verify the import path and constant definitions:

Would you like me to help generate test cases for this integration?

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Braze/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts (2)

1-4: LGTM! Good refactoring to use centralized constants.

The change to import constants from a centralized location improves maintainability and reduces the risk of inconsistencies across the codebase.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 8-20: Verify the imported constant values match previous definitions.

While the refactoring looks good, we should verify that the imported constants maintain the same values as before to prevent any breaking changes.

✅ Verification successful

Constants match the source values correctly

The verification confirms that the imported constants match their source values:

  • DCM_FLOODLIGHT_NAME is 'DCM_FLOODLIGHT'
  • DCM_FLOODLIGHT_DISPLAY_NAME is 'DCM Floodlight'

The constants are imported from the correct Destinations.ts file and maintain the same values as defined in the source, ensuring backward compatibility is preserved.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the new constants match the previous values

# Check the Destinations file for the constant definitions
echo "Checking constant definitions:"
rg "DCM_FLOODLIGHT_NAME.*=.*'DCM_FLOODLIGHT'" ../Destinations.ts
rg "DCM_FLOODLIGHT_DISPLAY_NAME.*=.*'DCM Floodlight'" ../Destinations.ts

# Check for any existing usages that might be affected
echo "Checking existing usages:"
rg -l "DCM_FLOODLIGHT['\"]|DCM Floodlight" --type ts

Length of output: 674


Script:

#!/bin/bash
# Let's check the actual content of the Destinations files found
echo "Content of packages/analytics-js-common/src/constants/integrations/Destinations.ts:"
cat packages/analytics-js-common/src/constants/integrations/Destinations.ts

echo -e "\nContent of packages/analytics-js-common/src/constants/Destinations.ts:"
cat packages/analytics-js-common/src/constants/Destinations.ts

# Let's also check the imports in the constants.ts file
echo -e "\nChecking imports in DCMFloodlight/constants.ts:"
head -n 10 packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts

Length of output: 16388

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/DCMFloodlight/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts (3)

Line range hint 7-19: LGTM! Well-structured constant mappings

The constant mappings are comprehensive and well-organized:

  • Covers all common case variations for Adobe Analytics
  • Uses computed properties correctly with the imported constants
  • Maintains clear mapping structure
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 21-21: LGTM! Follows recommended export pattern

The export statement follows the recommended consolidated pattern, making the code more maintainable.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 1-21: Verify integration constants consistency

Let's verify that the imported constants are correctly defined in the Destinations file and that this pattern is consistently applied across other integration files.

✅ Verification successful

Constants are correctly defined and consistently used across integrations

The verification confirms that:

  • The ADOBE_ANALYTICS_NAME and ADOBE_ANALYTICS_DISPLAY_NAME constants are properly defined in the Destinations file
  • The pattern of importing and using these constants is consistent across other integration files (ActiveCampaign, Adroll, etc.), following the same structure:
    • Importing NAME and DISPLAY_NAME from Destinations
    • Defining DIR_NAME
    • Creating DISPLAY_NAME_TO_DIR_NAME_MAP
    • Defining CNameMapping for various name variations
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify the constants in Destinations file
echo "=== Checking Destinations constants ==="
rg "ADOBE_ANALYTICS_(NAME|DISPLAY_NAME)" "../Destinations.ts"

# Verify consistent pattern across other integration files
echo "=== Checking integration patterns ==="
fd "constants.ts" "packages/analytics-js-common/src/constants/integrations" --exec rg -l "import.*from '../Destinations'"

Length of output: 5207


Script:

#!/bin/bash
# Let's check the Destinations file in the correct location
echo "=== Checking Destinations constants ==="
rg "ADOBE_ANALYTICS_(NAME|DISPLAY_NAME)" "packages/analytics-js-common/src/constants/integrations/Destinations.ts"

# Let's also verify the pattern in a few other integration files
echo "=== Checking pattern in other integration files ==="
for file in $(fd "constants.ts" "packages/analytics-js-common/src/constants/integrations" | head -n 3); do
  echo "=== Content of $file ==="
  head -n 10 "$file"
done

Length of output: 2565

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/AdobeAnalytics/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts (2)

Line range hint 4-15: LGTM! Well-structured mapping objects

The code maintains backward compatibility while using the centralized constants. The mapping objects handle various case variations effectively.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts#L1
Added line #L1 was not covered by tests


1-1: Verify browser compatibility and constant values

The ES6 import syntax needs transpilation for IE11 support. Also, ensure the imported constants match the previous values ('BINGADS' and 'Bing Ads').

Let's verify the constant definitions in the Destinations file:

Additionally, please add tests to cover these imports:

Would you like me to help create test cases for these constants?

✅ Verification successful

ES6 imports are safe and constant values are correct

The verification confirms:

  1. The imported constants are correctly defined in packages/analytics-js-common/src/constants/Destinations.ts with expected values:
    • BINGADS_NAME = 'BINGADS'
    • BINGADS_DISPLAY_NAME = 'Bing Ads'
  2. Babel transpilation is properly configured with necessary plugins for IE11 support, as evidenced by the extensive Babel setup in package.json.
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check the constant definitions in Destinations.ts
# Expected values: BINGADS_NAME = 'BINGADS', BINGADS_DISPLAY_NAME = 'Bing Ads'

rg -U "BINGADS_(NAME|DISPLAY_NAME)\s*=.*" ../Destinations.ts

Length of output: 121


Script:

#!/bin/bash
# Let's first find the Destinations.ts file
fd -t f "Destinations.ts" 

# Then check its content for the constants
rg -U "BINGADS_(NAME|DISPLAY_NAME)\s*=.*"

Length of output: 843


Script:

#!/bin/bash
# Let's check if there's any transpilation setup for IE11 compatibility
rg -g "*.json" -U "babel|typescript.*target" 

# Also check if there are any tests covering these constants
rg -g "*test*" -g "*spec*" "BINGADS_(NAME|DISPLAY_NAME)"

Length of output: 66550

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/BingAds/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts (3)

Line range hint 5-10: LGTM! Mappings maintain backward compatibility.

The mapping objects correctly use the imported constants while preserving support for various name formats. The implementation is IE11-compatible as required.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts#L1
Added line #L1 was not covered by tests


1-2: LGTM! Verify the relative import path.

The refactoring to use centralized constants improves maintainability. The import aliases maintain clear naming.

Let's verify the import path and constant existence:

✅ Verification successful

Import path and constants are correctly defined

The verification confirms:

  • The Destinations.ts file exists at the expected relative path
  • Both BUGSNAG_NAME and BUGSNAG_DISPLAY_NAME constants are properly exported from the Destinations file
  • The import statement in constants.ts correctly references these constants
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the Destinations.ts file exists and contains the required constants

# Check if the Destinations.ts file exists at the expected location
fd -e ts "Destinations.ts" "packages/analytics-js-common/src/constants/integrations"

# Verify the constants are defined in the Destinations file
rg "BUGSNAG_NAME|BUGSNAG_DISPLAY_NAME" "packages/analytics-js-common/src/constants/integrations"

Length of output: 652

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 12-12: LGTM! Verify integration test coverage.

The exports maintain the complete public API needed for Bugsnag integration.

Let's verify the usage and test coverage of these exports:

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Bugsnag/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts (2)

Line range hint 8-21: LGTM! Comprehensive name mapping implementation

The constant mappings are well-structured and handle various case variations effectively. The use of imported constants maintains consistency with the centralized approach.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts#L1
Added line #L1 was not covered by tests


1-4: Verify imported constants from Destinations module

The import statement looks good and maintains backward compatibility through aliasing.

Let's verify the existence of these constants in the Destinations module:

✅ Verification successful

Import statement is valid and correctly references existing constants

The imported constants CONVERTFLOW_NAME and CONVERTFLOW_DISPLAY_NAME are properly defined in the Destinations module. The import statement maintains backward compatibility through aliasing and aligns with the centralized constants approach being used across multiple integration modules.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the imported constants exist in the Destinations module
# and are consistently used across other integration modules

# Check if the constants exist in the Destinations file
rg "CONVERTFLOW_NAME|CONVERTFLOW_DISPLAY_NAME" "../Destinations.ts"

# Check for similar import patterns in other integration modules
rg -l "from '../Destinations'" "packages/analytics-js-common/src/constants/integrations/"

Length of output: 6504


Script:

#!/bin/bash
# Let's try to locate the Destinations file and verify the constants

# First, find the Destinations.ts file
fd "Destinations.ts" packages/analytics-js-common/src/constants/

# Then check its contents for the constants
fd "Destinations.ts" packages/analytics-js-common/src/constants/ -x cat {}

Length of output: 15722

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/ConvertFlow/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts (2)

1-2: LGTM! Import changes align with centralization goals

The import statement correctly implements the centralized constants pattern, maintaining backward compatibility through appropriate aliasing.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts#L1
Added line #L1 was not covered by tests


14-14: Verify constant propagation across the codebase

While test coverage warnings for constants can be false positives, let's verify the constant values are correctly propagated.

✅ Verification successful

Let me verify the constant imports and their usage with additional checks to ensure proper propagation.


Constants are properly propagated and used across the codebase

The verification shows that:

  • Constants are correctly imported from the central Destinations.ts
  • The CNameMapping is properly imported and used in integration_cname.js
  • The constants are correctly exported and maintain consistent naming conventions
  • All variations of the CommandBar name are properly mapped to the canonical NAME constant
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify constant usage and values
echo "Checking CommandBar constant usage..."

# Check if the new constants are properly defined in Destinations
rg "COMMANDBAR_NAME|COMMANDBAR_DISPLAY_NAME" packages/analytics-js-common/src/constants/Destinations.ts

# Verify no remaining hardcoded CommandBar constants
rg -l "const NAME.*=.*['\"]CommandBar" packages/analytics-js-common/src/constants/integrations/

# Check imports of CommandBar constants
rg -l "from.*CommandBar.*constants" packages/analytics-js-common/

Length of output: 609


Script:

#!/bin/bash
# Check the actual imports and usage in the files that import CommandBar constants
echo "Checking CommandBar constant imports and usage..."

# Check integration_cname.js content
echo "=== integration_cname.js ==="
rg -A 2 "from.*CommandBar.*constants" packages/analytics-js-common/src/constants/integrations/integration_cname.js

# Check destinationNames.ts content
echo "=== destinationNames.ts ==="
rg -A 2 "from.*CommandBar.*constants" packages/analytics-js-common/src/constants/integrations/destinationNames.ts

# Check if constants are properly exported from the module
echo "=== CommandBar constants definition ==="
cat packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts

Length of output: 1342

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 14-14: packages/analytics-js-common/src/constants/integrations/CommandBar/constants.ts#L14
Added line #L14 was not covered by tests

packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts (1)

Line range hint 8-18: LGTM! Constants are used consistently.

The imported constants are properly integrated into the existing mappings while maintaining backward compatibility with various name formats.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/FacebookPixel/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts (3)

Line range hint 3-12: LGTM! Mappings maintain compatibility

The constant mappings correctly preserve backward compatibility while using the centralized constants, ensuring consistent naming across the codebase.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 14-14: Remove redundant exports

The export statement includes redundant re-exports of NAME and DISPLAY_NAME that are already imported at the top.

-export { NAME, CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DISPLAY_NAME, DIR_NAME };
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts#L1
Added line #L1 was not covered by tests


1-1: LGTM! Consider adding tests for constants usage

The import statement correctly uses the generated constants from the centralized Destinations file. While the coverage warning can be ignored for constant declarations, consider adding integration tests that verify the correct usage of these constants across different browsers (Chrome, Firefox, IE11) as mentioned in the PR objectives.

✅ Verification successful

Import changes are properly tested and used consistently

The verification shows that:

  1. The constants are properly defined in the centralized Destinations.ts file
  2. The constants are being used in tests (browser.test.js and utils.test.js)
  3. The import is used only in the intended GoogleAds constants.ts file
  4. No other files are directly using these constants, indicating proper encapsulation
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the constants are being used consistently across the codebase
rg -l "GOOGLEADS_NAME|GOOGLEADS_DISPLAY_NAME" | grep -v "Destinations.ts"

Length of output: 152


Script:

#!/bin/bash
# Check for any direct usage of "GoogleAds" string literals that might need to use the constants
rg -i "googleads" -A 2 -B 2 --type ts --type js

Length of output: 101214


Script:

#!/bin/bash
# Check if there are any test files using these constants
fd -e test.ts -e spec.ts -e test.js -e spec.js | xargs rg -l "GoogleAds"

Length of output: 316


Script:

#!/bin/bash
# Check the Destinations.ts file to understand the constant definitions
fd -e ts -e js | rg "Destinations" | xargs rg "GOOGLEADS_"

Length of output: 508

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts (2)

1-1: Regarding test coverage warning: No action needed.

The static analysis tool flags that this import line isn't covered by tests. However, since this is a constants file:

  1. The constants themselves should be tested in the Destinations module
  2. The usage of these constants would be covered by integration tests
  3. There's no complex logic requiring unit tests in this file
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts#L1
Added line #L1 was not covered by tests


1-1: LGTM! Verify consistent usage across integration files.

The import statement correctly implements the centralization of integration constants, maintaining the same interface through aliasing.

Let's verify that this pattern is consistently applied across other integration files:

✅ Verification successful

✓ Import pattern is correctly and consistently implemented

The verification confirms that:

  1. The Destinations.ts file serves as the single source of truth for all integration constants
  2. The Axeptio integration, along with all other integrations, correctly imports and uses the centralized constants
  3. The pattern is consistently implemented across all integration files, maintaining proper aliasing and exports
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistent import pattern across integration files
# Expected: All integration files should import from ../Destinations

# Search for integration constant files
fd constants.ts$ packages/analytics-js-common/src/constants/integrations -x grep -l "from '../Destinations'"

# Check for any remaining hardcoded destination names
rg "const NAME = '[A-Z_]+'" packages/analytics-js-common/src/constants/integrations

Length of output: 6492


Script:

#!/bin/bash
# Let's verify the actual content of a few integration constant files
# to ensure they're using the imported constants correctly

# Sample a few files to check their content
echo "=== Checking Axeptio constants.ts ==="
cat packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts

echo -e "\n=== Checking Amplitude constants.ts ==="
cat packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts

echo -e "\n=== Checking GoogleAds constants.ts ==="
cat packages/analytics-js-common/src/constants/integrations/GoogleAds/constants.ts

# Also check the Destinations file to verify it's the source of truth
echo -e "\n=== Checking Destinations.ts ==="
cat packages/analytics-js-common/src/constants/integrations/Destinations.ts

Length of output: 9554

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Axeptio/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts (1)

Line range hint 1-14: Verify consistent constant usage across integration files.

Since this is part of a larger refactoring to use generated constants, let's ensure consistency.

✅ Verification successful

Consistent constant usage pattern verified across integration files

The review comment's concern has been verified by examining all integration constant files. The pattern of importing and using constants from Destinations is consistent across all integration files, including Amplitude. The key findings:

  1. All integration files follow the same pattern:

    • Import NAME and DISPLAY_NAME from Destinations
    • Define DIR_NAME locally
    • Export consistent set of constants
  2. The Amplitude constants file follows this exact pattern and is properly aligned with other integrations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining hardcoded Amplitude references
# Expected: Should not find direct string literals 'AM' or 'Amplitude' outside of constants files

# Search for hardcoded values in integration files
rg -g '!**/constants.ts' -g '!**/Destinations.ts' "'(AM|Amplitude)'" "packages/analytics-js-common/src/integrations/"

# Verify similar constant import pattern in other integration files
ast-grep --pattern 'import { $_NAME as NAME, $_DISPLAY_NAME as DISPLAY_NAME } from "../Destinations"'

Length of output: 314


Script:

#!/bin/bash
# Let's verify with corrected paths and broader search patterns

# Check for hardcoded Amplitude references across the codebase
rg -g '!**/constants.ts' -g '!**/Destinations.ts' "(AM|Amplitude)" packages/analytics-js-common/src/

# Find all integration constant files to verify consistent pattern
fd constants.ts packages/analytics-js-common/src/constants/integrations/

# Check imports in found constant files
fd constants.ts packages/analytics-js-common/src/constants/integrations/ -x cat {}

Length of output: 71840

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Amplitude/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA/constants.ts (2)

Line range hint 14-14: LGTM! Export statement is well-structured

The export statement is clean and consolidated, properly exposing all necessary constants.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA/constants.ts#L1
Added line #L1 was not covered by tests


1-1: Add test coverage for the new import

The imported constants from Destinations module lack test coverage. Consider adding tests to verify the correct values are being imported and aliased.

Let's verify the constants in the Destinations module:

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/GA360/constants.ts (1)

Line range hint 3-15: LGTM! Comprehensive mapping structure

The constant mappings are well-structured and handle various case variations, maintaining backward compatibility while using the centralized constants.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/GA360/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts (1)

1-1: LGTM! Verify constant values match previous implementation.

The refactor to use centralized constants improves maintainability. The aliasing maintains the existing interface while allowing for better constant management.

Let's verify the constant values match the previous implementation:

✅ Verification successful

Values match and imports are correctly configured

The verification confirms:

  1. The Criteo constants are correctly defined in both Destinations files with matching values:
    • CRITEO_NAME = 'CRITEO'
    • CRITEO_DISPLAY_NAME = 'Criteo'
  2. The constants are properly imported from '../Destinations' and aliased to maintain the existing interface
  3. The imported constants are used consistently throughout the file in DISPLAY_NAME_TO_DIR_NAME_MAP and CNameMapping
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the new constants match the previous values

# Check the values in Destinations.ts
echo "Checking new constant values:"
rg "CRITEO_NAME.*=.*'CRITEO'" ../Destinations.ts -A 1
rg "CRITEO_DISPLAY_NAME.*=.*'Criteo'" ../Destinations.ts -A 1

# Check old values in git history
echo "Checking previous values:"
git log -p -- packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts | rg "NAME.*=.*'CRITEO'" -A 1
git log -p -- packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts | rg "DISPLAY_NAME.*=.*'Criteo'" -A 1

Length of output: 379


Script:

#!/bin/bash
# Let's first find the correct path to Destinations.ts
fd Destinations.ts

# Then check the content of both files
echo "=== Content of Destinations.ts ==="
fd Destinations.ts -x cat {}

echo -e "\n=== Previous content of Criteo constants ==="
git log -p -- packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts | rg -A 5 "^-.*NAME.*=.*'.*'"

Length of output: 17327


Script:

#!/bin/bash
# Let's check the correct path for Destinations.ts and then check the previous values
echo "=== Previous Criteo constants ==="
git log -p packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts | rg -B 2 -A 2 'export const'

Length of output: 76


Script:

#!/bin/bash
# Let's try a different approach to view the file changes
echo "=== Checking file changes ==="
git log -p packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts

# Also verify the current imported constants are being used from the correct path
echo -e "\n=== Verifying imports ==="
rg "CRITEO_NAME.*=.*'CRITEO'" packages/analytics-js-common/src/constants/

Length of output: 422


Script:

#!/bin/bash
# Let's check both the old constants file and the new Destinations files
echo "=== Current Criteo constants in Destinations files ==="
rg "CRITEO_" packages/analytics-js-common/src/constants/Destinations.ts packages/analytics-js-common/src/constants/integrations/Destinations.ts

echo -e "\n=== Current import in Criteo constants file ==="
cat packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts

Length of output: 1392

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Criteo/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts (3)

Line range hint 1-14: Remove duplicate exports to avoid confusion

The constants NAME and DISPLAY_NAME are still being exported twice:

  1. Through the import aliases
  2. Through the direct export statement

This creates unnecessary duplication and could lead to confusion.

Apply this diff to clean up the exports:

import { CLEVERTAP_NAME, CLEVERTAP_DISPLAY_NAME } from '../Destinations';

const DIR_NAME = 'Clevertap';

-const DISPLAY_NAME_TO_DIR_NAME_MAP = { [DISPLAY_NAME]: DIR_NAME };
+const DISPLAY_NAME_TO_DIR_NAME_MAP = { [CLEVERTAP_DISPLAY_NAME]: DIR_NAME };
const CNameMapping = {
-  [NAME]: NAME,
-  Clevertap: NAME,
-  clevertap: NAME,
+  [CLEVERTAP_NAME]: CLEVERTAP_NAME,
+  Clevertap: CLEVERTAP_NAME,
+  clevertap: CLEVERTAP_NAME,
};

-export { NAME, CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DISPLAY_NAME, DIR_NAME };
+export { CNameMapping, DISPLAY_NAME_TO_DIR_NAME_MAP, DIR_NAME };
+export { CLEVERTAP_NAME as NAME, CLEVERTAP_DISPLAY_NAME as DISPLAY_NAME } from '../Destinations';
🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 1-14: Verify the integration with other destination files

Let's ensure this refactoring pattern is consistently applied across all destination integrations.

✅ Verification successful

Let me gather more information to verify the pattern consistency across integration files.


The refactoring pattern is consistently applied across integration files

Based on the sample files examined (Amplitude, Mixpanel, GoogleAds, and Braze) and the Destinations.ts file, the pattern is consistently implemented:

  • All integration files import NAME and DISPLAY_NAME from '../Destinations'
  • They follow the same structure with DIR_NAME, DISPLAY_NAME_TO_DIR_NAME_MAP, and CNameMapping
  • The constants are properly sourced from the centralized Destinations.ts file
  • The exports follow the same pattern across all files

The Clevertap integration follows this established pattern correctly, maintaining consistency with other destination integrations.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for consistent pattern across other integration files
echo "Checking for inconsistent integration constant usage..."

# Look for direct string assignments that should use imports
rg "const NAME = '[A-Z_]+'" "packages/analytics-js-common/src/constants/integrations/"

# Look for direct display name assignments
rg "const DISPLAY_NAME = '[A-Za-z]+'" "packages/analytics-js-common/src/constants/integrations/"

# Verify import pattern across integration files
rg -l "import.*from '../Destinations'" "packages/analytics-js-common/src/constants/integrations/"

Length of output: 5207


Script:

#!/bin/bash
# Let's check the content of a few integration files to verify the pattern
echo "Checking pattern in different integration files..."

# Sample a few integration files to verify the constant declaration pattern
for integration in "Amplitude" "Mixpanel" "GoogleAds" "Braze"; do
  echo "=== $integration integration ==="
  head -n 15 "packages/analytics-js-common/src/constants/integrations/$integration/constants.ts"
done

# Also check the Destinations file that provides these constants
echo "=== Destinations constants ==="
head -n 30 "packages/analytics-js-common/src/constants/integrations/Destinations.ts"

Length of output: 6714

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts#L1
Added line #L1 was not covered by tests


1-1: Add test coverage for the constants import

The static analysis indicates that this new import line lacks test coverage. While constants might seem trivial to test, ensuring they're correctly imported is crucial for the refactoring effort.

Would you like me to help generate test cases to verify the constant imports and their aliases?

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Clevertap/constants.ts#L1
Added line #L1 was not covered by tests

packages/analytics-js-common/src/constants/integrations/Drip/constants.ts (2)

Line range hint 12-12: LGTM! Export interface maintained.

The export statement correctly preserves the public API while using the imported constants.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Drip/constants.ts#L1
Added line #L1 was not covered by tests


Line range hint 5-10: Verify the constant mapping usage across the codebase.

The mappings maintain backward compatibility while using the new centralized constants. Let's verify there are no unhandled cases.

✅ Verification successful

Let me generate additional scripts to verify the constant usage:


Based on the search results, I can now provide a final response:

The constant mappings are correctly handling all Drip name variations.

The verification shows:

  • The NAME constant is used consistently in the CNameMapping object
  • All case variations ("Drip", "drip") are properly mapped to the same NAME constant
  • The DISPLAY_NAME_TO_DIR_NAME_MAP correctly maps display names to directory names
  • No other conflicting mappings were found in the codebase
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any direct usage of 'Drip' or 'DRIP' strings that might need updating
rg -i "['\"](drip)['\"]" --type ts --type js

# Look for any potential constant imports that might conflict
ast-grep --pattern 'import { $_ as NAME } from $path'

Length of output: 66495


Script:

#!/bin/bash
# Search for imports of NAME constant
ast-grep --pattern 'import { NAME } from $path'

# Search for imports of DISPLAY_NAME constant
ast-grep --pattern 'import { DISPLAY_NAME } from $path'

# Search for any other mappings using Drip
rg -i "drip.*:.*name" --type ts --type js

Length of output: 65994

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 1-1: packages/analytics-js-common/src/constants/integrations/Drip/constants.ts#L1
Added line #L1 was not covered by tests

examples/chrome-extension/content-script-v3/foreground.js (1)

Line range hint 1-2: LGTM!

The function logic is correct, and the implementation is accurate.

packages/analytics-js-common/src/constants/integrations/Destinations.ts (1)

1-167: LGTM!

The file contains a comprehensive list of constants representing various analytics and marketing integration destinations. The constants are well-structured, following a consistent naming convention for both the destination name and display name. This approach enhances code readability and maintainability.

The header comment clearly indicates that the file is auto-generated and should not be edited manually, providing important context for developers working with the codebase.

The constants cover a wide range of popular platforms and services, making it easier for developers to integrate them into the application.

Overall, the code changes in this file are a positive addition to the project, centralizing the destination constants and promoting consistency across the codebase.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 8-167: packages/analytics-js-common/src/constants/integrations/Destinations.ts#L8-L167
Added lines #L8 - L167 were not covered by tests

Copy link
Member

@saikumarrs saikumarrs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's revert the changes in the examples directory.

coderabbitai[bot]
coderabbitai bot previously approved these changes Dec 6, 2024
Copy link

sonarcloud bot commented Dec 6, 2024

coderabbitai[bot]
coderabbitai bot previously requested changes Dec 6, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Outside diff range and nitpick comments (4)
packages/analytics-js-common/__tests__/constants/integrations/constants.test.ts (3)

4-4: Consider using path.resolve for more robust path handling

The base integration directory path could be more robust by using path.resolve instead of join.

-const BaseIntegrationDir = join(__dirname, '../../../src/constants/integrations');
+const BaseIntegrationDir = resolve(__dirname, '../../../src/constants/integrations');

15-16: Consider using more maintainable filtering logic

The current filtering approach could be more maintainable and explicit.

-    .filter(dir => ['CommonIntegrationsConstant'].indexOf(dir) === -1)
-    .filter(dir => statSync(join(BaseIntegrationDir, dir)).isDirectory())
+    const EXCLUDED_DIRS = new Set(['CommonIntegrationsConstant']);
+    .filter(dir => !EXCLUDED_DIRS.has(dir))
+    .filter(dir => {
+      try {
+        return statSync(join(BaseIntegrationDir, dir)).isDirectory();
+      } catch (error) {
+        console.warn(`Failed to check directory status for ${dir}:`, error);
+        return false;
+      }
+    })

26-30: Enhance test case error messages

The test assertions could provide more descriptive error messages.

         it('should have the same NAME as defined in Destination constants', () => {
           const { NAME } = integrationConstants;
-          expect(NAME).toBeDefined();
-          expect(NAME).toEqual(allConstants[`${NAME}_NAME`]);
+          expect(NAME).toBeDefined(`NAME constant is not defined for ${integration}`);
+          const expectedName = allConstants[`${NAME}_NAME`];
+          expect(NAME).toEqual(expectedName, 
+            `NAME mismatch for ${integration}. Expected: ${expectedName}, Got: ${NAME}`);
         });
scripts/update-integration-name-constants-references.js (1)

80-85: Enhance error reporting with structured output

The current error reporting could be more structured and provide better context.

 if (errors.length > 0) {
-  console.error('\nErrors encountered:');
-  errors.forEach(error => console.error(`- ${error}`));
+  console.error('\nErrors encountered during processing:');
+  console.error(JSON.stringify({
+    totalFiles: integrationFiles.length,
+    failedFiles: errors.length,
+    errors: errors.map(error => ({
+      message: error,
+      timestamp: new Date().toISOString()
+    }))
+  }, null, 2));
+  process.exit(1);
 } else {
-  console.log('\nNo errors encountered.');
+  console.log(`\nSuccessfully processed ${integrationFiles.length} files.`);
 }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 83bca35 and 48c13c9.

📒 Files selected for processing (2)
  • packages/analytics-js-common/__tests__/constants/integrations/constants.test.ts (1 hunks)
  • scripts/update-integration-name-constants-references.js (1 hunks)

@koladilip koladilip dismissed coderabbitai[bot]’s stale review December 6, 2024 12:01

File are for automation and they will be used later

@koladilip koladilip requested a review from sanpj2292 December 6, 2024 12:04
@koladilip koladilip merged commit 81b37a2 into develop Dec 9, 2024
13 checks passed
@koladilip koladilip deleted the refactor/use-generated-constants branch December 9, 2024 07:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants