is-odd-ts 1.0.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +2 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -17
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -1
- package/dist/index.test.js +165 -86
- package/dist/index.test.js.map +1 -1
- package/package.json +64 -55
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -28,6 +28,7 @@ Or with yarn:
|
|
|
28
28
|
```bash
|
|
29
29
|
yarn add is-odd-ts
|
|
30
30
|
```
|
|
31
|
+
This package is ESM-only and requires Node 22+.
|
|
31
32
|
|
|
32
33
|
## Usage
|
|
33
34
|
|
|
@@ -63,7 +64,7 @@ I've put effort into testing this utility across a variety of scenarios to make
|
|
|
63
64
|
|
|
64
65
|
- Regular odd and even integers (both positive and negative).
|
|
65
66
|
- Handling of zero and negative zero.
|
|
66
|
-
- Large numbers, including `Number.MAX_SAFE_INTEGER` and `Number.MIN_SAFE_INTEGER
|
|
67
|
+
- Large numbers, including `Number.MAX_SAFE_INTEGER` and `Number.MIN_SAFE_INTEGER`.
|
|
67
68
|
- Proper error handling for invalid inputs like `NaN`, `Infinity`, floats, and values beyond safe integer limits.
|
|
68
69
|
|
|
69
70
|
Tests have been written using Node's native test runner.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* is-odd-ts <https://github.com/JovanDj/is-odd-ts>
|
|
3
3
|
*
|
|
4
|
-
* Copyright (c)
|
|
4
|
+
* Copyright (c) 2025, Jovan Djukic.
|
|
5
5
|
* Released under the MIT License.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
@@ -18,4 +18,4 @@
|
|
|
18
18
|
* @throws {Error} - Throws if the input is not an integer or exceeds the safe integer limit.
|
|
19
19
|
*/
|
|
20
20
|
export declare const isOdd: (num: number) => boolean;
|
|
21
|
-
//# sourceMappingURL=index.d.ts.map
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAG,OAcnC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*!
|
|
3
2
|
* is-odd-ts <https://github.com/JovanDj/is-odd-ts>
|
|
4
3
|
*
|
|
5
|
-
* Copyright (c)
|
|
4
|
+
* Copyright (c) 2025, Jovan Djukic.
|
|
6
5
|
* Released under the MIT License.
|
|
7
6
|
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.isOdd = void 0;
|
|
10
7
|
/**
|
|
11
8
|
* Checks if a given number is odd.
|
|
12
9
|
*
|
|
@@ -20,17 +17,16 @@ exports.isOdd = void 0;
|
|
|
20
17
|
* @throws {TypeError} - Throws if the input is not a finite number.
|
|
21
18
|
* @throws {Error} - Throws if the input is not an integer or exceeds the safe integer limit.
|
|
22
19
|
*/
|
|
23
|
-
const isOdd = (num) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
export const isOdd = (num) => {
|
|
21
|
+
if (!Number.isFinite(num)) {
|
|
22
|
+
throw new TypeError("Expected a finite number");
|
|
23
|
+
}
|
|
24
|
+
if (!Number.isInteger(num)) {
|
|
25
|
+
throw new Error("Expected an integer");
|
|
26
|
+
}
|
|
27
|
+
if (!Number.isSafeInteger(num)) {
|
|
28
|
+
throw new Error("Value exceeds maximum safe integer");
|
|
29
|
+
}
|
|
30
|
+
return num % 2 !== 0;
|
|
34
31
|
};
|
|
35
|
-
|
|
36
|
-
//# sourceMappingURL=index.js.map
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAW,EAAE;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC,CAAC"}
|
package/dist/index.test.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=index.test.d.ts.map
|
|
2
|
+
//# sourceMappingURL=index.test.d.ts.map
|
package/dist/index.test.js
CHANGED
|
@@ -1,88 +1,167 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { test } from "node:test";
|
|
3
|
+
import fc from "fast-check";
|
|
4
|
+
import { isOdd } from "./index.js";
|
|
5
|
+
|
|
6
|
+
test("isOdd function with integers", { concurrency: true }, (t) => {
|
|
7
|
+
t.test("should return true when the input is an odd positive integer", () => {
|
|
8
|
+
assert.deepStrictEqual(isOdd(1), true);
|
|
9
|
+
assert.deepStrictEqual(isOdd(3), true);
|
|
10
|
+
});
|
|
11
|
+
t.test("should return true when the input is an odd negative integer", () => {
|
|
12
|
+
assert.deepStrictEqual(isOdd(-1), true);
|
|
13
|
+
assert.deepStrictEqual(isOdd(-3), true);
|
|
14
|
+
});
|
|
15
|
+
t.test(
|
|
16
|
+
"should return false when the input is an even positive integer",
|
|
17
|
+
() => {
|
|
18
|
+
assert.deepStrictEqual(isOdd(2), false);
|
|
19
|
+
assert.deepStrictEqual(isOdd(4), false);
|
|
20
|
+
},
|
|
21
|
+
);
|
|
22
|
+
t.test(
|
|
23
|
+
"should return false when the input is an even negative integer",
|
|
24
|
+
() => {
|
|
25
|
+
assert.deepStrictEqual(isOdd(-2), false);
|
|
26
|
+
assert.deepStrictEqual(isOdd(-4), false);
|
|
27
|
+
},
|
|
28
|
+
);
|
|
29
|
+
t.test("should return false when the input is zero", () => {
|
|
30
|
+
assert.deepStrictEqual(isOdd(0), false);
|
|
31
|
+
});
|
|
32
|
+
t.test("should return false when the input is negative zero", () => {
|
|
33
|
+
assert.deepStrictEqual(isOdd(-0), false);
|
|
34
|
+
});
|
|
35
|
+
t.test("should throw an error when the input is a positive float", () => {
|
|
36
|
+
assert.throws(() => isOdd(1.5), {
|
|
37
|
+
message: "Expected an integer",
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
t.test("should throw an error when the input is a negative float", () => {
|
|
41
|
+
assert.throws(() => isOdd(-1.5), {
|
|
42
|
+
message: "Expected an integer",
|
|
43
|
+
});
|
|
44
|
+
});
|
|
42
45
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
46
|
+
test(
|
|
47
|
+
"isOdd function with special constants and edge cases",
|
|
48
|
+
{ concurrency: true },
|
|
49
|
+
(t) => {
|
|
50
|
+
t.test("should throw an error when the input is NaN", () => {
|
|
51
|
+
assert.throws(() => isOdd(Number.NaN), {
|
|
52
|
+
message: "Expected a finite number",
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
t.test("should throw an error when the input is Infinity", () => {
|
|
56
|
+
assert.throws(() => isOdd(Number.POSITIVE_INFINITY), {
|
|
57
|
+
message: "Expected a finite number",
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
t.test("should throw an error when the input is -Infinity", () => {
|
|
61
|
+
assert.throws(() => isOdd(Number.NEGATIVE_INFINITY), {
|
|
62
|
+
message: "Expected a finite number",
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
t.test(
|
|
66
|
+
"should return true when the input is Number.MAX_SAFE_INTEGER (positive)",
|
|
67
|
+
() => {
|
|
68
|
+
assert.deepStrictEqual(isOdd(Number.MAX_SAFE_INTEGER), true);
|
|
69
|
+
},
|
|
70
|
+
);
|
|
71
|
+
t.test(
|
|
72
|
+
"should return false when the input is the largest even safe integer (positive)",
|
|
73
|
+
() => {
|
|
74
|
+
assert.deepStrictEqual(isOdd(Number.MAX_SAFE_INTEGER - 1), false);
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
t.test(
|
|
78
|
+
"should return true when the input is Number.MIN_SAFE_INTEGER (negative)",
|
|
79
|
+
() => {
|
|
80
|
+
assert.deepStrictEqual(isOdd(Number.MIN_SAFE_INTEGER), true);
|
|
81
|
+
},
|
|
82
|
+
);
|
|
83
|
+
t.test(
|
|
84
|
+
"should return false when the input is the smallest even integer below MIN_SAFE_INTEGER",
|
|
85
|
+
() => {
|
|
86
|
+
assert.deepStrictEqual(isOdd(Number.MIN_SAFE_INTEGER + 1), false);
|
|
87
|
+
},
|
|
88
|
+
);
|
|
89
|
+
t.test(
|
|
90
|
+
"should throw an error when the input is exactly one more than Number.MAX_SAFE_INTEGER",
|
|
91
|
+
() => {
|
|
92
|
+
assert.throws(() => isOdd(Number.MAX_SAFE_INTEGER + 1), {
|
|
93
|
+
message: "Value exceeds maximum safe integer",
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
);
|
|
97
|
+
t.test(
|
|
98
|
+
"should throw an error when the input is exactly one less than Number.MIN_SAFE_INTEGER",
|
|
99
|
+
() => {
|
|
100
|
+
assert.throws(() => isOdd(Number.MIN_SAFE_INTEGER - 1), {
|
|
101
|
+
message: "Value exceeds maximum safe integer",
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
);
|
|
105
|
+
t.test(
|
|
106
|
+
"should return false when the input is a large even negative integer",
|
|
107
|
+
() => {
|
|
108
|
+
assert.deepStrictEqual(isOdd(-9007199254740990), false);
|
|
109
|
+
},
|
|
110
|
+
);
|
|
111
|
+
t.test(
|
|
112
|
+
"should return true when the input is a large odd negative integer",
|
|
113
|
+
() => {
|
|
114
|
+
assert.deepStrictEqual(isOdd(-9007199254740991), true);
|
|
115
|
+
},
|
|
116
|
+
);
|
|
117
|
+
},
|
|
118
|
+
);
|
|
119
|
+
test(
|
|
120
|
+
"isOdd property: returns true for all safe odd integers",
|
|
121
|
+
{ concurrency: true },
|
|
122
|
+
() => {
|
|
123
|
+
fc.assert(
|
|
124
|
+
fc.property(
|
|
125
|
+
fc.maxSafeInteger().filter((n) => Math.abs(n % 2) === 1),
|
|
126
|
+
(n) => assert.deepStrictEqual(isOdd(n), true),
|
|
127
|
+
),
|
|
128
|
+
);
|
|
129
|
+
},
|
|
130
|
+
);
|
|
131
|
+
test(
|
|
132
|
+
"isOdd property: returns false for all safe even integers",
|
|
133
|
+
{ concurrency: true },
|
|
134
|
+
() => {
|
|
135
|
+
fc.assert(
|
|
136
|
+
fc.property(
|
|
137
|
+
fc.maxSafeInteger().filter((n) => n % 2 === 0),
|
|
138
|
+
(n) => assert.deepStrictEqual(isOdd(n), false),
|
|
139
|
+
),
|
|
140
|
+
);
|
|
141
|
+
},
|
|
142
|
+
);
|
|
143
|
+
test("isOdd property — floats throw", { concurrency: true }, () => {
|
|
144
|
+
fc.assert(
|
|
145
|
+
fc.property(
|
|
146
|
+
fc.float({
|
|
147
|
+
noNaN: true,
|
|
148
|
+
noDefaultInfinity: true,
|
|
149
|
+
noInteger: true,
|
|
150
|
+
}),
|
|
151
|
+
(n) => assert.throws(() => isOdd(n)),
|
|
152
|
+
),
|
|
153
|
+
);
|
|
87
154
|
});
|
|
88
|
-
|
|
155
|
+
test("isOdd property — doubles throw", { concurrency: true }, () => {
|
|
156
|
+
fc.assert(
|
|
157
|
+
fc.property(
|
|
158
|
+
fc.double({
|
|
159
|
+
noNaN: true,
|
|
160
|
+
noDefaultInfinity: true,
|
|
161
|
+
noInteger: true,
|
|
162
|
+
}),
|
|
163
|
+
(n) => assert.throws(() => isOdd(n)),
|
|
164
|
+
),
|
|
165
|
+
);
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=index.test.js.map
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,57 +1,66 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
2
|
+
"name": "is-odd-ts",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "A strict TypeScript-only utility to check if a number is odd, with modern type safety.",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"typecheck": "tsc --noEmit",
|
|
11
|
+
"lint": "biome check --write",
|
|
12
|
+
"lint:fix": "biome check --unsafe --write",
|
|
13
|
+
"test": "node --experimental-strip-types --test src/**/*.test.ts"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"import": "./dist/index.js",
|
|
21
|
+
"types": "./dist/index.d.ts"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "git+https://github.com/JovanDj/is-odd-ts.git"
|
|
27
|
+
},
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://github.com/JovanDj/is-odd-ts/issues"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/JovanDj/is-odd-ts#readme",
|
|
32
|
+
"keywords": [
|
|
33
|
+
"odd",
|
|
34
|
+
"is-odd",
|
|
35
|
+
"number",
|
|
36
|
+
"typescript",
|
|
37
|
+
"ts",
|
|
38
|
+
"strict",
|
|
39
|
+
"type-safe",
|
|
40
|
+
"utility",
|
|
41
|
+
"ESM",
|
|
42
|
+
"modern-js"
|
|
43
|
+
],
|
|
44
|
+
"author": {
|
|
45
|
+
"name": "Jovan Djukic",
|
|
46
|
+
"email": "jovandjukic2@gmail.com",
|
|
47
|
+
"url": "https://jovandjukic.com"
|
|
48
|
+
},
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"volta": {
|
|
51
|
+
"node": "22.17.0"
|
|
52
|
+
},
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=22"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@biomejs/biome": "^2.1.0",
|
|
58
|
+
"@tsconfig/node-ts": "^23.6.1",
|
|
59
|
+
"@tsconfig/node22": "^22.0.2",
|
|
60
|
+
"@tsconfig/recommended": "^1.0.10",
|
|
61
|
+
"@tsconfig/strictest": "^2.0.5",
|
|
62
|
+
"@types/node": "^22.16.0",
|
|
63
|
+
"fast-check": "^4.2.0",
|
|
64
|
+
"typescript": "^5.8.3"
|
|
65
|
+
}
|
|
57
66
|
}
|