{"id":13623554,"url":"https://github.com/simplyhexagonal/short-unique-id","last_synced_at":"2025-04-05T12:07:08.851Z","repository":{"id":47486949,"uuid":"91221690","full_name":"simplyhexagonal/short-unique-id","owner":"simplyhexagonal","description":"Short Unique ID (UUID) generation library. Available in NPM.","archived":false,"fork":false,"pushed_at":"2024-04-30T20:16:03.000Z","size":1994,"stargazers_count":391,"open_issues_count":0,"forks_count":22,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-30T03:36:52.419Z","etag":null,"topics":["hacktoberfest","javascript","shortid","typescript","unique-id","uuid"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/short-unique-id","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simplyhexagonal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-14T05:14:32.000Z","updated_at":"2024-10-23T11:05:38.000Z","dependencies_parsed_at":"2022-08-12T13:40:39.709Z","dependency_job_id":"17f848ca-46d6-42a9-a5c9-4d04bf8a5464","html_url":"https://github.com/simplyhexagonal/short-unique-id","commit_stats":{"total_commits":146,"total_committers":7,"mean_commits":"20.857142857142858","dds":0.06849315068493156,"last_synced_commit":"ed9b7a519e80c413eebef607efe5cbe5ab4f9175"},"previous_names":["jeanlescure/short-unique-id"],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplyhexagonal%2Fshort-unique-id","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplyhexagonal%2Fshort-unique-id/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplyhexagonal%2Fshort-unique-id/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplyhexagonal%2Fshort-unique-id/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simplyhexagonal","download_url":"https://codeload.github.com/simplyhexagonal/short-unique-id/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246688485,"owners_count":20817945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","javascript","shortid","typescript","unique-id","uuid"],"created_at":"2024-08-01T21:01:33.092Z","updated_at":"2025-04-05T12:07:08.829Z","avatar_url":"https://github.com/simplyhexagonal.png","language":"TypeScript","readme":"# Short Unique ID (UUID) Generating Library\n![Tests](https://github.com/jeanlescure/short-unique-id/workflows/tests/badge.svg?r=OCFIyq)\n[![Try short-unique-id on RunKit](https://badge.runkitcdn.com/short-unique-id.svg)](https://npm.runkit.com/short-unique-id)\n[![NPM Downloads](https://img.shields.io/npm/dt/short-unique-id.svg?maxAge=2592000)](https://npmjs.com/package/short-unique-id)\n[![JsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/short-unique-id/badge?style=rounded)](https://www.jsdelivr.com/package/npm/short-unique-id)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![15 Contributors](https://img.shields.io/badge/all_contributors-15-purple.svg)](#contributors)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\n---\n\nTiny (6.7kB minified) no-dependency library for generating random or sequential UUID of any length\nwith exceptionally minuscule probabilies of duplicate IDs.\n\n```ts\nconst uid = new ShortUniqueId({ length: 10 });\nuid.rnd(); // p0ZoB1FwH6\nuid.rnd(); // mSjGCTfn8w\nuid.rnd(); // yt4Xx5nHMB\n// ...\n\n// or\n\nconst { randomUUID } = new ShortUniqueId({ length: 10 });\nrandomUUID(); // e8Civ0HoDy\nrandomUUID(); // iPjiGoHXAK\nrandomUUID(); // n528gSMwTN\n// ...\n```\n\nFor example, using the default dictionary of numbers and letters (lower and upper case):\n\n```ts\n  0,1,2,3,4,5,6,7,8,9,\n  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,\n  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z\n```\n\n- if you generate a unique ID of 16 characters (half of the standard UUID of 32 characters)\n- generating 100 unique IDs **per second**\n\n#### It would take **~10 thousand years** to have a 1% probability of at least one collision!\n\nTo put this into perspective:\n\n- 73 years is the (global) average life expectancy of a human being\n- 120 years ago no human ever had set foot on either of the Earth's poles\n- 480 years ago Nicolaus Copernicus was still working on his theory of the Earth revolving around the Sun\n- 1000 years ago there was no such thing as government-issued paper money (and wouldn't be for about a century)\n- 5000 years ago the global population of humans was under 50 million (right now Mexico has a population of 127 million)\n\nYou can calculate duplicate/collision probabilities using the included functions:\n\n- [availableUUIDs()](https://shortunique.id/classes/ShortUniqueId.html#availableUUIDs)\n- [approxMaxBeforeCollision()](https://shortunique.id/classes/ShortUniqueId.html#approxMaxBeforeCollision)\n- [collisionProbability()](https://shortunique.id/classes/ShortUniqueId.html#collisionProbability)\n\n_NOTE: 👆 On these links you will also find explanations for the math used within the functions._\n\n---\n\n## Open source notice\n\nThis project is part of the [Open Collective](https://opencollective.com/simplyhexagonal) project [Simply Hexagonal](https://simplyhexagonal.org)\nand is open to updates by its users, we ensure that PRs are relevant to the community.\nIn other words, if you find a bug or want a new feature, please help us by becoming one of the\n[contributors](#contributors-) ✌️ ! See the [contributing section](#contributing).\n\n## Like this module? ❤\n\nPlease consider:\n\n- [Buying me a coffee](https://www.buymeacoffee.com/jeanlescure) ☕\n- Supporting me on [Patreon](https://www.patreon.com/jeanlescure) 🏆\n- Starring this repo on [Github](https://github.com/jeanlescure/short-unique-id) 🌟\n\n## 📣 v5 Notice\n\nIn order to improve security compliance we have removed the ability to use a ShortUniqueId as a\nfunction, i.e. `const uid = new ShortUniqueId(); uid();` is no longer supported.\n\nIf you plan to upgrade to v5 make sure to refactor `uid();` to `uid.rnd();` in your code beforehand.\n\nFor more information regarding this decision you can view [issue #53](https://github.com/simplyhexagonal/short-unique-id/issues/53).\n\n### Features\n\n#### Ability to generate UUIDs that contain a timestamp which can be extracted:\n\n```js\n// js/ts\n\nconst uid = new ShortUniqueId();\n\nconst uidWithTimestamp = uid.stamp(32);\nconsole.log(uidWithTimestamp);\n// GDa608f973aRCHLXQYPTbKDbjDeVsSb3\n\nconst recoveredTimestamp = uid.parseStamp(uidWithTimestamp);\nconsole.log(recoveredTimestamp);\n// 2021-05-03T06:24:58.000Z\n```\n\n```bash\n# cli\n\n$ suid -s -l 42\n\n  lW611f30a2ky4276g3l8N7nBHI5AQ5rCiwYzU47HP2\n\n$ suid -p lW611f30a2ky4276g3l8N7nBHI5AQ5rCiwYzU47HP2\n\n  2021-08-20T04:33:38.000Z\n```\n\n#### Default dictionaries (generated on the spot to reduce memory footprint and avoid dictionary injection vulnerabilities):\n\n- number\n- alpha\n- alpha_lower\n- alpha_upper\n- **alphanum** _(default when no dictionary is provided to `new ShortUniqueId()`)_\n- alphanum_lower\n- alphanum_upper\n- hex\n\n```js\n// instantiate using one of the default dictionary strings\nconst uid = new ShortUniqueId({\n  dictionary: 'hex',\n});\n\nconsole.log(uid.dict.join());\n// 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f\n\n// or change the dictionary after instantiation\nuid.setDictionary('alpha_upper');\n\nconsole.log(uid.dict.join());\n// A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z\n```\n\n#### Ability to use custom formatting\n\nWhere `$r` is random UUID, `$s` is sequential UUID, and `$t` is timestamp UUID:\n\n```js\nconst timestamp = new Date('4-01-29T03:21:21.000Z');\nconst result = uid.formattedUUID('Time: $t0 ID: $s2-$r4', timestamp); // timestamp is optional\n\nconsole.log(result);\n// Time: 63d5e631 ID: 0b-aaab\n```\n\n#### Ability to validate UUIDs against the instance dictionary or a provided dictionary\n\nExample of using .validate() method:\n\n```js\n// Instantiate using one of the default dictionary strings\nconst uid = new ShortUniqueId({\n  dictionary: 'hex',\n});\n\nconst uuid = uid.stamp(32); // Generate a UUID\n\n// Validate the generated UUID against the instance dictionary\nconst isValid = uid.validate(uuid);\n\nconsole.log(`Is the UUID valid? ${isValid}`);\n\n// ---\n\n// Validate the generated UUID against the provided dictionary\nconst customDictionary = ['a', 'b', /* ... */];\nconst isValid = uid.validate(uuid, customDictionary);\n\nconsole.log(`Is the UUID valid? ${isValid}`);\n```\n\n### Use in CLI\n\n```sh\n$ npm install --global short-unique-id\n\n$ suid -h\n\n# Usage:\n#   node short-unique-id [OPTION]\n# \n# Options:\n#   -l, --length=ARG         character length of the uid to generate.\n#   -s, --stamp              include timestamp in uid (must be used with --length (-l) of 10 or more).\n#   -t, --timestamp=ARG      custom timestamp to parse (must be used along with -s, --stamp, -f, or --format).\n#   -f, --format=ARG         string representing custom format to generate id with.\n#   -p, --parse=ARG          extract timestamp from stamped uid (ARG).\n#   -d, --dictionaryJson=ARG json file with dictionary array.\n#   -h, --help               display this help\n```\n\n### Use as module\n\nAdd to your project:\n\n```js\n// ES6 / TypeScript Import\nimport ShortUniqueId from 'short-unique-id';\n\n// Node.js require\nconst ShortUniqueId = require('short-unique-id');\n\n// Deno (web module) Import\nimport ShortUniqueId from 'https://esm.sh/short-unique-id';\n```\n\nInstantiate and use:\n\n```js\n//Instantiate\nconst uid = new ShortUniqueId();\n\n// Random UUID\nconsole.log(uid.rnd());\n\n// Sequential UUID\nconsole.log(uid.seq());\n```\n\nalternatively using destructuring assignment:\n\n```js\n// Instantiate and destructure (long method name recommended for code readability)\nconst { randomUUID, sequentialUUID } = new ShortUniqueId();\n\n// Random UUID\nconsole.log(randomUUID());\n\n// Sequential UUID\nconsole.log(sequentialUUID());\n```\n\n_NOTE:_ we made sure to use `bind()` on all ShortUniqueId methods to ensure that any options\npassed when creating the instance will be respected by the destructured methods.\n\n### Use in browser\n\n```html\n\u003c!-- Add source (minified 4.6kB) --\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/short-unique-id@latest/dist/short-unique-id.min.js\"\u003e\u003c/script\u003e\n\n\u003c!-- Usage --\u003e\n\u003cscript\u003e\n  // Instantiate\n  var uid = new ShortUniqueId();\n\n  // Random UUID\n  document.write(uid.rnd());\n\n  // Sequential UUID\n  document.write(uid.seq());\n\u003c/script\u003e\n```\n\n### Options\n\nOptions can be passed when instantiating `uid`:\n\n```js\nconst options = { ... };\n\nconst uid = new ShortUniqueId(options);\n```\n\nFor more information take a look at the [docs](https://shortunique.id/interfaces/shortuniqueidoptions.html).\n\n## Available for\n\n- [Node.js (npm)](https://www.npmjs.com/package/short-unique-id)\n- [Deno](https://esm.sh/short-unique-id)\n- [Browsers](https://www.jsdelivr.com/package/npm/short-unique-id?path=dist)\n\n## Documentation with Online Short UUID Generator\n\nYou can find the docs and online generator at:\n\n\u003ca target=\"_blank\" href=\"https://shortunique.id\"\u003ehttps://shortunique.id\u003c/a\u003e\n\n## What is the probability of generating the same id again?\n\nThis largely depends on the given dictionary and the selected UUID length.\n\nOut of the box this library provides a shuffled dictionary of digits from\n0 to 9, as well as the alphabet from a to z both in UPPER and lower case,\nwith a default UUID length of 6. That gives you a total of 56,800,235,584\npossible UUIDs.\n\nSo, given the previous values, the probability of generating a duplicate\nin 1,000,000 rounds is ~0.00000002, or about 1 in 50,000,000.\n\nIf you change the dictionary and/or the UUID length then we have provided\nthe function `collisionProbability()` function to calculate the probability\nof hitting a duplicate in a given number of rounds (a collision) and the\nfunction `uniqueness()` which provides a score (from 0 to 1) to rate the \n\"quality\" of the combination of given dictionary and UUID length (the closer\nto 1, higher the uniqueness and thus better the quality).\n\nTo find out more about the math behind these functions please refer to the\n\u003ca target=\"_blank\" href=\"https://shortunique.id/classes/ShortUniqueId.html#collisionProbability\"\u003eAPI Reference\u003c/a\u003e.\n\n## Acknowledgement and platform support\n\nThis repo and npm package started as a straight up manual transpilation to ES6 of the [short-uid](https://github.com/serendipious/nodejs-short-uid) npm package by [Ankit Kuwadekar](https://github.com/serendipious/).\n\n![image depicting over 200000 weekly npm downloads](https://raw.githubusercontent.com/jeanlescure/short-unique-id/main/assets/weekly-downloads.png)\n![image depicting over 16000000 weekly cdn hits](https://raw.githubusercontent.com/jeanlescure/short-unique-id/main/assets/weekly-cdn-hits.png)\n\nSince this package is now reporting 200k+ npm weekly downloads and 16M+ weekly cdn hits,\nwe've gone ahead and re-written the whole of it in TypeScript and made sure to package\ndist modules compatible with Deno, Node.js and all major Browsers.\n\n## Sponsors\n\n- [Clever Synapse](https://cleversynapse.com)\n\n## Development\n\nClone this repo:\n\n```sh\n# SSH\ngit clone git@github.com:jeanlescure/short-unique-id.git\n\n# HTTPS\ngit clone https://github.com/jeanlescure/short-unique-id.git\n```\n\nTests run using:\n\n```\npnpm test\n```\n\n## Build\n\nIn order to publish the latest changes you must build the distribution files:\n\n```\npnpm build\n```\n\nThen commit all changes and run the release script:\n\n```\npnpm release\n```\n\n## Contributing\n\nYes, thank you! This plugin is community-driven, most of its features are from different authors.\nPlease update the docs and tests and add your name to the `package.json` file.\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/serendipious\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/serendipious.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/commits?author=serendipious\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://jeanlescure.cr\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/jeanlescure.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"#maintenance-jeanlescure\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"https://github.com/jeanlescure/short-unique-id/commits?author=jeanlescure\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jeanlescure/short-unique-id/commits?author=jeanlescure\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/jeanlescure/short-unique-id/commits?author=jeanlescure\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://dianalu.design\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/dilescure.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short_uuid/commits?author=DiLescure\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/EmerLM\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/emerlm.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short_uuid/commits?author=EmerLM\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/angelnath26\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/angelnath26.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short_uuid/commits?author=angelnath26\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jeanlescure/short_uuid/pulls?q=is%3Apr+reviewed-by%3Aangelnath26\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://twitter.com/jeffturcotte\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/jeffturcotte.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/commits?author=jeffturcotte\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/neversun\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/neversun.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/commits?author=neversun\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ekelvin\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/ekelvin.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/issues/19\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/anthony-arnold\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/anthony-arnold.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/issues/35\" title=\"Security\"\u003e🛡️\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ColdtQ\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/coldtq.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/pull/46\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/char0n\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/char0n.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/pull/48\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/mybuddymichael\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/mybuddymichael.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/issues/47\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/irfancnk\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/irfancnk.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/issues/52\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/apottere\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/apottere.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/issues/59\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/bambuchaAdm\"\u003e\u003cimg src=\"https://shortunique.id/assets/contributors/bambuchaAdm.svg\" /\u003e\u003c/a\u003e\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd width=\"150\" align=\"center\"\u003e\u003ca href=\"https://github.com/jeanlescure/short-unique-id/issues/59\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\n## License\n\nCopyright (c) 2018-2024 [Short Unique ID Contributors](https://github.com/jeanlescure/short-unique-id/#contributors-).\u003cbr/\u003e\nLicensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).\n","funding_links":["https://opencollective.com/simplyhexagonal","https://www.buymeacoffee.com/jeanlescure","https://www.patreon.com/jeanlescure"],"categories":["hacktoberfest","typescript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimplyhexagonal%2Fshort-unique-id","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimplyhexagonal%2Fshort-unique-id","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimplyhexagonal%2Fshort-unique-id/lists"}