serde-ts/dist/decorator.js
2025-05-19 13:30:11 -05:00

33 lines
1 KiB
JavaScript

"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.target = 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.name, options);
meta.serde = serde;
}
function serde(options) {
return function (target, context) {
if (target == null) {
decorateProperty(target, context, options);
}
else
decorateContainer(target, context, options);
};
}
function register(registry = registry_1.GlobalRegistry) {
return function (target, _context) {
registry.add(target);
};
}