Skip to content

Commit

Permalink
Merge pull request #41 from allouis/fix-types
Browse files Browse the repository at this point in the history
Updated types to support calling `ObjectID()` without the `new` keyword
  • Loading branch information
niftylettuce authored Jan 17, 2022
2 parents af90864 + cad382e commit 6780f29
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 28 deletions.
64 changes: 36 additions & 28 deletions objectid.d.ts
Original file line number Diff line number Diff line change
@@ -1,29 +1,37 @@
// Type definitions for bson-objectid 1.3.1
// Project: bson-objectid
// Definitions by: Marcel Ernst <https://www.marcel-ernst.de>
import { Buffer } from 'buffer';
export default ObjectID;

declare class ObjectID {
static createFromTime(time: number): ObjectID;
static createFromHexString(hexString: string): ObjectID;
static isValid(hexString: string):boolean;
static isValid(ObjectID: ObjectID):boolean;
static generate(): string;
static generate(time: number): string;
static toString():string;

constructor();
constructor(time: number);
constructor(hexString: string);
constructor(idString: string);
constructor(array: number[]);
constructor(buffer: Buffer);

readonly id: string;
readonly str: string;

toHexString(): string;
equals(other: ObjectID): boolean;
getTimestamp(): number;
import {Buffer} from 'buffer';

export default ObjectID

declare const ObjectID: ObjectIDCtor;

declare interface ObjectID {
readonly id: string;
readonly str: string;

toHexString(): string;
equals(other: ObjectID): boolean;
getTimestamp(): number;
}

declare interface ObjectIDCtor {
(): ObjectID
(time: number): ObjectID
(hexString: string): ObjectID
(idString: string): ObjectID
(array: number[]): ObjectID
(buffer: Buffer): ObjectID

new(): ObjectID
new(time: number): ObjectID
new(hexString: string): ObjectID
new(idString: string): ObjectID
new(array: number[]): ObjectID
new(buffer: Buffer): ObjectID


createFromTime(time: number): ObjectID;
createFromHexString(hexString: string): ObjectID;
isValid(hexString: string): boolean;
isValid(ObjectID: ObjectID): boolean;
toString(): string;
}
32 changes: 32 additions & 0 deletions typing-tests/objectid-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,38 @@ oid = ObjectID.createFromTime(time);
// should construct with `ObjectID.createFromHexString(hexString)`
oid = ObjectID.createFromHexString(hexString);

// ----------------------------------------------------------------------------
// should construct with no arguments
oid = ObjectID();

// ----------------------------------------------------------------------------
// should have an `id` property
oid.id;

// ----------------------------------------------------------------------------
// should have a `str` property
oid.str;

// ----------------------------------------------------------------------------
// should construct with a `time` argument
oid = ObjectID(time);

// ----------------------------------------------------------------------------
// should construct with an `array` argument
oid = ObjectID(array);

// ----------------------------------------------------------------------------
// should construct with a `buffer` argument
oid = ObjectID(buffer);

// ----------------------------------------------------------------------------
// should construct with a `hexString` argument
oid = ObjectID(hexString);

// ----------------------------------------------------------------------------
// should construct with a `idString` argument
oid = ObjectID(idString);

// ----------------------------------------------------------------------------
// should correctly retrieve timestamp
const timestamp:number = oid.getTimestamp();
Expand Down

0 comments on commit 6780f29

Please sign in to comment.