lombok-typescript 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -5
- package/dist/cli/index.cjs +8 -0
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/codegen/index.cjs +8 -0
- package/dist/codegen/index.cjs.map +1 -1
- package/dist/codegen/index.js +8 -0
- package/dist/codegen/index.js.map +1 -1
- package/dist/legacy/index.cjs +135 -0
- package/dist/legacy/index.cjs.map +1 -1
- package/dist/legacy/index.d.cts +9 -3
- package/dist/legacy/index.d.ts +9 -3
- package/dist/legacy/index.js +133 -1
- package/dist/legacy/index.js.map +1 -1
- package/dist/{chain-of-responsibility-CQ7votcC.d.cts → proxy-BJ6_DDQ0.d.cts} +10 -1
- package/dist/{chain-of-responsibility-Dwsaoe4x.d.ts → proxy-BQ3WvvT_.d.ts} +10 -1
- package/dist/stage3/index.cjs +139 -0
- package/dist/stage3/index.cjs.map +1 -1
- package/dist/stage3/index.d.cts +9 -3
- package/dist/stage3/index.d.ts +9 -3
- package/dist/stage3/index.js +137 -1
- package/dist/stage3/index.js.map +1 -1
- package/package.json +5 -5
package/dist/legacy/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/legacy/backend.ts","../../src/legacy/decorate.ts","../../src/core/metadata-keys.ts","../../src/decorators/shared/factory.ts","../../src/decorators/shared/non-null.ts","../../src/decorators/shared/singleton.ts","../../src/utils/index.ts","../../src/decorators/shared/prototype.ts","../../src/decorators/shared/memoize.ts","../../src/decorators/shared/memoize-logic.ts","../../src/decorators/shared/accessors.ts","../../src/decorators/shared/markers.ts","../../src/decorators/shared/delegate.ts","../../src/decorators/shared/equals.ts","../../src/decorators/shared/field-defaults.ts","../../src/decorators/shared/getter.ts","../../src/decorators/shared/log.ts","../../src/decorators/shared/setter.ts","../../src/decorators/shared/utility-class.ts","../../src/decorators/shared/value.ts","../../src/decorators/shared/with.ts","../../src/decorators/shared/strategy.ts","../../src/decorators/shared/transition.ts","../../src/decorators/shared/state.ts","../../src/decorators/shared/command.ts","../../src/decorators/shared/command-history.ts","../../src/decorators/shared/memento.ts","../../src/decorators/shared/observable.ts","../../src/decorators/shared/chain-of-responsibility.ts","../../src/decorators/shared/iterable.ts","../../src/decorators/legacy/index.ts"],"names":["Singleton","Prototype","proto"],"mappings":"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","file":"index.js","sourcesContent":["import 'reflect-metadata';\nimport type { Backend } from '../core/backend.js';\nimport type { MetadataStore } from '../core/metadata-store.js';\nimport type { MetadataKeyList, PropertyName } from '../core/types.js';\n\n/**\n * `MetadataStore` that delegates to the global `Reflect.metadata` registry from\n * `reflect-metadata`. Storage layer for the legacy `experimentalDecorators`\n * standard.\n */\nclass ReflectMetadataStore implements MetadataStore {\n set<V>(key: string, target: object, propertyKey: PropertyName | undefined, value: V): void {\n if (propertyKey === undefined) {\n Reflect.defineMetadata(key, value, target);\n } else {\n Reflect.defineMetadata(key, value, target, propertyKey);\n }\n }\n\n get<V>(key: string, target: object, propertyKey?: PropertyName): V | undefined {\n if (propertyKey === undefined) {\n return Reflect.getOwnMetadata(key, target) as V | undefined;\n }\n return Reflect.getOwnMetadata(key, target, propertyKey) as V | undefined;\n }\n\n has(key: string, target: object, propertyKey?: PropertyName): boolean {\n if (propertyKey === undefined) {\n return Reflect.hasOwnMetadata(key, target);\n }\n return Reflect.hasOwnMetadata(key, target, propertyKey);\n }\n\n delete(key: string, target: object, propertyKey?: PropertyName): boolean {\n const had = this.has(key, target, propertyKey);\n if (!had) return false;\n if (propertyKey === undefined) {\n Reflect.deleteMetadata(key, target);\n } else {\n Reflect.deleteMetadata(key, target, propertyKey);\n }\n return true;\n }\n\n list(target: object, propertyKey?: PropertyName): MetadataKeyList {\n if (propertyKey === undefined) {\n return (Reflect.getOwnMetadataKeys(target) as PropertyName[]).map(String);\n }\n return (Reflect.getOwnMetadataKeys(target, propertyKey) as PropertyName[]).map(String);\n }\n}\n\n/** Backend for the legacy `experimentalDecorators` standard. Use the singleton `legacyBackend`. */\nexport class LegacyBackend implements Backend {\n readonly kind = 'legacy' as const;\n readonly metadata: MetadataStore = new ReflectMetadataStore();\n}\n\n/** Shared instance. Legacy decorators rely on global metadata storage anyway. */\nexport const legacyBackend = new LegacyBackend();\n","import type { Backend } from '../core/backend.js';\nimport type { PropertyName } from '../core/types.js';\nimport { legacyBackend } from './backend.js';\n\n/** A class constructor, used in place of bare `Function` in decorator signatures. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyClass = new (...args: any[]) => any;\n\n/** Logic shapes for legacy decorator authoring. */\nexport interface ClassDecoratorLogic {\n (backend: Backend, target: AnyClass): AnyClass | void;\n}\n\nexport interface FieldDecoratorLogic {\n (backend: Backend, targetPrototype: object, propertyKey: PropertyName): void;\n}\n\nexport interface MethodDecoratorLogic<T = unknown> {\n (\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: TypedPropertyDescriptor<T>,\n ): TypedPropertyDescriptor<T> | void;\n}\n\nexport interface ParameterDecoratorLogic {\n (\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName | undefined,\n parameterIndex: number,\n ): void;\n}\n\n/**\n * Build a class decorator with the legacy signature. The constructor comes in\n * as `target`; an optional replacement constructor can be returned.\n *\n * @example\n * const Tracked = defineClassDecorator((backend, target) => {\n * backend.metadata.set('tracked', target, undefined, true);\n * });\n */\nexport function defineClassDecorator(logic: ClassDecoratorLogic): ClassDecorator {\n return ((target: AnyClass) => logic(legacyBackend, target)) as ClassDecorator;\n}\n\n/**\n * Build a field/property decorator with the legacy signature. Field decorators\n * can't return a replacement value here; use a method decorator or the codegen\n * path for that.\n */\nexport function defineFieldDecorator(logic: FieldDecoratorLogic): PropertyDecorator {\n return ((target: object, propertyKey: string | symbol) => {\n logic(legacyBackend, target, propertyKey);\n }) as PropertyDecorator;\n}\n\n/** Build a method decorator with the legacy signature. */\nexport function defineMethodDecorator<T = unknown>(\n logic: MethodDecoratorLogic<T>,\n): MethodDecorator {\n return ((\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<T>,\n ) => {\n return logic(legacyBackend, target, propertyKey, descriptor);\n }) as MethodDecorator;\n}\n\n/** Build a parameter decorator with the legacy signature. */\nexport function defineParameterDecorator(logic: ParameterDecoratorLogic): ParameterDecorator {\n return ((target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n logic(legacyBackend, target, propertyKey, parameterIndex);\n }) as ParameterDecorator;\n}\n","/**\n * Metadata keys used across the library. Adding one? Use the `lombok-ts:`\n * prefix and check `metadata-keys.test.ts` so uniqueness stays enforced.\n */\n\nconst PREFIX = 'lombok-ts:';\n\nexport const MetadataKeys = {\n // Class-level (Lombok)\n DATA: `${PREFIX}data`,\n VALUE: `${PREFIX}value`,\n BUILDER: `${PREFIX}builder`,\n TO_STRING: `${PREFIX}toString`,\n EQUALS: `${PREFIX}equals`,\n UTILITY_CLASS: `${PREFIX}utilityClass`,\n FIELD_DEFAULTS: `${PREFIX}fieldDefaults`,\n ACCESSORS: `${PREFIX}accessors`,\n LOG: `${PREFIX}log`,\n\n // Class-level (TS-only)\n OBSERVABLE: `${PREFIX}observable`,\n SERIALIZABLE: `${PREFIX}serializable`,\n DEEP_FREEZE: `${PREFIX}deepFreeze`,\n TRACE: `${PREFIX}trace`,\n\n // Class-level (GoF)\n SINGLETON: `${PREFIX}singleton`,\n FACTORY: `${PREFIX}factory`,\n ABSTRACT_FACTORY: `${PREFIX}abstractFactory`,\n PROTOTYPE: `${PREFIX}prototype`,\n ADAPTER: `${PREFIX}adapter`,\n BRIDGE: `${PREFIX}bridge`,\n COMPOSITE: `${PREFIX}composite`,\n WRAPS: `${PREFIX}wraps`,\n FACADE: `${PREFIX}facade`,\n FLYWEIGHT: `${PREFIX}flyweight`,\n PROXY: `${PREFIX}proxy`,\n CHAIN_OF_RESPONSIBILITY: `${PREFIX}chainOfResponsibility`,\n COMMAND: `${PREFIX}command`,\n INTERPRETER: `${PREFIX}interpreter`,\n ITERABLE: `${PREFIX}iterable`,\n MEDIATOR: `${PREFIX}mediator`,\n MEMENTO: `${PREFIX}memento`,\n MEMENTO_EXCLUDE: `${PREFIX}memento:exclude`,\n STATE: `${PREFIX}state`,\n STRATEGY: `${PREFIX}strategy`,\n TEMPLATE_METHOD: `${PREFIX}templateMethod`,\n VISITABLE: `${PREFIX}visitable`,\n VISITOR: `${PREFIX}visitor`,\n\n // Field-level\n GETTER: `${PREFIX}getter`,\n SETTER: `${PREFIX}setter`,\n NON_NULL: `${PREFIX}nonNull`,\n WITH: `${PREFIX}with`,\n DELEGATE: `${PREFIX}delegate`,\n VALIDATE: `${PREFIX}validate`,\n TO_STRING_EXCLUDE: `${PREFIX}toString:exclude`,\n TO_STRING_INCLUDE: `${PREFIX}toString:include`,\n EQUALS_EXCLUDE: `${PREFIX}equals:exclude`,\n SERIALIZABLE_EXCLUDE: `${PREFIX}serializable:exclude`,\n SERIALIZABLE_TRANSFORM: `${PREFIX}serializable:transform`,\n SERIALIZABLE_ALIAS: `${PREFIX}serializable:alias`,\n BUILDER_DEFAULT: `${PREFIX}builder:default`,\n SINGULAR: `${PREFIX}singular`,\n ITERATE_OVER: `${PREFIX}iterateOver`,\n\n // Method-level\n MEMOIZE: `${PREFIX}memoize`,\n DEBOUNCE: `${PREFIX}debounce`,\n THROTTLE: `${PREFIX}throttle`,\n RETRY: `${PREFIX}retry`,\n HANDLER: `${PREFIX}handler`,\n TRANSITION: `${PREFIX}transition`,\n HOOK: `${PREFIX}hook`,\n\n // Parameter-level\n NON_NULL_PARAM: `${PREFIX}nonNull:param`,\n\n // Internal, framework-managed\n FIELDS: `${PREFIX}internal:fields`,\n CONSTRUCTOR_PARAMS: `${PREFIX}internal:constructorParams`,\n BACKEND: `${PREFIX}internal:backend`,\n} as const;\n\nexport type MetadataKey = (typeof MetadataKeys)[keyof typeof MetadataKeys];\n\nexport const METADATA_KEY_PREFIX = PREFIX;\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\n/** Global factory registry keyed by `@Factory('key')` string. */\nconst factoryRegistry = new Map<string, AnyClass>();\n\nexport function registerFactory(key: string, ctor: AnyClass): void {\n factoryRegistry.set(key, ctor);\n}\n\nexport function createFromFactory<T = unknown>(key: string, ...args: unknown[]): T {\n const ctor = factoryRegistry.get(key);\n if (!ctor) {\n throw new Error(`No factory registered for key \"${key}\"`);\n }\n return new ctor(...args) as T;\n}\n\nexport function getFactoryRegistry(): ReadonlyMap<string, AnyClass> {\n return factoryRegistry;\n}\n\nexport function factoryClassLegacy(backend: Backend, target: AnyClass, key: string): void {\n backend.metadata.set(MetadataKeys.FACTORY, target, undefined, key);\n registerFactory(key, target);\n}\n\nexport function factoryClassStage3(\n backend: Backend,\n _value: AnyClass,\n context: ClassDecoratorContext,\n key: string,\n): void {\n backend.metadata.set(MetadataKeys.FACTORY, context.metadata as object, undefined, key);\n registerFactory(key, _value);\n}\n\nexport function codegenClassMarkerLegacy(\n backend: Backend,\n target: AnyClass,\n metadataKey: string,\n): void {\n backend.metadata.set(metadataKey, target, undefined, true);\n}\n\nexport function codegenClassMarkerStage3(\n backend: Backend,\n _value: AnyClass,\n context: ClassDecoratorContext,\n metadataKey: string,\n): void {\n backend.metadata.set(metadataKey, context.metadata as object, undefined, true);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport function assertNonNull(value: unknown, label: string): void {\n if (value === null || value === undefined) {\n throw new TypeError(`${label} must not be null or undefined`);\n }\n}\n\nexport function nonNullFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n backend.metadata.set(MetadataKeys.NON_NULL, targetPrototype, propertyKey, true);\n const key = String(propertyKey);\n let stored: unknown;\n\n Object.defineProperty(targetPrototype, propertyKey, {\n configurable: true,\n enumerable: true,\n get() {\n return stored;\n },\n set(value: unknown) {\n assertNonNull(value, key);\n stored = value;\n },\n });\n}\n\nexport function nonNullParameterLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName | undefined,\n parameterIndex: number,\n): void {\n backend.metadata.set(MetadataKeys.NON_NULL_PARAM, targetPrototype, propertyKey, parameterIndex);\n}\n\nexport function wrapMethodWithNonNullParams(\n original: (...args: unknown[]) => unknown,\n paramIndices: number[],\n methodName: string,\n): (...args: unknown[]) => unknown {\n return function (this: unknown, ...args: unknown[]) {\n for (const index of paramIndices) {\n assertNonNull(args[index], `${methodName} argument at index ${index}`);\n }\n return original.apply(this, args);\n };\n}\n\nexport function nonNullFieldStage3<This, Value>(\n backend: Backend,\n context: ClassFieldDecoratorContext<This, Value>,\n): ((this: This, initialValue: Value) => Value) | void {\n backend.metadata.set(MetadataKeys.NON_NULL, context.metadata as object, context.name, true);\n const name = String(context.name);\n return function (initialValue: Value): Value {\n assertNonNull(initialValue, name);\n return initialValue;\n };\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport function singletonClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.SINGLETON, target, undefined, true);\n\n const Singleton = class extends target {\n static #instance: object | undefined;\n\n constructor(...args: unknown[]) {\n if (Singleton.#instance) {\n return Singleton.#instance;\n }\n super(...args);\n Singleton.#instance = this as object;\n }\n };\n\n return Singleton as AnyClass;\n}\n\nexport function singletonClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.SINGLETON, context.metadata as object, undefined, true);\n\n const Singleton = class extends value {\n static #instance: object | undefined;\n\n constructor(...args: unknown[]) {\n if (Singleton.#instance) {\n return Singleton.#instance;\n }\n super(...args);\n Singleton.#instance = this as object;\n }\n };\n\n return Singleton as AnyClass;\n}\n","/** Recursively clones primitives, arrays, and plain objects. */\nexport function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => deepClone(item)) as T;\n }\n\n const cloned = {} as T;\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = deepClone(obj[key]);\n }\n }\n return cloned;\n}\n\n/** Freezes an object and recursively freezes its nested objects. */\nexport function deepFreeze<T extends object>(obj: T): Readonly<T> {\n Object.freeze(obj);\n\n for (const key of Object.keys(obj) as (keyof T)[]) {\n const value = obj[key];\n if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {\n deepFreeze(value as object);\n }\n }\n\n return obj;\n}\n\n/** Structural equality for primitives, arrays, and plain objects. */\nexport function deepEquals(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n\n if (typeof a !== typeof b) return false;\n\n if (a === null || b === null) return a === b;\n\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((item, index) => deepEquals(item, b[index]));\n }\n\n const aKeys = Object.keys(a as object);\n const bKeys = Object.keys(b as object);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every((key) =>\n deepEquals((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]),\n );\n}\n\n/** djb2-ish 32-bit hash over the JSON-serialized value. */\nexport function hashCode(obj: unknown): number {\n const str = JSON.stringify(obj);\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return hash;\n}\n\n/** Uppercase the first letter. */\nexport function capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n/** Strip dashes/underscores, capitalize the next character. */\nexport function toCamelCase(str: string): string {\n return str.replace(/[-_](.)/g, (_, char) => char.toUpperCase());\n}\n\n/** `toCamelCase` plus uppercase first letter. */\nexport function toPascalCase(str: string): string {\n const camel = toCamelCase(str);\n return capitalize(camel);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport { deepClone } from '../../utils/index.js';\n\nexport function prototypeClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.PROTOTYPE, target, undefined, true);\n\n const Prototype = class extends target {\n constructor(...args: unknown[]) {\n super(...args);\n const clone = deepClone(this) as object;\n return clone;\n }\n };\n\n return Prototype as AnyClass;\n}\n\nexport function prototypeClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.PROTOTYPE, context.metadata as object, undefined, true);\n\n const Prototype = class extends value {\n constructor(...args: unknown[]) {\n super(...args);\n const clone = deepClone(this) as object;\n return clone;\n }\n };\n\n return Prototype as AnyClass;\n}\n","export interface MemoizeOptions {\n /** Time-to-live in milliseconds. Omit for infinite cache. */\n ttl?: number;\n}\n\ninterface CacheEntry {\n value: unknown;\n expiresAt?: number;\n}\n\nconst CACHE_MISS = Symbol('memoize-cache-miss');\n\nfunction buildCacheKey(args: unknown[]): string {\n return JSON.stringify(args);\n}\n\nfunction getFromCache(\n cache: Map<string, CacheEntry>,\n key: string,\n ttl?: number,\n): unknown | typeof CACHE_MISS {\n const entry = cache.get(key);\n if (!entry) return CACHE_MISS;\n if (ttl !== undefined && entry.expiresAt !== undefined && Date.now() > entry.expiresAt) {\n cache.delete(key);\n return CACHE_MISS;\n }\n return entry.value;\n}\n\nexport function memoizeMethod<T extends (...args: unknown[]) => unknown>(\n original: T,\n options: MemoizeOptions = {},\n): T {\n const cache = new Map<string, CacheEntry>();\n const ttl = options.ttl;\n\n return function (this: unknown, ...args: unknown[]) {\n const key = buildCacheKey(args);\n const cached = getFromCache(cache, key, ttl);\n if (cached !== CACHE_MISS) {\n return cached;\n }\n const result = original.apply(this, args);\n const entry: CacheEntry = { value: result };\n if (ttl !== undefined) {\n entry.expiresAt = Date.now() + ttl;\n }\n cache.set(key, entry);\n return result;\n } as T;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { memoizeMethod, type MemoizeOptions } from './memoize.js';\n\nexport function memoizeMethodLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n options: MemoizeOptions = {},\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.MEMOIZE, targetPrototype, propertyKey, options);\n const original = descriptor.value;\n if (typeof original !== 'function') return;\n return {\n ...descriptor,\n value: memoizeMethod(original as (...args: unknown[]) => unknown, options),\n };\n}\n\nexport function memoizeMethodStage3<This, Args extends unknown[], Return>(\n backend: Backend,\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n options: MemoizeOptions = {},\n): (this: This, ...args: Args) => Return {\n backend.metadata.set(MetadataKeys.MEMOIZE, context.metadata as object, context.name, options);\n return memoizeMethod(value as (...args: unknown[]) => unknown, options) as (\n this: This,\n ...args: Args\n ) => Return;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport interface AccessorsOptions {\n /** When true, setters return `this` for chaining. Alias: `fluent`. */\n chain?: boolean;\n /** Alias for `chain`. */\n fluent?: boolean;\n}\n\nexport function normalizeAccessorsOptions(\n options: AccessorsOptions = {},\n): Required<Pick<AccessorsOptions, 'chain'>> {\n return { chain: Boolean(options.chain ?? options.fluent) };\n}\n\nexport function accessorsClassLegacy(\n backend: Backend,\n target: AnyClass,\n options: AccessorsOptions = {},\n): void {\n const normalized = normalizeAccessorsOptions(options);\n backend.metadata.set(MetadataKeys.ACCESSORS, target, undefined, normalized);\n}\n\nexport function accessorsClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n options: AccessorsOptions = {},\n): void {\n const normalized = normalizeAccessorsOptions(options);\n backend.metadata.set(MetadataKeys.ACCESSORS, context.metadata as object, undefined, normalized);\n void value;\n}\n","import type { Backend } from '../../core/backend.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport function fieldMarkerLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n metadataKey: string,\n value: unknown = true,\n): void {\n backend.metadata.set(metadataKey, targetPrototype, propertyKey, value);\n}\n\nexport function fieldMarkerStage3(\n backend: Backend,\n context: ClassFieldDecoratorContext,\n metadataKey: string,\n value: unknown = true,\n): void {\n backend.metadata.set(metadataKey, context.metadata as object, context.name, value);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport type DelegateMethods = readonly string[];\n\nexport function parseDelegateMethods(args: unknown[]): DelegateMethods {\n if (args.length === 0) return [];\n if (args.length === 1 && Array.isArray(args[0])) {\n return args[0] as string[];\n }\n return args.map(String);\n}\n\nexport function delegateFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n methods: DelegateMethods = [],\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.DELEGATE, methods);\n}\n\nexport function delegateFieldStage3(\n backend: Backend,\n context: ClassFieldDecoratorContext,\n methods: DelegateMethods = [],\n): void {\n fieldMarkerStage3(backend, context, MetadataKeys.DELEGATE, methods);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { codegenClassMarkerLegacy, codegenClassMarkerStage3 } from './factory.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport function equalsClassLegacy(backend: Backend, target: AnyClass): void {\n codegenClassMarkerLegacy(backend, target, MetadataKeys.EQUALS);\n}\n\nexport function equalsClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n codegenClassMarkerStage3(backend, value, context, MetadataKeys.EQUALS);\n}\n\nexport function equalsExcludeFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.EQUALS_EXCLUDE);\n}\n\nexport function equalsExcludeFieldStage3(\n backend: Backend,\n context: ClassFieldDecoratorContext,\n): void {\n fieldMarkerStage3(backend, context, MetadataKeys.EQUALS_EXCLUDE);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport type FieldVisibility = 'public' | 'private' | 'protected';\n\nexport interface FieldDefaultsOptions {\n /** Default visibility for generated accessors. Default `'public'`. */\n level?: FieldVisibility;\n /** Treat non-readonly fields as readonly in generated code. Default `false`. */\n makeFinal?: boolean;\n}\n\nexport function normalizeFieldDefaultsOptions(\n options: FieldDefaultsOptions = {},\n): Required<FieldDefaultsOptions> {\n return {\n level: options.level ?? 'public',\n makeFinal: options.makeFinal ?? false,\n };\n}\n\nexport function fieldDefaultsClassLegacy(\n backend: Backend,\n target: AnyClass,\n options: FieldDefaultsOptions = {},\n): void {\n const normalized = normalizeFieldDefaultsOptions(options);\n backend.metadata.set(MetadataKeys.FIELD_DEFAULTS, target, undefined, normalized);\n}\n\nexport function fieldDefaultsClassStage3(\n backend: Backend,\n _value: AnyClass,\n context: ClassDecoratorContext,\n options: FieldDefaultsOptions = {},\n): void {\n const normalized = normalizeFieldDefaultsOptions(options);\n backend.metadata.set(\n MetadataKeys.FIELD_DEFAULTS,\n context.metadata as object,\n undefined,\n normalized,\n );\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport function getterFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.GETTER);\n}\n\nexport function getterFieldStage3(backend: Backend, context: ClassFieldDecoratorContext): void {\n fieldMarkerStage3(backend, context, MetadataKeys.GETTER);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport interface LogOptions {\n /** Logger name shown in output. Defaults to the class name. */\n name?: string;\n /** Log level prefix. Default `'info'`. */\n level?: 'debug' | 'info' | 'warn' | 'error';\n}\n\nfunction wrapPrototypeMethods(target: AnyClass, options: LogOptions = {}): void {\n const proto = target.prototype as Record<string, unknown>;\n const loggerName = options.name ?? target.name;\n const level = options.level ?? 'info';\n const logFn = level === 'warn' ? console.warn : level === 'error' ? console.error : console.info;\n\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === 'constructor') continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc || typeof desc.value !== 'function') continue;\n const original = desc.value as (...args: unknown[]) => unknown;\n desc.value = function logWrapper(this: unknown, ...args: unknown[]) {\n logFn.call(console, `[${loggerName}] ${key}`, ...args);\n return original.apply(this, args);\n };\n Object.defineProperty(proto, key, desc);\n }\n}\n\nexport function logClassLegacy(backend: Backend, target: AnyClass, options: LogOptions = {}): void {\n backend.metadata.set(MetadataKeys.LOG, target, undefined, options);\n wrapPrototypeMethods(target, options);\n}\n\nexport function logClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n options: LogOptions = {},\n): void {\n backend.metadata.set(MetadataKeys.LOG, context.metadata as object, undefined, options);\n wrapPrototypeMethods(value, options);\n}\n\nexport function logMethodLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n options: LogOptions = {},\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.LOG, targetPrototype, propertyKey, options);\n const original = descriptor.value;\n if (typeof original !== 'function') return;\n const methodName = String(propertyKey);\n const loggerName = options.name ?? 'Method';\n const level = options.level ?? 'info';\n const logFn = level === 'warn' ? console.warn : level === 'error' ? console.error : console.info;\n return {\n ...descriptor,\n value: function logWrapper(this: unknown, ...args: unknown[]) {\n logFn.call(console, `[${loggerName}] ${methodName}`, ...args);\n return (original as (...a: unknown[]) => unknown).apply(this, args);\n },\n };\n}\n\nexport function logMethodStage3<This, Args extends unknown[], Return>(\n backend: Backend,\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n options: LogOptions = {},\n): (this: This, ...args: Args) => Return {\n backend.metadata.set(MetadataKeys.LOG, context.metadata as object, context.name, options);\n const methodName = String(context.name);\n const loggerName = options.name ?? 'Method';\n const level = options.level ?? 'info';\n const logFn = level === 'warn' ? console.warn : level === 'error' ? console.error : console.info;\n return function logWrapper(this: This, ...args: Args): Return {\n logFn.call(console, `[${loggerName}] ${methodName}`, ...args);\n return value.apply(this, args);\n };\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport function setterFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.SETTER);\n}\n\nexport function setterFieldStage3(backend: Backend, context: ClassFieldDecoratorContext): void {\n fieldMarkerStage3(backend, context, MetadataKeys.SETTER);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport { codegenClassMarkerLegacy, codegenClassMarkerStage3 } from './factory.js';\n\nexport function utilityClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.UTILITY_CLASS, target, undefined, true);\n codegenClassMarkerLegacy(backend, target, MetadataKeys.UTILITY_CLASS);\n\n const Wrapped = class extends target {\n constructor(...args: unknown[]) {\n if (new.target !== Wrapped) {\n return Reflect.construct(target, args, new.target as new (...a: unknown[]) => object);\n }\n super(...args);\n throw new TypeError(`Utility class ${target.name} cannot be instantiated`);\n }\n };\n Object.defineProperty(Wrapped, 'name', { value: target.name });\n return Wrapped as AnyClass;\n}\n\nexport function utilityClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.UTILITY_CLASS, context.metadata as object, undefined, true);\n codegenClassMarkerStage3(backend, value, context, MetadataKeys.UTILITY_CLASS);\n\n const Wrapped = class extends value {\n constructor(...args: unknown[]) {\n if (new.target !== Wrapped) {\n return Reflect.construct(value, args, new.target as new (...a: unknown[]) => object);\n }\n super(...args);\n throw new TypeError(`Utility class ${value.name} cannot be instantiated`);\n }\n };\n Object.defineProperty(Wrapped, 'name', { value: value.name });\n return Wrapped as AnyClass;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport { codegenClassMarkerLegacy, codegenClassMarkerStage3 } from './factory.js';\n\nexport function valueClassLegacy(backend: Backend, target: AnyClass): void {\n codegenClassMarkerLegacy(backend, target, MetadataKeys.VALUE);\n}\n\nexport function valueClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n codegenClassMarkerStage3(backend, value, context, MetadataKeys.VALUE);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { codegenClassMarkerLegacy, codegenClassMarkerStage3 } from './factory.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport function withClassLegacy(backend: Backend, target: AnyClass): void {\n codegenClassMarkerLegacy(backend, target, MetadataKeys.WITH);\n}\n\nexport function withClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n codegenClassMarkerStage3(backend, value, context, MetadataKeys.WITH);\n}\n\nexport function withFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.WITH);\n}\n\nexport function withFieldStage3(backend: Backend, context: ClassFieldDecoratorContext): void {\n fieldMarkerStage3(backend, context, MetadataKeys.WITH);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nconst strategyRegistry = new Map<string, Map<string, AnyClass>>();\n\nfunction familyBucket(family: string, create = false): Map<string, AnyClass> | undefined {\n let bucket = strategyRegistry.get(family);\n if (!bucket && create) {\n bucket = new Map();\n strategyRegistry.set(family, bucket);\n }\n return bucket;\n}\n\nexport function registerStrategy(family: string, name: string, ctor: AnyClass): void {\n const bucket = familyBucket(family, true)!;\n bucket.set(name, ctor);\n}\n\nexport function getStrategyFromRegistry<T = unknown>(family: string, name: string): T {\n const ctor = familyBucket(family)?.get(name);\n if (!ctor) {\n throw new Error(`No strategy registered for family \"${family}\" and name \"${name}\"`);\n }\n return new ctor() as T;\n}\n\nexport function listStrategies(family: string): string[] {\n const bucket = familyBucket(family);\n return bucket ? Array.from(bucket.keys()) : [];\n}\n\nexport function getStrategyRegistry(): ReadonlyMap<string, ReadonlyMap<string, AnyClass>> {\n return strategyRegistry;\n}\n\nexport const StrategyRegistry = {\n get: getStrategyFromRegistry,\n list: listStrategies,\n};\n\nexport function strategyClassLegacy(\n backend: Backend,\n target: AnyClass,\n family: string,\n name: string,\n): void {\n backend.metadata.set(MetadataKeys.STRATEGY, target, undefined, { family, name });\n registerStrategy(family, name, target);\n}\n\nexport function strategyClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n family: string,\n name: string,\n): void {\n backend.metadata.set(MetadataKeys.STRATEGY, context.metadata as object, undefined, {\n family,\n name,\n });\n registerStrategy(family, name, value);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport interface TransitionOptions {\n from: string | string[];\n to: string;\n}\n\nexport function normalizeFromStates(from: string | string[]): string[] {\n return Array.isArray(from) ? from : [from];\n}\n\nexport function transitionMethodLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n options: TransitionOptions,\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.TRANSITION, targetPrototype, propertyKey, options);\n return descriptor;\n}\n\nexport function transitionMethodStage3<This, Args extends unknown[], Return>(\n backend: Backend,\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n options: TransitionOptions,\n): (this: This, ...args: Args) => Return {\n backend.metadata.set(MetadataKeys.TRANSITION, context.metadata as object, context.name, options);\n return value;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { MetadataStore } from '../../core/metadata-store.js';\nimport { normalizeFromStates, type TransitionOptions } from './transition.js';\n\nexport interface StateLifecycleHooks {\n onEnter?: (state: string) => void;\n onExit?: (state: string) => void;\n onTransition?: (from: string, to: string) => void;\n}\n\nexport interface StateOptions extends StateLifecycleHooks {\n states: string[];\n initial: string;\n}\n\nconst STATE_SYMBOL = Symbol('lombok-ts:state');\n\nfunction collectTransitionMethods(\n metadata: MetadataStore,\n proto: object,\n classMetadata?: object,\n): Map<string, { options: TransitionOptions; original: (...args: unknown[]) => unknown }> {\n const transitions = new Map<\n string,\n { options: TransitionOptions; original: (...args: unknown[]) => unknown }\n >();\n\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === 'constructor') continue;\n const options =\n metadata.get<TransitionOptions>(MetadataKeys.TRANSITION, proto, key) ??\n (classMetadata\n ? metadata.get<TransitionOptions>(MetadataKeys.TRANSITION, classMetadata, key)\n : undefined);\n if (!options) continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc || typeof desc.value !== 'function') continue;\n transitions.set(key, { options, original: desc.value as (...args: unknown[]) => unknown });\n }\n\n return transitions;\n}\n\nfunction applyStateWrapping(\n backend: Backend,\n target: AnyClass,\n options: StateOptions,\n classMetadata?: object,\n): AnyClass {\n const { states, initial, onEnter, onExit, onTransition } = options;\n\n if (!states.includes(initial)) {\n throw new Error(`@State initial state \"${initial}\" is not in states: [${states.join(', ')}]`);\n }\n\n const transitions = collectTransitionMethods(\n backend.metadata,\n target.prototype as object,\n classMetadata,\n );\n\n const StateClass = class extends target {\n constructor(...args: unknown[]) {\n super(...args);\n Object.defineProperty(this, STATE_SYMBOL, {\n value: initial,\n writable: true,\n enumerable: false,\n configurable: false,\n });\n onEnter?.(initial);\n }\n\n get state(): string {\n return (this as unknown as Record<symbol, string>)[STATE_SYMBOL] ?? initial;\n }\n };\n\n const stateProto = StateClass.prototype as object;\n\n for (const [methodName, { options: transition, original }] of transitions) {\n const fromStates = normalizeFromStates(transition.from);\n const toState = transition.to;\n\n if (!states.includes(toState)) {\n throw new Error(`@Transition on \"${methodName}\" targets unknown state \"${toState}\"`);\n }\n for (const from of fromStates) {\n if (!states.includes(from)) {\n throw new Error(`@Transition on \"${methodName}\" references unknown state \"${from}\"`);\n }\n }\n\n Object.defineProperty(stateProto, methodName, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: function stateTransitionWrapper(this: unknown, ...args: unknown[]) {\n const self = this as Record<symbol, string>;\n const current = self[STATE_SYMBOL] ?? '';\n if (!fromStates.includes(current)) {\n throw new Error(\n `Cannot transition from \"${current}\" to \"${toState}\" via ${methodName}()`,\n );\n }\n onExit?.(current);\n const result = original.apply(this, args);\n self[STATE_SYMBOL] = toState;\n onTransition?.(current, toState);\n onEnter?.(toState);\n return result;\n },\n });\n }\n\n return StateClass as AnyClass;\n}\n\nexport function stateClassLegacy(\n backend: Backend,\n target: AnyClass,\n options: StateOptions,\n): AnyClass {\n backend.metadata.set(MetadataKeys.STATE, target, undefined, options);\n return applyStateWrapping(backend, target, options);\n}\n\nexport function stateClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n options: StateOptions,\n): AnyClass {\n backend.metadata.set(MetadataKeys.STATE, context.metadata as object, undefined, options);\n return applyStateWrapping(backend, value, options, context.metadata as object);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport interface CommandInstance {\n execute(): unknown;\n undo?(): unknown;\n}\n\nexport function assertCommand(target: AnyClass): void {\n const proto = target.prototype as { execute?: unknown; undo?: unknown };\n if (typeof proto.execute !== 'function') {\n throw new Error(`@Command class ${target.name} must define execute()`);\n }\n}\n\nexport function commandClassLegacy(backend: Backend, target: AnyClass): void {\n assertCommand(target);\n backend.metadata.set(MetadataKeys.COMMAND, target, undefined, true);\n}\n\nexport function commandClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n assertCommand(value);\n backend.metadata.set(MetadataKeys.COMMAND, context.metadata as object, undefined, true);\n}\n","import type { CommandInstance } from './command.js';\n\nexport class CommandHistory {\n private readonly undoStack: CommandInstance[] = [];\n private readonly redoStack: CommandInstance[] = [];\n\n execute(cmd: CommandInstance): unknown {\n const result = cmd.execute();\n this.undoStack.push(cmd);\n this.redoStack.length = 0;\n return result;\n }\n\n undo(): unknown {\n const cmd = this.undoStack.pop();\n if (!cmd) {\n throw new Error('Nothing to undo');\n }\n if (typeof cmd.undo !== 'function') {\n this.undoStack.push(cmd);\n throw new Error('Command does not support undo()');\n }\n const result = cmd.undo();\n this.redoStack.push(cmd);\n return result;\n }\n\n redo(): unknown {\n const cmd = this.redoStack.pop();\n if (!cmd) {\n throw new Error('Nothing to redo');\n }\n const result = cmd.execute();\n this.undoStack.push(cmd);\n return result;\n }\n\n get canUndo(): boolean {\n return this.undoStack.length > 0;\n }\n\n get canRedo(): boolean {\n return this.redoStack.length > 0;\n }\n\n clear(): void {\n this.undoStack.length = 0;\n this.redoStack.length = 0;\n }\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { deepClone } from '../../utils/index.js';\n\nexport const MEMENTO_SNAPSHOT = Symbol('lombok-ts:memento-snapshot');\n\nconst stage3MementoExcluded = new WeakMap<object, Set<string>>();\nconst legacyMementoExcluded = new WeakMap<object, Set<string>>();\n\nfunction registerLegacyMementoExclude(proto: object, field: string): void {\n const set = legacyMementoExcluded.get(proto) ?? new Set<string>();\n set.add(field);\n legacyMementoExcluded.set(proto, set);\n}\n\nfunction registerStage3MementoExclude(classMetadata: object, field: string): void {\n const set = stage3MementoExcluded.get(classMetadata) ?? new Set<string>();\n set.add(field);\n stage3MementoExcluded.set(classMetadata, set);\n}\n\nexport interface MementoSnapshot {\n readonly [MEMENTO_SNAPSHOT]: true;\n readonly data: Record<string, unknown>;\n}\n\nfunction isMementoSnapshot(value: unknown): value is MementoSnapshot {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as MementoSnapshot)[MEMENTO_SNAPSHOT] === true\n );\n}\n\nfunction collectExcludedFields(\n metadata: Backend['metadata'],\n proto: object,\n classMetadata?: object,\n): Set<string> {\n const excluded = new Set<string>();\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === 'constructor') continue;\n if (\n metadata.has(MetadataKeys.MEMENTO_EXCLUDE, proto, key) ||\n (classMetadata && metadata.has(MetadataKeys.MEMENTO_EXCLUDE, classMetadata, key))\n ) {\n excluded.add(key);\n }\n }\n if (classMetadata) {\n for (const key of stage3MementoExcluded.get(classMetadata) ?? []) {\n excluded.add(key);\n }\n }\n for (const key of legacyMementoExcluded.get(proto) ?? []) {\n excluded.add(key);\n }\n return excluded;\n}\n\nfunction snapshotInstance(\n instance: Record<string, unknown>,\n excluded: Set<string>,\n): MementoSnapshot {\n const data: Record<string, unknown> = {};\n for (const key of Object.keys(instance)) {\n if (excluded.has(key)) continue;\n if (key === 'save' || key === 'restore') continue;\n data[key] = deepClone(instance[key]);\n }\n return { [MEMENTO_SNAPSHOT]: true, data };\n}\n\nfunction applySnapshot(instance: Record<string, unknown>, snapshot: MementoSnapshot): void {\n for (const [key, value] of Object.entries(snapshot.data)) {\n instance[key] = deepClone(value);\n }\n}\n\nfunction wrapMementoClass(backend: Backend, target: AnyClass, classMetadata?: object): AnyClass {\n const excluded = collectExcludedFields(\n backend.metadata,\n target.prototype as object,\n classMetadata,\n );\n\n const MementoClass = class extends target {\n save(): MementoSnapshot {\n return snapshotInstance(this as Record<string, unknown>, excluded);\n }\n\n restore(snapshot: MementoSnapshot): void {\n if (!isMementoSnapshot(snapshot)) {\n throw new TypeError('restore() expects a snapshot returned from save()');\n }\n applySnapshot(this as Record<string, unknown>, snapshot);\n }\n };\n\n return MementoClass as AnyClass;\n}\n\nexport function mementoClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.MEMENTO, target, undefined, true);\n return wrapMementoClass(backend, target);\n}\n\nexport function mementoClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.MEMENTO, context.metadata as object, undefined, true);\n return wrapMementoClass(backend, value, context.metadata as object);\n}\n\nexport function mementoExcludeFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n backend.metadata.set(MetadataKeys.MEMENTO_EXCLUDE, targetPrototype, propertyKey, true);\n registerLegacyMementoExclude(targetPrototype, String(propertyKey));\n}\n\nexport function mementoExcludeFieldStage3<This, Value>(\n backend: Backend,\n context: ClassFieldDecoratorContext<This, Value>,\n): void {\n backend.metadata.set(\n MetadataKeys.MEMENTO_EXCLUDE,\n context.metadata as object,\n context.name,\n true,\n );\n registerStage3MementoExclude(context.metadata as object, String(context.name));\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport type ObservableListener = (next: unknown, prev: unknown) => void;\n\nexport interface ObservableInstance {\n subscribe(key: string | symbol, listener: ObservableListener): () => void;\n}\nexport type ObservableWildcardListener = (\n key: string | symbol,\n next: unknown,\n prev: unknown,\n) => void;\n\nconst LISTENERS = Symbol('lombok-ts:observable-listeners');\n\ntype ListenerMap = Map<string | symbol, Set<ObservableListener>>;\ntype WildcardSet = Set<ObservableWildcardListener>;\n\ninterface ObservableInternals {\n listeners: ListenerMap;\n wildcards: WildcardSet;\n derivedKeys: Set<string | symbol>;\n derivedCache: Map<string | symbol, unknown>;\n}\n\nfunction findGetter(proto: object, key: string | symbol): (() => unknown) | undefined {\n let current: object | null = proto;\n while (current) {\n const desc = Object.getOwnPropertyDescriptor(current, key);\n if (desc?.get) return desc.get as () => unknown;\n current = Object.getPrototypeOf(current);\n }\n return undefined;\n}\n\nfunction getInternals(target: object): ObservableInternals {\n const bag = target as Record<symbol, ObservableInternals>;\n if (!bag[LISTENERS]) {\n bag[LISTENERS] = {\n listeners: new Map(),\n wildcards: new Set(),\n derivedKeys: new Set(),\n derivedCache: new Map(),\n };\n }\n return bag[LISTENERS];\n}\n\nfunction notify(\n internals: ObservableInternals,\n key: string | symbol,\n next: unknown,\n prev: unknown,\n): void {\n const keyListeners = internals.listeners.get(key);\n if (keyListeners) {\n for (const listener of keyListeners) {\n listener(next, prev);\n }\n }\n for (const listener of internals.wildcards) {\n listener(key, next, prev);\n }\n\n if (internals.derivedKeys.size > 0) {\n const instance = targetWithInternals(internals);\n for (const derivedKey of internals.derivedKeys) {\n const prevDerived = internals.derivedCache.get(derivedKey);\n internals.derivedCache.delete(derivedKey);\n const getter = findGetter(Object.getPrototypeOf(instance), derivedKey);\n if (!getter) continue;\n const newDerived = getter.call(instance);\n internals.derivedCache.set(derivedKey, newDerived);\n if (prevDerived !== newDerived) {\n const derivedListeners = internals.listeners.get(derivedKey);\n if (derivedListeners) {\n for (const listener of derivedListeners) {\n listener(newDerived, prevDerived);\n }\n }\n }\n }\n }\n}\n\n// Weak reference hack: store instance on internals object\nconst INSTANCE = Symbol('lombok-ts:observable-instance');\n\nfunction targetWithInternals(internals: ObservableInternals): object {\n return (internals as unknown as Record<symbol, object>)[INSTANCE] ?? {};\n}\n\nfunction installSubscribe(proto: object): void {\n Object.defineProperty(proto, 'subscribe', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: function subscribe(\n this: object,\n key: string | symbol,\n listener: ObservableListener | ObservableWildcardListener,\n ): () => void {\n const internals = getInternals(this);\n (internals as unknown as Record<symbol, object>)[INSTANCE] = this;\n\n if (key === '*') {\n const wildcardListener = listener as ObservableWildcardListener;\n internals.wildcards.add(wildcardListener);\n return () => internals.wildcards.delete(wildcardListener);\n }\n\n const keyListener = listener as ObservableListener;\n let set = internals.listeners.get(key);\n if (!set) {\n set = new Set();\n internals.listeners.set(key, set);\n }\n set.add(keyListener);\n\n const proto = Object.getPrototypeOf(this);\n if (findGetter(proto, key)) {\n internals.derivedKeys.add(key);\n }\n\n return () => set!.delete(keyListener);\n },\n });\n}\n\nfunction wrapObservableInstance<T extends object>(instance: T): T {\n const internals = getInternals(instance);\n (internals as unknown as Record<symbol, object>)[INSTANCE] = instance;\n\n return new Proxy(instance, {\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return Reflect.set(target, prop, value, receiver);\n }\n const prev = Reflect.get(target, prop, receiver);\n const result = Reflect.set(target, prop, value, receiver);\n if (prev !== value) {\n notify(internals, prop, value, prev);\n }\n return result;\n },\n });\n}\n\nfunction wrapObservableClass(target: AnyClass): AnyClass {\n installSubscribe(target.prototype as object);\n\n const ObservableClass = class extends target {\n constructor(...args: unknown[]) {\n super(...args);\n return wrapObservableInstance(this);\n }\n };\n\n return ObservableClass as AnyClass;\n}\n\nexport function observableClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.OBSERVABLE, target, undefined, true);\n return wrapObservableClass(target);\n}\n\nexport function observableClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.OBSERVABLE, context.metadata as object, undefined, true);\n return wrapObservableClass(value);\n}\n\nexport function observableDerivedLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.OBSERVABLE, targetPrototype, propertyKey, { derived: true });\n const originalGet = descriptor.get;\n if (!originalGet) return;\n\n const key = propertyKey;\n return {\n ...descriptor,\n get(this: object) {\n const internals = getInternals(this);\n (internals as unknown as Record<symbol, object>)[INSTANCE] = this;\n internals.derivedKeys.add(key);\n\n if (internals.derivedCache.has(key)) {\n return internals.derivedCache.get(key);\n }\n const value = originalGet.call(this);\n internals.derivedCache.set(key, value);\n return value;\n },\n };\n}\n\nexport function observableDerivedStage3<This>(\n backend: Backend,\n value: (this: This) => unknown,\n context: ClassGetterDecoratorContext<This, unknown>,\n): (this: This) => unknown {\n backend.metadata.set(MetadataKeys.OBSERVABLE, context.metadata as object, context.name, {\n derived: true,\n });\n\n const key = context.name;\n return function derivedGetter(this: This): unknown {\n const internals = getInternals(this as object);\n (internals as unknown as Record<symbol, object>)[INSTANCE] = this as object;\n internals.derivedKeys.add(key);\n\n if (internals.derivedCache.has(key)) {\n return internals.derivedCache.get(key);\n }\n const result = value.call(this);\n internals.derivedCache.set(key, result);\n return result;\n };\n}\n\n/** Alias for `@Observable` (GoF naming). */\nexport function observerClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n return observableClassLegacy(backend, target);\n}\n\nexport function observerClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n return observableClassStage3(backend, value, context);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport interface HandlerOptions {\n order: number;\n}\n\ninterface HandlerEntry {\n order: number;\n method: string;\n fn: (context: unknown) => unknown;\n}\n\nfunction collectHandlers(backend: Backend, proto: object, classMetadata?: object): HandlerEntry[] {\n const handlers: HandlerEntry[] = [];\n\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === 'constructor') continue;\n const options =\n backend.metadata.get<HandlerOptions>(MetadataKeys.HANDLER, proto, key) ??\n (classMetadata\n ? backend.metadata.get<HandlerOptions>(MetadataKeys.HANDLER, classMetadata, key)\n : undefined);\n if (!options) continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc || typeof desc.value !== 'function') continue;\n handlers.push({\n order: options.order,\n method: key,\n fn: desc.value as (context: unknown) => unknown,\n });\n }\n\n handlers.sort((a, b) => a.order - b.order);\n return handlers;\n}\n\nfunction wrapChainClass(backend: Backend, target: AnyClass, classMetadata?: object): AnyClass {\n const handlers = collectHandlers(backend, target.prototype as object, classMetadata);\n\n const ChainClass = class extends target {\n handle(context: unknown): boolean {\n for (const handler of handlers) {\n const result = handler.fn.call(this, context);\n if (result === true || (result !== undefined && result !== false)) {\n return true;\n }\n }\n return false;\n }\n };\n\n return ChainClass as AnyClass;\n}\n\nexport function chainOfResponsibilityClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.CHAIN_OF_RESPONSIBILITY, target, undefined, true);\n return wrapChainClass(backend, target);\n}\n\nexport function chainOfResponsibilityClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(\n MetadataKeys.CHAIN_OF_RESPONSIBILITY,\n context.metadata as object,\n undefined,\n true,\n );\n return wrapChainClass(backend, value, context.metadata as object);\n}\n\nexport function handlerMethodLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n options: HandlerOptions,\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.HANDLER, targetPrototype, propertyKey, options);\n return descriptor;\n}\n\nexport function handlerMethodStage3<This, Args extends unknown[], Return>(\n backend: Backend,\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n options: HandlerOptions,\n): (this: This, ...args: Args) => Return {\n backend.metadata.set(MetadataKeys.HANDLER, context.metadata as object, context.name, options);\n return value;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\n\nconst ITERATE_FIELD = Symbol('lombok-ts:iterate-over-field');\nconst legacyIterateFields = new WeakMap<object, (string | symbol)[]>();\nconst stage3IterateFields = new WeakMap<object, (string | symbol)[]>();\n\nfunction registerLegacyIterateField(proto: object, field: string | symbol): void {\n const existing = legacyIterateFields.get(proto) ?? [];\n existing.push(field);\n legacyIterateFields.set(proto, existing);\n}\n\nfunction registerStage3IterateField(classMetadata: object, field: string | symbol): void {\n const existing = stage3IterateFields.get(classMetadata) ?? [];\n existing.push(field);\n stage3IterateFields.set(classMetadata, existing);\n}\n\nfunction resolveIterateField(\n backend: Backend,\n proto: object,\n classMetadata?: object,\n): string | symbol {\n const fields: (string | symbol)[] = [];\n\n for (const key of [\n ...Object.getOwnPropertyNames(proto),\n ...Object.getOwnPropertySymbols(proto),\n ]) {\n if (key === 'constructor') continue;\n if (\n backend.metadata.has(MetadataKeys.ITERATE_OVER, proto, key) ||\n (classMetadata && backend.metadata.has(MetadataKeys.ITERATE_OVER, classMetadata, key))\n ) {\n fields.push(key);\n }\n }\n\n if (classMetadata) {\n fields.push(...(stage3IterateFields.get(classMetadata) ?? []));\n }\n\n fields.push(...(legacyIterateFields.get(proto) ?? []));\n\n if (fields.length === 0) {\n throw new Error('@Iterable requires exactly one @IterateOver field');\n }\n if (fields.length > 1) {\n throw new Error('@Iterable allows only one @IterateOver field');\n }\n\n return fields[0]!;\n}\n\nfunction installIterator(target: AnyClass, fieldKey: string | symbol): void {\n Object.defineProperty(target.prototype, Symbol.iterator, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: function* iterateOver(this: Record<string | symbol, Iterable<unknown>>) {\n const collection = this[fieldKey];\n if (collection == null) return;\n yield* collection;\n },\n });\n}\n\nexport function iterableClassLegacy(backend: Backend, target: AnyClass): void {\n backend.metadata.set(MetadataKeys.ITERABLE, target, undefined, true);\n const fieldKey = resolveIterateField(backend, target.prototype as object);\n (target as unknown as Record<symbol, string | symbol>)[ITERATE_FIELD] = fieldKey;\n installIterator(target, fieldKey);\n}\n\nexport function iterableClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n backend.metadata.set(MetadataKeys.ITERABLE, context.metadata as object, undefined, true);\n const fieldKey = resolveIterateField(\n backend,\n value.prototype as object,\n context.metadata as object,\n );\n (value as unknown as Record<symbol, string | symbol>)[ITERATE_FIELD] = fieldKey;\n installIterator(value, fieldKey);\n}\n\nexport function iterateOverFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n backend.metadata.set(MetadataKeys.ITERATE_OVER, targetPrototype, propertyKey, true);\n registerLegacyIterateField(targetPrototype, propertyKey);\n}\n\nexport function iterateOverFieldStage3<This, Value>(\n backend: Backend,\n context: ClassFieldDecoratorContext<This, Value>,\n): void {\n backend.metadata.set(MetadataKeys.ITERATE_OVER, context.metadata as object, context.name, true);\n registerStage3IterateField(context.metadata as object, context.name);\n}\n","import { MetadataKeys } from '../../core/metadata-keys.js';\nimport {\n defineClassDecorator,\n defineFieldDecorator,\n defineMethodDecorator,\n defineParameterDecorator,\n} from '../../legacy/decorate.js';\nimport { legacyBackend } from '../../legacy/backend.js';\nimport {\n codegenClassMarkerLegacy,\n factoryClassLegacy,\n createFromFactory,\n getFactoryRegistry,\n registerFactory,\n} from '../shared/factory.js';\nimport {\n memoizeMethodLegacy,\n nonNullFieldLegacy,\n nonNullParameterLegacy,\n prototypeClassLegacy,\n singletonClassLegacy,\n} from '../shared/index.js';\nimport type { MemoizeOptions } from '../shared/memoize.js';\nimport type { AccessorsOptions } from '../shared/accessors.js';\nimport { accessorsClassLegacy } from '../shared/accessors.js';\nimport { delegateFieldLegacy, parseDelegateMethods } from '../shared/delegate.js';\nimport { equalsClassLegacy, equalsExcludeFieldLegacy } from '../shared/equals.js';\nimport type { FieldDefaultsOptions } from '../shared/field-defaults.js';\nimport { fieldDefaultsClassLegacy } from '../shared/field-defaults.js';\nimport { getterFieldLegacy } from '../shared/getter.js';\nimport type { LogOptions } from '../shared/log.js';\nimport { logClassLegacy, logMethodLegacy } from '../shared/log.js';\nimport { setterFieldLegacy } from '../shared/setter.js';\nimport { utilityClassLegacy } from '../shared/utility-class.js';\nimport { valueClassLegacy } from '../shared/value.js';\nimport { withClassLegacy, withFieldLegacy } from '../shared/with.js';\nimport {\n getStrategyFromRegistry,\n getStrategyRegistry,\n listStrategies,\n registerStrategy,\n strategyClassLegacy,\n StrategyRegistry,\n} from '../shared/strategy.js';\nimport type { StateOptions } from '../shared/state.js';\nimport { stateClassLegacy } from '../shared/state.js';\nimport type { TransitionOptions } from '../shared/transition.js';\nimport { transitionMethodLegacy } from '../shared/transition.js';\nimport { commandClassLegacy } from '../shared/command.js';\nimport { CommandHistory } from '../shared/command-history.js';\nimport { mementoClassLegacy, mementoExcludeFieldLegacy } from '../shared/memento.js';\nimport {\n observableClassLegacy,\n observableDerivedLegacy,\n observerClassLegacy,\n} from '../shared/observable.js';\nimport {\n chainOfResponsibilityClassLegacy,\n handlerMethodLegacy,\n} from '../shared/chain-of-responsibility.js';\nimport type { HandlerOptions } from '../shared/chain-of-responsibility.js';\nimport { iterableClassLegacy, iterateOverFieldLegacy } from '../shared/iterable.js';\n\n/** Validates field assignments are not null or undefined. */\nexport const NonNull = defineFieldDecorator(nonNullFieldLegacy);\n\n/** Validates method parameters marked with `@NonNull`. Legacy backend only. */\nexport function NonNullParam(): ParameterDecorator {\n return defineParameterDecorator(nonNullParameterLegacy);\n}\n\n/** Ensures only one instance of the class exists. */\nexport const Singleton = defineClassDecorator(singletonClassLegacy);\n\n/** Returns a deep clone on every `new` call. */\nexport const Prototype = defineClassDecorator(prototypeClassLegacy);\n\n/** Caches method return values. Optional TTL in milliseconds. */\nexport function Memoize(options: MemoizeOptions = {}): MethodDecorator {\n return defineMethodDecorator((backend, target, key, descriptor) =>\n memoizeMethodLegacy(backend, target, key, descriptor, options),\n );\n}\n\n/** Registers the class in the global factory registry under `key`. */\nexport function Factory(key: string): ClassDecorator {\n return defineClassDecorator((backend, target) => {\n factoryClassLegacy(backend, target, key);\n });\n}\n\n/** Composite Lombok `@Data` — codegen generates getters, setters, toString, equals. */\nexport const Data = defineClassDecorator((backend, target) =>\n codegenClassMarkerLegacy(backend, target, MetadataKeys.DATA),\n);\n\n/** Immutable value class — codegen generates getters, with*, toString, equals. */\nexport const Value = defineClassDecorator((backend, target) => valueClassLegacy(backend, target));\n\n/** Fluent builder — codegen generates a companion builder class. */\nexport const Builder = defineClassDecorator((backend, target) =>\n codegenClassMarkerLegacy(backend, target, MetadataKeys.BUILDER),\n);\n\n/** Auto `toString()` — codegen generates the method body. */\nexport const ToString = defineClassDecorator((backend, target) =>\n codegenClassMarkerLegacy(backend, target, MetadataKeys.TO_STRING),\n);\n\n/** Structural `equals()` — codegen generates instance and static helpers. */\nexport const Equals = defineClassDecorator((backend, target) => equalsClassLegacy(backend, target));\n\n/** Immutable copy helpers — class or field level `with*` methods. */\nconst withClassDecorator = defineClassDecorator((backend, target) =>\n withClassLegacy(backend, target),\n);\nconst withFieldDecorator = defineFieldDecorator(withFieldLegacy);\n\nexport function With(): ClassDecorator & PropertyDecorator {\n return ((target: object, propertyKey?: string | symbol) => {\n if (propertyKey === undefined) {\n return withClassDecorator(target as new (...args: unknown[]) => unknown);\n }\n return withFieldDecorator(target, propertyKey);\n }) as ClassDecorator & PropertyDecorator;\n}\n\n/** Field getter — codegen generates `getField()`. */\nexport const Getter = defineFieldDecorator(getterFieldLegacy);\n\n/** Field setter — codegen generates `setField()`. */\nexport const Setter = defineFieldDecorator(setterFieldLegacy);\n\n/** Logs method entry via the configured provider (default `console`). */\nexport function Log(options: LogOptions = {}): ClassDecorator & MethodDecorator {\n const classDec = defineClassDecorator((backend, target) =>\n logClassLegacy(backend, target, options),\n );\n const methodDec = defineMethodDecorator((backend, target, key, descriptor) =>\n logMethodLegacy(backend, target, key, descriptor, options),\n );\n return ((target: object, propertyKey?: string | symbol, descriptor?: PropertyDescriptor) => {\n if (propertyKey !== undefined && descriptor !== undefined) {\n return methodDec(target, propertyKey, descriptor);\n }\n return classDec(target as new (...args: unknown[]) => unknown);\n }) as ClassDecorator & MethodDecorator;\n}\n\n/** Fluent/chained accessor style for generated setters. */\nexport function Accessors(options: AccessorsOptions = {}): ClassDecorator {\n return defineClassDecorator((backend, target) => accessorsClassLegacy(backend, target, options));\n}\n\n/** Uninstantiable utility holder — constructor throws. */\nexport const UtilityClass = defineClassDecorator((backend, target) =>\n utilityClassLegacy(backend, target),\n);\n\n/** Default field visibility and finality for codegen. */\nexport function FieldDefaults(options: FieldDefaultsOptions = {}): ClassDecorator {\n return defineClassDecorator((backend, target) =>\n fieldDefaultsClassLegacy(backend, target, options),\n );\n}\n\n/** Delegates methods to a field. Pass method names as decorator arguments. */\nexport function Delegate(...methods: string[]): PropertyDecorator {\n return defineFieldDecorator((backend, proto, key) =>\n delegateFieldLegacy(backend, proto, key, parseDelegateMethods(methods)),\n );\n}\n\n/** Exclude a field from generated `equals()`. */\nexport const EqualsExclude = defineFieldDecorator(equalsExcludeFieldLegacy);\n\n/** Registers a swappable strategy under `family` and `name`. */\nexport function Strategy(family: string, name: string): ClassDecorator {\n return defineClassDecorator((backend, target) => {\n strategyClassLegacy(backend, target, family, name);\n });\n}\n\n/** Finite state machine with `@Transition`-guarded methods. */\nexport function State(options: StateOptions): ClassDecorator {\n return defineClassDecorator((backend, target) => stateClassLegacy(backend, target, options));\n}\n\n/** Declares an allowed state transition on a method. */\nexport function Transition(options: TransitionOptions): MethodDecorator {\n return defineMethodDecorator((backend, target, key, descriptor) =>\n transitionMethodLegacy(backend, target, key, descriptor, options),\n );\n}\n\n/** Command object marker — class must define `execute()`. */\nexport const Command = defineClassDecorator(commandClassLegacy);\n\n/** Reactive property changes with a subscription API. */\nexport const Observable = defineClassDecorator(observableClassLegacy) as ClassDecorator & {\n Derived: PropertyDecorator;\n};\n\nObservable.Derived = ((\n target: object,\n propertyKey: string | symbol,\n descriptor: PropertyDescriptor,\n): void => {\n if (descriptor === undefined || typeof descriptor.get !== 'function') {\n throw new TypeError('@Observable.Derived requires a getter');\n }\n observableDerivedLegacy(legacyBackend, target, propertyKey, descriptor);\n}) as PropertyDecorator;\n\n/** Alias for `@Observable` (GoF naming). */\nexport const Observer = defineClassDecorator(observerClassLegacy);\n\n/** Snapshot and restore instance state. */\nexport const Memento = defineClassDecorator(mementoClassLegacy) as ClassDecorator & {\n Exclude: PropertyDecorator;\n};\n\nMemento.Exclude = defineFieldDecorator(mementoExcludeFieldLegacy);\n\n/** Chain-of-responsibility handler dispatch via `handle()`. */\nexport const ChainOfResponsibility = defineClassDecorator(chainOfResponsibilityClassLegacy);\n\n/** Marks a method as a chain handler with sort `order`. */\nexport function Handler(options: HandlerOptions): MethodDecorator {\n return defineMethodDecorator((backend, target, key, descriptor) =>\n handlerMethodLegacy(backend, target, key, descriptor, options),\n );\n}\n\n/** Auto-implements `Symbol.iterator` over an `@IterateOver` field. */\nexport const Iterable = defineClassDecorator(iterableClassLegacy);\n\n/** Marks the collection field iterated by `@Iterable`. */\nexport const IterateOver = defineFieldDecorator(iterateOverFieldLegacy);\n\nexport {\n createFromFactory,\n getFactoryRegistry,\n registerFactory,\n StrategyRegistry,\n getStrategyFromRegistry,\n getStrategyRegistry,\n listStrategies,\n registerStrategy,\n CommandHistory,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/legacy/backend.ts","../../src/legacy/decorate.ts","../../src/core/metadata-keys.ts","../../src/decorators/shared/factory.ts","../../src/decorators/shared/non-null.ts","../../src/decorators/shared/singleton.ts","../../src/utils/index.ts","../../src/decorators/shared/prototype.ts","../../src/decorators/shared/memoize.ts","../../src/decorators/shared/memoize-logic.ts","../../src/decorators/shared/accessors.ts","../../src/decorators/shared/markers.ts","../../src/decorators/shared/delegate.ts","../../src/decorators/shared/equals.ts","../../src/decorators/shared/field-defaults.ts","../../src/decorators/shared/getter.ts","../../src/decorators/shared/log.ts","../../src/decorators/shared/setter.ts","../../src/decorators/shared/utility-class.ts","../../src/decorators/shared/value.ts","../../src/decorators/shared/with.ts","../../src/decorators/shared/strategy.ts","../../src/decorators/shared/transition.ts","../../src/decorators/shared/state.ts","../../src/decorators/shared/command.ts","../../src/decorators/shared/command-history.ts","../../src/decorators/shared/memento.ts","../../src/decorators/shared/observable.ts","../../src/decorators/shared/chain-of-responsibility.ts","../../src/decorators/shared/iterable.ts","../../src/decorators/shared/flyweight.ts","../../src/decorators/shared/composite.ts","../../src/decorators/shared/proxy.ts","../../src/decorators/legacy/index.ts"],"names":["Singleton","Prototype","proto","Proxy"],"mappings":"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","file":"index.js","sourcesContent":["import 'reflect-metadata';\nimport type { Backend } from '../core/backend.js';\nimport type { MetadataStore } from '../core/metadata-store.js';\nimport type { MetadataKeyList, PropertyName } from '../core/types.js';\n\n/**\n * `MetadataStore` that delegates to the global `Reflect.metadata` registry from\n * `reflect-metadata`. Storage layer for the legacy `experimentalDecorators`\n * standard.\n */\nclass ReflectMetadataStore implements MetadataStore {\n set<V>(key: string, target: object, propertyKey: PropertyName | undefined, value: V): void {\n if (propertyKey === undefined) {\n Reflect.defineMetadata(key, value, target);\n } else {\n Reflect.defineMetadata(key, value, target, propertyKey);\n }\n }\n\n get<V>(key: string, target: object, propertyKey?: PropertyName): V | undefined {\n if (propertyKey === undefined) {\n return Reflect.getOwnMetadata(key, target) as V | undefined;\n }\n return Reflect.getOwnMetadata(key, target, propertyKey) as V | undefined;\n }\n\n has(key: string, target: object, propertyKey?: PropertyName): boolean {\n if (propertyKey === undefined) {\n return Reflect.hasOwnMetadata(key, target);\n }\n return Reflect.hasOwnMetadata(key, target, propertyKey);\n }\n\n delete(key: string, target: object, propertyKey?: PropertyName): boolean {\n const had = this.has(key, target, propertyKey);\n if (!had) return false;\n if (propertyKey === undefined) {\n Reflect.deleteMetadata(key, target);\n } else {\n Reflect.deleteMetadata(key, target, propertyKey);\n }\n return true;\n }\n\n list(target: object, propertyKey?: PropertyName): MetadataKeyList {\n if (propertyKey === undefined) {\n return (Reflect.getOwnMetadataKeys(target) as PropertyName[]).map(String);\n }\n return (Reflect.getOwnMetadataKeys(target, propertyKey) as PropertyName[]).map(String);\n }\n}\n\n/** Backend for the legacy `experimentalDecorators` standard. Use the singleton `legacyBackend`. */\nexport class LegacyBackend implements Backend {\n readonly kind = 'legacy' as const;\n readonly metadata: MetadataStore = new ReflectMetadataStore();\n}\n\n/** Shared instance. Legacy decorators rely on global metadata storage anyway. */\nexport const legacyBackend = new LegacyBackend();\n","import type { Backend } from '../core/backend.js';\nimport type { PropertyName } from '../core/types.js';\nimport { legacyBackend } from './backend.js';\n\n/** A class constructor, used in place of bare `Function` in decorator signatures. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyClass = new (...args: any[]) => any;\n\n/** Logic shapes for legacy decorator authoring. */\nexport interface ClassDecoratorLogic {\n (backend: Backend, target: AnyClass): AnyClass | void;\n}\n\nexport interface FieldDecoratorLogic {\n (backend: Backend, targetPrototype: object, propertyKey: PropertyName): void;\n}\n\nexport interface MethodDecoratorLogic<T = unknown> {\n (\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: TypedPropertyDescriptor<T>,\n ): TypedPropertyDescriptor<T> | void;\n}\n\nexport interface ParameterDecoratorLogic {\n (\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName | undefined,\n parameterIndex: number,\n ): void;\n}\n\n/**\n * Build a class decorator with the legacy signature. The constructor comes in\n * as `target`; an optional replacement constructor can be returned.\n *\n * @example\n * const Tracked = defineClassDecorator((backend, target) => {\n * backend.metadata.set('tracked', target, undefined, true);\n * });\n */\nexport function defineClassDecorator(logic: ClassDecoratorLogic): ClassDecorator {\n return ((target: AnyClass) => logic(legacyBackend, target)) as ClassDecorator;\n}\n\n/**\n * Build a field/property decorator with the legacy signature. Field decorators\n * can't return a replacement value here; use a method decorator or the codegen\n * path for that.\n */\nexport function defineFieldDecorator(logic: FieldDecoratorLogic): PropertyDecorator {\n return ((target: object, propertyKey: string | symbol) => {\n logic(legacyBackend, target, propertyKey);\n }) as PropertyDecorator;\n}\n\n/** Build a method decorator with the legacy signature. */\nexport function defineMethodDecorator<T = unknown>(\n logic: MethodDecoratorLogic<T>,\n): MethodDecorator {\n return ((\n target: object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<T>,\n ) => {\n return logic(legacyBackend, target, propertyKey, descriptor);\n }) as MethodDecorator;\n}\n\n/** Build a parameter decorator with the legacy signature. */\nexport function defineParameterDecorator(logic: ParameterDecoratorLogic): ParameterDecorator {\n return ((target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n logic(legacyBackend, target, propertyKey, parameterIndex);\n }) as ParameterDecorator;\n}\n","/**\n * Metadata keys used across the library. Adding one? Use the `lombok-ts:`\n * prefix and check `metadata-keys.test.ts` so uniqueness stays enforced.\n */\n\nconst PREFIX = 'lombok-ts:';\n\nexport const MetadataKeys = {\n // Class-level (Lombok)\n DATA: `${PREFIX}data`,\n VALUE: `${PREFIX}value`,\n BUILDER: `${PREFIX}builder`,\n TO_STRING: `${PREFIX}toString`,\n EQUALS: `${PREFIX}equals`,\n UTILITY_CLASS: `${PREFIX}utilityClass`,\n FIELD_DEFAULTS: `${PREFIX}fieldDefaults`,\n ACCESSORS: `${PREFIX}accessors`,\n LOG: `${PREFIX}log`,\n\n // Class-level (TS-only)\n OBSERVABLE: `${PREFIX}observable`,\n SERIALIZABLE: `${PREFIX}serializable`,\n DEEP_FREEZE: `${PREFIX}deepFreeze`,\n TRACE: `${PREFIX}trace`,\n\n // Class-level (GoF)\n SINGLETON: `${PREFIX}singleton`,\n FACTORY: `${PREFIX}factory`,\n ABSTRACT_FACTORY: `${PREFIX}abstractFactory`,\n PROTOTYPE: `${PREFIX}prototype`,\n ADAPTER: `${PREFIX}adapter`,\n BRIDGE: `${PREFIX}bridge`,\n COMPOSITE: `${PREFIX}composite`,\n WRAPS: `${PREFIX}wraps`,\n FACADE: `${PREFIX}facade`,\n FLYWEIGHT: `${PREFIX}flyweight`,\n PROXY: `${PREFIX}proxy`,\n CHAIN_OF_RESPONSIBILITY: `${PREFIX}chainOfResponsibility`,\n COMMAND: `${PREFIX}command`,\n INTERPRETER: `${PREFIX}interpreter`,\n ITERABLE: `${PREFIX}iterable`,\n MEDIATOR: `${PREFIX}mediator`,\n MEMENTO: `${PREFIX}memento`,\n MEMENTO_EXCLUDE: `${PREFIX}memento:exclude`,\n STATE: `${PREFIX}state`,\n STRATEGY: `${PREFIX}strategy`,\n TEMPLATE_METHOD: `${PREFIX}templateMethod`,\n VISITABLE: `${PREFIX}visitable`,\n VISITOR: `${PREFIX}visitor`,\n\n // Field-level\n GETTER: `${PREFIX}getter`,\n SETTER: `${PREFIX}setter`,\n NON_NULL: `${PREFIX}nonNull`,\n WITH: `${PREFIX}with`,\n DELEGATE: `${PREFIX}delegate`,\n VALIDATE: `${PREFIX}validate`,\n TO_STRING_EXCLUDE: `${PREFIX}toString:exclude`,\n TO_STRING_INCLUDE: `${PREFIX}toString:include`,\n EQUALS_EXCLUDE: `${PREFIX}equals:exclude`,\n SERIALIZABLE_EXCLUDE: `${PREFIX}serializable:exclude`,\n SERIALIZABLE_TRANSFORM: `${PREFIX}serializable:transform`,\n SERIALIZABLE_ALIAS: `${PREFIX}serializable:alias`,\n BUILDER_DEFAULT: `${PREFIX}builder:default`,\n SINGULAR: `${PREFIX}singular`,\n ITERATE_OVER: `${PREFIX}iterateOver`,\n\n // Method-level\n MEMOIZE: `${PREFIX}memoize`,\n DEBOUNCE: `${PREFIX}debounce`,\n THROTTLE: `${PREFIX}throttle`,\n RETRY: `${PREFIX}retry`,\n HANDLER: `${PREFIX}handler`,\n TRANSITION: `${PREFIX}transition`,\n HOOK: `${PREFIX}hook`,\n\n // Parameter-level\n NON_NULL_PARAM: `${PREFIX}nonNull:param`,\n\n // Internal, framework-managed\n FIELDS: `${PREFIX}internal:fields`,\n CONSTRUCTOR_PARAMS: `${PREFIX}internal:constructorParams`,\n BACKEND: `${PREFIX}internal:backend`,\n} as const;\n\nexport type MetadataKey = (typeof MetadataKeys)[keyof typeof MetadataKeys];\n\nexport const METADATA_KEY_PREFIX = PREFIX;\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\n/** Global factory registry keyed by `@Factory('key')` string. */\nconst factoryRegistry = new Map<string, AnyClass>();\n\nexport function registerFactory(key: string, ctor: AnyClass): void {\n factoryRegistry.set(key, ctor);\n}\n\nexport function createFromFactory<T = unknown>(key: string, ...args: unknown[]): T {\n const ctor = factoryRegistry.get(key);\n if (!ctor) {\n throw new Error(`No factory registered for key \"${key}\"`);\n }\n return new ctor(...args) as T;\n}\n\nexport function getFactoryRegistry(): ReadonlyMap<string, AnyClass> {\n return factoryRegistry;\n}\n\nexport function factoryClassLegacy(backend: Backend, target: AnyClass, key: string): void {\n backend.metadata.set(MetadataKeys.FACTORY, target, undefined, key);\n registerFactory(key, target);\n}\n\nexport function factoryClassStage3(\n backend: Backend,\n _value: AnyClass,\n context: ClassDecoratorContext,\n key: string,\n): void {\n backend.metadata.set(MetadataKeys.FACTORY, context.metadata as object, undefined, key);\n registerFactory(key, _value);\n}\n\nexport function codegenClassMarkerLegacy(\n backend: Backend,\n target: AnyClass,\n metadataKey: string,\n): void {\n backend.metadata.set(metadataKey, target, undefined, true);\n}\n\nexport function codegenClassMarkerStage3(\n backend: Backend,\n _value: AnyClass,\n context: ClassDecoratorContext,\n metadataKey: string,\n): void {\n backend.metadata.set(metadataKey, context.metadata as object, undefined, true);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport function assertNonNull(value: unknown, label: string): void {\n if (value === null || value === undefined) {\n throw new TypeError(`${label} must not be null or undefined`);\n }\n}\n\nexport function nonNullFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n backend.metadata.set(MetadataKeys.NON_NULL, targetPrototype, propertyKey, true);\n const key = String(propertyKey);\n let stored: unknown;\n\n Object.defineProperty(targetPrototype, propertyKey, {\n configurable: true,\n enumerable: true,\n get() {\n return stored;\n },\n set(value: unknown) {\n assertNonNull(value, key);\n stored = value;\n },\n });\n}\n\nexport function nonNullParameterLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName | undefined,\n parameterIndex: number,\n): void {\n backend.metadata.set(MetadataKeys.NON_NULL_PARAM, targetPrototype, propertyKey, parameterIndex);\n}\n\nexport function wrapMethodWithNonNullParams(\n original: (...args: unknown[]) => unknown,\n paramIndices: number[],\n methodName: string,\n): (...args: unknown[]) => unknown {\n return function (this: unknown, ...args: unknown[]) {\n for (const index of paramIndices) {\n assertNonNull(args[index], `${methodName} argument at index ${index}`);\n }\n return original.apply(this, args);\n };\n}\n\nexport function nonNullFieldStage3<This, Value>(\n backend: Backend,\n context: ClassFieldDecoratorContext<This, Value>,\n): ((this: This, initialValue: Value) => Value) | void {\n backend.metadata.set(MetadataKeys.NON_NULL, context.metadata as object, context.name, true);\n const name = String(context.name);\n return function (initialValue: Value): Value {\n assertNonNull(initialValue, name);\n return initialValue;\n };\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport function singletonClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.SINGLETON, target, undefined, true);\n\n const Singleton = class extends target {\n static #instance: object | undefined;\n\n constructor(...args: unknown[]) {\n if (Singleton.#instance) {\n return Singleton.#instance;\n }\n super(...args);\n Singleton.#instance = this as object;\n }\n };\n\n return Singleton as AnyClass;\n}\n\nexport function singletonClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.SINGLETON, context.metadata as object, undefined, true);\n\n const Singleton = class extends value {\n static #instance: object | undefined;\n\n constructor(...args: unknown[]) {\n if (Singleton.#instance) {\n return Singleton.#instance;\n }\n super(...args);\n Singleton.#instance = this as object;\n }\n };\n\n return Singleton as AnyClass;\n}\n","/** Recursively clones primitives, arrays, and plain objects. */\nexport function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => deepClone(item)) as T;\n }\n\n const cloned = {} as T;\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = deepClone(obj[key]);\n }\n }\n return cloned;\n}\n\n/** Freezes an object and recursively freezes its nested objects. */\nexport function deepFreeze<T extends object>(obj: T): Readonly<T> {\n Object.freeze(obj);\n\n for (const key of Object.keys(obj) as (keyof T)[]) {\n const value = obj[key];\n if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {\n deepFreeze(value as object);\n }\n }\n\n return obj;\n}\n\n/** Structural equality for primitives, arrays, and plain objects. */\nexport function deepEquals(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n\n if (typeof a !== typeof b) return false;\n\n if (a === null || b === null) return a === b;\n\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((item, index) => deepEquals(item, b[index]));\n }\n\n const aKeys = Object.keys(a as object);\n const bKeys = Object.keys(b as object);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every((key) =>\n deepEquals((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]),\n );\n}\n\n/** djb2-ish 32-bit hash over the JSON-serialized value. */\nexport function hashCode(obj: unknown): number {\n const str = JSON.stringify(obj);\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n return hash;\n}\n\n/** Uppercase the first letter. */\nexport function capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n/** Strip dashes/underscores, capitalize the next character. */\nexport function toCamelCase(str: string): string {\n return str.replace(/[-_](.)/g, (_, char) => char.toUpperCase());\n}\n\n/** `toCamelCase` plus uppercase first letter. */\nexport function toPascalCase(str: string): string {\n const camel = toCamelCase(str);\n return capitalize(camel);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport { deepClone } from '../../utils/index.js';\n\nexport function prototypeClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.PROTOTYPE, target, undefined, true);\n\n const Prototype = class extends target {\n constructor(...args: unknown[]) {\n super(...args);\n const clone = deepClone(this) as object;\n return clone;\n }\n };\n\n return Prototype as AnyClass;\n}\n\nexport function prototypeClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.PROTOTYPE, context.metadata as object, undefined, true);\n\n const Prototype = class extends value {\n constructor(...args: unknown[]) {\n super(...args);\n const clone = deepClone(this) as object;\n return clone;\n }\n };\n\n return Prototype as AnyClass;\n}\n","export interface MemoizeOptions {\n /** Time-to-live in milliseconds. Omit for infinite cache. */\n ttl?: number;\n}\n\ninterface CacheEntry {\n value: unknown;\n expiresAt?: number;\n}\n\nconst CACHE_MISS = Symbol('memoize-cache-miss');\n\nfunction buildCacheKey(args: unknown[]): string {\n return JSON.stringify(args);\n}\n\nfunction getFromCache(\n cache: Map<string, CacheEntry>,\n key: string,\n ttl?: number,\n): unknown | typeof CACHE_MISS {\n const entry = cache.get(key);\n if (!entry) return CACHE_MISS;\n if (ttl !== undefined && entry.expiresAt !== undefined && Date.now() > entry.expiresAt) {\n cache.delete(key);\n return CACHE_MISS;\n }\n return entry.value;\n}\n\nexport function memoizeMethod<T extends (...args: unknown[]) => unknown>(\n original: T,\n options: MemoizeOptions = {},\n): T {\n const cache = new Map<string, CacheEntry>();\n const ttl = options.ttl;\n\n return function (this: unknown, ...args: unknown[]) {\n const key = buildCacheKey(args);\n const cached = getFromCache(cache, key, ttl);\n if (cached !== CACHE_MISS) {\n return cached;\n }\n const result = original.apply(this, args);\n const entry: CacheEntry = { value: result };\n if (ttl !== undefined) {\n entry.expiresAt = Date.now() + ttl;\n }\n cache.set(key, entry);\n return result;\n } as T;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { memoizeMethod, type MemoizeOptions } from './memoize.js';\n\nexport function memoizeMethodLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n options: MemoizeOptions = {},\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.MEMOIZE, targetPrototype, propertyKey, options);\n const original = descriptor.value;\n if (typeof original !== 'function') return;\n return {\n ...descriptor,\n value: memoizeMethod(original as (...args: unknown[]) => unknown, options),\n };\n}\n\nexport function memoizeMethodStage3<This, Args extends unknown[], Return>(\n backend: Backend,\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n options: MemoizeOptions = {},\n): (this: This, ...args: Args) => Return {\n backend.metadata.set(MetadataKeys.MEMOIZE, context.metadata as object, context.name, options);\n return memoizeMethod(value as (...args: unknown[]) => unknown, options) as (\n this: This,\n ...args: Args\n ) => Return;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport interface AccessorsOptions {\n /** When true, setters return `this` for chaining. Alias: `fluent`. */\n chain?: boolean;\n /** Alias for `chain`. */\n fluent?: boolean;\n}\n\nexport function normalizeAccessorsOptions(\n options: AccessorsOptions = {},\n): Required<Pick<AccessorsOptions, 'chain'>> {\n return { chain: Boolean(options.chain ?? options.fluent) };\n}\n\nexport function accessorsClassLegacy(\n backend: Backend,\n target: AnyClass,\n options: AccessorsOptions = {},\n): void {\n const normalized = normalizeAccessorsOptions(options);\n backend.metadata.set(MetadataKeys.ACCESSORS, target, undefined, normalized);\n}\n\nexport function accessorsClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n options: AccessorsOptions = {},\n): void {\n const normalized = normalizeAccessorsOptions(options);\n backend.metadata.set(MetadataKeys.ACCESSORS, context.metadata as object, undefined, normalized);\n void value;\n}\n","import type { Backend } from '../../core/backend.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport function fieldMarkerLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n metadataKey: string,\n value: unknown = true,\n): void {\n backend.metadata.set(metadataKey, targetPrototype, propertyKey, value);\n}\n\nexport function fieldMarkerStage3(\n backend: Backend,\n context: ClassFieldDecoratorContext,\n metadataKey: string,\n value: unknown = true,\n): void {\n backend.metadata.set(metadataKey, context.metadata as object, context.name, value);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport type DelegateMethods = readonly string[];\n\nexport function parseDelegateMethods(args: unknown[]): DelegateMethods {\n if (args.length === 0) return [];\n if (args.length === 1 && Array.isArray(args[0])) {\n return args[0] as string[];\n }\n return args.map(String);\n}\n\nexport function delegateFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n methods: DelegateMethods = [],\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.DELEGATE, methods);\n}\n\nexport function delegateFieldStage3(\n backend: Backend,\n context: ClassFieldDecoratorContext,\n methods: DelegateMethods = [],\n): void {\n fieldMarkerStage3(backend, context, MetadataKeys.DELEGATE, methods);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { codegenClassMarkerLegacy, codegenClassMarkerStage3 } from './factory.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport function equalsClassLegacy(backend: Backend, target: AnyClass): void {\n codegenClassMarkerLegacy(backend, target, MetadataKeys.EQUALS);\n}\n\nexport function equalsClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n codegenClassMarkerStage3(backend, value, context, MetadataKeys.EQUALS);\n}\n\nexport function equalsExcludeFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.EQUALS_EXCLUDE);\n}\n\nexport function equalsExcludeFieldStage3(\n backend: Backend,\n context: ClassFieldDecoratorContext,\n): void {\n fieldMarkerStage3(backend, context, MetadataKeys.EQUALS_EXCLUDE);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport type FieldVisibility = 'public' | 'private' | 'protected';\n\nexport interface FieldDefaultsOptions {\n /** Default visibility for generated accessors. Default `'public'`. */\n level?: FieldVisibility;\n /** Treat non-readonly fields as readonly in generated code. Default `false`. */\n makeFinal?: boolean;\n}\n\nexport function normalizeFieldDefaultsOptions(\n options: FieldDefaultsOptions = {},\n): Required<FieldDefaultsOptions> {\n return {\n level: options.level ?? 'public',\n makeFinal: options.makeFinal ?? false,\n };\n}\n\nexport function fieldDefaultsClassLegacy(\n backend: Backend,\n target: AnyClass,\n options: FieldDefaultsOptions = {},\n): void {\n const normalized = normalizeFieldDefaultsOptions(options);\n backend.metadata.set(MetadataKeys.FIELD_DEFAULTS, target, undefined, normalized);\n}\n\nexport function fieldDefaultsClassStage3(\n backend: Backend,\n _value: AnyClass,\n context: ClassDecoratorContext,\n options: FieldDefaultsOptions = {},\n): void {\n const normalized = normalizeFieldDefaultsOptions(options);\n backend.metadata.set(\n MetadataKeys.FIELD_DEFAULTS,\n context.metadata as object,\n undefined,\n normalized,\n );\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport function getterFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.GETTER);\n}\n\nexport function getterFieldStage3(backend: Backend, context: ClassFieldDecoratorContext): void {\n fieldMarkerStage3(backend, context, MetadataKeys.GETTER);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport interface LogOptions {\n /** Logger name shown in output. Defaults to the class name. */\n name?: string;\n /** Log level prefix. Default `'info'`. */\n level?: 'debug' | 'info' | 'warn' | 'error';\n}\n\nfunction wrapPrototypeMethods(target: AnyClass, options: LogOptions = {}): void {\n const proto = target.prototype as Record<string, unknown>;\n const loggerName = options.name ?? target.name;\n const level = options.level ?? 'info';\n const logFn = level === 'warn' ? console.warn : level === 'error' ? console.error : console.info;\n\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === 'constructor') continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc || typeof desc.value !== 'function') continue;\n const original = desc.value as (...args: unknown[]) => unknown;\n desc.value = function logWrapper(this: unknown, ...args: unknown[]) {\n logFn.call(console, `[${loggerName}] ${key}`, ...args);\n return original.apply(this, args);\n };\n Object.defineProperty(proto, key, desc);\n }\n}\n\nexport function logClassLegacy(backend: Backend, target: AnyClass, options: LogOptions = {}): void {\n backend.metadata.set(MetadataKeys.LOG, target, undefined, options);\n wrapPrototypeMethods(target, options);\n}\n\nexport function logClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n options: LogOptions = {},\n): void {\n backend.metadata.set(MetadataKeys.LOG, context.metadata as object, undefined, options);\n wrapPrototypeMethods(value, options);\n}\n\nexport function logMethodLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n options: LogOptions = {},\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.LOG, targetPrototype, propertyKey, options);\n const original = descriptor.value;\n if (typeof original !== 'function') return;\n const methodName = String(propertyKey);\n const loggerName = options.name ?? 'Method';\n const level = options.level ?? 'info';\n const logFn = level === 'warn' ? console.warn : level === 'error' ? console.error : console.info;\n return {\n ...descriptor,\n value: function logWrapper(this: unknown, ...args: unknown[]) {\n logFn.call(console, `[${loggerName}] ${methodName}`, ...args);\n return (original as (...a: unknown[]) => unknown).apply(this, args);\n },\n };\n}\n\nexport function logMethodStage3<This, Args extends unknown[], Return>(\n backend: Backend,\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n options: LogOptions = {},\n): (this: This, ...args: Args) => Return {\n backend.metadata.set(MetadataKeys.LOG, context.metadata as object, context.name, options);\n const methodName = String(context.name);\n const loggerName = options.name ?? 'Method';\n const level = options.level ?? 'info';\n const logFn = level === 'warn' ? console.warn : level === 'error' ? console.error : console.info;\n return function logWrapper(this: This, ...args: Args): Return {\n logFn.call(console, `[${loggerName}] ${methodName}`, ...args);\n return value.apply(this, args);\n };\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport function setterFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.SETTER);\n}\n\nexport function setterFieldStage3(backend: Backend, context: ClassFieldDecoratorContext): void {\n fieldMarkerStage3(backend, context, MetadataKeys.SETTER);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport { codegenClassMarkerLegacy, codegenClassMarkerStage3 } from './factory.js';\n\nexport function utilityClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.UTILITY_CLASS, target, undefined, true);\n codegenClassMarkerLegacy(backend, target, MetadataKeys.UTILITY_CLASS);\n\n const Wrapped = class extends target {\n constructor(...args: unknown[]) {\n if (new.target !== Wrapped) {\n return Reflect.construct(target, args, new.target as new (...a: unknown[]) => object);\n }\n super(...args);\n throw new TypeError(`Utility class ${target.name} cannot be instantiated`);\n }\n };\n Object.defineProperty(Wrapped, 'name', { value: target.name });\n return Wrapped as AnyClass;\n}\n\nexport function utilityClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.UTILITY_CLASS, context.metadata as object, undefined, true);\n codegenClassMarkerStage3(backend, value, context, MetadataKeys.UTILITY_CLASS);\n\n const Wrapped = class extends value {\n constructor(...args: unknown[]) {\n if (new.target !== Wrapped) {\n return Reflect.construct(value, args, new.target as new (...a: unknown[]) => object);\n }\n super(...args);\n throw new TypeError(`Utility class ${value.name} cannot be instantiated`);\n }\n };\n Object.defineProperty(Wrapped, 'name', { value: value.name });\n return Wrapped as AnyClass;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport { codegenClassMarkerLegacy, codegenClassMarkerStage3 } from './factory.js';\n\nexport function valueClassLegacy(backend: Backend, target: AnyClass): void {\n codegenClassMarkerLegacy(backend, target, MetadataKeys.VALUE);\n}\n\nexport function valueClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n codegenClassMarkerStage3(backend, value, context, MetadataKeys.VALUE);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { codegenClassMarkerLegacy, codegenClassMarkerStage3 } from './factory.js';\nimport { fieldMarkerLegacy, fieldMarkerStage3 } from './markers.js';\n\nexport function withClassLegacy(backend: Backend, target: AnyClass): void {\n codegenClassMarkerLegacy(backend, target, MetadataKeys.WITH);\n}\n\nexport function withClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n codegenClassMarkerStage3(backend, value, context, MetadataKeys.WITH);\n}\n\nexport function withFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n fieldMarkerLegacy(backend, targetPrototype, propertyKey, MetadataKeys.WITH);\n}\n\nexport function withFieldStage3(backend: Backend, context: ClassFieldDecoratorContext): void {\n fieldMarkerStage3(backend, context, MetadataKeys.WITH);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nconst strategyRegistry = new Map<string, Map<string, AnyClass>>();\n\nfunction familyBucket(family: string, create = false): Map<string, AnyClass> | undefined {\n let bucket = strategyRegistry.get(family);\n if (!bucket && create) {\n bucket = new Map();\n strategyRegistry.set(family, bucket);\n }\n return bucket;\n}\n\nexport function registerStrategy(family: string, name: string, ctor: AnyClass): void {\n const bucket = familyBucket(family, true)!;\n bucket.set(name, ctor);\n}\n\nexport function getStrategyFromRegistry<T = unknown>(family: string, name: string): T {\n const ctor = familyBucket(family)?.get(name);\n if (!ctor) {\n throw new Error(`No strategy registered for family \"${family}\" and name \"${name}\"`);\n }\n return new ctor() as T;\n}\n\nexport function listStrategies(family: string): string[] {\n const bucket = familyBucket(family);\n return bucket ? Array.from(bucket.keys()) : [];\n}\n\nexport function getStrategyRegistry(): ReadonlyMap<string, ReadonlyMap<string, AnyClass>> {\n return strategyRegistry;\n}\n\nexport const StrategyRegistry = {\n get: getStrategyFromRegistry,\n list: listStrategies,\n};\n\nexport function strategyClassLegacy(\n backend: Backend,\n target: AnyClass,\n family: string,\n name: string,\n): void {\n backend.metadata.set(MetadataKeys.STRATEGY, target, undefined, { family, name });\n registerStrategy(family, name, target);\n}\n\nexport function strategyClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n family: string,\n name: string,\n): void {\n backend.metadata.set(MetadataKeys.STRATEGY, context.metadata as object, undefined, {\n family,\n name,\n });\n registerStrategy(family, name, value);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport interface TransitionOptions {\n from: string | string[];\n to: string;\n}\n\nexport function normalizeFromStates(from: string | string[]): string[] {\n return Array.isArray(from) ? from : [from];\n}\n\nexport function transitionMethodLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n options: TransitionOptions,\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.TRANSITION, targetPrototype, propertyKey, options);\n return descriptor;\n}\n\nexport function transitionMethodStage3<This, Args extends unknown[], Return>(\n backend: Backend,\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n options: TransitionOptions,\n): (this: This, ...args: Args) => Return {\n backend.metadata.set(MetadataKeys.TRANSITION, context.metadata as object, context.name, options);\n return value;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { MetadataStore } from '../../core/metadata-store.js';\nimport { normalizeFromStates, type TransitionOptions } from './transition.js';\n\nexport interface StateLifecycleHooks {\n onEnter?: (state: string) => void;\n onExit?: (state: string) => void;\n onTransition?: (from: string, to: string) => void;\n}\n\nexport interface StateOptions extends StateLifecycleHooks {\n states: string[];\n initial: string;\n}\n\nconst STATE_SYMBOL = Symbol('lombok-ts:state');\n\nfunction collectTransitionMethods(\n metadata: MetadataStore,\n proto: object,\n classMetadata?: object,\n): Map<string, { options: TransitionOptions; original: (...args: unknown[]) => unknown }> {\n const transitions = new Map<\n string,\n { options: TransitionOptions; original: (...args: unknown[]) => unknown }\n >();\n\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === 'constructor') continue;\n const options =\n metadata.get<TransitionOptions>(MetadataKeys.TRANSITION, proto, key) ??\n (classMetadata\n ? metadata.get<TransitionOptions>(MetadataKeys.TRANSITION, classMetadata, key)\n : undefined);\n if (!options) continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc || typeof desc.value !== 'function') continue;\n transitions.set(key, { options, original: desc.value as (...args: unknown[]) => unknown });\n }\n\n return transitions;\n}\n\nfunction applyStateWrapping(\n backend: Backend,\n target: AnyClass,\n options: StateOptions,\n classMetadata?: object,\n): AnyClass {\n const { states, initial, onEnter, onExit, onTransition } = options;\n\n if (!states.includes(initial)) {\n throw new Error(`@State initial state \"${initial}\" is not in states: [${states.join(', ')}]`);\n }\n\n const transitions = collectTransitionMethods(\n backend.metadata,\n target.prototype as object,\n classMetadata,\n );\n\n const StateClass = class extends target {\n constructor(...args: unknown[]) {\n super(...args);\n Object.defineProperty(this, STATE_SYMBOL, {\n value: initial,\n writable: true,\n enumerable: false,\n configurable: false,\n });\n onEnter?.(initial);\n }\n\n get state(): string {\n return (this as unknown as Record<symbol, string>)[STATE_SYMBOL] ?? initial;\n }\n };\n\n const stateProto = StateClass.prototype as object;\n\n for (const [methodName, { options: transition, original }] of transitions) {\n const fromStates = normalizeFromStates(transition.from);\n const toState = transition.to;\n\n if (!states.includes(toState)) {\n throw new Error(`@Transition on \"${methodName}\" targets unknown state \"${toState}\"`);\n }\n for (const from of fromStates) {\n if (!states.includes(from)) {\n throw new Error(`@Transition on \"${methodName}\" references unknown state \"${from}\"`);\n }\n }\n\n Object.defineProperty(stateProto, methodName, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: function stateTransitionWrapper(this: unknown, ...args: unknown[]) {\n const self = this as Record<symbol, string>;\n const current = self[STATE_SYMBOL] ?? '';\n if (!fromStates.includes(current)) {\n throw new Error(\n `Cannot transition from \"${current}\" to \"${toState}\" via ${methodName}()`,\n );\n }\n onExit?.(current);\n const result = original.apply(this, args);\n self[STATE_SYMBOL] = toState;\n onTransition?.(current, toState);\n onEnter?.(toState);\n return result;\n },\n });\n }\n\n return StateClass as AnyClass;\n}\n\nexport function stateClassLegacy(\n backend: Backend,\n target: AnyClass,\n options: StateOptions,\n): AnyClass {\n backend.metadata.set(MetadataKeys.STATE, target, undefined, options);\n return applyStateWrapping(backend, target, options);\n}\n\nexport function stateClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n options: StateOptions,\n): AnyClass {\n backend.metadata.set(MetadataKeys.STATE, context.metadata as object, undefined, options);\n return applyStateWrapping(backend, value, options, context.metadata as object);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport interface CommandInstance {\n execute(): unknown;\n undo?(): unknown;\n}\n\nexport function assertCommand(target: AnyClass): void {\n const proto = target.prototype as { execute?: unknown; undo?: unknown };\n if (typeof proto.execute !== 'function') {\n throw new Error(`@Command class ${target.name} must define execute()`);\n }\n}\n\nexport function commandClassLegacy(backend: Backend, target: AnyClass): void {\n assertCommand(target);\n backend.metadata.set(MetadataKeys.COMMAND, target, undefined, true);\n}\n\nexport function commandClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n assertCommand(value);\n backend.metadata.set(MetadataKeys.COMMAND, context.metadata as object, undefined, true);\n}\n","import type { CommandInstance } from './command.js';\n\nexport class CommandHistory {\n private readonly undoStack: CommandInstance[] = [];\n private readonly redoStack: CommandInstance[] = [];\n\n execute(cmd: CommandInstance): unknown {\n const result = cmd.execute();\n this.undoStack.push(cmd);\n this.redoStack.length = 0;\n return result;\n }\n\n undo(): unknown {\n const cmd = this.undoStack.pop();\n if (!cmd) {\n throw new Error('Nothing to undo');\n }\n if (typeof cmd.undo !== 'function') {\n this.undoStack.push(cmd);\n throw new Error('Command does not support undo()');\n }\n const result = cmd.undo();\n this.redoStack.push(cmd);\n return result;\n }\n\n redo(): unknown {\n const cmd = this.redoStack.pop();\n if (!cmd) {\n throw new Error('Nothing to redo');\n }\n const result = cmd.execute();\n this.undoStack.push(cmd);\n return result;\n }\n\n get canUndo(): boolean {\n return this.undoStack.length > 0;\n }\n\n get canRedo(): boolean {\n return this.redoStack.length > 0;\n }\n\n clear(): void {\n this.undoStack.length = 0;\n this.redoStack.length = 0;\n }\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\nimport { deepClone } from '../../utils/index.js';\n\nexport const MEMENTO_SNAPSHOT = Symbol('lombok-ts:memento-snapshot');\n\nconst stage3MementoExcluded = new WeakMap<object, Set<string>>();\nconst legacyMementoExcluded = new WeakMap<object, Set<string>>();\n\nfunction registerLegacyMementoExclude(proto: object, field: string): void {\n const set = legacyMementoExcluded.get(proto) ?? new Set<string>();\n set.add(field);\n legacyMementoExcluded.set(proto, set);\n}\n\nfunction registerStage3MementoExclude(classMetadata: object, field: string): void {\n const set = stage3MementoExcluded.get(classMetadata) ?? new Set<string>();\n set.add(field);\n stage3MementoExcluded.set(classMetadata, set);\n}\n\nexport interface MementoSnapshot {\n readonly [MEMENTO_SNAPSHOT]: true;\n readonly data: Record<string, unknown>;\n}\n\nfunction isMementoSnapshot(value: unknown): value is MementoSnapshot {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as MementoSnapshot)[MEMENTO_SNAPSHOT] === true\n );\n}\n\nfunction collectExcludedFields(\n metadata: Backend['metadata'],\n proto: object,\n classMetadata?: object,\n): Set<string> {\n const excluded = new Set<string>();\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === 'constructor') continue;\n if (\n metadata.has(MetadataKeys.MEMENTO_EXCLUDE, proto, key) ||\n (classMetadata && metadata.has(MetadataKeys.MEMENTO_EXCLUDE, classMetadata, key))\n ) {\n excluded.add(key);\n }\n }\n if (classMetadata) {\n for (const key of stage3MementoExcluded.get(classMetadata) ?? []) {\n excluded.add(key);\n }\n }\n for (const key of legacyMementoExcluded.get(proto) ?? []) {\n excluded.add(key);\n }\n return excluded;\n}\n\nfunction snapshotInstance(\n instance: Record<string, unknown>,\n excluded: Set<string>,\n): MementoSnapshot {\n const data: Record<string, unknown> = {};\n for (const key of Object.keys(instance)) {\n if (excluded.has(key)) continue;\n if (key === 'save' || key === 'restore') continue;\n data[key] = deepClone(instance[key]);\n }\n return { [MEMENTO_SNAPSHOT]: true, data };\n}\n\nfunction applySnapshot(instance: Record<string, unknown>, snapshot: MementoSnapshot): void {\n for (const [key, value] of Object.entries(snapshot.data)) {\n instance[key] = deepClone(value);\n }\n}\n\nfunction wrapMementoClass(backend: Backend, target: AnyClass, classMetadata?: object): AnyClass {\n const excluded = collectExcludedFields(\n backend.metadata,\n target.prototype as object,\n classMetadata,\n );\n\n const MementoClass = class extends target {\n save(): MementoSnapshot {\n return snapshotInstance(this as Record<string, unknown>, excluded);\n }\n\n restore(snapshot: MementoSnapshot): void {\n if (!isMementoSnapshot(snapshot)) {\n throw new TypeError('restore() expects a snapshot returned from save()');\n }\n applySnapshot(this as Record<string, unknown>, snapshot);\n }\n };\n\n return MementoClass as AnyClass;\n}\n\nexport function mementoClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.MEMENTO, target, undefined, true);\n return wrapMementoClass(backend, target);\n}\n\nexport function mementoClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.MEMENTO, context.metadata as object, undefined, true);\n return wrapMementoClass(backend, value, context.metadata as object);\n}\n\nexport function mementoExcludeFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n backend.metadata.set(MetadataKeys.MEMENTO_EXCLUDE, targetPrototype, propertyKey, true);\n registerLegacyMementoExclude(targetPrototype, String(propertyKey));\n}\n\nexport function mementoExcludeFieldStage3<This, Value>(\n backend: Backend,\n context: ClassFieldDecoratorContext<This, Value>,\n): void {\n backend.metadata.set(\n MetadataKeys.MEMENTO_EXCLUDE,\n context.metadata as object,\n context.name,\n true,\n );\n registerStage3MementoExclude(context.metadata as object, String(context.name));\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport type ObservableListener = (next: unknown, prev: unknown) => void;\n\nexport interface ObservableInstance {\n subscribe(key: string | symbol, listener: ObservableListener): () => void;\n}\nexport type ObservableWildcardListener = (\n key: string | symbol,\n next: unknown,\n prev: unknown,\n) => void;\n\nconst LISTENERS = Symbol('lombok-ts:observable-listeners');\n\ntype ListenerMap = Map<string | symbol, Set<ObservableListener>>;\ntype WildcardSet = Set<ObservableWildcardListener>;\n\ninterface ObservableInternals {\n listeners: ListenerMap;\n wildcards: WildcardSet;\n derivedKeys: Set<string | symbol>;\n derivedCache: Map<string | symbol, unknown>;\n}\n\nfunction findGetter(proto: object, key: string | symbol): (() => unknown) | undefined {\n let current: object | null = proto;\n while (current) {\n const desc = Object.getOwnPropertyDescriptor(current, key);\n if (desc?.get) return desc.get as () => unknown;\n current = Object.getPrototypeOf(current);\n }\n return undefined;\n}\n\nfunction getInternals(target: object): ObservableInternals {\n const bag = target as Record<symbol, ObservableInternals>;\n if (!bag[LISTENERS]) {\n bag[LISTENERS] = {\n listeners: new Map(),\n wildcards: new Set(),\n derivedKeys: new Set(),\n derivedCache: new Map(),\n };\n }\n return bag[LISTENERS];\n}\n\nfunction notify(\n internals: ObservableInternals,\n key: string | symbol,\n next: unknown,\n prev: unknown,\n): void {\n const keyListeners = internals.listeners.get(key);\n if (keyListeners) {\n for (const listener of keyListeners) {\n listener(next, prev);\n }\n }\n for (const listener of internals.wildcards) {\n listener(key, next, prev);\n }\n\n if (internals.derivedKeys.size > 0) {\n const instance = targetWithInternals(internals);\n for (const derivedKey of internals.derivedKeys) {\n const prevDerived = internals.derivedCache.get(derivedKey);\n internals.derivedCache.delete(derivedKey);\n const getter = findGetter(Object.getPrototypeOf(instance), derivedKey);\n if (!getter) continue;\n const newDerived = getter.call(instance);\n internals.derivedCache.set(derivedKey, newDerived);\n if (prevDerived !== newDerived) {\n const derivedListeners = internals.listeners.get(derivedKey);\n if (derivedListeners) {\n for (const listener of derivedListeners) {\n listener(newDerived, prevDerived);\n }\n }\n }\n }\n }\n}\n\n// Weak reference hack: store instance on internals object\nconst INSTANCE = Symbol('lombok-ts:observable-instance');\n\nfunction targetWithInternals(internals: ObservableInternals): object {\n return (internals as unknown as Record<symbol, object>)[INSTANCE] ?? {};\n}\n\nfunction installSubscribe(proto: object): void {\n Object.defineProperty(proto, 'subscribe', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: function subscribe(\n this: object,\n key: string | symbol,\n listener: ObservableListener | ObservableWildcardListener,\n ): () => void {\n const internals = getInternals(this);\n (internals as unknown as Record<symbol, object>)[INSTANCE] = this;\n\n if (key === '*') {\n const wildcardListener = listener as ObservableWildcardListener;\n internals.wildcards.add(wildcardListener);\n return () => internals.wildcards.delete(wildcardListener);\n }\n\n const keyListener = listener as ObservableListener;\n let set = internals.listeners.get(key);\n if (!set) {\n set = new Set();\n internals.listeners.set(key, set);\n }\n set.add(keyListener);\n\n const proto = Object.getPrototypeOf(this);\n if (findGetter(proto, key)) {\n internals.derivedKeys.add(key);\n }\n\n return () => set!.delete(keyListener);\n },\n });\n}\n\nfunction wrapObservableInstance<T extends object>(instance: T): T {\n const internals = getInternals(instance);\n (internals as unknown as Record<symbol, object>)[INSTANCE] = instance;\n\n return new Proxy(instance, {\n set(target, prop, value, receiver) {\n if (typeof prop === 'symbol') {\n return Reflect.set(target, prop, value, receiver);\n }\n const prev = Reflect.get(target, prop, receiver);\n const result = Reflect.set(target, prop, value, receiver);\n if (prev !== value) {\n notify(internals, prop, value, prev);\n }\n return result;\n },\n });\n}\n\nfunction wrapObservableClass(target: AnyClass): AnyClass {\n installSubscribe(target.prototype as object);\n\n const ObservableClass = class extends target {\n constructor(...args: unknown[]) {\n super(...args);\n return wrapObservableInstance(this);\n }\n };\n\n return ObservableClass as AnyClass;\n}\n\nexport function observableClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.OBSERVABLE, target, undefined, true);\n return wrapObservableClass(target);\n}\n\nexport function observableClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.OBSERVABLE, context.metadata as object, undefined, true);\n return wrapObservableClass(value);\n}\n\nexport function observableDerivedLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.OBSERVABLE, targetPrototype, propertyKey, { derived: true });\n const originalGet = descriptor.get;\n if (!originalGet) return;\n\n const key = propertyKey;\n return {\n ...descriptor,\n get(this: object) {\n const internals = getInternals(this);\n (internals as unknown as Record<symbol, object>)[INSTANCE] = this;\n internals.derivedKeys.add(key);\n\n if (internals.derivedCache.has(key)) {\n return internals.derivedCache.get(key);\n }\n const value = originalGet.call(this);\n internals.derivedCache.set(key, value);\n return value;\n },\n };\n}\n\nexport function observableDerivedStage3<This>(\n backend: Backend,\n value: (this: This) => unknown,\n context: ClassGetterDecoratorContext<This, unknown>,\n): (this: This) => unknown {\n backend.metadata.set(MetadataKeys.OBSERVABLE, context.metadata as object, context.name, {\n derived: true,\n });\n\n const key = context.name;\n return function derivedGetter(this: This): unknown {\n const internals = getInternals(this as object);\n (internals as unknown as Record<symbol, object>)[INSTANCE] = this as object;\n internals.derivedKeys.add(key);\n\n if (internals.derivedCache.has(key)) {\n return internals.derivedCache.get(key);\n }\n const result = value.call(this);\n internals.derivedCache.set(key, result);\n return result;\n };\n}\n\n/** Alias for `@Observable` (GoF naming). */\nexport function observerClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n return observableClassLegacy(backend, target);\n}\n\nexport function observerClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n return observableClassStage3(backend, value, context);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\n\nexport interface HandlerOptions {\n order: number;\n}\n\ninterface HandlerEntry {\n order: number;\n method: string;\n fn: (context: unknown) => unknown;\n}\n\nfunction collectHandlers(backend: Backend, proto: object, classMetadata?: object): HandlerEntry[] {\n const handlers: HandlerEntry[] = [];\n\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key === 'constructor') continue;\n const options =\n backend.metadata.get<HandlerOptions>(MetadataKeys.HANDLER, proto, key) ??\n (classMetadata\n ? backend.metadata.get<HandlerOptions>(MetadataKeys.HANDLER, classMetadata, key)\n : undefined);\n if (!options) continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (!desc || typeof desc.value !== 'function') continue;\n handlers.push({\n order: options.order,\n method: key,\n fn: desc.value as (context: unknown) => unknown,\n });\n }\n\n handlers.sort((a, b) => a.order - b.order);\n return handlers;\n}\n\nfunction wrapChainClass(backend: Backend, target: AnyClass, classMetadata?: object): AnyClass {\n const handlers = collectHandlers(backend, target.prototype as object, classMetadata);\n\n const ChainClass = class extends target {\n handle(context: unknown): boolean {\n for (const handler of handlers) {\n const result = handler.fn.call(this, context);\n if (result === true || (result !== undefined && result !== false)) {\n return true;\n }\n }\n return false;\n }\n };\n\n return ChainClass as AnyClass;\n}\n\nexport function chainOfResponsibilityClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.CHAIN_OF_RESPONSIBILITY, target, undefined, true);\n return wrapChainClass(backend, target);\n}\n\nexport function chainOfResponsibilityClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(\n MetadataKeys.CHAIN_OF_RESPONSIBILITY,\n context.metadata as object,\n undefined,\n true,\n );\n return wrapChainClass(backend, value, context.metadata as object);\n}\n\nexport function handlerMethodLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n descriptor: PropertyDescriptor,\n options: HandlerOptions,\n): PropertyDescriptor | void {\n backend.metadata.set(MetadataKeys.HANDLER, targetPrototype, propertyKey, options);\n return descriptor;\n}\n\nexport function handlerMethodStage3<This, Args extends unknown[], Return>(\n backend: Backend,\n value: (this: This, ...args: Args) => Return,\n context: ClassMethodDecoratorContext<This, (this: This, ...args: Args) => Return>,\n options: HandlerOptions,\n): (this: This, ...args: Args) => Return {\n backend.metadata.set(MetadataKeys.HANDLER, context.metadata as object, context.name, options);\n return value;\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\nimport type { PropertyName } from '../../core/types.js';\n\nconst ITERATE_FIELD = Symbol('lombok-ts:iterate-over-field');\nconst legacyIterateFields = new WeakMap<object, (string | symbol)[]>();\nconst stage3IterateFields = new WeakMap<object, (string | symbol)[]>();\n\nfunction registerLegacyIterateField(proto: object, field: string | symbol): void {\n const existing = legacyIterateFields.get(proto) ?? [];\n existing.push(field);\n legacyIterateFields.set(proto, existing);\n}\n\nfunction registerStage3IterateField(classMetadata: object, field: string | symbol): void {\n const existing = stage3IterateFields.get(classMetadata) ?? [];\n existing.push(field);\n stage3IterateFields.set(classMetadata, existing);\n}\n\nfunction resolveIterateField(\n backend: Backend,\n proto: object,\n classMetadata?: object,\n): string | symbol {\n const fields: (string | symbol)[] = [];\n\n for (const key of [\n ...Object.getOwnPropertyNames(proto),\n ...Object.getOwnPropertySymbols(proto),\n ]) {\n if (key === 'constructor') continue;\n if (\n backend.metadata.has(MetadataKeys.ITERATE_OVER, proto, key) ||\n (classMetadata && backend.metadata.has(MetadataKeys.ITERATE_OVER, classMetadata, key))\n ) {\n fields.push(key);\n }\n }\n\n if (classMetadata) {\n fields.push(...(stage3IterateFields.get(classMetadata) ?? []));\n }\n\n fields.push(...(legacyIterateFields.get(proto) ?? []));\n\n if (fields.length === 0) {\n throw new Error('@Iterable requires exactly one @IterateOver field');\n }\n if (fields.length > 1) {\n throw new Error('@Iterable allows only one @IterateOver field');\n }\n\n return fields[0]!;\n}\n\nfunction installIterator(target: AnyClass, fieldKey: string | symbol): void {\n Object.defineProperty(target.prototype, Symbol.iterator, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: function* iterateOver(this: Record<string | symbol, Iterable<unknown>>) {\n const collection = this[fieldKey];\n if (collection == null) return;\n yield* collection;\n },\n });\n}\n\nexport function iterableClassLegacy(backend: Backend, target: AnyClass): void {\n backend.metadata.set(MetadataKeys.ITERABLE, target, undefined, true);\n const fieldKey = resolveIterateField(backend, target.prototype as object);\n (target as unknown as Record<symbol, string | symbol>)[ITERATE_FIELD] = fieldKey;\n installIterator(target, fieldKey);\n}\n\nexport function iterableClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): void {\n backend.metadata.set(MetadataKeys.ITERABLE, context.metadata as object, undefined, true);\n const fieldKey = resolveIterateField(\n backend,\n value.prototype as object,\n context.metadata as object,\n );\n (value as unknown as Record<symbol, string | symbol>)[ITERATE_FIELD] = fieldKey;\n installIterator(value, fieldKey);\n}\n\nexport function iterateOverFieldLegacy(\n backend: Backend,\n targetPrototype: object,\n propertyKey: PropertyName,\n): void {\n backend.metadata.set(MetadataKeys.ITERATE_OVER, targetPrototype, propertyKey, true);\n registerLegacyIterateField(targetPrototype, propertyKey);\n}\n\nexport function iterateOverFieldStage3<This, Value>(\n backend: Backend,\n context: ClassFieldDecoratorContext<This, Value>,\n): void {\n backend.metadata.set(MetadataKeys.ITERATE_OVER, context.metadata as object, context.name, true);\n registerStage3IterateField(context.metadata as object, context.name);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport interface FlyweightOptions {\n key: (...args: unknown[]) => string;\n}\n\nconst pools = new WeakMap<AnyClass, Map<string, object>>();\n\nfunction getPool(ctor: AnyClass): Map<string, object> {\n let pool = pools.get(ctor);\n if (!pool) {\n pool = new Map();\n pools.set(ctor, pool);\n }\n return pool;\n}\n\nfunction wrapFlyweightClass(target: AnyClass, options: FlyweightOptions): AnyClass {\n const pool = getPool(target);\n\n const FlyweightClass = class extends target {\n constructor(...args: unknown[]) {\n const key = options.key(...args);\n const existing = pool.get(key);\n if (existing) {\n return existing;\n }\n super(...args);\n pool.set(key, this as object);\n }\n };\n\n return FlyweightClass as AnyClass;\n}\n\nexport function flyweightClassLegacy(\n backend: Backend,\n target: AnyClass,\n options: FlyweightOptions,\n): AnyClass {\n if (typeof options?.key !== 'function') {\n throw new Error('@Flyweight requires a `key` function in options');\n }\n backend.metadata.set(MetadataKeys.FLYWEIGHT, target, undefined, options);\n return wrapFlyweightClass(target, options);\n}\n\nexport function flyweightClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n options: FlyweightOptions,\n): AnyClass {\n if (typeof options?.key !== 'function') {\n throw new Error('@Flyweight requires a `key` function in options');\n }\n backend.metadata.set(MetadataKeys.FLYWEIGHT, context.metadata as object, undefined, options);\n return wrapFlyweightClass(value, options);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nconst CHILDREN = Symbol('lombok-ts:composite-children');\n\nfunction getChildren(instance: object): object[] {\n const bag = instance as Record<symbol, object[]>;\n if (!bag[CHILDREN]) {\n bag[CHILDREN] = [];\n }\n return bag[CHILDREN];\n}\n\nfunction wrapCompositeClass(target: AnyClass): AnyClass {\n const CompositeClass = class extends target {\n add(child: object): void {\n getChildren(this).push(child);\n }\n\n remove(child: object): void {\n const children = getChildren(this);\n const index = children.indexOf(child);\n if (index >= 0) {\n children.splice(index, 1);\n }\n }\n\n getChild(index: number): object {\n const children = getChildren(this);\n const child = children[index];\n if (child === undefined) {\n throw new RangeError(`@Composite: no child at index ${index}`);\n }\n return child;\n }\n\n getChildren(): readonly object[] {\n return [...getChildren(this)];\n }\n\n traverse(callback: (node: object) => void): void {\n const visit = (node: object): void => {\n callback(node);\n for (const child of getChildren(node)) {\n visit(child);\n }\n };\n visit(this);\n }\n\n *[Symbol.iterator](): IterableIterator<object> {\n yield* getChildren(this);\n }\n };\n\n return CompositeClass as AnyClass;\n}\n\nexport function compositeClassLegacy(backend: Backend, target: AnyClass): AnyClass {\n backend.metadata.set(MetadataKeys.COMPOSITE, target, undefined, true);\n return wrapCompositeClass(target);\n}\n\nexport function compositeClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n): AnyClass {\n backend.metadata.set(MetadataKeys.COMPOSITE, context.metadata as object, undefined, true);\n return wrapCompositeClass(value);\n}\n","import type { Backend } from '../../core/backend.js';\nimport { MetadataKeys } from '../../core/metadata-keys.js';\nimport type { AnyClass } from '../../legacy/decorate.js';\n\nexport interface ProxyHooks {\n before?: (method: string, args: unknown[]) => void;\n after?: (method: string, result: unknown) => void;\n}\n\nfunction isMethod(key: string | symbol, value: unknown): value is (...args: unknown[]) => unknown {\n return typeof key === 'string' && key !== 'constructor' && typeof value === 'function';\n}\n\nfunction wrapProxyInstance<T extends object>(instance: T, hooks: ProxyHooks): T {\n const proto = Object.getPrototypeOf(instance);\n\n return new Proxy(instance, {\n get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver);\n if (!isMethod(prop, value)) {\n return value;\n }\n const original = (Object.getOwnPropertyDescriptor(proto, prop)?.value ?? value) as (\n ...args: unknown[]\n ) => unknown;\n return (...args: unknown[]) => {\n const methodName = String(prop);\n hooks.before?.(methodName, args);\n const result = original.apply(target, args);\n hooks.after?.(methodName, result);\n return result;\n };\n },\n });\n}\n\nfunction wrapProxyClass(target: AnyClass, hooks: ProxyHooks): AnyClass {\n const ProxyClass = class extends target {\n constructor(...args: unknown[]) {\n super(...args);\n return wrapProxyInstance(this, hooks);\n }\n };\n\n return ProxyClass as AnyClass;\n}\n\nexport function proxyClassLegacy(\n backend: Backend,\n target: AnyClass,\n hooks: ProxyHooks = {},\n): AnyClass {\n backend.metadata.set(MetadataKeys.PROXY, target, undefined, hooks);\n return wrapProxyClass(target, hooks);\n}\n\nexport function proxyClassStage3(\n backend: Backend,\n value: AnyClass,\n context: ClassDecoratorContext,\n hooks: ProxyHooks = {},\n): AnyClass {\n backend.metadata.set(MetadataKeys.PROXY, context.metadata as object, undefined, hooks);\n return wrapProxyClass(value, hooks);\n}\n","import { MetadataKeys } from '../../core/metadata-keys.js';\nimport {\n defineClassDecorator,\n defineFieldDecorator,\n defineMethodDecorator,\n defineParameterDecorator,\n} from '../../legacy/decorate.js';\nimport { legacyBackend } from '../../legacy/backend.js';\nimport {\n codegenClassMarkerLegacy,\n factoryClassLegacy,\n createFromFactory,\n getFactoryRegistry,\n registerFactory,\n} from '../shared/factory.js';\nimport {\n memoizeMethodLegacy,\n nonNullFieldLegacy,\n nonNullParameterLegacy,\n prototypeClassLegacy,\n singletonClassLegacy,\n} from '../shared/index.js';\nimport type { MemoizeOptions } from '../shared/memoize.js';\nimport type { AccessorsOptions } from '../shared/accessors.js';\nimport { accessorsClassLegacy } from '../shared/accessors.js';\nimport { delegateFieldLegacy, parseDelegateMethods } from '../shared/delegate.js';\nimport { equalsClassLegacy, equalsExcludeFieldLegacy } from '../shared/equals.js';\nimport type { FieldDefaultsOptions } from '../shared/field-defaults.js';\nimport { fieldDefaultsClassLegacy } from '../shared/field-defaults.js';\nimport { getterFieldLegacy } from '../shared/getter.js';\nimport type { LogOptions } from '../shared/log.js';\nimport { logClassLegacy, logMethodLegacy } from '../shared/log.js';\nimport { setterFieldLegacy } from '../shared/setter.js';\nimport { utilityClassLegacy } from '../shared/utility-class.js';\nimport { valueClassLegacy } from '../shared/value.js';\nimport { withClassLegacy, withFieldLegacy } from '../shared/with.js';\nimport {\n getStrategyFromRegistry,\n getStrategyRegistry,\n listStrategies,\n registerStrategy,\n strategyClassLegacy,\n StrategyRegistry,\n} from '../shared/strategy.js';\nimport type { StateOptions } from '../shared/state.js';\nimport { stateClassLegacy } from '../shared/state.js';\nimport type { TransitionOptions } from '../shared/transition.js';\nimport { transitionMethodLegacy } from '../shared/transition.js';\nimport { commandClassLegacy } from '../shared/command.js';\nimport { CommandHistory } from '../shared/command-history.js';\nimport { mementoClassLegacy, mementoExcludeFieldLegacy } from '../shared/memento.js';\nimport {\n observableClassLegacy,\n observableDerivedLegacy,\n observerClassLegacy,\n} from '../shared/observable.js';\nimport {\n chainOfResponsibilityClassLegacy,\n handlerMethodLegacy,\n} from '../shared/chain-of-responsibility.js';\nimport type { HandlerOptions } from '../shared/chain-of-responsibility.js';\nimport { iterableClassLegacy, iterateOverFieldLegacy } from '../shared/iterable.js';\nimport type { FlyweightOptions } from '../shared/flyweight.js';\nimport { flyweightClassLegacy } from '../shared/flyweight.js';\nimport { compositeClassLegacy } from '../shared/composite.js';\nimport type { ProxyHooks } from '../shared/proxy.js';\nimport { proxyClassLegacy } from '../shared/proxy.js';\n\n/** Validates field assignments are not null or undefined. */\nexport const NonNull = defineFieldDecorator(nonNullFieldLegacy);\n\n/** Validates method parameters marked with `@NonNull`. Legacy backend only. */\nexport function NonNullParam(): ParameterDecorator {\n return defineParameterDecorator(nonNullParameterLegacy);\n}\n\n/** Ensures only one instance of the class exists. */\nexport const Singleton = defineClassDecorator(singletonClassLegacy);\n\n/** Returns a deep clone on every `new` call. */\nexport const Prototype = defineClassDecorator(prototypeClassLegacy);\n\n/** Caches method return values. Optional TTL in milliseconds. */\nexport function Memoize(options: MemoizeOptions = {}): MethodDecorator {\n return defineMethodDecorator((backend, target, key, descriptor) =>\n memoizeMethodLegacy(backend, target, key, descriptor, options),\n );\n}\n\n/** Registers the class in the global factory registry under `key`. */\nexport function Factory(key: string): ClassDecorator {\n return defineClassDecorator((backend, target) => {\n factoryClassLegacy(backend, target, key);\n });\n}\n\n/** Composite Lombok `@Data` — codegen generates getters, setters, toString, equals. */\nexport const Data = defineClassDecorator((backend, target) =>\n codegenClassMarkerLegacy(backend, target, MetadataKeys.DATA),\n);\n\n/** Immutable value class — codegen generates getters, with*, toString, equals. */\nexport const Value = defineClassDecorator((backend, target) => valueClassLegacy(backend, target));\n\n/** Fluent builder — codegen generates a companion builder class. */\nexport const Builder = defineClassDecorator((backend, target) =>\n codegenClassMarkerLegacy(backend, target, MetadataKeys.BUILDER),\n);\n\n/** Auto `toString()` — codegen generates the method body. */\nexport const ToString = defineClassDecorator((backend, target) =>\n codegenClassMarkerLegacy(backend, target, MetadataKeys.TO_STRING),\n);\n\n/** Structural `equals()` — codegen generates instance and static helpers. */\nexport const Equals = defineClassDecorator((backend, target) => equalsClassLegacy(backend, target));\n\n/** Immutable copy helpers — class or field level `with*` methods. */\nconst withClassDecorator = defineClassDecorator((backend, target) =>\n withClassLegacy(backend, target),\n);\nconst withFieldDecorator = defineFieldDecorator(withFieldLegacy);\n\nexport function With(): ClassDecorator & PropertyDecorator {\n return ((target: object, propertyKey?: string | symbol) => {\n if (propertyKey === undefined) {\n return withClassDecorator(target as new (...args: unknown[]) => unknown);\n }\n return withFieldDecorator(target, propertyKey);\n }) as ClassDecorator & PropertyDecorator;\n}\n\n/** Field getter — codegen generates `getField()`. */\nexport const Getter = defineFieldDecorator(getterFieldLegacy);\n\n/** Field setter — codegen generates `setField()`. */\nexport const Setter = defineFieldDecorator(setterFieldLegacy);\n\n/** Logs method entry via the configured provider (default `console`). */\nexport function Log(options: LogOptions = {}): ClassDecorator & MethodDecorator {\n const classDec = defineClassDecorator((backend, target) =>\n logClassLegacy(backend, target, options),\n );\n const methodDec = defineMethodDecorator((backend, target, key, descriptor) =>\n logMethodLegacy(backend, target, key, descriptor, options),\n );\n return ((target: object, propertyKey?: string | symbol, descriptor?: PropertyDescriptor) => {\n if (propertyKey !== undefined && descriptor !== undefined) {\n return methodDec(target, propertyKey, descriptor);\n }\n return classDec(target as new (...args: unknown[]) => unknown);\n }) as ClassDecorator & MethodDecorator;\n}\n\n/** Fluent/chained accessor style for generated setters. */\nexport function Accessors(options: AccessorsOptions = {}): ClassDecorator {\n return defineClassDecorator((backend, target) => accessorsClassLegacy(backend, target, options));\n}\n\n/** Uninstantiable utility holder — constructor throws. */\nexport const UtilityClass = defineClassDecorator((backend, target) =>\n utilityClassLegacy(backend, target),\n);\n\n/** Default field visibility and finality for codegen. */\nexport function FieldDefaults(options: FieldDefaultsOptions = {}): ClassDecorator {\n return defineClassDecorator((backend, target) =>\n fieldDefaultsClassLegacy(backend, target, options),\n );\n}\n\n/** Delegates methods to a field. Pass method names as decorator arguments. */\nexport function Delegate(...methods: string[]): PropertyDecorator {\n return defineFieldDecorator((backend, proto, key) =>\n delegateFieldLegacy(backend, proto, key, parseDelegateMethods(methods)),\n );\n}\n\n/** Exclude a field from generated `equals()`. */\nexport const EqualsExclude = defineFieldDecorator(equalsExcludeFieldLegacy);\n\n/** Registers a swappable strategy under `family` and `name`. */\nexport function Strategy(family: string, name: string): ClassDecorator {\n return defineClassDecorator((backend, target) => {\n strategyClassLegacy(backend, target, family, name);\n });\n}\n\n/** Finite state machine with `@Transition`-guarded methods. */\nexport function State(options: StateOptions): ClassDecorator {\n return defineClassDecorator((backend, target) => stateClassLegacy(backend, target, options));\n}\n\n/** Declares an allowed state transition on a method. */\nexport function Transition(options: TransitionOptions): MethodDecorator {\n return defineMethodDecorator((backend, target, key, descriptor) =>\n transitionMethodLegacy(backend, target, key, descriptor, options),\n );\n}\n\n/** Command object marker — class must define `execute()`. */\nexport const Command = defineClassDecorator(commandClassLegacy);\n\n/** Reactive property changes with a subscription API. */\nexport const Observable = defineClassDecorator(observableClassLegacy) as ClassDecorator & {\n Derived: PropertyDecorator;\n};\n\nObservable.Derived = ((\n target: object,\n propertyKey: string | symbol,\n descriptor: PropertyDescriptor,\n): void => {\n if (descriptor === undefined || typeof descriptor.get !== 'function') {\n throw new TypeError('@Observable.Derived requires a getter');\n }\n observableDerivedLegacy(legacyBackend, target, propertyKey, descriptor);\n}) as PropertyDecorator;\n\n/** Alias for `@Observable` (GoF naming). */\nexport const Observer = defineClassDecorator(observerClassLegacy);\n\n/** Snapshot and restore instance state. */\nexport const Memento = defineClassDecorator(mementoClassLegacy) as ClassDecorator & {\n Exclude: PropertyDecorator;\n};\n\nMemento.Exclude = defineFieldDecorator(mementoExcludeFieldLegacy);\n\n/** Chain-of-responsibility handler dispatch via `handle()`. */\nexport const ChainOfResponsibility = defineClassDecorator(chainOfResponsibilityClassLegacy);\n\n/** Marks a method as a chain handler with sort `order`. */\nexport function Handler(options: HandlerOptions): MethodDecorator {\n return defineMethodDecorator((backend, target, key, descriptor) =>\n handlerMethodLegacy(backend, target, key, descriptor, options),\n );\n}\n\n/** Auto-implements `Symbol.iterator` over an `@IterateOver` field. */\nexport const Iterable = defineClassDecorator(iterableClassLegacy);\n\n/** Marks the collection field iterated by `@Iterable`. */\nexport const IterateOver = defineFieldDecorator(iterateOverFieldLegacy);\n\n/** Shared instance pool keyed by constructor arguments. */\nexport function Flyweight(options: FlyweightOptions): ClassDecorator {\n return defineClassDecorator((backend, target) => flyweightClassLegacy(backend, target, options));\n}\n\n/** Tree composite API — add, remove, traverse children. */\nexport const Composite = defineClassDecorator(compositeClassLegacy);\n\n/** Runtime method interception via Proxy. */\nexport function Proxy(hooks: ProxyHooks = {}): ClassDecorator {\n return defineClassDecorator((backend, target) => proxyClassLegacy(backend, target, hooks));\n}\n\nexport {\n createFromFactory,\n getFactoryRegistry,\n registerFactory,\n StrategyRegistry,\n getStrategyFromRegistry,\n getStrategyRegistry,\n listStrategies,\n registerStrategy,\n CommandHistory,\n};\n"]}
|
|
@@ -111,4 +111,13 @@ interface HandlerOptions {
|
|
|
111
111
|
order: number;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
interface FlyweightOptions {
|
|
115
|
+
key: (...args: unknown[]) => string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
interface ProxyHooks {
|
|
119
|
+
before?: (method: string, args: unknown[]) => void;
|
|
120
|
+
after?: (method: string, result: unknown) => void;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export { type AccessorsOptions as A, type ClassDecoratorLogic as C, type FieldDefaultsOptions as F, type HandlerOptions as H, type LogOptions as L, type MemoizeOptions as M, type ProxyHooks as P, type StateOptions as S, type TransitionOptions as T, type FlyweightOptions as a, CommandHistory as b, type FieldDecoratorLogic as c, type MethodDecoratorLogic as d, type ParameterDecoratorLogic as e, StrategyRegistry as f, createFromFactory as g, defineClassDecorator as h, defineFieldDecorator as i, defineMethodDecorator as j, defineParameterDecorator as k, getFactoryRegistry as l, getStrategyFromRegistry as m, getStrategyRegistry as n, listStrategies as o, registerStrategy as p, type AnyClass as q, registerFactory as r };
|
|
@@ -111,4 +111,13 @@ interface HandlerOptions {
|
|
|
111
111
|
order: number;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
interface FlyweightOptions {
|
|
115
|
+
key: (...args: unknown[]) => string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
interface ProxyHooks {
|
|
119
|
+
before?: (method: string, args: unknown[]) => void;
|
|
120
|
+
after?: (method: string, result: unknown) => void;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export { type AccessorsOptions as A, type ClassDecoratorLogic as C, type FieldDefaultsOptions as F, type HandlerOptions as H, type LogOptions as L, type MemoizeOptions as M, type ProxyHooks as P, type StateOptions as S, type TransitionOptions as T, type FlyweightOptions as a, CommandHistory as b, type FieldDecoratorLogic as c, type MethodDecoratorLogic as d, type ParameterDecoratorLogic as e, StrategyRegistry as f, createFromFactory as g, defineClassDecorator as h, defineFieldDecorator as i, defineMethodDecorator as j, defineParameterDecorator as k, getFactoryRegistry as l, getStrategyFromRegistry as m, getStrategyRegistry as n, listStrategies as o, registerStrategy as p, type AnyClass as q, registerFactory as r };
|