{"_id":"@bullet./emoji","_rev":"2-7b84a3f3333aecaa1661fe238d12f2b5","name":"@bullet./emoji","dist-tags":{"next":"0.0.1","latest":"0.1.0"},"versions":{"0.0.1":{"name":"@bullet./emoji","version":"0.0.1","author":{"url":"https://tomasrav.me/","name":"Tomas Ravinskas","email":"tomas@tomasrav.me"},"license":"Apache-2.0","_id":"@bullet./emoji@0.0.1","maintainers":[{"name":"ozymandiasthegreat","email":"tomas@tomasrav.me"}],"homepage":"https://github.com/getbullet-app/emoji","bugs":{"url":"https://github.com/getbullet-app/emoji/issues"},"dist":{"shasum":"c81cfb2b38f2d7a23c5ffdc1453cce45211bd430","tarball":"https://registry.npmjs.org/@bullet./emoji/-/emoji-0.0.1.tgz","fileCount":16,"integrity":"sha512-Mf8+OG3FV67p4qrYJ/D2BocxdwROJqHeEK0M3qRNko6RffiOkpFBEyYohHo+Q7Zi86smCdYrtQWvngmi6gT1kA==","signatures":[{"sig":"MEUCIQCh32jE8Sgj4NIwokMcbCOQi5pdeJeepOCXAapQ49cYGgIgavj/lt6azw//76t7DJkMgDX/C+LtcpoeKGD/9S/6MXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4534302},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./font":{"types":"./dist/font.d.ts","default":"./dist/font.js"},"./metro":{"types":"./dist/metro.d.ts","default":"./dist/metro.js"},"./fixtures":{"types":"./test/fixtures/index.d.ts","default":"./test/fixtures/index.js"},"./package.json":"./package.json"},"gitHead":"5641a6a5496e5e9269b40459b958e6055fd5bd20","scripts":{"test":"brittle-node ./test/index.js && brittle-bare ./test/index.js","build":"npm run copy:files && npm run generate:index && npm run generate:regex","example":"npm run --workspace=bulletmoji-example","copy:files":"node ./scripts/copy-files.js","generate:font":"./scripts/generate-font.sh","generate:index":"node ./scripts/generate-index.js","generate:regex":"node ./scripts/generate-regex.js","generate:fixtures":"node ./scripts/generate-fixtures.js"},"_npmUser":{"name":"ozymandiasthegreat","email":"tomas@tomasrav.me"},"repository":{"url":"git+ssh://git@github.com/getbullet-app/emoji.git","type":"git"},"workspaces":["./example"],"_npmVersion":"12.0.1","description":"BulletMoji font (fork of OpenMoji) and utilities to build and work with it","directories":{},"_nodeVersion":"24.18.0","dependencies":{"b4a":"^1.8.1","convert-endianness":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"brittle":"^4.1.1","emojibase-data":"^17.0.0","@unicode/unicode-17.0.0":"^2.0.5"},"_npmOperationalInternal":{"tmp":"tmp/emoji_0.0.1_1789129802627_0.6829766296320317","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"_id":"@bullet./emoji@0.1.0","bugs":{"url":"https://github.com/getbullet-app/emoji/issues"},"dist":{"shasum":"d2745a8b6b7e7f761db47854a4178bf15ec1f16e","tarball":"https://registry.npmjs.org/@bullet./emoji/-/emoji-0.1.0.tgz","fileCount":16,"integrity":"sha512-dkK8x4e8rniWRk4c/gnebMhuV6s48h99V5UNDYKtqOgICk3v5ictnjotz7He7Sle25LjeqdKE3OBi7er9yPCag==","signatures":[{"sig":"MEUCIQCUaNOFmsQwSpGPwhKyrTqqRTjLrDtdLTuCFqLyKrwAFQIgUCuaeu88rN2t5BdrWjg/u9F5Zi3S+74lgZb4fT1TI4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHXfaLwi1uOU5+b6HT87Z4RFdjFQ45vwa1BHG5Ufe4XuAiEAlal0UNve8zi3Wi+syOHq7M/IK4uRxKeG+CkAzZutvtI="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bullet.%2femoji@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4533774},"name":"@bullet./emoji","author":{"url":"https://tomasrav.me/","name":"Tomas Ravinskas","email":"tomas@tomasrav.me"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./font":{"types":"./dist/font.d.ts","default":"./dist/font.js"},"./metro":{"types":"./dist/metro.d.ts","default":"./dist/metro.js"},"./fixtures":{"types":"./test/fixtures/index.d.ts","default":"./test/fixtures/index.js"},"./package.json":"./package.json"},"gitHead":"2238a9da61bf8cf725e2c33e14e4c0ada7de8e2e","license":"Apache-2.0","scripts":{"test":"brittle-node ./test/index.js && brittle-bare ./test/index.js","build":"npm run copy:files && npm run generate:index && npm run generate:regex","example":"npm run --workspace=bulletmoji-example","copy:files":"node ./scripts/copy-files.js","generate:font":"./scripts/generate-font.sh","generate:index":"node ./scripts/generate-index.js","generate:regex":"node ./scripts/generate-regex.js","generate:fixtures":"node ./scripts/generate-fixtures.js"},"version":"0.1.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dbf7e596-2e60-4666-b20e-a05762a7f8dc"}},"homepage":"https://github.com/getbullet-app/emoji","repository":{"url":"git+ssh://git@github.com/getbullet-app/emoji.git","type":"git"},"workspaces":["./example"],"_npmVersion":"11.19.0","description":"BulletMoji font (fork of OpenMoji) and utilities to build and work with it","directories":{},"maintainers":[{"name":"ozymandiasthegreat","email":"tomas@tomasrav.me"}],"_nodeVersion":"24.20.0","dependencies":{"b4a":"^1.8.1","convert-endianness":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"brittle":"^4.1.1","emojibase-data":"^17.0.0","@unicode/unicode-17.0.0":"^2.0.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/emoji_0.1.0_1789134218542_0.3158364486245222"}}},"time":{"created":"2026-09-11T12:30:02.397Z","modified":"2026-09-11T13:43:39.273Z","0.0.1":"2026-09-11T12:30:02.882Z","0.1.0":"2026-09-11T13:43:38.723Z"},"bugs":{"url":"https://github.com/getbullet-app/emoji/issues"},"author":{"url":"https://tomasrav.me/","name":"Tomas Ravinskas","email":"tomas@tomasrav.me"},"license":"Apache-2.0","homepage":"https://github.com/getbullet-app/emoji","repository":{"url":"git+ssh://git@github.com/getbullet-app/emoji.git","type":"git"},"description":"BulletMoji font (fork of OpenMoji) and utilities to build and work with it","maintainers":[{"name":"ozymandiasthegreat","email":"tomas@tomasrav.me"}],"readme":"# @bullet./emoji\n\nThis repository contains script to build BulletMoji font (fork of [OpenMoji](https://github.com/hfg-gmuend/openmoji)) and package it for use in React Native apps (Android, iOS, web).\n\nGeneral utilities for working with emoji are also included.\n\n> BulletMoji font and other emoji utilities have been customized to include/accept bullet.-branded non-standard symbols\n\n## Building the font\n\nTo build the font, first install dependencies. For macOS run\n\n```sh\nbrew install python3 woff2 xmlstarlet\n```\n\nFor Ubuntu\n\n```sh\nsudo apt install woff2 xmlstarlet\n```\n\nThen to generate artifacts\n\n```sh\nnpm run generate:font\n```\n\nThe script will download OpenMoji SVGs and metadata, exclude all the `extra-*` SVGs, and place the generated font files in `./font`.\n\nCurrently COLRv1 TTF for android and COLRv1 + OT-SVG WOFF2 for everything else are being built.\n\n## Using with React Native\n\nReact Native does not recognize WOFF2 fonts as assets by default. You can customize this in `metro.config.js`, a convenience plugin is also included:\n\n```javascript\nconst { getDefaultConfig } = require(\"expo/metro-config\")\nconst { withWOFF2 } = require(\"@bullet./emoji/metro\")\n\nconst config = getDefaultConfig(__dirname)\n\nmodule.exports = withWOFF2(config)\n```\n\nThen, in your app:\n\n```javascript\nimport { useFonts } from \"expo-font\"\nimport { BulletMoji_400Regular } from \"@bullet./emoji/font\"\n\n// ...\nconst [loaded, error] = useFonts({ BulletMoji_400Regular })\n// ...\n```\n\n## Utilities\n\nAll utilities are named exports from root package, e.g.:\n\n```javascript\nimport { emojify } from \"@bullet./emoji\"\n```\n\n### `const regexp = regex()`\n\nRegular expression to match all emoji, including bullet. branded ones, forked from [emoji-regex-xs](https://github.com/slevithan/emoji-regex-xs).\n\n### `const withEmojis = emojify(withShortCodes)`\n\nReplace all short codes fenced with colons in string with corresponding emoji, e.g. `:+:` becomes 👍.\n\n### `const withShortCodes = codify(withEmojis)`\n\nReplace all emojis in string with corresponding short codes fenced with colons, e.g. ❤️ becomes `:heart:`.\n\n### `const emoji = toEmoji(shortCode)`\n\nConvert bare short code to emoji, e.g. `flag_lt` -> 🇱🇹.\n\n### `const shortCode = toShortCode(emoji)`\n\nConvert emoji to bare short code, e.g. 🤘🏻 -> `metal_tone1`.\n\n#### Note\n\n`toEmoji()` and `toShortCode()` have been forked from [emoji-index](https://github.com/holepunchto/emoji-index) and extended to support all skin tones in addition to bullet. branded emojis.\n\n## License\n\nAll code licensed under Apache-2.0\n\nOriginal emoji assets designed by [OpenMoji](https://openmoji.org/) – the open-source emoji and icon project, and released under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)\n","readmeFilename":"README.md"}