"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serde = serde; exports.register = register; const options_1 = require("./options"); const registry_1 = require("./registry"); function decorateContainer(target, context, options) { const meta = context.metadata; const serde = (meta.serde || new options_1.SerdeOptions(target)); serde.options = options; meta.serde = serde; } function decorateProperty(target, context, options) { const meta = context.metadata; const serde = (meta.serde || new options_1.SerdeOptions(target)); serde.properties.set(context, options); meta.serde = serde; } function serde(options) { return function (target, context) { if (context != null) { decorateProperty(target, context, options); } else { decorateContainer(target, context, options); } }; } function register(registry = registry_1.GlobalRegistry) { return function (target, _context) { registry.add(target); }; }