1.3 KiB
1.3 KiB
Project Memory - Smartdata
TC39 Decorator Pattern
- Field decorators: Write to
context.metadata - Class decorators: Read from
context.metadata(same shared object) Symbol.metadataon constructors is read-only (managed by runtime)- Field decorators run before class decorators (guaranteed order)
declarekeyword for instance properties accessed via prototype getters (avoids ES2022 shadowing)
Runtime Compatibility
- ✅ Node.js v20+ / v25+: Full TC39 support
- ✅ Deno v2.x: Full TC39 support
- ❌ Bun: No TC39 support (uses legacy decorators only)
Build Configuration (v7.1.0+)
- Build tool:
@git.zone/tsbuildv4 withtsbuild tsfolders - tsconfig.json: Includes
"types": ["node"]since tsbuild v4 defaults to DOM+ESNext lib only - Strict mode: tsbuild v4 enables strict checks; properties use
!definite assignment ordeclare - Test imports: Use
@git.zone/tstest/tapbundle(NOT@push.rocks/tapbundle) - Config file:
.smartconfig.json(renamed fromnpmextra.json)
Dependencies (v7.1.0+)
@push.rocks/taskbufferv8: distributedCoordination API attaskbuffer.distributedCoordination.*@push.rocks/smartmongov5: API compatible (createAndStart,getMongoDescriptor,stop,stopAndDumpToDir)mongodbv7.1: ChangeStream requiresDocumentconstraint, useanyfor generic watcher