objectid 4.0.3 copy "objectid: ^4.0.3" to clipboard
objectid: ^4.0.3 copied to clipboard

Blazing fast, cross-platform ObjectId implementation for the dart language.

ObjectId #

Blazing fast, cross-platform ObjectId implementation for the dart language! #

Dart tests codecov pub package License: MIT style: lints/recommended

Why this package?

  • ๐Ÿš€ Fast.
  • ๐Ÿ“ฑ Cross-platform.
  • ๐Ÿงช Well tested.
  • ๐Ÿ“’ Fulfills bson ObjectId specification.
  • ๐Ÿ“ Documented.

Getting started #

  1. Depend on it.
dependencies:
  objectid: 4.0.3
  1. Play with it!
final id = ObjectId(); // That's all ๐Ÿ”ฅ๐Ÿ˜ฎ!
print(id);   // it's working! => 5f52c805df41c9df948e6135

Documentation #

Constructors #

ObjectId()

Creates an ObjectId instance based on current timestamp, process unique and counter.

final id = ObjectId();
print(id.hexString); // => 5f52c805df41c9df948e6135

ObjectId.fromHexString(String hexString)

Creates ObjectId from a 24-character hex string.

// Useful for mapping hex strings from APIs or MongoDB
final id = ObjectId.fromHexString('5f52c805df41c9df948e6135');
print(id == ObjectId.fromHexString(id.hexString)); // => true

ObjectId.fromBytes(List<int> bytes)

Creates ObjectId from a 12-byte array.

// Perfect for storing ObjectId in binary format
final id = ObjectId.fromBytes([95, 82, 205, 121, 180, 195, 28, 88, 32, 47, 183, 78]);
print(id.hexString); // => 5f52cd79b4c31c58202fb74e

// Retrieve bytes with the bytes property
final id2 = ObjectId.fromBytes(id.bytes);
print(id == id2); // => true

ObjectId.fromValues(int millisecondsSinceEpoch, int processUnique, int counter)

Creates an ObjectId from provided integer values.

// Examples of different ObjectId patterns
final zeroed = ObjectId.fromValues(0, 0, 0);                    // 000000000000000000000000
final withTimestamp = ObjectId.fromValues(0x3e7fffffc18, 0, 0); // ffffffff0000000000000000
final withProcessUnique = ObjectId.fromValues(0, 0xffffffffff, 0); // 00000000ffffffffff000000
final withCounter = ObjectId.fromValues(0, 0, 0xffffff);        // 000000000000000000ffffff
final filled = ObjectId.fromValues(0x3e7fffffc18, 0xffffffffff, 0xffffff); // ffffffffffffffffffffffff

ObjectId.fromTimestamp(DateTime timestamp)

Creates ObjectId from provided timestamp with other segments zeroed out.

// Useful for ObjectId comparisons or sorting
final id = ObjectId.fromTimestamp(DateTime.now());
print(id.hexString); // => 5f52d05e0000000000000000

Properties and Methods #

String hexString

Returns a 24-character hex string representation of the ObjectId (cached for performance).

DateTime timestamp

Returns the generation time accurate to the second (cached for performance).

Uint8List bytes

Returns the ObjectId's raw byte representation.

int hashCode

Uses MurmurHash2 algorithm for fast hashing (cached for performance).

operator ==

Compares ObjectIds based on type and byte equality.

static bool isValid(String hexString)

Checks if a string is a valid ObjectId hex string.

print(ObjectId.isValid('5f52c805df41c9df948e6135')); // => true
print(ObjectId.isValid('invalid')); // => false

All implementation details conform to the BSON ObjectId specification.

Benchmark #

Benchmark hardware/software: UNIT: MacBook Pro (M4 Pro, 2024) CPU: Apple M4 Pro RAM: 48 GB OS: macOS 26.3.1 Dart SDK version: 3.11.4

Constructors:
ObjectId() โ†’ (RunTime): 0.28017946395452636 us.
ObjectId.fromHexString() โ†’ (RunTime): 0.1964833532549569 us.
ObjectId.fromBytes() โ†’ (RunTime): 0.11237176106442358 us.
ObjectId.fromValues() โ†’ (RunTime): 0.02774876977800984 us.
ObjectId.fromTimestamp() โ†’ (RunTime): 0.04264624207353758 us.
Properties:
ObjectId.hexString โ†’ (RunTime): 0.03615293445770598 us.
ObjectId.timestamp โ†’ (RunTime): 0.03690251970477984 us.
ObjectId.hashCode โ†’ (RunTime): 0.02660910959699762 us.
Operators:
ObjectId == ObjectId โ†’ (RunTime): 0.08761381094863427 us.

Benchmark is available in the example app.

37
likes
160
points
32.6k
downloads

Documentation

API reference

Publisher

verified publisherklyta.it

Weekly Downloads

Blazing fast, cross-platform ObjectId implementation for the dart language.

Repository (GitHub)
View/report issues

License

MIT (license)

More

Packages that depend on objectid