is-odd-ts 2.0.1 → 3.0.0
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/README.md +9 -9
- package/dist/index.d.ts +5 -4
- package/dist/index.js +2 -27
- package/dist/index.js.map +1 -1
- package/package.json +17 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -167
- package/dist/index.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -20,15 +20,15 @@ Welcome to **`is-odd-ts`**, a lightweight utility for checking if a number is od
|
|
|
20
20
|
|
|
21
21
|
You can install it with `npm`:
|
|
22
22
|
|
|
23
|
-
```bash
|
|
24
|
-
npm install is-odd-ts
|
|
25
|
-
```
|
|
26
|
-
Or with yarn:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
yarn add is-odd-ts
|
|
30
|
-
```
|
|
31
|
-
This package is ESM-only and requires Node
|
|
23
|
+
```bash
|
|
24
|
+
npm install is-odd-ts
|
|
25
|
+
```
|
|
26
|
+
Or with yarn:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
yarn add is-odd-ts
|
|
30
|
+
```
|
|
31
|
+
This package is ESM-only and requires Node 24+.
|
|
32
32
|
|
|
33
33
|
## Usage
|
|
34
34
|
|
package/dist/index.d.ts
CHANGED
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @param {number} num - The number to check if it's odd.
|
|
16
16
|
* @returns {boolean} - Returns `true` if the number is odd, `false` if it's even.
|
|
17
|
-
* @throws {TypeError} - Throws if the input is not a finite number.
|
|
18
|
-
* @throws {
|
|
17
|
+
* @throws {TypeError} - Throws if the input is not a finite number or integer.
|
|
18
|
+
* @throws {RangeError} - Throws if the input exceeds the safe integer limit.
|
|
19
19
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
declare const isOdd: (num: number) => boolean;
|
|
21
|
+
|
|
22
|
+
export { isOdd };
|
package/dist/index.js
CHANGED
|
@@ -1,32 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
var t=Object.defineProperty;var r=(e,i)=>t(e,"name",{value:i,configurable:!0});/*!
|
|
2
2
|
* is-odd-ts <https://github.com/JovanDj/is-odd-ts>
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) 2025, Jovan Djukic.
|
|
5
5
|
* Released under the MIT License.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Checks if a given number is odd.
|
|
9
|
-
*
|
|
10
|
-
* This function validates that the input is a finite, safe integer before determining
|
|
11
|
-
* if it's odd. It works with both positive and negative numbers. If the input is invalid,
|
|
12
|
-
* such as a float, NaN, Infinity, or a number outside the safe integer range, the function
|
|
13
|
-
* throws an appropriate error.
|
|
14
|
-
*
|
|
15
|
-
* @param {number} num - The number to check if it's odd.
|
|
16
|
-
* @returns {boolean} - Returns `true` if the number is odd, `false` if it's even.
|
|
17
|
-
* @throws {TypeError} - Throws if the input is not a finite number.
|
|
18
|
-
* @throws {Error} - Throws if the input is not an integer or exceeds the safe integer limit.
|
|
19
|
-
*/
|
|
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;
|
|
31
|
-
};
|
|
6
|
+
*/const n=r(e=>{if(!Number.isFinite(e))throw new TypeError("Expected a finite number");if(!Number.isInteger(e))throw new TypeError("Expected an integer");if(!Number.isSafeInteger(e))throw new RangeError("Value exceeds maximum safe integer");return e%2!==0},"isOdd");export{n as isOdd};
|
|
32
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["/*!\n * is-odd-ts <https://github.com/JovanDj/is-odd-ts>\n *\n * Copyright (c) 2025, Jovan Djukic.\n * Released under the MIT License.\n */\n\n/**\n * Checks if a given number is odd.\n *\n * This function validates that the input is a finite, safe integer before determining\n * if it's odd. It works with both positive and negative numbers. If the input is invalid,\n * such as a float, NaN, Infinity, or a number outside the safe integer range, the function\n * throws an appropriate error.\n *\n * @param {number} num - The number to check if it's odd.\n * @returns {boolean} - Returns `true` if the number is odd, `false` if it's even.\n * @throws {TypeError} - Throws if the input is not a finite number or integer.\n * @throws {RangeError} - Throws if the input exceeds the safe integer limit.\n */\nexport const isOdd = (num: number): boolean => {\n\tif (!Number.isFinite(num)) {\n\t\tthrow new TypeError(\"Expected a finite number\");\n\t}\n\n\tif (!Number.isInteger(num)) {\n\t\tthrow new TypeError(\"Expected an integer\");\n\t}\n\n\tif (!Number.isSafeInteger(num)) {\n\t\tthrow new RangeError(\"Value exceeds maximum safe integer\");\n\t}\n\n\treturn num % 2 !== 0;\n};\n"],"names":[],"mappings":"AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,KAAK,GAAG,CAAC,GAAG,KAAK;AAC9B,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7B,IAAI,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC;AACnD,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAC9B,IAAI,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC;AAC9C,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AAClC,IAAI,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC;AAC9D,EAAE;AACF,EAAE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB;;;;"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "is-odd-ts",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "A strict TypeScript-only utility to check if a number is odd, with modern type safety.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"scripts": {
|
|
9
|
-
"build": "
|
|
9
|
+
"build": "pkgroll --clean-dist --sourcemap --env.NODE_ENV=production --minify",
|
|
10
10
|
"typecheck": "tsc --noEmit",
|
|
11
11
|
"lint": "biome check --write",
|
|
12
12
|
"lint:fix": "biome check --unsafe --write",
|
|
13
|
-
"test": "
|
|
13
|
+
"test": "tsx --test"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
|
+
"sideEffects": false,
|
|
18
19
|
"exports": {
|
|
19
20
|
".": {
|
|
20
21
|
"import": "./dist/index.js",
|
|
@@ -48,19 +49,22 @@
|
|
|
48
49
|
},
|
|
49
50
|
"license": "MIT",
|
|
50
51
|
"volta": {
|
|
51
|
-
"node": "
|
|
52
|
+
"node": "24.12.0"
|
|
52
53
|
},
|
|
53
54
|
"engines": {
|
|
54
|
-
"node": ">=
|
|
55
|
+
"node": ">=24"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
57
|
-
"@biomejs/biome": "^2.
|
|
58
|
-
"@
|
|
59
|
-
"@tsconfig/
|
|
60
|
-
"@tsconfig/
|
|
61
|
-
"@tsconfig/
|
|
62
|
-
"@
|
|
63
|
-
"
|
|
64
|
-
"
|
|
58
|
+
"@biomejs/biome": "^2.3.10",
|
|
59
|
+
"@stryker-mutator/core": "^9.4.0",
|
|
60
|
+
"@tsconfig/node-ts": "^23.6.2",
|
|
61
|
+
"@tsconfig/node24": "^24.0.3",
|
|
62
|
+
"@tsconfig/recommended": "^1.0.13",
|
|
63
|
+
"@tsconfig/strictest": "^2.0.8",
|
|
64
|
+
"@types/node": "^24.10.4",
|
|
65
|
+
"fast-check": "^4.5.2",
|
|
66
|
+
"pkgroll": "^2.21.4",
|
|
67
|
+
"tsx": "^4.21.0",
|
|
68
|
+
"typescript": "^5.9.3"
|
|
65
69
|
}
|
|
66
70
|
}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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.test.d.ts
DELETED
package/dist/index.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|
package/dist/index.test.js
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
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
|
-
});
|
|
45
|
-
});
|
|
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
|
-
);
|
|
154
|
-
});
|
|
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
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|