René's URL Explorer Experiment


Title: Fix bq-class bracket detection, once() failure caching, mount bq-for validation, and component pre-mount renders by Copilot · Pull Request #31 · bQuery/bQuery · GitHub

Open Graph Title: Fix bq-class bracket detection, once() failure caching, mount bq-for validation, and component pre-mount renders by Copilot · Pull Request #31 · bQuery/bQuery

X Title: Fix bq-class bracket detection, once() failure caching, mount bq-for validation, and component pre-mount renders by Copilot · Pull Request #31 · bQuery/bQuery

Description: Addresses four correctness issues identified in PR #16 code review: Changes bq-class directive - Changed array detection from expression.includes('[') to /^\s*\[/.test(expression) to distinguish array literals from bracket property access (foo['bar']) once() utility - Set hasRun = true after function execution instead of before, preventing cached failures when fn() throws mount() validation - Added check to reject mounting on elements with bq-for directive, preventing View.el from becoming detached when the directive replaces the element with a placeholder comment Component lifecycle - Added hasMounted flag to gate attributeChangedCallback() renders until after connectedCallback() completes, preventing double renders and bypassed prop validation during element upgrade // Before: this would incorrectly trigger array branch

// After: correctly evaluates as single expression
// Array literals still work
Test Coverage Comprehensive test coverage has been added for all four fixes to prevent regressions: once() utility tests - Verifies that failures are not cached and the function retries on subsequent calls until success bq-class directive tests - Verifies bracket property access like item['className'] is handled correctly and not confused with array literals ['foo', 'bar'] mount() validation tests - Verifies mounting on elements with bq-for throws with clear error message instructing to wrap in container Component hasMounted tests - Verifies no renders occur when attributes are set before connectedCallback, and only one render happens on mount even during element upgrade Total: 12 new test cases added across 3 test files (tests/utils.test.ts, tests/view.test.ts, tests/component.test.ts) 💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Open Graph Description: Addresses four correctness issues identified in PR #16 code review: Changes bq-class directive - Changed array detection from expression.includes('[') to /^\s*\[/.test(expression) to dist...

X Description: Addresses four correctness issues identified in PR #16 code review: Changes bq-class directive - Changed array detection from expression.includes('[') to /^\s*\[/.test(expression)...

