Skip to content

feat: convert package to pure Dart - #49

Merged
master-wayne7 merged 5 commits into
master-wayne7:developfrom
ricardodalarme:feat/pure-dart
Aug 19, 2026
Merged

feat: convert package to pure Dart#49
master-wayne7 merged 5 commits into
master-wayne7:developfrom
ricardodalarme:feat/pure-dart

Conversation

@ricardodalarme

@ricardodalarme ricardodalarme commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Description

Hey @master-wayne7 👋🏻, thanks for this great package!

I noticed the Flutter dependency was only there to load the .txt word lists, , so I'm proposing this PR to change it to load the words directly from Dart files instead. This lets us drop the async initialization and turn safe_text into a fully pure-Dart project

A nice side effect: the word lists are now tree-shakeable, so you only ship the languages you actually use.

JS bundle
All languages bundled ~1.4 MB
Tree-shaken (English only) ~322 KB

We're planning to use this in a large codebase here at VGV, and a Dart-only, tree-shakeable dependency makes that a lot simpler. I'd appreciate it if you could take a look 🙂

@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 177 files, which is 77 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 237d31b7-687d-492a-979b-4fd50045c56b

📥 Commits

Reviewing files that changed from the base of the PR and between 526840b and cd97ecb.

📒 Files selected for processing (177)
  • .github/workflows/ci.yml
  • .metadata
  • CHANGELOG.md
  • README.md
  • analysis_options.yaml
  • assets/data/af.txt
  • assets/data/am.txt
  • assets/data/ar.txt
  • assets/data/az.txt
  • assets/data/be.txt
  • assets/data/bg.txt
  • assets/data/bn.txt
  • assets/data/ca.txt
  • assets/data/ceb.txt
  • assets/data/cs.txt
  • assets/data/cy.txt
  • assets/data/da.txt
  • assets/data/de.txt
  • assets/data/dz.txt
  • assets/data/el.txt
  • assets/data/en.txt
  • assets/data/eo.txt
  • assets/data/es.txt
  • assets/data/et.txt
  • assets/data/eu.txt
  • assets/data/fa.txt
  • assets/data/fi.txt
  • assets/data/fil.txt
  • assets/data/fr.txt
  • assets/data/gd.txt
  • assets/data/gl.txt
  • assets/data/gu.txt
  • assets/data/hi.txt
  • assets/data/hr.txt
  • assets/data/hu.txt
  • assets/data/hy.txt
  • assets/data/id.txt
  • assets/data/is.txt
  • assets/data/it.txt
  • assets/data/ja.txt
  • assets/data/kab.txt
  • assets/data/kh.txt
  • assets/data/kn.txt
  • assets/data/ko.txt
  • assets/data/la.txt
  • assets/data/lt.txt
  • assets/data/lv.txt
  • assets/data/mi.txt
  • assets/data/mk.txt
  • assets/data/ml.txt
  • assets/data/mn.txt
  • assets/data/mr.txt
  • assets/data/ms.txt
  • assets/data/mt.txt
  • assets/data/my.txt
  • assets/data/nl.txt
  • assets/data/no.txt
  • assets/data/pa.txt
  • assets/data/pih.txt
  • assets/data/piy.txt
  • assets/data/pl.txt
  • assets/data/pt.txt
  • assets/data/ro.txt
  • assets/data/rop.txt
  • assets/data/ru.txt
  • assets/data/sk.txt
  • assets/data/sl.txt
  • assets/data/sm.txt
  • assets/data/sq.txt
  • assets/data/sr.txt
  • assets/data/sv.txt
  • assets/data/sw.txt
  • assets/data/ta.txt
  • assets/data/te.txt
  • assets/data/tet.txt
  • assets/data/th.txt
  • assets/data/tlh.txt
  • assets/data/to.txt
  • assets/data/tr.txt
  • assets/data/uk.txt
  • assets/data/ur.txt
  • assets/data/uz.txt
  • assets/data/vi.txt
  • assets/data/yid.txt
  • assets/data/zh.txt
  • assets/data/zu.txt
  • example/lib/main.dart
  • lib/data/af.dart
  • lib/data/all.dart
  • lib/data/am.dart
  • lib/data/ar.dart
  • lib/data/az.dart
  • lib/data/be.dart
  • lib/data/bg.dart
  • lib/data/bn.dart
  • lib/data/ca.dart
  • lib/data/ceb.dart
  • lib/data/cs.dart
  • lib/data/cy.dart
  • lib/data/da.dart
  • lib/data/de.dart
  • lib/data/dz.dart
  • lib/data/el.dart
  • lib/data/en.dart
  • lib/data/eo.dart
  • lib/data/es.dart
  • lib/data/et.dart
  • lib/data/eu.dart
  • lib/data/fa.dart
  • lib/data/fi.dart
  • lib/data/fil.dart
  • lib/data/fr.dart
  • lib/data/gd.dart
  • lib/data/gl.dart
  • lib/data/gu.dart
  • lib/data/hi.dart
  • lib/data/hr.dart
  • lib/data/hu.dart
  • lib/data/hy.dart
  • lib/data/id.dart
  • lib/data/is.dart
  • lib/data/it.dart
  • lib/data/ja.dart
  • lib/data/kab.dart
  • lib/data/kh.dart
  • lib/data/kn.dart
  • lib/data/ko.dart
  • lib/data/la.dart
  • lib/data/lt.dart
  • lib/data/lv.dart
  • lib/data/mi.dart
  • lib/data/mk.dart
  • lib/data/ml.dart
  • lib/data/mn.dart
  • lib/data/mr.dart
  • lib/data/ms.dart
  • lib/data/mt.dart
  • lib/data/my.dart
  • lib/data/nl.dart
  • lib/data/no.dart
  • lib/data/pa.dart
  • lib/data/pih.dart
  • lib/data/piy.dart
  • lib/data/pl.dart
  • lib/data/pt.dart
  • lib/data/ro.dart
  • lib/data/rop.dart
  • lib/data/ru.dart
  • lib/data/sk.dart
  • lib/data/sl.dart
  • lib/data/sm.dart
  • lib/data/sq.dart
  • lib/data/sr.dart
  • lib/data/sv.dart
  • lib/data/sw.dart
  • lib/data/ta.dart
  • lib/data/te.dart
  • lib/data/tet.dart
  • lib/data/th.dart
  • lib/data/tlh.dart
  • lib/data/to.dart
  • lib/data/tr.dart
  • lib/data/uk.dart
  • lib/data/ur.dart
  • lib/data/uz.dart
  • lib/data/vi.dart
  • lib/data/yid.dart
  • lib/data/zh.dart
  • lib/data/zu.dart
  • lib/src/models/language.dart
  • lib/src/phone_number_checker.dart
  • lib/src/safe_text_filter.dart
  • pubspec.yaml
  • test/aho_corasick_test.dart
  • test/language_data_test.dart
  • test/phone_number_test.dart
  • test/profanity_filter_test.dart

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ricardodalarme
ricardodalarme marked this pull request as ready for review August 19, 2026 00:27

@master-wayne7 master-wayne7 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Hey @ricardodalarme , this is awesome, thank you! 🎉

Really appreciate the work here: dropping the Flutter dependency and making the word lists tree-shakeable is a great improvement, and the test coverage plus the data cleanup along the way shows real care. Everything checks out on CI.

Great to hear VGV is planning to build on this, very cool to hear as a maintainer. Merging this as v3.0.0 since it's a breaking change (sync API). Thanks again for such a solid contribution! 🙌

@master-wayne7
master-wayne7 merged commit 5faa9dc into master-wayne7:develop Aug 19, 2026
3 of 4 checks passed
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.

2 participants