From 63c34069cc2bc057cb785f74998a1eba9cf7ee85 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 14:21:49 +0000 Subject: [PATCH 1/2] feat: Add TypeScript type definitions Adds TypeScript type definitions for the library. - Installs TypeScript as a dev dependency. - Adds a tsconfig.json file. - Creates an index.d.ts file with the type definitions. - Updates package.json to point to the new type definitions. --- lib/index.d.ts | 83 +++++++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 16 ++++++--- package.json | 4 ++- tsconfig.json | 10 ++++++ 4 files changed, 108 insertions(+), 5 deletions(-) create mode 100644 lib/index.d.ts create mode 100644 tsconfig.json diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 0000000..87d588a --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,83 @@ +import { EventEmitter } from "events"; + +export = SBS; + +declare class SBS extends EventEmitter { + constructor(opt?: SBS.Options); + + maxConcurrent: number; + exec: SBS.ExecFunction | null; + retry: boolean | SBS.RetryFunction; + retryLater: boolean; + maxRetry: number | null; + retryDelay: number; + interval: number; + noAutoClear: boolean; + name: string; + submitHook: SBS.SubmitHookFunction | null; + queue: SBS.Queue; + failed: Map; + finished: Map; + running: Set; + waiting: Map void, reject: (reason?: any) => void, keepResults: boolean }>>; + + qsub(job: SBS.Job | SBS.ExecFunction | any, urgent?: boolean): string | null | Promise; + qdel(id: string): boolean; + qstat(id: string): "finished" | "failed" | "waiting" | "running" | "removed" | null; + getResult(id: string, keepResult?: boolean): any; + qwait(id: string, keepResult?: boolean): Promise; + qsubAndWait(job: SBS.Job | SBS.ExecFunction | any, keepResult?: boolean): Promise; + qwaitAll(ids: string[], keepResult?: boolean): Promise; + start(): void; + stop(): void; + size(): number; + getRunning(): string[]; + clear(): void; + clearResults(): void; +} + +declare namespace SBS { + export interface Options { + exec?: ExecFunction; + maxConcurrent?: number; + retry?: boolean | RetryFunction; + retryLater?: boolean; + maxRetry?: number; + retryDelay?: number; + interval?: number; + name?: string; + submitHook?: SubmitHookFunction; + noAutoStart?: boolean; + noAutoClear?: boolean; + } + + export type ExecFunction = (...args: any[]) => any | Promise; + export type RetryFunction = (err: Error) => boolean | Promise; + export type SubmitHookFunction = (queue: Queue, job: Job | ExecFunction | any, urgent: boolean) => boolean | Promise; + + export interface Job { + exec?: ExecFunction; + args?: any; + maxRetry?: number; + retryDelay?: number; + forceRetry?: boolean; + retry?: boolean | RetryFunction; + retryLater?: boolean; + name?: string; + id?: string; + retryCount?: number; + } + + export class Queue { + constructor(); + enqueue(element: T, urgent?: boolean, id?: string): string; + dequeue(): [T | null, string | null]; + del(id: string): boolean; + clear(): void; + size(): number; + has(id: string): boolean; + getLastEntry(needLastExecuted?: boolean): T | null; + find(cb: (element: T) => boolean): T | null; + removeFromQueue(entries: T[]): void; + } +} diff --git a/package-lock.json b/package-lock.json index 5ae9907..62d87e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,8 @@ "mocha": "10.8.2", "mocha-lcov-reporter": "^1.3.0", "semantic-release": "^24.2.7", - "sinon": "15.2.0" + "sinon": "15.2.0", + "typescript": "^5.9.3" } }, "node_modules/@babel/code-frame": { @@ -528,6 +529,7 @@ "integrity": "sha512-oNXsh2ywth5aowwIa7RKtawnkdH6LgU1ztfP9AIUCQCvzysB+WeU8o2kyyosDPwBZutPpjZDKPQGIzzrfTWweQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.1", @@ -1552,6 +1554,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2164,6 +2167,7 @@ "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -3387,6 +3391,7 @@ "integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -6043,6 +6048,7 @@ "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", "dev": true, "license": "MIT", + "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -9056,6 +9062,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -10261,6 +10268,7 @@ "integrity": "sha512-g7RssbTAbir1k/S7uSwSVZFfFXwpomUB9Oas0+xi9KStSCmeDXcA7rNhiskjLqvUe/Evhx8fVCT16OSa34eM5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@semantic-release/commit-analyzer": "^13.0.0-beta.1", "@semantic-release/error": "^4.0.0", @@ -11708,9 +11716,9 @@ } }, "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "peer": true, diff --git a/package.json b/package.json index 8827ebf..2f9552f 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "simple batch system provides job schduler like async function queueing system.", "type": "module", "main": "lib/index.js", + "types": "lib/index.d.ts", "repository": "github:so5/sbs", "scripts": { "mocha": "mocha \"test/**/*.js\"", @@ -42,7 +43,8 @@ "mocha": "10.8.2", "mocha-lcov-reporter": "^1.3.0", "semantic-release": "^24.2.7", - "sinon": "15.2.0" + "sinon": "15.2.0", + "typescript": "^5.9.3" }, "dependencies": { "debug": "^4.3.4", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0b74042 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "allowJs": true, + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "lib" + }, + "include": ["lib/**/*.js"], + "exclude": ["node_modules"] +} From 2098f22f3369e1333996d8565b498eace07e5cf2 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 14:22:03 +0000 Subject: [PATCH 2/2] chore: Add .npmignore file --- .npmignore | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.npmignore b/.npmignore index bb3c08c..724d76d 100644 --- a/.npmignore +++ b/.npmignore @@ -1,2 +1,17 @@ -test -coverage +.git/ +.github/ +.husky/ +test/ +.*rc +*.config.js +tsconfig.json +.nyc_output/ +coverage/ +node_modules/ +.npm +.eslintcache +.env +.DS_Store +npm-debug.log* +yarn-debug.log* +yarn-error.log*