Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/agilord/flake_uuid
Flake UUID is a Dart library that provides 64- and 128-bit, k-ordered identifiers, which preserve their order of creation (somewhat) if sorted lexically.
https://github.com/agilord/flake_uuid
Last synced: 2 months ago
JSON representation
Flake UUID is a Dart library that provides 64- and 128-bit, k-ordered identifiers, which preserve their order of creation (somewhat) if sorted lexically.
- Host: GitHub
- URL: https://github.com/agilord/flake_uuid
- Owner: agilord
- License: bsd-3-clause
- Created: 2016-11-05T22:23:25.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2021-07-18T18:33:06.000Z (over 3 years ago)
- Last Synced: 2024-03-25T21:33:18.980Z (10 months ago)
- Language: Dart
- Size: 11.7 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Flake UUID
Flake UUID is a Dart library that provides 64- and 128-bit, k-ordered
identifiers, which preserve their order of creation (somewhat) if sorted
lexically.It generates conflict-free and unique identifiers without further
coordination between the nodes on your cluster (assuming time goes
forward and machine IDs are unique).## 64-bit Flake ID
The 64-bit Flake ID is created with:
- 42-bit timestamp (millis since epoch, good til the end of this century)
- 10-bit machine ID
- 11-bit sequence (incremented within the same millisecond)A simple usage example, works only with Dart VM, because it uses the
environment to generate a somewhat-random machine ID:import 'package:flake_uuid/flake_uuid.dart';
main() {
var x = flake64.nextInt();
var y = flake64.nextHex(); // '2b06cca4f5542000'
}A more detailed version if you use the class directly. You must supply
a pre-coordinated machine ID:import 'package:flake_uuid/flake_base.dart';
main() {
var flake = new Flake64(machineId: 123);
var x = flake.nextInt();
var y = flake.nextHex();
}## 128-bit Flake ID
The 128-bit Flake ID is created with:
- 64-bit timestamps (macroseconds(!) since epoch, won't run out in your lifetime)
- 48-bit machine ID
- 16-bit sequence (incremented within the same macrosecond)A simple usage example, works only with Dart VM, because it uses the
environment to generate a somewhat-random machine ID:import 'package:flake_uuid/flake_uuid.dart';
main() {
var y = flake128.nextHex(); // '2b06cca4f5542000'
}A more detailed version if you use the class directly. You must supply
a pre-coordinated machine ID:import 'package:flake_uuid/flake_base.dart';
main() {
var flake = new Flake128(machineId: 123);
var x = flake.nextInt(); // not recommended
var y = flake.nextHex(); // '000540947b2305c4a25c0001c73a0000'
var z = flake.nextUuid(); // '00054094-7b23-05c4-a25c-0001c73a0001'
}## Links
- [source code][source]
- contributors: [Agilord][agilord][source]: https://github.com/agilord/flake_uuid
[agilord]: https://www.agilord.com/