Opengraph URL: https://github.com/bQuery/bQuery/pull/31

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:e8bf85cc-9b84-7b2d-e418-dcc79846c33e
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idA7B4:240FF0:9EB3C3:E603CE:6A4E18BB
html-safe-nonced27b9c267c7bf266156609b6efd2b7b5b9836d6c8a9db46a98db7bc7488e9760
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBN0I0OjI0MEZGMDo5RUIzQzM6RTYwM0NFOjZBNEUxOEJCIiwidmlzaXRvcl9pZCI6Ijg3OTQxNzU2ODYxNjYwNTkxOTUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmacae15a3508bd650e5b21be8c4ba4b5c94acc266f0c09a01b6e553a3c5e36f7eeb
hovercard-subject-tagpull_request:3212226014
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/bQuery/bQuery/pull/31/files
twitter:imagehttps://avatars.githubusercontent.com/in/1143301?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/in/1143301?s=400&v=4
og:image:altAddresses four correctness issues identified in PR #16 code review: Changes bq-class directive - Changed array detection from expression.includes('[') to /^\s*\[/.test(expression) to dist...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None030096ee0db095447bfe77409d33bfac127ca7128299c58deef27c52eaa1b1f0
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/bQuery/bQuery git https://github.com/bQuery/bQuery.git
octolytics-dimension-user_id256381806
octolytics-dimension-user_loginbQuery
octolytics-dimension-repository_id1139284244
octolytics-dimension-repository_nwobQuery/bQuery
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1139284244
octolytics-dimension-repository_network_root_nwobQuery/bQuery
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releaseea9187571e3edc5f2780f750631138669441ca50
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/bQuery/bQuery/pull/31/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FbQuery%2FbQuery%2Fpull%2F31%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FbQuery%2FbQuery%2Fpull%2F31%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=bQuery%2FbQuery
Reloadhttps://github.com/bQuery/bQuery/pull/31/files
Reloadhttps://github.com/bQuery/bQuery/pull/31/files
Reloadhttps://github.com/bQuery/bQuery/pull/31/files
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
bQuery https://github.com/bQuery
bQueryhttps://github.com/bQuery/bQuery
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
Notifications https://github.com/login?return_to=%2FbQuery%2FbQuery
Fork 0 https://github.com/login?return_to=%2FbQuery%2FbQuery
Star 1 https://github.com/login?return_to=%2FbQuery%2FbQuery
Code https://github.com/bQuery/bQuery
Issues 0 https://github.com/bQuery/bQuery/issues
Pull requests 0 https://github.com/bQuery/bQuery/pulls
Actions https://github.com/bQuery/bQuery/actions
Security and quality 0 https://github.com/bQuery/bQuery/security
Insights https://github.com/bQuery/bQuery/pulse
Code https://github.com/bQuery/bQuery
Issues https://github.com/bQuery/bQuery/issues
Pull requests https://github.com/bQuery/bQuery/pulls
Actions https://github.com/bQuery/bQuery/actions
Security and quality https://github.com/bQuery/bQuery/security
Insights https://github.com/bQuery/bQuery/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FbQuery%2FbQuery%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FbQuery%2FbQuery%2Fissues%2Fnew%2Fchoose
JosunLPhttps://github.com/JosunLP
developmenthttps://github.com/bQuery/bQuery/tree/development
copilot/sub-pr-16https://github.com/bQuery/bQuery/tree/copilot/sub-pr-16
Conversation 8 https://github.com/bQuery/bQuery/pull/31
Commits 4 https://github.com/bQuery/bQuery/pull/31/commits
Checks 5 https://github.com/bQuery/bQuery/pull/31/checks
Files changed https://github.com/bQuery/bQuery/pull/31/files
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
Fix bq-class bracket detection, once() failure caching, mount bq-for validation, and component pre-mount renders https://github.com/bQuery/bQuery/pull/31/files#top
Show all changes 4 commits https://github.com/bQuery/bQuery/pull/31/files
8795f5f Initial plan Copilot Jan 26, 2026 https://github.com/bQuery/bQuery/pull/31/commits/8795f5f0c80154b96804c175ada9013715a16b7d
5caa927 Fix bq-class array detection, once() failure handling, mount bq-for g… Copilot Jan 26, 2026 https://github.com/bQuery/bQuery/pull/31/commits/5caa927f3cc388e88a1b2b50f76ab71996aca2dd
8c78a2b Add test coverage for once(), bq-class bracket access, mount bq-for v… Copilot Jan 27, 2026 https://github.com/bQuery/bQuery/pull/31/commits/8c78a2b2258372fcfa553d93363397a52c4b6617
8f2b983 Fix trailing whitespace in view tests Copilot Jan 27, 2026 https://github.com/bQuery/bQuery/pull/31/commits/8f2b98328a2882ecaa50c53d25961ada6d89c3ee
Clear filters https://github.com/bQuery/bQuery/pull/31/files
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
component.ts https://github.com/bQuery/bQuery/pull/31/files#diff-82a7b805e9a6218421c3e50547aeb1016175b1da32ca438870fbde04b2ac578e
function.ts https://github.com/bQuery/bQuery/pull/31/files#diff-e5d6907dcfcb0936b95fe8317e03e465668e22aed7f9d641396c56bd6825e7f9
class.ts https://github.com/bQuery/bQuery/pull/31/files#diff-3e122f0aed77d407aa2bd983e6f3ef68f31688e95986d677b80c387a702940ce
mount.ts https://github.com/bQuery/bQuery/pull/31/files#diff-5eea634f2c3b1634f5e9b312110b8106b201680afc3a0cff96f57c56c9ffc6dd
component.test.ts https://github.com/bQuery/bQuery/pull/31/files#diff-84bc3400899f86b754255fcf7ff4d1eefee01cf8ad2f0191084480f354067d63
utils.test.ts https://github.com/bQuery/bQuery/pull/31/files#diff-c37842b08434952211c06ad3cdc71258303dcce7491a2b5f2005876cfbc26681
view.test.ts https://github.com/bQuery/bQuery/pull/31/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
src/component/component.tshttps://github.com/bQuery/bQuery/pull/31/files#diff-82a7b805e9a6218421c3e50547aeb1016175b1da32ca438870fbde04b2ac578e
View file https://github.com/bQuery/bQuery/blob/8f2b98328a2882ecaa50c53d25961ada6d89c3ee/src/component/component.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/31/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/31/files#diff-82a7b805e9a6218421c3e50547aeb1016175b1da32ca438870fbde04b2ac578e
https://github.com/bQuery/bQuery/pull/31/files#diff-82a7b805e9a6218421c3e50547aeb1016175b1da32ca438870fbde04b2ac578e
https://github.com/bQuery/bQuery/pull/31/files#diff-82a7b805e9a6218421c3e50547aeb1016175b1da32ca438870fbde04b2ac578e
https://github.com/bQuery/bQuery/pull/31/files#diff-82a7b805e9a6218421c3e50547aeb1016175b1da32ca438870fbde04b2ac578e
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
https://github.com/bQuery/bQuery/pull/31/files#diff-82a7b805e9a6218421c3e50547aeb1016175b1da32ca438870fbde04b2ac578e
src/core/utils/function.tshttps://github.com/bQuery/bQuery/pull/31/files#diff-e5d6907dcfcb0936b95fe8317e03e465668e22aed7f9d641396c56bd6825e7f9
View file https://github.com/bQuery/bQuery/blob/8f2b98328a2882ecaa50c53d25961ada6d89c3ee/src/core/utils/function.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/31/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/31/files#diff-e5d6907dcfcb0936b95fe8317e03e465668e22aed7f9d641396c56bd6825e7f9
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
https://github.com/bQuery/bQuery/pull/31/files#diff-e5d6907dcfcb0936b95fe8317e03e465668e22aed7f9d641396c56bd6825e7f9
src/view/directives/class.tshttps://github.com/bQuery/bQuery/pull/31/files#diff-3e122f0aed77d407aa2bd983e6f3ef68f31688e95986d677b80c387a702940ce
View file https://github.com/bQuery/bQuery/blob/8f2b98328a2882ecaa50c53d25961ada6d89c3ee/src/view/directives/class.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/31/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/31/files#diff-3e122f0aed77d407aa2bd983e6f3ef68f31688e95986d677b80c387a702940ce
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
https://github.com/bQuery/bQuery/pull/31/files#diff-3e122f0aed77d407aa2bd983e6f3ef68f31688e95986d677b80c387a702940ce
src/view/mount.tshttps://github.com/bQuery/bQuery/pull/31/files#diff-5eea634f2c3b1634f5e9b312110b8106b201680afc3a0cff96f57c56c9ffc6dd
View file https://github.com/bQuery/bQuery/blob/8f2b98328a2882ecaa50c53d25961ada6d89c3ee/src/view/mount.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/31/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/31/files#diff-5eea634f2c3b1634f5e9b312110b8106b201680afc3a0cff96f57c56c9ffc6dd
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
https://github.com/bQuery/bQuery/pull/31/files#diff-5eea634f2c3b1634f5e9b312110b8106b201680afc3a0cff96f57c56c9ffc6dd
tests/component.test.tshttps://github.com/bQuery/bQuery/pull/31/files#diff-84bc3400899f86b754255fcf7ff4d1eefee01cf8ad2f0191084480f354067d63
View file https://github.com/bQuery/bQuery/blob/8f2b98328a2882ecaa50c53d25961ada6d89c3ee/tests/component.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/31/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/31/files#diff-84bc3400899f86b754255fcf7ff4d1eefee01cf8ad2f0191084480f354067d63
https://github.com/bQuery/bQuery/pull/31/files#diff-84bc3400899f86b754255fcf7ff4d1eefee01cf8ad2f0191084480f354067d63
tests/utils.test.tshttps://github.com/bQuery/bQuery/pull/31/files#diff-c37842b08434952211c06ad3cdc71258303dcce7491a2b5f2005876cfbc26681
View file https://github.com/bQuery/bQuery/blob/8f2b98328a2882ecaa50c53d25961ada6d89c3ee/tests/utils.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/31/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/31/files#diff-c37842b08434952211c06ad3cdc71258303dcce7491a2b5f2005876cfbc26681
https://github.com/bQuery/bQuery/pull/31/files#diff-c37842b08434952211c06ad3cdc71258303dcce7491a2b5f2005876cfbc26681
tests/view.test.tshttps://github.com/bQuery/bQuery/pull/31/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
View file https://github.com/bQuery/bQuery/blob/8f2b98328a2882ecaa50c53d25961ada6d89c3ee/tests/view.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/bQuery/bQuery/pull/31/{{ revealButtonHref }}
https://github.com/bQuery/bQuery/pull/31/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
https://github.com/bQuery/bQuery/pull/31/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
https://github.com/bQuery/bQuery/pull/31/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
https://github.com/bQuery/bQuery/pull/31/files#diff-40c904250da66efa1eb8d2b70c52887ab1577d021cfc85f8653b819922cfe763
Please reload this pagehttps://github.com/bQuery/bQuery/pull/31/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.