@escapace/sequentialize
Advanced tools
| var __defProp = Object.defineProperty; | ||
| var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; | ||
| var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); | ||
| // src/deferred.ts | ||
| var Deferred = class { | ||
| constructor() { | ||
| // eslint-disable-next-line typescript/no-explicit-any | ||
| __publicField(this, "_reject"); | ||
| __publicField(this, "_resolve"); | ||
| __publicField(this, "fate"); | ||
| __publicField(this, "state"); | ||
| __publicField(this, "promise"); | ||
| this.state = "pending"; | ||
| this.fate = "unresolved"; | ||
| this.promise = new Promise((resolve, reject) => { | ||
| this._resolve = resolve; | ||
| this._reject = reject; | ||
| }); | ||
| this.promise.then( | ||
| () => this.state = "fulfilled", | ||
| () => this.state = "rejected" | ||
| ); | ||
| } | ||
| isFulfilled() { | ||
| return this.state === "fulfilled"; | ||
| } | ||
| isPending() { | ||
| return this.state === "pending"; | ||
| } | ||
| isRejected() { | ||
| return this.state === "rejected"; | ||
| } | ||
| isResolved() { | ||
| return this.fate === "resolved"; | ||
| } | ||
| // eslint-disable-next-line typescript/no-explicit-any | ||
| reject(reason) { | ||
| if (this.fate === "resolved") { | ||
| throw new Error("Deferred cannot be resolved twice"); | ||
| } | ||
| this.fate = "resolved"; | ||
| if (this._reject !== void 0) { | ||
| this._reject(reason); | ||
| } | ||
| } | ||
| resolve(value) { | ||
| if (this.fate === "resolved") { | ||
| throw new Error("Deferred cannot be resolved twice"); | ||
| } | ||
| this.fate = "resolved"; | ||
| if (this._resolve !== void 0) { | ||
| this._resolve(value); | ||
| } | ||
| } | ||
| }; | ||
| var deferred = () => new Deferred(); | ||
| // src/sequentialize.ts | ||
| var sequentialize = () => { | ||
| const locks = []; | ||
| return (function_) => (...arguments_) => { | ||
| for (let l = locks.length - 1; l >= 0; l -= 1) { | ||
| if (locks[l].isResolved()) { | ||
| locks.splice(l, 1); | ||
| } | ||
| } | ||
| const lock = new Deferred(); | ||
| const promises = [...locks].map((value) => value.promise); | ||
| locks.push(lock); | ||
| return Promise.all(promises).then(() => function_(...arguments_)).then((value) => { | ||
| lock.resolve(); | ||
| return value; | ||
| }).catch((reason) => { | ||
| lock.reject(reason); | ||
| return Promise.reject(reason); | ||
| }); | ||
| }; | ||
| }; | ||
| export { deferred, sequentialize }; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sources":["../../src/deferred.ts","../../src/sequentialize.ts"],"sourcesContent":null,"names":[],"mappings":"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"} |
@@ -7,16 +7,16 @@ /** | ||
| export declare class Deferred<T> { | ||
| promise: Promise<T>; | ||
| private _reject; | ||
| private _resolve; | ||
| private fate; | ||
| private state; | ||
| private _resolve; | ||
| private _reject; | ||
| promise: Promise<T>; | ||
| constructor(); | ||
| resolve(value?: T | PromiseLike<T> | undefined): void; | ||
| reject(reason?: any): void; | ||
| isResolved(): boolean; | ||
| isFulfilled(): boolean; | ||
| isPending(): boolean; | ||
| isFulfilled(): boolean; | ||
| isRejected(): boolean; | ||
| isResolved(): boolean; | ||
| reject(reason?: any): void; | ||
| resolve(value?: PromiseLike<T> | T): void; | ||
| } | ||
| export declare const deferred: <T>() => Deferred<T>; | ||
| //# sourceMappingURL=deferred.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../src/deferred.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,QAAQ,CAAC,CAAC;IACd,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAE1B,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,KAAK,CAAsC;IAEnD,OAAO,CAAC,QAAQ,CAEH;IAGb,OAAO,CAAC,OAAO,CAAsC;;IAiB9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS;IAa9C,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG;IAYnB,UAAU;IAIV,SAAS;IAIT,WAAW;IAIX,UAAU;CAGlB;AAED,eAAO,MAAM,QAAQ,sBAA6B,CAAA"} | ||
| {"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../src/deferred.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,QAAQ,CAAC,CAAC;IAErB,OAAO,CAAC,OAAO,CAAsC;IAErD,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,IAAI,CAA2B;IAEvC,OAAO,CAAC,KAAK,CAAsC;IAE5C,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;;IAiBnB,WAAW;IAIX,SAAS;IAIT,UAAU;IAIV,UAAU;IAKV,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG;IAYnB,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;CAW1C;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,kBAAwB,CAAA"} |
@@ -1,2 +0,2 @@ | ||
| export declare const sequentialize: () => <T extends (...args: any[]) => Promise<any>>(fn: T) => T; | ||
| export declare const sequentialize: () => <T extends (...arguments_: any[]) => Promise<any>>(function_: T) => T; | ||
| //# sourceMappingURL=sequentialize.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"sequentialize.d.ts","sourceRoot":"","sources":["../../src/sequentialize.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,6BAGI,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,aA2BnD,CAAA"} | ||
| {"version":3,"file":"sequentialize.d.ts","sourceRoot":"","sources":["../../src/sequentialize.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,SAGhB,CAAC,SAAS,CAAC,GAAG,UAAU,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAG,CA0B1E,CAAA"} |
+2
-1
@@ -0,1 +1,2 @@ | ||
| Mozilla Public License Version 2.0 | ||
@@ -360,3 +361,3 @@ ================================== | ||
| License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| file, You can obtain one at http://mozilla.org/MPL/2.0/. | ||
| file, You can obtain one at https://mozilla.org/MPL/2.0/. | ||
@@ -363,0 +364,0 @@ If it is not possible or desirable to put the notice in a particular |
+39
-43
| { | ||
| "name": "@escapace/sequentialize", | ||
| "description": "", | ||
| "version": "2.1.4", | ||
| "author": "escapace <opensource@escapace.com>", | ||
| "version": "3.0.0", | ||
| "author": { | ||
| "name": "escapace", | ||
| "email": "opensource@escapace.com" | ||
| }, | ||
| "bugs": "https://github.com/escapace/sequentialize/issues", | ||
| "devDependencies": { | ||
| "@commitlint/cli": "17.7.1", | ||
| "@commitlint/config-conventional": "17.7.0", | ||
| "@ls-lint/ls-lint": "2.1.0", | ||
| "@types/chai": "4.3.6", | ||
| "@types/mocha": "10.0.1", | ||
| "@types/node": "20.6.3", | ||
| "@types/sinon": "10.0.16", | ||
| "@typescript-eslint/eslint-plugin": "6.7.2", | ||
| "@typescript-eslint/parser": "6.7.2", | ||
| "c8": "8.0.1", | ||
| "chai": "4.3.8", | ||
| "esbuild": "0.19.3", | ||
| "eslint": "8.49.0", | ||
| "eslint-config-escapace": "3.18.1", | ||
| "eslint-config-prettier": "9.0.0", | ||
| "eslint-plugin-editorconfig": "4.0.3", | ||
| "eslint-plugin-no-null": "1.0.2", | ||
| "execa": "8.0.1", | ||
| "fast-glob": "3.3.1", | ||
| "fs-extra": "11.1.1", | ||
| "husky": "8.0.3", | ||
| "is-ci": "3.0.1", | ||
| "lint-staged": "14.0.1", | ||
| "mocha": "10.2.0", | ||
| "prettier": "3.0.3", | ||
| "prettier-config-escapace": "1.0.6", | ||
| "semver": "7.5.4", | ||
| "sinon": "16.0.0", | ||
| "syncpack": "11.2.1", | ||
| "typescript": "5.2.2" | ||
| "@commitlint/cli": "19.6.0", | ||
| "@commitlint/config-conventional": "19.6.0", | ||
| "@escapace/pnpm-pack": "0.5.3", | ||
| "@ls-lint/ls-lint": "2.2.3", | ||
| "@vitest/coverage-v8": "2.1.8", | ||
| "eslint": "9.17.0", | ||
| "eslint-config-escapace": "5.4.0", | ||
| "esroll": "0.3.0", | ||
| "knip": "5.40.0", | ||
| "lefthook": "1.9.2", | ||
| "prettier": "3.4.2", | ||
| "prettier-config-escapace": "1.2.1", | ||
| "syncpack": "13.0.0", | ||
| "tsx": "4.19.2", | ||
| "typescript": "5.7.2", | ||
| "vitest": "2.1.8" | ||
| }, | ||
| "engines": { | ||
| "node": ">= 18.18.0", | ||
| "pnpm": ">= 8.7.6" | ||
| "pnpm": ">=9.14.4" | ||
| }, | ||
| "exports": { | ||
| ".": { | ||
| "import": "./lib/esm/index.mjs", | ||
| "types": "./lib/types/index.d.ts" | ||
| "types": "./lib/types/index.d.ts", | ||
| "import": "./lib/neutral/index.js" | ||
| } | ||
| }, | ||
| "files": [ | ||
| "lib/esm", | ||
| "lib/neutral", | ||
| "lib/types" | ||
| ], | ||
| "homepage": "https://github.com/escapace/sequentialize", | ||
| "homepage": "https://github.com/escapace/sequentialize#readme", | ||
| "license": "MPL-2.0", | ||
| "module": "lib/esm/index.mjs", | ||
| "module": "lib/neutral/index.js", | ||
| "private": false, | ||
| "repository": "https://github.com/escapace/sequentialize.git", | ||
| "publishConfig": { | ||
| "access": "public", | ||
| "provenance": true | ||
| }, | ||
| "repository": "escapace/sequentialize", | ||
| "sideEffects": false, | ||
@@ -62,7 +54,11 @@ "type": "module", | ||
| "scripts": { | ||
| "build": "node ./scripts/build.mjs", | ||
| "lint": "ls-lint && eslint 'src/**/*.{js,mjs,cjs,ts,mts,cts}'", | ||
| "test": "node ./scripts/test.mjs && c8 mocha --enable-source-maps 'lib/tests/**/*.spec.js'", | ||
| "build": "tsx scripts/build.ts", | ||
| "format": "syncpack format && eslint --no-warn-ignored --fix && prettier -uw .", | ||
| "lint": "ls-lint --config .ls-lint.yaml && knip --no-config-hints && eslint", | ||
| "ls-lint": "ls-lint --config .ls-lint.yaml", | ||
| "pack": "pnpm-pack package --pack-destination lib", | ||
| "syncpack": "syncpack fix-mismatches && syncpack set-semver-ranges && syncpack format", | ||
| "test": "vitest --no-watch --coverage", | ||
| "typecheck": "tsc --noEmit" | ||
| } | ||
| } |
| // src/deferred.ts | ||
| var Deferred = class { | ||
| promise; | ||
| fate; | ||
| state; | ||
| _resolve; | ||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
| _reject; | ||
| constructor() { | ||
| this.state = "pending", this.fate = "unresolved", this.promise = new Promise((resolve, reject) => { | ||
| this._resolve = resolve, this._reject = reject; | ||
| }), this.promise.then( | ||
| () => this.state = "fulfilled", | ||
| () => this.state = "rejected" | ||
| ); | ||
| } | ||
| resolve(value) { | ||
| if (this.fate === "resolved") | ||
| throw new Error("Deferred cannot be resolved twice"); | ||
| this.fate = "resolved", this._resolve !== void 0 && this._resolve(value); | ||
| } | ||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | ||
| reject(reason) { | ||
| if (this.fate === "resolved") | ||
| throw new Error("Deferred cannot be resolved twice"); | ||
| this.fate = "resolved", this._reject !== void 0 && this._reject(reason); | ||
| } | ||
| isResolved() { | ||
| return this.fate === "resolved"; | ||
| } | ||
| isPending() { | ||
| return this.state === "pending"; | ||
| } | ||
| isFulfilled() { | ||
| return this.state === "fulfilled"; | ||
| } | ||
| isRejected() { | ||
| return this.state === "rejected"; | ||
| } | ||
| }, deferred = () => new Deferred(); | ||
| // src/sequentialize.ts | ||
| var sequentialize = () => { | ||
| let locks = []; | ||
| return (fn) => (...args) => { | ||
| for (let l = locks.length - 1; l >= 0; l -= 1) | ||
| locks[l].isRejected() && locks.splice(l, 1); | ||
| let lock = new Deferred(), promises = locks.map(({ promise }) => promise); | ||
| return locks.push(lock), Promise.all(promises).then(() => fn(...args)).then((value) => (lock.resolve(), value)).catch((reason) => { | ||
| throw lock.resolve(), reason; | ||
| }); | ||
| }; | ||
| }; | ||
| export { | ||
| deferred, | ||
| sequentialize | ||
| }; | ||
| //# sourceMappingURL=index.mjs.map |
| { | ||
| "version": 3, | ||
| "sources": ["../../src/deferred.ts", "../../src/sequentialize.ts"], | ||
| "sourcesContent": ["/**\n * A deferred represents a promise which can be either resolved via\n * deferred.resolve or rejected via deferred.reject.The promise can be acessed\n * via the promise property on the deferred.\n */\n\nexport class Deferred<T> {\n public promise: Promise<T>\n\n private fate: 'resolved' | 'unresolved'\n private state: 'pending' | 'fulfilled' | 'rejected'\n\n private _resolve:\n | ((value?: T | PromiseLike<T> | undefined) => void)\n | undefined\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _reject: ((reason?: any) => void) | undefined\n\n constructor() {\n this.state = 'pending'\n this.fate = 'unresolved'\n\n this.promise = new Promise((resolve, reject) => {\n this._resolve = resolve as typeof this._resolve\n this._reject = reject\n })\n\n this.promise.then(\n () => (this.state = 'fulfilled'),\n () => (this.state = 'rejected')\n )\n }\n\n public resolve(value?: T | PromiseLike<T> | undefined) {\n if (this.fate === 'resolved') {\n throw new Error('Deferred cannot be resolved twice')\n }\n\n this.fate = 'resolved'\n\n if (this._resolve !== undefined) {\n this._resolve(value)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public reject(reason?: any) {\n if (this.fate === 'resolved') {\n throw new Error('Deferred cannot be resolved twice')\n }\n\n this.fate = 'resolved'\n\n if (this._reject !== undefined) {\n this._reject(reason)\n }\n }\n\n public isResolved() {\n return this.fate === 'resolved'\n }\n\n public isPending() {\n return this.state === 'pending'\n }\n\n public isFulfilled() {\n return this.state === 'fulfilled'\n }\n\n public isRejected() {\n return this.state === 'rejected'\n }\n}\n\nexport const deferred = <T>() => new Deferred<T>()\n", "/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Deferred } from './deferred'\n\nexport const sequentialize = () => {\n const locks: Array<Deferred<any>> = []\n\n return <T extends (...args: any[]) => Promise<any>>(fn: T): T => {\n return ((...args: any[]) => {\n for (let l = locks.length - 1; l >= 0; l -= 1) {\n if (locks[l].isRejected()) {\n locks.splice(l, 1)\n }\n }\n\n const lock = new Deferred<any>()\n const promises = locks.map(({ promise }) => promise)\n\n locks.push(lock)\n\n return Promise.all(promises)\n .then(() => fn(...args))\n .then((value) => {\n lock.resolve()\n\n return value\n })\n .catch((reason) => {\n lock.resolve()\n\n throw reason\n })\n }) as T\n }\n}\n"], | ||
| "mappings": ";AAMO,IAAM,WAAN,MAAkB;AAAA,EAChB;AAAA,EAEC;AAAA,EACA;AAAA,EAEA;AAAA;AAAA,EAKA;AAAA,EAER,cAAc;AACZ,SAAK,QAAQ,WACb,KAAK,OAAO,cAEZ,KAAK,UAAU,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC9C,WAAK,WAAW,SAChB,KAAK,UAAU;AAAA,IACjB,CAAC,GAED,KAAK,QAAQ;AAAA,MACX,MAAO,KAAK,QAAQ;AAAA,MACpB,MAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAEO,QAAQ,OAAwC;AACrD,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI,MAAM,mCAAmC;AAGrD,SAAK,OAAO,YAER,KAAK,aAAa,UACpB,KAAK,SAAS,KAAK;AAAA,EAEvB;AAAA;AAAA,EAGO,OAAO,QAAc;AAC1B,QAAI,KAAK,SAAS;AAChB,YAAM,IAAI,MAAM,mCAAmC;AAGrD,SAAK,OAAO,YAER,KAAK,YAAY,UACnB,KAAK,QAAQ,MAAM;AAAA,EAEvB;AAAA,EAEO,aAAa;AAClB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEO,YAAY;AACjB,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EAEO,cAAc;AACnB,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EAEO,aAAa;AAClB,WAAO,KAAK,UAAU;AAAA,EACxB;AACF,GAEa,WAAW,MAAS,IAAI,SAAY;;;ACtE1C,IAAM,gBAAgB,MAAM;AACjC,MAAM,QAA8B,CAAC;AAErC,SAAO,CAA6C,OAC1C,IAAI,SAAgB;AAC1B,aAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,MAAI,MAAM,CAAC,EAAE,WAAW,KACtB,MAAM,OAAO,GAAG,CAAC;AAIrB,QAAM,OAAO,IAAI,SAAc,GACzB,WAAW,MAAM,IAAI,CAAC,EAAE,QAAQ,MAAM,OAAO;AAEnD,iBAAM,KAAK,IAAI,GAER,QAAQ,IAAI,QAAQ,EACxB,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC,EACtB,KAAK,CAAC,WACL,KAAK,QAAQ,GAEN,MACR,EACA,MAAM,CAAC,WAAW;AACjB,iBAAK,QAAQ,GAEP;AAAA,IACR,CAAC;AAAA,EACL;AAEJ;", | ||
| "names": [] | ||
| } |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
16
-46.67%102
27.5%25056
-5.01%1
Infinity%