// the find
wycats/javascript-decorators
The original TC39 decorators proposal from Yehuda Katz, which kickstarted the long journey to getting decorators into JavaScript. It describes the Stage 1 design — a descriptor-based model where decorators receive `(target, name, descriptor)` — which was later abandoned in favor of a completely different design. This repo is now a historical artifact; the actual proposal lives at tc39/proposal-decorators.
The descriptor-based desugaring examples are genuinely clear — reading through the ES5/ES6 desugarings gives you a solid mental model of what decorator syntax actually means at runtime. The grammar section is precise and useful for anyone who wanted to understand the syntactic rules. It influenced TypeScript's experimentalDecorators implementation, so this design is still running in millions of production apps today. The interop notes on private state and reusability show the proposal authors were thinking seriously about edge cases.
This design is dead. TC39 rejected the descriptor-based model and shipped a completely different API in ES2022+; anything built on this proposal (TypeScript experimentalDecorators, Babel legacy mode) is now technical debt. Last commit was 2021, README just says 'moved' — zero value in looking here for current behavior. The README doesn't explain *why* this design was dropped, which is the actually interesting thing to know. No implementation notes, no migration path.