update dist and mixins

This commit is contained in:
Rowan 2025-05-18 21:47:04 -05:00
parent cf3bdfba48
commit d749044351
10 changed files with 148 additions and 92 deletions

77
dist/de/generic.js vendored
View file

@ -1,26 +1,69 @@
"use strict"; "use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
return c > 3 && r && Object.defineProperty(target, key, r), r; var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
}; };
var GenericSeed_1;
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.GenericVisitor = exports.GenericSeed = void 0; exports.GenericVisitor = exports.GenericSeed = void 0;
const utils_1 = require("../utils"); const utils_1 = require("../utils");
let GenericSeed = GenericSeed_1 = class GenericSeed { let GenericSeed = (() => {
static deserialize(deserializer) { let _classDecorators = [(0, utils_1.staticImplements)()];
return deserializer.deserializeAny(new GenericVisitor()); let _classDescriptor;
} let _classExtraInitializers = [];
deserialize(deserializer) { let _classThis;
return GenericSeed_1.deserialize(deserializer); var GenericSeed = _classThis = class {
} static deserialize(deserializer) {
}; return deserializer.deserializeAny(new GenericVisitor());
}
deserialize(deserializer) {
return GenericSeed.deserialize(deserializer);
}
};
__setFunctionName(_classThis, "GenericSeed");
(() => {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
GenericSeed = _classThis = _classDescriptor.value;
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
__runInitializers(_classThis, _classExtraInitializers);
})();
return GenericSeed = _classThis;
})();
exports.GenericSeed = GenericSeed; exports.GenericSeed = GenericSeed;
exports.GenericSeed = GenericSeed = GenericSeed_1 = __decorate([
(0, utils_1.staticImplements)()
], GenericSeed);
class GenericVisitor { class GenericVisitor {
visitString(value) { visitString(value) {
return value; return value;

89
dist/de/mixin.js vendored
View file

@ -1,31 +1,76 @@
"use strict"; "use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
return c > 3 && r && Object.defineProperty(target, key, r), r; var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.deserialize = deserialize; exports.deserialize = deserialize;
const decorator_1 = require("../decorator");
const utils_1 = require("../utils"); const utils_1 = require("../utils");
const impl_1 = require("./impl"); const impl_1 = require("./impl");
function deserialize(constructor) { function deserialize(constructor) {
let Deserializable = class Deserializable extends constructor { let Deserializable = (() => {
static deserialize(deserializer) { let _classDecorators = [(0, utils_1.staticImplements)()];
return (0, impl_1.deserializeWith)(deserializer, this, (0, decorator_1.getMetadata)(this)); let _classDescriptor;
} let _classExtraInitializers = [];
}; let _classThis;
Object.defineProperty(Deserializable, "name", { let _classSuper = constructor;
enumerable: true, var Deserializable = _classThis = class extends _classSuper {
configurable: true, static deserialize(deserializer) {
writable: true, return (0, impl_1.deserializeWith)(deserializer, this, constructor[Symbol.metadata]);
value: constructor.name }
}); };
Deserializable = __decorate([ __setFunctionName(_classThis, "Deserializable");
(0, utils_1.staticImplements)() (() => {
], Deserializable); var _a;
// @ts-ignore const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create((_a = _classSuper[Symbol.metadata]) !== null && _a !== void 0 ? _a : null) : void 0;
Deserializable[decorator_1.Serde] = constructor[decorator_1.Serde]; __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
Deserializable = _classThis = _classDescriptor.value;
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
})();
Object.defineProperty(_classThis, "name", {
enumerable: true,
configurable: true,
writable: true,
value: constructor.name
});
(() => {
__runInitializers(_classThis, _classExtraInitializers);
})();
return Deserializable = _classThis;
})();
return Deserializable; return Deserializable;
} }

6
dist/decorator.d.ts vendored
View file

@ -1,6 +1,4 @@
import { ContainerOptions, PropertyOptions } from './options'; import { ContainerOptions, PropertyOptions } from './options';
import { Registry } from './registry'; import { Registry } from './registry';
export declare const Serde: unique symbol; export declare function serde(options: ContainerOptions | PropertyOptions): (target: any, context: any) => void;
export declare function serde(options: ContainerOptions | PropertyOptions): (target: any, property?: PropertyKey) => any; export declare function register(registry?: Registry): (target: any, _context: any) => void;
export declare function getMetadata(value: any): any;
export declare function register(registry?: Registry): (target: any) => any;

51
dist/decorator.js vendored
View file

@ -1,54 +1,33 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.Serde = void 0;
exports.serde = serde; exports.serde = serde;
exports.getMetadata = getMetadata;
exports.register = register; exports.register = register;
const options_1 = require("./options"); const options_1 = require("./options");
const registry_1 = require("./registry"); const registry_1 = require("./registry");
exports.Serde = Symbol('Serde'); function decorateContainer(target, context, options) {
function decorateContainer(options, constructor) { const meta = context.metadata;
if (constructor[exports.Serde] == null) { const serde = (meta.serde || new options_1.SerdeOptions(target));
constructor[exports.Serde] = new options_1.SerdeOptions(constructor, options); serde.options = options;
} meta.serde = serde;
else {
constructor[exports.Serde].options = options;
}
return constructor;
} }
function decorateProperty(options, target, property) { function decorateProperty(target, context, options) {
let constructor; const meta = context.metadata;
if (typeof target === 'function') { const serde = (meta.serde || new options_1.SerdeOptions(target));
constructor = target; serde.properties.set(context, options);
} meta.serde = serde;
else {
constructor = target.constructor;
}
if (constructor[exports.Serde] == null) {
constructor[exports.Serde] = options_1.SerdeOptions.from(target);
}
constructor[exports.Serde].properties.set(property, options);
return target;
} }
function serde(options) { function serde(options) {
return function (target, property) { return function (target, context) {
if (property != null) { if (context != null) {
return decorateProperty(options, target, property); decorateProperty(target, context, options);
} }
else { else {
return decorateContainer(options, target); decorateContainer(target, context, options);
} }
}; };
} }
function getMetadata(value) {
return value[exports.Serde];
}
function register(registry = registry_1.GlobalRegistry) { function register(registry = registry_1.GlobalRegistry) {
return function (target) { return function (target, _context) {
if (target[exports.Serde] == null) {
target[exports.Serde] = options_1.SerdeOptions.from(target);
}
registry.add(target); registry.add(target);
return target;
}; };
} }

4
dist/ser/impl.js vendored
View file

@ -1,7 +1,6 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.serializeWith = serializeWith; exports.serializeWith = serializeWith;
const decorator_1 = require("../decorator");
const options_1 = require("../options"); const options_1 = require("../options");
const utils_1 = require("../utils"); const utils_1 = require("../utils");
const unhandledType = (serializer, value) => new TypeError(`'${serializer.constructor.name}' has no method for value type '${typeof value}'`); const unhandledType = (serializer, value) => new TypeError(`'${serializer.constructor.name}' has no method for value type '${typeof value}'`);
@ -13,7 +12,6 @@ function serializeEntries(serializer, value, options) {
continue; continue;
} }
const name = (_a = options === null || options === void 0 ? void 0 : options.getPropertyName(key, options_1.Stage.Serialize)) !== null && _a !== void 0 ? _a : key; const name = (_a = options === null || options === void 0 ? void 0 : options.getPropertyName(key, options_1.Stage.Serialize)) !== null && _a !== void 0 ? _a : key;
console.log('prop name for', key, name);
state = serializer.serializeKey(name); state = serializer.serializeKey(name);
state = serializer.serializeValue(val); state = serializer.serializeValue(val);
} }
@ -34,7 +32,7 @@ function serializeIter(serializer, value, options) {
return serializer.end(); return serializer.end();
} }
function defaultOptions(value) { function defaultOptions(value) {
return value.constructor[decorator_1.Serde]; return value.constructor[Symbol.metadata];
} }
// dispatches in the order of serializeType -> serializeAny -> throw TypeError // dispatches in the order of serializeType -> serializeAny -> throw TypeError
function serializeWith(serializer, value, optionsGetter = defaultOptions) { function serializeWith(serializer, value, optionsGetter = defaultOptions) {

1
dist/ser/index.d.ts vendored
View file

@ -1,3 +1,4 @@
import '@tsmetadata/polyfill';
export * from './interface'; export * from './interface';
export * from './mixin'; export * from './mixin';
export * from './impl'; export * from './impl';

1
dist/ser/index.js vendored
View file

@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
require("@tsmetadata/polyfill");
__exportStar(require("./interface"), exports); __exportStar(require("./interface"), exports);
__exportStar(require("./mixin"), exports); __exportStar(require("./mixin"), exports);
__exportStar(require("./impl"), exports); __exportStar(require("./impl"), exports);

2
dist/ser/mixin.js vendored
View file

@ -1,7 +1,6 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.serialize = serialize; exports.serialize = serialize;
const decorator_1 = require("../decorator");
const impl_1 = require("./impl"); const impl_1 = require("./impl");
const interface_1 = require("./interface"); const interface_1 = require("./interface");
function serialize(constructor) { function serialize(constructor) {
@ -22,6 +21,5 @@ function serialize(constructor) {
writable: true, writable: true,
value: constructor.name value: constructor.name
}); });
Serializable[decorator_1.Serde] = constructor[decorator_1.Serde];
return Serializable; return Serializable;
} }

View file

@ -1,4 +1,3 @@
import { getMetadata, Serde } from '../decorator'
import { Constructor, staticImplements } from '../utils' import { Constructor, staticImplements } from '../utils'
import { deserializeWith } from './impl' import { deserializeWith } from './impl'
import { Deserialize, Deserializer } from './interface' import { Deserialize, Deserializer } from './interface'
@ -9,13 +8,10 @@ export function deserialize<T, C extends Constructor>(constructor: C) {
static name = constructor.name static name = constructor.name
static deserialize<D extends Deserializer>(deserializer: D): T { static deserialize<D extends Deserializer>(deserializer: D): T {
return deserializeWith(deserializer, this, getMetadata(this)) return deserializeWith(deserializer, this, (constructor as any)[Symbol.metadata])
} }
} }
// @ts-ignore
Deserializable[Serde] = (constructor as any)[Serde]
return Deserializable return Deserializable
} }

View file

@ -1,4 +1,3 @@
import { Serde } from '../decorator'
import { Constructor } from '../utils' import { Constructor } from '../utils'
import { serializeWith } from './impl' import { serializeWith } from './impl'
import { isGenericSerializer, Serializer } from './interface' import { isGenericSerializer, Serializer } from './interface'
@ -16,7 +15,5 @@ export function serialize<T extends Constructor>(constructor: T) {
} }
} }
Serializable[Serde] = (constructor as any)[Serde]
return Serializable return Serializable
} }