33 lines
1 KiB
JavaScript
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.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);
|
|
};
|
|
}
|