Files
NapCatQQ/.pnpm-store/v3/files/bd/645d05852b4cf18a83f65b22ec401cbfb9fcd80a8c54f721d926c5014a2cfcf632c026f9e1d0b5d321b0f66d346bca01b080124380b9f803390812af6353f5
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

48 lines
1.8 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransformEncodeBuilder = exports.TransformDecodeBuilder = void 0;
exports.Transform = Transform;
const index_1 = require("../symbols/index");
// ------------------------------------------------------------------
// TypeGuard
// ------------------------------------------------------------------
const kind_1 = require("../guard/kind");
// ------------------------------------------------------------------
// TransformBuilders
// ------------------------------------------------------------------
class TransformDecodeBuilder {
constructor(schema) {
this.schema = schema;
}
Decode(decode) {
return new TransformEncodeBuilder(this.schema, decode);
}
}
exports.TransformDecodeBuilder = TransformDecodeBuilder;
// prettier-ignore
class TransformEncodeBuilder {
constructor(schema, decode) {
this.schema = schema;
this.decode = decode;
}
EncodeTransform(encode, schema) {
const Encode = (value) => schema[index_1.TransformKind].Encode(encode(value));
const Decode = (value) => this.decode(schema[index_1.TransformKind].Decode(value));
const Codec = { Encode: Encode, Decode: Decode };
return { ...schema, [index_1.TransformKind]: Codec };
}
EncodeSchema(encode, schema) {
const Codec = { Decode: this.decode, Encode: encode };
return { ...schema, [index_1.TransformKind]: Codec };
}
Encode(encode) {
return ((0, kind_1.IsTransform)(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema));
}
}
exports.TransformEncodeBuilder = TransformEncodeBuilder;
/** `[Json]` Creates a Transform type */
function Transform(schema) {
return new TransformDecodeBuilder(schema);
}