New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

autoincr

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

autoincr - npm Package Compare versions

Comparing version 0.0.2 to 0.0.3

LICENSE-APACHE

30

dist/lib.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class Counter {
class Sequence {
constructor(factory) {

@@ -32,18 +32,5 @@ Object.defineProperty(this, "factory", {

}
/**
* Returns a sequence of auto-incrementing bigints.
*/
function bigint() {
return new Counter(function* () {
for (let state = 1n;; state++)
yield state;
});
}
exports.bigint = bigint;
/**
* Returns a sequence of auto-incrementing numbers.
*/
function number() {
function autoincr() {
const ceiling = Number.MAX_SAFE_INTEGER;
return new Counter(function* () {
return new Sequence(function* () {
for (let state = 1; state < ceiling; state++)

@@ -55,2 +42,11 @@ yield state;

}
exports.number = number;
function bigint() {
return new Sequence(function* () {
for (let state = 1n;; state++)
yield state;
});
}
Object.defineProperty(autoincr, "bigint", {
value: bigint,
});
exports.default = autoincr;
{
"name": "autoincr",
"version": "0.0.2",
"version": "0.0.3",
"author": "Zachary Golba <zachary.golba@postlight.com>",
"license": "(Apache 2.0 OR MIT)",
"repository": {
"type": "git",
"url": "https://github.com/zacharygolba/autoincr.git"
},
"main": "dist/lib.js",

@@ -7,0 +11,0 @@ "module": "dist/lib.mjs",

@@ -10,21 +10,22 @@ # autoincr

```typescript
import * as autoincr from "autoincr";
import assert from "assert";
import * as assert from "assert";
import autoincr from "autoincr";
const bigints = autoincr.bigint();
const numbers = autoincr.number();
const id = autoincr();
assert.eq(bigints.next(), 1n);
assert.eq(bigints.next(), 2n);
assert.eq(bigints.next(), 3n);
assert.eq(id.next(), 1);
assert.eq(id.next(), 2);
assert.eq(id.next(), 3);
bigints.reset();
assert.eq(bigints.next(), 1n);
id.reset();
assert.eq(id.next(), 1);
```
assert.eq(numbers.next(), 1);
assert.eq(numbers.next(), 2);
assert.eq(numbers.next(), 3);
### BigInt Support
numbers.reset();
assert.eq(numbers.next(), 1);
The same API expressed in the example above can optionally return a `bigint`
rather than a `number` by calling the `.bigint` method.
```typescript
const id = autoincr.bigint();
```

@@ -31,0 +32,0 @@

@@ -1,22 +0,22 @@

import { bigint, number, Counter } from "./lib";
import autoincr, { Sequence } from "./lib";
describe("bigint()", () => {
let counter: Counter<bigint>;
describe("autoincr()", () => {
let sequence: Sequence<number>;
beforeEach(() => {
counter = bigint();
sequence = autoincr();
});
test("#next()", () => {
expect(counter.next()).toBe(1n);
expect(counter.next()).toBe(2n);
expect(counter.next()).toBe(3n);
expect(sequence.next()).toBe(1);
expect(sequence.next()).toBe(2);
expect(sequence.next()).toBe(3);
});
test("#reset()", () => {
expect(counter.next()).toBe(1n);
expect(counter.next()).toBe(2n);
expect(sequence.next()).toBe(1);
expect(sequence.next()).toBe(2);
counter.reset();
expect(counter.next()).toBe(1n);
sequence.reset();
expect(sequence.next()).toBe(1);
});

@@ -26,43 +26,43 @@

// @ts-ignore
const next = jest.spyOn(counter.state, "next");
const next = jest.spyOn(sequence.state, "next");
for (const value of counter) {
for (const value of sequence) {
expect(next).toHaveBeenCalledTimes(1);
expect(value).toBe(1n);
expect(value).toBe(1);
break;
}
});
});
describe("number()", () => {
let counter: Counter<number>;
describe(".bigint()", () => {
let sequence: Sequence<bigint>;
beforeEach(() => {
counter = number();
});
beforeEach(() => {
sequence = autoincr.bigint();
});
test("#next()", () => {
expect(counter.next()).toBe(1);
expect(counter.next()).toBe(2);
expect(counter.next()).toBe(3);
});
test("#next()", () => {
expect(sequence.next()).toBe(1n);
expect(sequence.next()).toBe(2n);
expect(sequence.next()).toBe(3n);
});
test("#reset()", () => {
expect(counter.next()).toBe(1);
expect(counter.next()).toBe(2);
test("#reset()", () => {
expect(sequence.next()).toBe(1n);
expect(sequence.next()).toBe(2n);
counter.reset();
expect(counter.next()).toBe(1);
});
sequence.reset();
expect(sequence.next()).toBe(1n);
});
test("#@@iterator()", () => {
// @ts-ignore
const next = jest.spyOn(counter.state, "next");
test("#@@iterator()", () => {
// @ts-ignore
const next = jest.spyOn(sequence.state, "next");
for (const value of counter) {
expect(next).toHaveBeenCalledTimes(1);
expect(value).toBe(1);
break;
}
for (const value of sequence) {
expect(next).toHaveBeenCalledTimes(1);
expect(value).toBe(1n);
break;
}
});
});
});

@@ -1,5 +0,14 @@

export { bigint, number };
export type { Counter };
interface AutoIncr {
/**
* Returns a sequence of auto-incrementing bigints.
*/
bigint(): Sequence<bigint>;
class Counter<T> {
/**
* Returns a sequence of auto-incrementing numbers.
*/
(): Sequence<number>;
}
class Sequence<T> {
private readonly factory!: () => Generator<T, never, void>;

@@ -41,18 +50,6 @@ private state!: Generator<T, never, void>;

/**
* Returns a sequence of auto-incrementing bigints.
*/
function bigint(): Counter<bigint> {
return new Counter(function* () {
for (let state = 1n; ; state++) yield state;
});
}
/**
* Returns a sequence of auto-incrementing numbers.
*/
function number(): Counter<number> {
function autoincr(): Sequence<number> {
const ceiling = Number.MAX_SAFE_INTEGER;
return new Counter(function* () {
return new Sequence(function* () {
for (let state = 1; state < ceiling; state++) yield state;

@@ -63,1 +60,14 @@ // istanbul ignore next

}
function bigint(): Sequence<bigint> {
return new Sequence(function* () {
for (let state = 1n; ; state++) yield state;
});
}
Object.defineProperty(autoincr, "bigint", {
value: bigint,
});
export type { Sequence };
export default autoincr as AutoIncr;

@@ -9,3 +9,4 @@ {

},
"exclude": ["src/lib.test.ts"]
"exclude": ["src/*.test.ts"],
"include": ["src/*.ts"]
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc