{"_id":"@0x0645/tafqit","name":"@0x0645/tafqit","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@0x0645/tafqit","version":"1.0.0","description":"TypeScript Arabic tafqit/tafqeet package with grammatical rules, currencies, and counted nouns.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/0x0645/tafqit.git"},"homepage":"https://github.com/0x0645/tafqit#readme","bugs":{"url":"https://github.com/0x0645/tafqit/issues"},"publishConfig":{"access":"public"},"type":"module","sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"keywords":["arabic","tafqit","tafqeet","number-to-words","typescript"],"devDependencies":{"@eslint/js":"^9.22.0","tsup":"^8.5.0","eslint":"^9.22.0","globals":"^15.15.0","typescript":"^5.9.2","typescript-eslint":"^8.26.1","vitest":"^3.2.4"},"scripts":{"build":"tsup","check":"tsc --noEmit","lint":"eslint .","lint:fix":"eslint . --fix","test":"vitest run"},"_id":"@0x0645/tafqit@1.0.0","_integrity":"sha512-NwMZQkwgE448TS5iYFwqxC/gqO8CQXookyyPy2X0/oEib9vxl4ZBdijB1zKI9XlXKhGaZ6eyuY4hUGyyZaXPdw==","_resolved":"/private/var/folders/y4/yb35pn2d6lj6zbbzt9yjmxrm0000gn/T/19f8676acc09b77827f1d709e858b47c/0x0645-tafqit-1.0.0.tgz","_from":"file:0x0645-tafqit-1.0.0.tgz","_nodeVersion":"20.17.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-NwMZQkwgE448TS5iYFwqxC/gqO8CQXookyyPy2X0/oEib9vxl4ZBdijB1zKI9XlXKhGaZ6eyuY4hUGyyZaXPdw==","shasum":"b6ff3b185131ac544fd6f3c686133b885244a016","tarball":"https://registry.npmjs.org/@0x0645/tafqit/-/tafqit-1.0.0.tgz","fileCount":9,"unpackedSize":379803,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC/2ILk0VDMICa7BdGp3jELJ5fB3H85u2I29iQk5Bl+HAIhAMq4mGHo8D5E7vamu5Gu9XGUw8a0TL6e8mkp0gN319wW"}]},"_npmUser":{"name":"0x0645","email":"mustafa@mustafagomaa.com"},"directories":{},"maintainers":[{"name":"0x0645","email":"mustafa@mustafagomaa.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tafqit_1.0.0_1773363923948_0.060982363245126514"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-13T01:05:23.877Z","1.0.0":"2026-03-13T01:05:24.125Z","modified":"2026-03-13T01:05:24.594Z"},"maintainers":[{"name":"0x0645","email":"mustafa@mustafagomaa.com"}],"description":"TypeScript Arabic tafqit/tafqeet package with grammatical rules, currencies, and counted nouns.","homepage":"https://github.com/0x0645/tafqit#readme","keywords":["arabic","tafqit","tafqeet","number-to-words","typescript"],"repository":{"type":"git","url":"git+https://github.com/0x0645/tafqit.git"},"bugs":{"url":"https://github.com/0x0645/tafqit/issues"},"license":"MIT","readme":"\n\nArabic number-to-words for TypeScript with grammar-aware counted nouns, currencies, and quantity conversion.\n\n\n\n# Tafqit\n\n`@0x0645/tafqit` converts numbers into Arabic words with support for grammatical gender, i'rab-sensitive forms, counted nouns, legal phrasing, currencies, and decimal quantities that can decompose into smaller units such as `ريال/هللة`, `متر مربع/سنتيمتر مربع`, or `ساعة/دقيقة`.\n\n## Features\n\n- Integer `tafqit()` for plain Arabic number spelling.\n- `tafqitWithSubject()` for counted nouns like `طالب`, `صندوق`, or `مستخدم`.\n- `tafqitDecimal()` and `tafqitQuantity()` for currencies and measurable units.\n- Typed `subjects` registry with English camelCase keys and Arabic labels.\n- Built-in support for Arabic currencies, world currencies, digital currencies, measures, areas, time, trade units, and people/technology nouns.\n- Quantity conversion metadata for units such as `ساعة -> دقيقة`, `متر مربع -> سنتيمتر مربع`, and `كيلومتر في الساعة -> متر في الساعة`.\n- Customizable decimal separator text, legal wrapping, scale naming, and formatting switches.\n\n## Install\n\n```bash\npnpm add @0x0645/tafqit\n```\n\n## Quick Start\n\n```ts\nimport { tafqit } from \"@0x0645/tafqit\";\n\ntafqit(2000);\n// ألفان\n\ntafqit(12, { gender: \"feminine\" });\n// اثنتا عشرة\n\ntafqit(122, { grammaticalCase: \"accusative\" });\n// مائة واثنين وعشرين\n\ntafqit(2000, { textToFollow: true });\n// ألفا\n```\n\n## Counted Nouns\n\n```ts\nimport { subjects, tafqitWithSubject } from \"@0x0645/tafqit\";\n\ntafqitWithSubject(1, subjects.student);\n// طالب واحد\n\ntafqitWithSubject(3, subjects.student);\n// ثلاثة طلاب\n\ntafqitWithSubject(21, subjects.student);\n// واحد وعشرون طالبًا\n```\n\n## Decimals, Currencies, and Quantities\n\n```ts\nimport { subjects, tafqitDecimal, tafqitQuantity } from \"@0x0645/tafqit\";\n\ntafqitDecimal(\"12.50\", {\n  subject: subjects.saudiRiyal,\n  subunit: subjects.halala,\n  fractionDigits: 2\n});\n// اثنا عشر ريالًا سعوديًا وخمسون هللةً\n\ntafqitQuantity(\"140.55\", {\n  subject: subjects.squareMeter,\n  legal: true\n});\n// فقط مائة وأربعون مترًا مربعًا وخمسة آلاف وخمسمائة سنتيمتر مربع لا غير\n\ntafqitQuantity(\"1.5\", { subject: subjects.hour });\n// ساعة واحدة وثلاثون دقيقةً\n```\n\n## Typed Registry and Reusable Formatters\n\n```ts\nimport { createFormatter, subjects, tafqitQuantity } from \"@0x0645/tafqit\";\n\nconst sar = createFormatter({\n  subject: subjects.saudiRiyal,\n  subunit: subjects.halala,\n  fractionDigits: 2\n});\n\nsar.decimal(\"12.50\");\nsar.integer(1250);\n\ntafqitQuantity(\"10.5\", { subject: subjects.kilometerPerHour });\n// عشرة كيلومترات في الساعة وخمسمائة متر في الساعة\n```\n\n## Built-in Subject Access\n\n```ts\nimport { getSubject, getSubjectOrThrow, listSubjects, subjects } from \"@0x0645/tafqit\";\n\nsubjects.saudiRiyal;\ngetSubject(\"ريال سعودي\");\ngetSubject(\"saudiRiyal\");\ngetSubjectOrThrow(\"student\");\nlistSubjects();\n```\n\n## Package API\n\n- `tafqit(number, options?)`\n- `tafqitWithSubject(number, subject, options?)`\n- `tafqitDecimal(value, options?)`\n- `tafqitQuantity(value, options?)`\n- `createFormatter(defaults)`\n- `subjects`, `getSubject()`, `getSubjectOrThrow()`, `safeGetSubject()`, `listSubjects()`\n\n## Development\n\n```bash\npnpm install\npnpm lint\npnpm check\npnpm test\npnpm build\npnpm --filter tafqit-example dev\n```\n\n## Example App\n\nThe Next.js example playground lives in `example/` and links back to the project repository:\n\n- Repository: `https://github.com/0x0645/tafqit`\n- Local run: `pnpm --filter tafqit-example dev`\n\n## License\n\nMIT - see `LICENSE`.\n\n## Repository\n\n- GitHub: `https://github.com/0x0645/tafqit`\n- Issues: `https://github.com/0x0645/tafqit/issues`\n\n","readmeFilename":"README.md","_rev":"1-b558b8d0f53938b0f9c8d9edd4f8348b"}