Add support for all RWZ rule element types from the spec#2
Closed
YatinAdityaT wants to merge 1 commit into
Closed
Conversation
The original parser only handled ~15 rule element IDs and would crash on most real-world .rwz files. This adds support for ~60 element types covering all conditions, actions, and exceptions documented in the OutlookRulesReader spec by @hughbe. Changes: - Add 8 new data parser classes: ImportanceRuleElementData, SensitivityRuleElementData, CategoriesListRuleElementData, PathRuleElementData, OnThisComputerOnlyRuleElementData, SizeInSpecificRangeRuleElementData, DisplayMessageRuleElementData, DeferDeliveryRuleElementData - Expand the RuleElement switch from 15 to 60+ element IDs - Accept input/output paths as CLI arguments instead of hardcoded paths - Improve error message for unknown element types to show hex ID
Owner
|
Closing this PR as its changes are subsumed by PR #1 which has been merged. PR #1 covers all element types from this PR plus ~20 additional ones, with bug fixes (softAssert, separator logic, FlaggedForAction fix). The CLI improvements from this PR (output path arg, usage message) will be applied separately on top of main. |
asklar
added a commit
that referenced
this pull request
May 12, 2026
- Agentify: add copilot-setup-steps.yml and copilot-instructions.md - CLI: accept input/output file paths as arguments (not hardcoded) - Port PR #2's unique element IDs (0xee, 0xef, 0xf1, 0xf5) into merged PR #1 - Security: remove fs.writeFileSync side effect from RulesFile.parse() - Security: throw on unknown element IDs instead of guessing - Security: add bounds check to readBytes() - Modernize: clean tsconfig.json (ES2022, nodenext module) - Modernize: update typescript and @types/node to latest - Modernize: remove tsc shim package, remove yarn.lock - Modernize: update CI workflows to actions/checkout@v4 and setup-node@v4 - Modernize: add bin entry, engines, files, types to package.json - Remove test-push.txt junk file Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.rwzfiles due to unrecognized element IDs.ImportanceRuleElementData,SensitivityRuleElementData,CategoriesListRuleElementData,PathRuleElementData,OnThisComputerOnlyRuleElementData,SizeInSpecificRangeRuleElementData,DisplayMessageRuleElementData,DeferDeliveryRuleElementData.node index.js <input.rwz> [output.json]) instead of hardcodedC:/Temp/Untitled.rwz.Motivation
Tested against a real-world Outlook 2019
.rwzexport with 86 rules. The original parser failed immediately on element0x14C(mark as read). After this change, all 86 rules parse successfully.Test plan
.rwzfile with 86 rules containing diverse conditions, actions, and exceptions.rwzfixtures in the future