@kyo-services/schedulewise 1.0.0 → 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/README.md CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
4
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0.0-blue.svg)](https://www.typescriptlang.org/)
5
- [![Node Version](https://img.shields.io/node/v/schedulewise)](https://nodejs.org/)
5
+ [![npm version](https://img.shields.io/npm/v/@kyo-services/schedulewise.svg)](https://www.npmjs.com/package/@kyo-services/schedulewise)
6
+ [![Node Version](https://img.shields.io/node/v/@kyo-services/schedulewise)](https://nodejs.org/)
6
7
  [![Browser Support](https://img.shields.io/badge/browser-Chrome%20%7C%20Firefox%20%7C%20Safari%20%7C%20Edge-lightgrey)](https://browsersl.ist)
7
8
 
8
9
  A smart and efficient task scheduler for managing periodic jobs with precision timing and intelligent scheduling in both browser and Node.js environments. Built with modern TypeScript features and following best practices for reliable task scheduling.
package/dist/Task.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { TaskCallback } from './types';
2
- import { TaskScheduler } from './TaskScheduler';
1
+ import { TaskCallback } from './types.js';
2
+ import { TaskScheduler } from './TaskScheduler.js';
3
3
  /**
4
4
  * Represents a scheduled task in the system
5
5
  * @class Task
@@ -1,5 +1,5 @@
1
- import { Task } from './Task';
2
- import { TaskCallback, TaskOptions } from './types';
1
+ import { Task } from './Task.js';
2
+ import { TaskCallback, TaskOptions } from './types.js';
3
3
  /**
4
4
  * A singleton class that manages scheduled tasks in the system
5
5
  * @class TaskScheduler
@@ -1,4 +1,4 @@
1
- import { Task } from './Task';
1
+ import { Task } from './Task.js';
2
2
  /**
3
3
  * A singleton class that manages scheduled tasks in the system
4
4
  * @class TaskScheduler
@@ -84,9 +84,8 @@ export class TaskScheduler {
84
84
  const previousTimestamp = this.currentTimestamp;
85
85
  this.currentTimestamp = new Date();
86
86
  for (const task of this.scheduledTasks.values()) {
87
- const elapsedTime = task.getInterval(); // Bir interval süresi geçmiş varsayalım
88
- const shouldRun = task.shouldExecute(elapsedTime) &&
89
- task.lastExecutionTime.getTime() <= previousTimestamp.getTime();
87
+ const elapsedTime = task.getInterval();
88
+ const shouldRun = task.shouldExecute(elapsedTime) && task.lastExecutionTime.getTime() <= previousTimestamp.getTime();
90
89
  if (!shouldRun)
91
90
  continue;
92
91
  task.execute(this.currentTimestamp);
@@ -103,7 +102,16 @@ export class TaskScheduler {
103
102
  if (this.schedulerInterval)
104
103
  clearInterval(this.schedulerInterval);
105
104
  this.schedulerInterval = setInterval(() => {
106
- this.processTasksNow();
105
+ this.currentTimestamp = new Date();
106
+ for (const task of this.scheduledTasks.values()) {
107
+ const elapsedTime = this.currentTimestamp.getTime() - task.lastExecutionTime.getTime();
108
+ const shouldRun = task.shouldExecute(elapsedTime);
109
+ if (!shouldRun)
110
+ continue;
111
+ task.execute(this.currentTimestamp);
112
+ if (task.shouldRemove())
113
+ this.removeTask(task.id);
114
+ }
107
115
  }, 100);
108
116
  }
109
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TaskScheduler.js","sourceRoot":"","sources":["../src/TaskScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskScheduler.js","sourceRoot":"","sources":["../src/TaskScheduler.ts"],"names":[],"mappings":"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"}
package/dist/main.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { TaskScheduler } from './TaskScheduler.js';
2
+ export { TaskCallback, TaskOptions } from './types.js';
3
+ declare const _default: TaskScheduler;
4
+ export default _default;
package/dist/main.js ADDED
@@ -0,0 +1,3 @@
1
+ import { TaskScheduler } from './TaskScheduler.js';
2
+ export default TaskScheduler.getInstance();
3
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,eAAe,aAAa,CAAC,WAAW,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,36 @@
1
1
  {
2
2
  "name": "@kyo-services/schedulewise",
3
- "version": "1.0.0",
3
+ "version": "2.0.1",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=18.0.0"
7
7
  },
8
8
  "description": "A smart and efficient task scheduler for managing periodic jobs with precision timing and intelligent scheduling in both browser and Node.js environments",
9
- "main": "dist/main.js",
10
- "types": "dist/main.d.ts",
9
+ "main": "./dist/main.js",
10
+ "module": "./dist/main.js",
11
+ "types": "./dist/main.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/main.js",
15
+ "require": "./dist/main.js",
16
+ "types": "./dist/main.d.ts"
17
+ },
18
+ "./TaskScheduler": {
19
+ "import": "./dist/TaskScheduler.js",
20
+ "require": "./dist/TaskScheduler.js",
21
+ "types": "./dist/TaskScheduler.d.ts"
22
+ },
23
+ "./Task": {
24
+ "import": "./dist/Task.js",
25
+ "require": "./dist/Task.js",
26
+ "types": "./dist/Task.d.ts"
27
+ },
28
+ "./types": {
29
+ "import": "./dist/types.js",
30
+ "require": "./dist/types.js",
31
+ "types": "./dist/types.d.ts"
32
+ }
33
+ },
11
34
  "scripts": {
12
35
  "build": "tsc --project tsconfig.json",
13
36
  "test": "jest --config jest.config.cjs",
package/src/Task.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { TaskCallback } from './types';
2
- import { TaskScheduler } from './TaskScheduler';
1
+ import { TaskCallback } from './types.js';
2
+ import { TaskScheduler } from './TaskScheduler.js';
3
3
 
4
4
  /**
5
5
  * Represents a scheduled task in the system
@@ -1,5 +1,5 @@
1
- import { Task } from './Task';
2
- import { TaskCallback, TaskOptions } from './types';
1
+ import { Task } from './Task.js';
2
+ import { TaskCallback, TaskOptions } from './types.js';
3
3
 
4
4
  /**
5
5
  * A singleton class that manages scheduled tasks in the system
@@ -103,9 +103,8 @@ export class TaskScheduler {
103
103
  this.currentTimestamp = new Date();
104
104
 
105
105
  for (const task of this.scheduledTasks.values()) {
106
- const elapsedTime = task.getInterval(); // Bir interval süresi geçmiş varsayalım
107
- const shouldRun = task.shouldExecute(elapsedTime) &&
108
- task.lastExecutionTime.getTime() <= previousTimestamp.getTime();
106
+ const elapsedTime = task.getInterval();
107
+ const shouldRun = task.shouldExecute(elapsedTime) && task.lastExecutionTime.getTime() <= previousTimestamp.getTime();
109
108
 
110
109
  if (!shouldRun) continue;
111
110
 
@@ -124,7 +123,17 @@ export class TaskScheduler {
124
123
  if (this.schedulerInterval) clearInterval(this.schedulerInterval);
125
124
 
126
125
  this.schedulerInterval = setInterval(() => {
127
- this.processTasksNow();
126
+ this.currentTimestamp = new Date();
127
+
128
+ for (const task of this.scheduledTasks.values()) {
129
+ const elapsedTime = this.currentTimestamp.getTime() - task.lastExecutionTime.getTime();
130
+ const shouldRun = task.shouldExecute(elapsedTime);
131
+
132
+ if (!shouldRun) continue;
133
+
134
+ task.execute(this.currentTimestamp);
135
+ if (task.shouldRemove()) this.removeTask(task.id);
136
+ }
128
137
  }, 100);
129
138
  }
130
139
  }
package/src/main.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { TaskScheduler } from './TaskScheduler.js';
2
+ export { TaskCallback, TaskOptions } from './types.js';
3
+
4
+ export default TaskScheduler.getInstance();
package/dist/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { TaskScheduler } from './TaskScheduler';
2
- export { TaskCallback, TaskOptions } from './types';
3
- declare const _default: TaskScheduler;
4
- export default _default;
package/dist/index.js DELETED
@@ -1,3 +0,0 @@
1
- import { TaskScheduler } from './TaskScheduler';
2
- export default TaskScheduler.getInstance();
3
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,eAAe,aAAa,CAAC,WAAW,EAAE,CAAC"}
package/src/index.ts DELETED
@@ -1,4 +0,0 @@
1
- import { TaskScheduler } from './TaskScheduler';
2
- export { TaskCallback, TaskOptions } from './types';
3
-
4
- export default TaskScheduler.getInstance();