- #527 [Feature] Add
setMaxSyncPromiseChainDepthto cap synchronous promise chain depth- New exported function
setMaxSyncPromiseChainDepth(maxDepth?: number)allows configuring the maximum number of synchronous.then()continuations that may execute in a single turn before the chain is deferred via a microtask hop. Defaults to 200. - Behavior change: deep synchronous promise chains (longer than the configured max depth) will yield asynchronously once the limit is exceeded, meaning a
createSyncPromise/createSyncResolvedPromisechain may remain pending temporarily for very deep/recursive chains. - Pass no argument (or
undefined) to reset back to the default depth.
- New exported function
- #528 [BUG] Fix unbounded loop in timeout normalization and long-chain timeout propagation
_normalizeTimeoutValueunwrapped nested array timeout values with no iteration cap; a self-referential array (e.g.const a: any[] = []; a[0] = a;) passed as a timeout would loop forever. The unwrap loop is now capped at 5 iterations, falling back to the default timeout if no numeric value is found within that bound.createAsyncPromisewas re-wrapping the raw (potentially array) timeout as the chained promise's additional args on everythen()/catch()/finally()link, growing an extra array-nesting level per link. Combined with the new depth cap this silently dropped an explicit timeout after ~5-6 chained calls. Fixed by normalizing the timeout once before it is stored, matching the existingcreateIdlePromisepattern, so nesting never exceeds one level regardless of chain length.
- [Feature] Add
setDisableFakeTimersDetectionto allow opting out of Sinon fake-timer fingerprinting- New exported function
setDisableFakeTimersDetection(disable?: boolean)allows a consumer to force the library's internal Sinon-fake-timer detection (a patchedsetTimeout.clockfingerprint used to decide whether deferred continuations use a0mstimeout or a microtask) to always report "not present", so deferred work always uses a real microtask. - Default behavior (detection enabled) is unchanged when never called, or called with
undefined. Any other value is coerced via!!. - See Fake Timer Detection for full details and side effects.
- New exported function
- #517 [CHORE] Address issues with
/*#__PURE__*/annotations placed inside parens causing Rolldown/Vite 8 issues- /* #PURE*/ annotations in the published ESM/ES5 bundles are positioned inside the wrapping parentheses, between the open paren and the annotated expression. Rolldown, used by Vite 8 cannot associate the annotation with the expression that follows it, so the annotation is silently ignored and dead-code elimination does not kick in for the affected values.
- #516 [TASK] Update changelog
For full details see v0.6.0...v0.6.1
- #508 [Bug] Fix
IPromise.finally()to await returned promises per ES2018 specPromise.finally()was ignoring the return value of theonFinallycallback. Per the ES2018 specification (ECMA-262 §27.2.5.3), ifonFinallyreturns a promise/thenable, the resulting promise must wait for it to settle before propagating the original value or reason. If the returned promise rejects, that rejection takes precedence.
- #488 [CHORE] Drop Node.js 16 from CI matrix and add Node.js 24
- Node.js 16 is end-of-life and is no longer supported by key tooling dependencies (for example
puppeteerand@pnpm/errorrequire Node.js >= 18)
- Node.js 16 is end-of-life and is no longer supported by key tooling dependencies (for example
- #499 [BUG] Fix compilation errors for consumers using ES5-only TypeScript lib settings
- Add
/// <reference lib="es2018" />directive to published declaration file so consumers no longer need to manually add ES2018 libs to their tsconfig - Add
"lib": ["es2018", "dom"]to build and test tsconfig files - Add post-processing script to restore reference directive stripped by api-extractor
- Add
- #509 [BUG] Fix
Promise.then()behavior to ignore non-function handlers per Promises/A+ 2.2.1 - #511 [BUG] Fix
doFinallyfallback to await thenables returned byonFinally - #505 [BUG] Ensure settled tasks are removed from scheduler queues when stale timeout is disabled
- #514 [REFACTOR]
setTimeoutused instead of microtask queue for promise resolution#503 - #450 [CHORE] Bump
@nevware21components to latest recommended versions - #430 [TEST] Replace
chaiwith@nevware21/tripwirefor assertion testing
For full details see v0.5.5...v0.6.0
- #420 [REFACTOR] Fix signatures to use and return IPromise interface instead of Promise
- Add isPlainObject validation to Promise tests to ensure different Promise implementations return expected object types
- #363 [BUG] Fix @sinonjs/samsam dependency compatibility issue
- Downgrade sinon from v15.0.0 to v14.0.0 to resolve optional chaining syntax parsing error in browser tests
- This fixes karma-typescript parser error: "Unexpected token (197:30)" in @sinonjs/samsam v8.0.3
- Now uses @sinonjs/samsam v7.0.1 which is compatible with the karma-typescript parser
For full details see v0.5.4...v0.5.5
- #241 Update dependabot.yml
- #242 Bump actions/checkout from 2 to 4
- #243 Bump github/codeql-action from 2 to 3
- #244 Bump actions/configure-pages from 4 to 5
- #247 Bump rollup-plugin-istanbul from 4.0.0 to 5.0.0 in /lib
- #246 Bump @types/sinon from 10.0.20 to 17.0.3 in /lib
- #249 Bump nyc from 15.1.0 to 17.1.0 in /lib
- #250 Bump @rollup/plugin-typescript from 11.1.6 to 12.1.1 in /lib
- #251 Bump rollup from 3.29.5 to 4.26.0 in /lib
- #245 Bump codecov/codecov-action from 2 to 4
- #254 Bump @rollup/plugin-commonjs from 25.0.8 to 28.0.1 in /lib
- #255 Bump @microsoft/rush from 5.140.0 to 5.140.1
- #257 Update to use ts-build-tools instead of local
- #260 Bump @nevware21/ts-build-tools to ^0.1.3
- #259 Bump codecov/codecov-action from 4 to 5
- #267 Create FUNDING.yml
- #268 Update FUNDING.yml
- #277 [doc] TSDoc Error During Build
- #280 [doc] TSDoc Error During Build #277
- #281 Bump @microsoft/rush from 5.140.1 to 5.147.0
- #282 Bump @nevware21/ts-utils from 0.11.5 to 0.11.6
- #283 Fixup rollup pure warnings
- #237 [BUG] Sourcemap load errors in debugger from @nevware21 dependencies
- Also Bumps ts-utils to 0.11.5
- #218 Bump @nevware21/grunt-ts-plugin from 0.4.5 to 0.4.6
- #219 Bump @nevware21/grunt-eslint-ts from 0.2.4 to 0.2.5
- #220 Bump @nevware/grunt-ts-plugin and grunt-es-plugin to 0.5.0
- #229 chore: Update codecov uploading
- #230 chore: Update to auto generate docs and remove typedoc from repo
- #228 chore: Update to ts-utils 0.11.4
- #231 Exclude typedoc folder
- #232 update @nevware21/grunt plugins from 0.5.0 to ^0.5.1
- #233 Update doAwait docs
- #234 Typeedoc: Fixup name issue
- #235 Bump puppeteer from 21.6.0 to 23.4.0
- #236 Bump @types/chai from 4.3.20 to 5.0.0
- #173 Bump @microsoft/rush from 5.120.4 to 5.121.0
- #174 Bump @microsoft/rush from 5.121.0 to 5.122.0
- #183 Bump @microsoft/rush from 5.122.0 to 5.124.6
- #210 Update Copyright message to comply with LLC operating agreement
- #195 Bump nyc from 15.1.0 to 17.0.0
- #212 Bump @nevware21/ts-utils from 0.11.2 to 0.11.3
- #213 Bump typedoc from 0.25.13 to 0.26.2
- #214 Bump @microsoft/rush from 5.124.6 to 5.129.6
- #165 Generate single unified es module for exports
- Minification hints and optimizations for webpack using ts-utils 0.11.2
- #162 Bump @microsoft/rush from 5.118.7 to 5.120.0
- #164 Bump @microsoft/rush from 5.120.0 to 5.120.2
- #167 Bump @microsoft/rush from 5.120.2 to 5.120.4
- #115 [Feature] Add size tests
- #116 [Bug] createAllPromise signature is different from native Promise.all
- #117 [Feature] Add Asynchronous helper functions
- #132 [Bug] Package sizes are too large
- #148 [Feature] Add Race and Any Promise support
- #149 Update rush.json to 5.118.1
- #119 Update generation for better Tree-Shaking
- #108 [Bug] doAwaitResponse should return / handle any additional value returned by the callback function
- #79 [Bug] remove typescript should not be a peer dependency
- #82 Bump @nevware21/ts-utils to minimum of 0.10.0
- #81 Bump @microsoft/rush to 5.102.0
- #74 Bump @typescript-eslint/eslint-plugin from 5.62.0 to 6.1.0
- #65 [Bug] Dependency @nevware21/tools-pre-proc@0.1.0 cannot be resolved
- #54 Add Pre-Processor to remove _debugLog from modules
- This removes the debug / test code from the final generated packages (resulting in smaller production bundles)
- #57 Bump @rollup/plugin-commonjs from 24.1.0 to 25.0.0 in /lib
- #60 Bump @nevware21/ts-utils min version from 0.9.5 to 0.9.7
- #61 Bump @microsoft/rush from 5.98.0 to 5.99.0
- #62 Create SECURITY.md
- #63 Add Issue Templates
- #50 [Bug] SCRIPT5009: 'Promise' is undefined
- #52 Update ts-utils to 0.9.5
- #47 Add alias for Promise to avoid matching "new Promise"
- #46 Bump typedoc to ^0.24.4
- #45 Update release packaging and publishing steps
- #44 Bump @microsoft/rush from 5.97.0 to 5.97.1
- #39 Bump @microsoft/rush from 5.95.0 to 5.97.0
- #36 [Packaging] The single module file is causing some packagere issues
- Update ts-utils version to 0.9.3
- Update rush to 5.95.0
- #27 [Bug] v0.2.0 of the scheduler is throwing an error when a waited task rejects
- #28 Update to ts-utils@0.8.1
- #23 [Feature] Migrate Promise based Task Scheduler
- Migrated the task scheduler from internal usage to public
- Uses promises to sequence tasks
- #18 [Bug] Version 0.1.1 does not support resolving a promise with a promise properly.
- #20 Update Packaging to create single rollup packages
- #12 Update prep_release target to copy README.md to npm pack
- #13 Add root coverage config
- #14 Update npm pack to also copy LICENSE file
- #15 chore: Fix worker coverage reporting.
- #1 Initial Implementation includes