Conversation
- package build metadata for website - upload build metadata to release - trigger documentation update with new release version
- include native alternatives for various categories - write alternatives to native-alternatives.json
There was a problem hiding this comment.
Pull request overview
This PR appears to prepare the “Alpha 10” release by adding “native alternatives” metadata for the website build output, while also renaming several helpers (e.g., quickCompare → shallowEquals, arrayEquals → equals, deepCompare → deepEquals for arrays), cleaning up dependencies, and updating the release workflow to publish build metadata as a release asset and trigger the website update.
Changes:
- Add
native-alternatives.jsonand emit per-categorymeta/native-alternatives.jsonduringbuildWebsiteMetadata. - Rename/retarget multiple helper exports and update tests/examples accordingly; remove
simple-deepcomparedependency. - Update release workflow to package/upload
build/**/meta/*.jsonto the GitHub release and dispatch an event to the website repo; tighten oxlint rules.
Reviewed changes
Copilot reviewed 25 out of 27 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/examples/smoke.ts | Align example typing with new array-type lint preference. |
| scripts/build/helpers/compile-type-script.helper.ts | Remove simple-deepcompare from externals list. |
| scripts/build/build-website-metadata.ts | Write per-category native-alternatives.json into build/<category>/meta/. |
| README.md | Add coverage/mutation badges; update API naming example. |
| pnpm-lock.yaml | Remove simple-deepcompare entries. |
| package.json | Remove simple-deepcompare dependency. |
| native-alternatives.json | New source-of-truth list of “use native instead” alternatives by category. |
| LICENSE.md | Remove duplicate license file (root LICENSE still present). |
| helpers/object/shallowEquals.ts | Rename exported function to shallowEquals. |
| helpers/object/shallowEquals.test.ts | Update tests to import/describe shallowEquals. |
| helpers/object/shallowEquals.example.ts | Update example to shallowEquals. |
| helpers/object/deepCompare.ts | Swap array quick-compare import to array shallowEquals. |
| helpers/object/deepCompare.test.ts | Update test descriptions referencing shallow array compare. |
| helpers/array/shallowEquals.ts | Rename exported function to shallowEquals. |
| helpers/array/shallowEquals.test.ts | Update tests to import/describe shallowEquals. |
| helpers/array/shallowEquals.example.ts | Update example to shallowEquals. |
| helpers/array/equals.ts | Rename export arrayEquals → equals; update object comparison helper import. |
| helpers/array/equals.test.ts | Update tests to import/describe equals. |
| helpers/array/equals.example.ts | Update example to equals. |
| helpers/array/deepEquals.ts | Rename export deepCompare → deepEquals for arrays. |
| helpers/array/deepEquals.test.ts | Update tests to import/describe deepEquals. |
| helpers/array/deepEquals.example.ts | Update example to deepEquals. |
| .template/bundle/README.md | Update bundle README import example to equals. |
| .oxlintrc.json | Promote sort-imports to error w/ options; add typescript/array-type; add scripts override for no-explicit-any. |
| .gitignore | Stop un-ignoring .copilot/README.md. |
| .github/workflows/release.yml | Package/upload build metadata asset; dispatch release event to website using app token. |
| .copilot/README.md | Remove Copilot context README from repo. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (3)
helpers/array/equals.ts:24
equalsusesarr1.every(v1 => arr2.some(...))with only a length check, which does not account for duplicate elements. For example,[1, 1]and[1, 2]would incorrectly return true because the same1inarr2can satisfy both checks. Consider implementing multiset-style matching (track matched indices/counts) so duplicates are handled correctly.
helpers/array/equals.ts:20- PR description focuses on adding native alternatives metadata, but this change also renames a public export from
arrayEqualstoequals(breaking API change). Please either update the PR description/type-of-change to reflect the breaking rename, or provide a backwards-compatible alias/deprecation path.
helpers/object/shallowEquals.ts:16 - The implementation compares
JSON.stringify(objA)andJSON.stringify(objB), which is not a shallow equality check (nested values affect the result, and property order matters). Consider renaming to something that reflects the actual semantics (e.g.,jsonEquals/stringifyEquals) or adjusting the implementation to perform a true shallow comparison of own enumerable properties.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
✅ PR Validation Passed
📋 Pipeline Status
📊 Code Coverage
🧬 Mutation Testing
ℹ️ About this report
🤖 Generated by @helpers4 CI • 2026-04-12 |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 25 out of 27 changed files in this pull request and generated 1 comment.
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (2)
helpers/array/equals.ts:28
- The current implementation treats arrays like sets and does not account for element multiplicity. For example,
[1, 1, 2]and[1, 2, 2]would returntrueeven though they are not equal as multisets. Either adjust the algorithm to track matched elements/counts, or update the docs/name to explicitly state that duplicates are ignored.
helpers/array/equals.test.ts:28 - Tests cover order-insensitivity but don't cover duplicate-element scenarios, which are a common edge case for an order-insensitive equality helper. Add cases like
[1,1,2]vs[1,2,2](should be false if multiplicity matters) to lock in the intended semantics.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Description
Please include a summary of what this PR does and why it's needed.
Type of Change
Related Issues
Closes #(issue number)
How Has This Been Tested?
Describe the tests you ran and how to reproduce them:
Checklist
Screenshots (if applicable)
Add screenshots for UI changes.
Additional Context
Add any other context about the PR here.