danielroe / page-speed.dev

https://page-speed.dev
MIT License
320 stars 13 forks source link

feat: add check to test final url when redirect present #40

Closed moshetanzer closed 4 months ago

moshetanzer commented 6 months ago

Hi @danielroe,

Intrested to get some good criticism and feedback.

To me biggest issue is that we shouldn't be checking domain redirect twice πŸ™ˆ. (We can't move to front end because of cors, if was a way to implement in middleware would run twice I think πŸ€”..) and making it into a function.

Also think we might need to update cache to be more efficient (in case where there is redirect).

Also, couldn't get it to work with $fetch, doesn't seem like it returns redirect like fetch - should I open an issue on ofetch - or is this on purpose. Could have done a manual if..else to check if final url was equal to inputted, though this was a better option.

Not sure if you want to put the redirect message at the bottom with other info (else we need to move it closer to input field, didnt want to start adding slots in domain form or negative margins).

resolves https://github.com/danielroe/page-speed.dev/issues/9 Thanks for your work!

Summary by CodeRabbit

Summary by CodeRabbit

coderabbitai[bot] commented 6 months ago

Walkthrough

The recent updates focus on streamlining domain validation and navigation across the server-side API and the client-side Vue application. The changes aim to enhance user experience by ensuring proper domain handling and improving code readability and maintainability.

Changes

File Path Change Summary
app.vue Updated to handle domain validation and navigation based on import.meta.server and import.meta.client. Modified template structure for better styling and layout. Adjusted text content for Lighthouse APIs.
server/api/crux/[domain].get.ts
server/api/run/[domain].get.ts
Refactored domain validation logic to a separate function validateDomain for better clarity and maintainability. Updated API logic to call validateDomain for domain validation before processing.
server/utils/redirect.ts Introduced redirect.ts with validateDomain function for comprehensive domain validation, including checking invalid characters and handling redirects. Returns the validated domain or host.

🐰✨
In the code where bits do play,
A rabbit hopped and found its way.
"Let's validate domains," it said,
And in the logic, new paths were led.
With each change, and every line,
It made the web a place so fine.
πŸ₯•πŸŽ‰


Recent Review Details **Configuration used: CodeRabbit UI**
Commits Files that changed from the base of the PR and between 4768fbc7c827e056188eeb2f8a57dce26c5c1452 and 1648d4dd9595ea0e75f3b6a314286f4cdd48a9a3.
Files selected for processing (4) * app.vue (3 hunks) * server/api/crux/[domain].get.ts (2 hunks) * server/api/run/[domain].get.ts (1 hunks) * server/utils/redirect.ts (1 hunks)
Additional comments not posted (4)
server/utils/redirect.ts (1)
`3-21`: Ensure efficient handling of domain validations, especially in high-traffic scenarios. Consider implementing caching mechanisms or other optimizations to reduce the overhead of network requests in the `validateDomain` function.
server/api/run/[domain].get.ts (1)
`2-9`: Centralization of domain validation logic enhances maintainability. Good job on centralizing the domain validation logic in the `validateDomain` function. This change improves code readability and maintainability.
server/api/crux/[domain].get.ts (1)
`1-7`: > :memo: **NOTE** > This review was outside the diff hunks and was mapped to the diff hunk with the greatest overlap. Original lines [4-20] Centralization of domain validation logic enhances maintainability. Good job on centralizing the domain validation logic in the `validateDomain` function. This change improves code readability and maintainability.
app.vue (1)
`32-44`: Efficient handling of domain redirections enhances user experience. Good job on handling domain redirections efficiently in the Vue component. This change improves user experience by ensuring that users are navigated to the validated domain.
--- 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 - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `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 generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@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.` 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 as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration 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](https://docs.coderabbit.ai/guides/configure-coderabbit) 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](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
moshetanzer commented 5 months ago

@danielroe any thoughts on this?

danielroe commented 4 months ago

Thank you so much! :heart:

I made a few changes but maybe you have some ideas to improve further πŸ™

moshetanzer commented 4 months ago

Hi @danielroe

Good to see meet you around here againπŸ˜‚. Will take a look - haven't managed to look at changes yet. Think biggest thing will be to speed up time to lighthouse test when no crux - seem to be significantly slower on a brief test on phone.