range-pie 2.0.2 → 2.2.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 CHANGED
@@ -29,6 +29,7 @@ A TypeScript/JavaScript library that brings Python's range functionality to Java
29
29
  - [includes()](#includes)
30
30
  - [indexOf()](#indexof)
31
31
  - [lastIndexOf()](#lastindexof)
32
+ - [pop()](#pop)
32
33
  - [reverse()](#reverse)
33
34
 
34
35
  - [Advanced Usage](#advanced-usage)
@@ -55,8 +56,10 @@ npm install range-pie
55
56
  ### JavaScript
56
57
 
57
58
  ```javascript
58
- // CommonJS
59
- const { PyRange } = require('range-pie');
59
+ // CommonJS - Both import styles are supported
60
+ const { PyRange } = require('range-pie'); // Named import style
61
+ // OR
62
+ const PyRange = require('range-pie'); // Default import style
60
63
 
61
64
  // Create a range from 0 to 5
62
65
  const range = new PyRange(5);
@@ -74,8 +77,10 @@ console.log([...range3]); // [0, 2, 4, 6, 8]
74
77
  ### TypeScript
75
78
 
76
79
  ```typescript
77
- // ES Modules
78
- import { PyRange } from 'range-pie';
80
+ // ES Modules - Both import styles are supported
81
+ import { PyRange } from 'range-pie'; // Named import style
82
+ // OR
83
+ import PyRange from 'range-pie'; // Default import style
79
84
 
80
85
  // Create a range from 0 to 5
81
86
  const range = new PyRange(5);
@@ -289,6 +294,18 @@ console.log(range.lastIndexOf(3)); // 2
289
294
  console.log(range.lastIndexOf(5)); // -1
290
295
  ```
291
296
 
297
+ ### pop()
298
+
299
+ Similar to [**`Array.prototype.pop`**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop),
300
+ this method removes the last value from the range, shortens the range and
301
+ returns that value.
302
+
303
+ ```javascript
304
+ const range = new PyRange(1, 5); // [1, 2, 3, 4]
305
+ console.log(range.pop()); // 4
306
+ console.log([...range]); // [1, 2, 3]
307
+ ```
308
+
292
309
  ### reverse()
293
310
 
294
311
  It works the same as [**`Array.prototype.reverse`**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)
package/dist/index.js CHANGED
@@ -37,3 +37,13 @@ exports.PyRange = void 0;
37
37
  const py_range_1 = __importStar(require("./py-range"));
38
38
  Object.defineProperty(exports, "PyRange", { enumerable: true, get: function () { return py_range_1.PyRange; } });
39
39
  exports.default = py_range_1.default;
40
+ // For CommonJS compatibility with both import styles
41
+ // This ensures `const PyRange = require('range-pie')` works
42
+ // as well as `const { PyRange } = require('range-pie')`
43
+ if (typeof module !== "undefined" && typeof module.exports !== "undefined") {
44
+ Object.defineProperty(module.exports, "__esModule", { value: true });
45
+ // Assign PyRange to both default export and named export
46
+ module.exports = Object.assign(py_range_1.default, module.exports);
47
+ // Also ensure PyRange is available as a property
48
+ module.exports.PyRange = py_range_1.default;
49
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAA8D;AAKrC,wFALI,kBAAY,OAKT;AAChC,kBAAe,kBAAO,CAAC;AAEvB,qDAAqD;AACrD,4DAA4D;AAC5D,wDAAwD;AACxD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;IAC3E,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,yDAAyD;IACzD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,iDAAiD;IACjD,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,kBAAO,CAAC;AACnC,CAAC"}
@@ -162,6 +162,18 @@ declare class PyRange implements Iterable<number> {
162
162
  * @returns {number} The index of the last occurrence of the value, or -1 if it is not present.
163
163
  */
164
164
  lastIndexOf(value: any): number;
165
+ /**
166
+ * Removes the last element from the range and returns it.
167
+ *
168
+ * This method behaves similarly to `Array.prototype.pop`. It decreases the
169
+ * `stop` value by the step size, shortens the range length by one, and returns
170
+ * the removed value. If the range is empty, `undefined` is returned and the
171
+ * range remains unchanged.
172
+ *
173
+ * @returns {number|undefined} The removed last value, or `undefined` if the
174
+ * range is empty.
175
+ */
176
+ pop(): number | undefined;
165
177
  /**
166
178
  * Reverses the order of the elements in this range, returning a new PyRange object.
167
179
  * @returns {PyRange} A new PyRange object with the elements in reverse order.
package/dist/py-range.js CHANGED
@@ -303,6 +303,26 @@ class PyRange {
303
303
  }
304
304
  return -1;
305
305
  }
306
+ /**
307
+ * Removes the last element from the range and returns it.
308
+ *
309
+ * This method behaves similarly to `Array.prototype.pop`. It decreases the
310
+ * `stop` value by the step size, shortens the range length by one, and returns
311
+ * the removed value. If the range is empty, `undefined` is returned and the
312
+ * range remains unchanged.
313
+ *
314
+ * @returns {number|undefined} The removed last value, or `undefined` if the
315
+ * range is empty.
316
+ */
317
+ pop() {
318
+ if (this._length === 0) {
319
+ return undefined;
320
+ }
321
+ const lastValue = this.at(this._length - 1);
322
+ this._stop -= this._step;
323
+ this._length--;
324
+ return lastValue;
325
+ }
306
326
  /**
307
327
  * Reverses the order of the elements in this range, returning a new PyRange object.
308
328
  * @returns {PyRange} A new PyRange object with the elements in reverse order.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"py-range.js","sourceRoot":"","sources":["../src/py-range.ts"],"names":[],"mappings":"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"}
@@ -1,58 +1,58 @@
1
1
  /**
2
2
  * Advanced usage examples for range-pie
3
- *
3
+ *
4
4
  * This file demonstrates more advanced features of the PyRange class
5
5
  */
6
6
 
7
- const { PyRange } = require('range-pie');
7
+ const { PyRange } = require("range-pie");
8
8
 
9
- console.log('\n--- Advanced PyRange Examples ---');
9
+ console.log("\n--- Advanced PyRange Examples ---");
10
10
 
11
11
  // Example 1: Using the reverse method
12
12
  const range1 = new PyRange(1, 6);
13
- console.log('Original range:', [...range1]); // [1, 2, 3, 4, 5]
13
+ console.log("Original range:", [...range1]); // [1, 2, 3, 4, 5]
14
14
 
15
15
  const reversed = range1.reverse();
16
- console.log('Reversed range:', [...reversed]); // [5, 4, 3, 2, 1]
16
+ console.log("Reversed range:", [...reversed]); // [5, 4, 3, 2, 1]
17
17
 
18
18
  // Example 2: Using the asProxy method for array-like access
19
19
  const range2 = new PyRange(10).asProxy();
20
- console.log('range2[0]:', range2[0]); // 0
21
- console.log('range2[5]:', range2[5]); // 5
20
+ console.log("range2[0]:", range2[0]); // 0
21
+ console.log("range2[5]:", range2[5]); // 5
22
22
 
23
23
  // Create an array using proxy access
24
24
  const firstThree = [range2[0], range2[1], range2[2]];
25
- console.log('firstThree:', firstThree); // [0, 1, 2]
25
+ console.log("firstThree:", firstThree); // [0, 1, 2]
26
26
 
27
27
  // Example 3: Method chaining
28
28
  const range3 = new PyRange(1, 10);
29
29
  const result = range3
30
- .filter(x => x % 2 === 0) // Get even numbers
31
- .map(x => x * x) // Square them
32
- .filter(x => x > 10); // Filter values greater than 10
30
+ .filter((x) => x % 2 === 0) // Get even numbers
31
+ .map((x) => x * x) // Square them
32
+ .filter((x) => x > 10); // Filter values greater than 10
33
33
 
34
- console.log('Chained methods result:', result); // [16, 36, 64]
34
+ console.log("Chained methods result:", result); // [16, 36, 64]
35
35
 
36
36
  // Example 4: Using PyRange with other array methods
37
37
  const range4 = new PyRange(5);
38
- const array = [...range4]; // Convert to array: [0, 1, 2, 3, 4]
38
+ const array = [...range4]; // Convert to array: [0, 1, 2, 3, 4]
39
39
 
40
40
  // Now we can use native array methods
41
- const sorted = array.sort((a, b) => b - a); // Sort in descending order
42
- console.log('Sorted array:', sorted); // [4, 3, 2, 1, 0]
41
+ const sorted = array.sort((a, b) => b - a); // Sort in descending order
42
+ console.log("Sorted array:", sorted); // [4, 3, 2, 1, 0]
43
43
 
44
44
  // Example 5: Creating a range with custom step
45
45
  const range5 = new PyRange(0, 11, 2);
46
- console.log('Range with step 2:', [...range5]); // [0, 2, 4, 6, 8, 10]
46
+ console.log("Range with step 2:", [...range5]); // [0, 2, 4, 6, 8, 10]
47
47
 
48
48
  // Example 6: Combining multiple ranges
49
49
  const range6a = new PyRange(0, 3);
50
50
  const range6b = new PyRange(5, 8);
51
51
  const combined = [...range6a, ...range6b];
52
- console.log('Combined ranges:', combined); // [0, 1, 2, 5, 6, 7]
52
+ console.log("Combined ranges:", combined); // [0, 1, 2, 5, 6, 7]
53
53
 
54
54
  // Example 7: Using PyRange for iteration
55
- console.log('\nIteration example:');
55
+ console.log("\nIteration example:");
56
56
  for (const num of new PyRange(3)) {
57
57
  console.log(`Current number: ${num}`);
58
58
  }
@@ -1,64 +1,64 @@
1
1
  /**
2
2
  * Array method examples for range-pie
3
- *
3
+ *
4
4
  * This file demonstrates how to use the array-like methods provided by PyRange
5
5
  */
6
6
 
7
- const { PyRange } = require('range-pie');
7
+ const { PyRange } = require("range-pie");
8
8
 
9
- console.log('\n--- Array Method Examples ---');
9
+ console.log("\n--- Array Method Examples ---");
10
10
 
11
11
  // Create a range to work with
12
12
  const range = new PyRange(1, 10);
13
- console.log('Original range:', [...range]); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
13
+ console.log("Original range:", [...range]); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
14
14
 
15
15
  // Map: Double each value
16
- const doubled = range.map(x => x * 2);
17
- console.log('map(x => x * 2):', doubled); // [2, 4, 6, 8, 10, 12, 14, 16, 18]
16
+ const doubled = range.map((x) => x * 2);
17
+ console.log("map(x => x * 2):", doubled); // [2, 4, 6, 8, 10, 12, 14, 16, 18]
18
18
 
19
19
  // Filter: Get only even numbers
20
- const evens = range.filter(x => x % 2 === 0);
21
- console.log('filter(x => x % 2 === 0):', evens); // [2, 4, 6, 8]
20
+ const evens = range.filter((x) => x % 2 === 0);
21
+ console.log("filter(x => x % 2 === 0):", evens); // [2, 4, 6, 8]
22
22
 
23
23
  // Reduce: Sum all values
24
24
  const sum = range.reduce((acc, curr) => acc + curr, 0);
25
- console.log('reduce((acc, curr) => acc + curr, 0):', sum); // 45
25
+ console.log("reduce((acc, curr) => acc + curr, 0):", sum); // 45
26
26
 
27
27
  // Some: Check if any value meets a condition
28
- const hasEven = range.some(x => x % 2 === 0);
29
- console.log('some(x => x % 2 === 0):', hasEven); // true
28
+ const hasEven = range.some((x) => x % 2 === 0);
29
+ console.log("some(x => x % 2 === 0):", hasEven); // true
30
30
 
31
31
  // Every: Check if all values meet a condition
32
- const allPositive = range.every(x => x > 0);
33
- console.log('every(x => x > 0):', allPositive); // true
32
+ const allPositive = range.every((x) => x > 0);
33
+ console.log("every(x => x > 0):", allPositive); // true
34
34
 
35
35
  // Find: Get the first value that meets a condition
36
- const firstEven = range.find(x => x % 2 === 0);
37
- console.log('find(x => x % 2 === 0):', firstEven); // 2
36
+ const firstEven = range.find((x) => x % 2 === 0);
37
+ console.log("find(x => x % 2 === 0):", firstEven); // 2
38
38
 
39
39
  // FindIndex: Get the index of the first value that meets a condition
40
- const firstEvenIndex = range.findIndex(x => x % 2 === 0);
41
- console.log('findIndex(x => x % 2 === 0):', firstEvenIndex); // 1
40
+ const firstEvenIndex = range.findIndex((x) => x % 2 === 0);
41
+ console.log("findIndex(x => x % 2 === 0):", firstEvenIndex); // 1
42
42
 
43
43
  // FindLastIndex: Get the index of the last value that meets a condition
44
- const lastEvenIndex = range.findLastIndex(x => x % 2 === 0);
45
- console.log('findLastIndex(x => x % 2 === 0):', lastEvenIndex); // 7
44
+ const lastEvenIndex = range.findLastIndex((x) => x % 2 === 0);
45
+ console.log("findLastIndex(x => x % 2 === 0):", lastEvenIndex); // 7
46
46
 
47
47
  // Includes: Check if a value exists in the range
48
48
  const includesFive = range.includes(5);
49
- console.log('includes(5):', includesFive); // true
49
+ console.log("includes(5):", includesFive); // true
50
50
 
51
51
  // IndexOf: Get the index of a value
52
52
  const indexOfFive = range.indexOf(5);
53
- console.log('indexOf(5):', indexOfFive); // 4
53
+ console.log("indexOf(5):", indexOfFive); // 4
54
54
 
55
55
  // LastIndexOf: Get the last index of a value
56
56
  const lastIndexOfFive = range.lastIndexOf(5);
57
- console.log('lastIndexOf(5):', lastIndexOfFive); // 4
57
+ console.log("lastIndexOf(5):", lastIndexOfFive); // 4
58
58
 
59
59
  // ForEach: Execute a function for each value
60
- console.log('\nforEach example:');
61
- range.forEach(x => {
60
+ console.log("\nforEach example:");
61
+ range.forEach((x) => {
62
62
  if (x % 3 === 0) {
63
63
  console.log(`${x} is divisible by 3`);
64
64
  }
@@ -66,3 +66,8 @@ range.forEach(x => {
66
66
  // 3 is divisible by 3
67
67
  // 6 is divisible by 3
68
68
  // 9 is divisible by 3
69
+
70
+ // Pop: Remove the last value
71
+ const popped = range.pop();
72
+ console.log("pop():", popped); // 9
73
+ console.log("After pop:", [...range]); // [1, 2, 3, 4, 5, 6, 7, 8]
@@ -1,42 +1,42 @@
1
1
  /**
2
2
  * Basic usage examples for range-pie
3
- *
3
+ *
4
4
  * This file demonstrates the fundamental ways to use the PyRange class
5
5
  * with JavaScript.
6
6
  */
7
7
 
8
8
  // CommonJS import
9
- const { PyRange } = require('range-pie');
9
+ const { PyRange } = require("range-pie");
10
10
 
11
- console.log('\n--- Basic PyRange Examples ---');
11
+ console.log("\n--- Basic PyRange Examples ---");
12
12
 
13
13
  // Example 1: Simple range with just stop value
14
14
  const range1 = new PyRange(5);
15
- console.log('PyRange(5):', [...range1]); // [0, 1, 2, 3, 4]
15
+ console.log("PyRange(5):", [...range1]); // [0, 1, 2, 3, 4]
16
16
 
17
17
  // Example 2: Range with start and stop
18
18
  const range2 = new PyRange(2, 8);
19
- console.log('PyRange(2, 8):', [...range2]); // [2, 3, 4, 5, 6, 7]
19
+ console.log("PyRange(2, 8):", [...range2]); // [2, 3, 4, 5, 6, 7]
20
20
 
21
21
  // Example 3: Range with start, stop, and step
22
22
  const range3 = new PyRange(1, 10, 2);
23
- console.log('PyRange(1, 10, 2):', [...range3]); // [1, 3, 5, 7, 9]
23
+ console.log("PyRange(1, 10, 2):", [...range3]); // [1, 3, 5, 7, 9]
24
24
 
25
25
  // Example 4: Negative step
26
26
  const range4 = new PyRange(10, 0, -2);
27
- console.log('PyRange(10, 0, -2):', [...range4]); // [10, 8, 6, 4, 2]
27
+ console.log("PyRange(10, 0, -2):", [...range4]); // [10, 8, 6, 4, 2]
28
28
 
29
- console.log('\n--- Accessing Properties ---');
30
- console.log('range3.start:', range3.start); // 1
31
- console.log('range3.stop:', range3.stop); // 10
32
- console.log('range3.step:', range3.step); // 2
33
- console.log('range3.length:', range3.length); // 5
29
+ console.log("\n--- Accessing Properties ---");
30
+ console.log("range3.start:", range3.start); // 1
31
+ console.log("range3.stop:", range3.stop); // 10
32
+ console.log("range3.step:", range3.step); // 2
33
+ console.log("range3.length:", range3.length); // 5
34
34
 
35
- console.log('\n--- Using at() Method ---');
36
- console.log('range3.at(0):', range3.at(0)); // 1
37
- console.log('range3.at(2):', range3.at(2)); // 5
35
+ console.log("\n--- Using at() Method ---");
36
+ console.log("range3.at(0):", range3.at(0)); // 1
37
+ console.log("range3.at(2):", range3.at(2)); // 5
38
38
  // console.log(range3.at(10)); // Would throw RangeError: Index out of range
39
39
 
40
- console.log('\n--- Converting to Array ---');
40
+ console.log("\n--- Converting to Array ---");
41
41
  const array = range3.toArray();
42
- console.log('range3.toArray():', array); // [1, 3, 5, 7, 9]
42
+ console.log("range3.toArray():", array); // [1, 3, 5, 7, 9]
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "range-pie",
3
- "version": "2.0.2",
3
+ "version": "2.2.0",
4
4
  "description": "A TypeScript class that simulates Python's range function, combined with several useful JavaScript array methods.",
5
5
  "main": "dist/index.js",
6
+ "module": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
7
8
  "exports": {
8
9
  ".": {
@@ -18,11 +19,15 @@
18
19
  "scripts": {
19
20
  "build": "tsc",
20
21
  "build:prod": "tsc -p tsconfig.prod.json",
21
- "prepublishOnly": "npm run build:prod",
22
+ "build:watch": "tsc --watch",
23
+ "prepublishOnly": "npm run build:prod && npm run test",
22
24
  "test": "jest",
25
+ "lint": "eslint . --ext .ts,.js",
26
+ "lint:fix": "eslint . --ext .ts,.js --fix",
27
+ "test:watch": "jest --watch",
23
28
  "clean": "rimraf dist",
24
- "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"examples/**/*.ts\"",
25
- "check-format": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" \"examples/**/*.ts\"",
29
+ "format": "prettier --write \"src/**/*.{ts,js}\" \"test/**/*.{ts,js}\" \"examples/**/*.{ts,js}\" \"types/**/*.{ts,js,json}\" \"*.{js,json}\"",
30
+ "format:check": "prettier --check \"src/**/*.{ts,js}\" \"test/**/*.{ts,js}\" \"examples/**/*.{ts,js}\" \"types/**/*.{ts,js,json}\" \"*.{js,json}\"",
26
31
  "example:basic": "node examples/basic-usage.js",
27
32
  "example:array": "node examples/array-methods.js",
28
33
  "example:advanced": "node examples/advanced-usage.js",
@@ -46,12 +51,16 @@
46
51
  "url": "git+https://github.com/SkorpionG/range-pie.git"
47
52
  },
48
53
  "devDependencies": {
54
+ "@eslint/js": "^9.28.0",
49
55
  "@types/jest": "^29.5.0",
56
+ "eslint": "^9.28.0",
57
+ "globals": "^16.2.0",
50
58
  "jest": "^29.7.0",
51
59
  "prettier": "^3.5.3",
52
60
  "rimraf": "^5.0.0",
53
61
  "ts-jest": "^29.1.0",
54
62
  "ts-node": "^10.9.1",
55
- "typescript": "^5.0.4"
63
+ "typescript": "^5.0.4",
64
+ "typescript-eslint": "^8.33.1"
56
65
  }
57
66
  }