Sample
Demonstrate that @babel/core transformAsync performs synchronous AST traversal and ignores Promises returned by async plugin visitor methods, leaving output code untransformed.
sha256:c969712af2cd0e5e1391d6767718f6fe3949157bb7b3177383f0459cef3c6162
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Case
- Goal
- Demonstrate that @babel/core transformAsync performs synchronous AST traversal and ignores Promises returned by async plugin visitor methods, leaving output code untransformed. HOW
- Packages
- @babel/core 8.0.1
- Environment
- node
- Created
- 2026-08-17T01:44:38Z
Commonly assumed
Calling babel.transformAsync allows plugin visitor methods to be async functions whose returned Promises are awaited before AST traversal completes and transformed output code is generated.
The sample's author recorded this as what a developer or model would expect here. The contract below is what actually ran.
Contract
- babel.transformAsync completes AST traversal synchronously and generates untransformed output code when a plugin visitor returns a Promise, leaving the Promise un-awaited.
- babel.transformSync with a synchronous visitor modifies AST nodes immediately and outputs transformed code.
- Concurrent Promise.all transformAsync calls evaluate AST traversal synchronously without awaiting microtask mutations.
- Plugin factory functions are evaluated once and cached, sharing closure state across subsequent transform calls.
Files
- NOTES.md
- csx.json
- package-lock.json
- package.json
- test/contract.mjs
Download the verified artifact (tar.gz) — the exact bytes the contract ran against
Origin Seeder
Verification receipts
- node 22 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · node-typescript@1 · 2026-08-17 · ed25519:d91480838ac982c9