1 line
27 KiB
Plaintext
1 line
27 KiB
Plaintext
{"version":3,"file":"protobuf.cjs","sources":["../src/protobuf.ts"],"sourcesContent":["import { BinaryReader, MessageType, RepeatType, ScalarType, WireType } from '@protobuf-ts/runtime';\nimport type { PartialFieldInfo } from '@protobuf-ts/runtime';\n\n// 值包装类\nexport class ValueWrapper<T> {\n public _value: T;\n public _fieldId: number;\n public _opt: boolean;\n public _callback?: Function;\n constructor(field: number, value: T, opt: boolean, callback?: Function) {\n this._value = value;\n this._fieldId = field;\n this._opt = opt;\n this._callback = callback;\n }\n\n public get value(): T {\n return this._value;\n }\n\n public set value(newValue: T) {\n this._value = newValue;\n }\n\n public getTypeName(): string {\n return this.constructor.name;\n }\n\n public getFieldId() {\n return this._fieldId;\n }\n\n public getField(key: string): PartialFieldInfo {\n return autoTypeToField(key, this);\n }\n}\n\nexport class DoubleWrapper extends ValueWrapper<number> { getTypeName() { return \"DoubleWrapper\"; } }\nexport class FloatWrapper extends ValueWrapper<number> { getTypeName() { return \"FloatWrapper\"; } }\nexport class StringWrapper extends ValueWrapper<string> { getTypeName() { return \"StringWrapper\"; } }\nexport class UInt32Wrapper extends ValueWrapper<number> { getTypeName() { return \"UInt32Wrapper\"; } }\nexport class Int32Wrapper extends ValueWrapper<number> { getTypeName() { return \"Int32Wrapper\"; } }\nexport class Int64Wrapper extends ValueWrapper<bigint> { getTypeName() { return \"Int64Wrapper\"; } }\nexport class UInt64Wrapper extends ValueWrapper<bigint> { getTypeName() { return \"UInt64Wrapper\"; } }\nexport class ArrayWrapper<T> extends ValueWrapper<T[]> { getTypeName() { return \"ArrayWrapper\"; } }\nexport class BoolWrapper extends ValueWrapper<boolean> { getTypeName() { return \"BoolWrapper\"; } }\nexport class BytesWrapper extends ValueWrapper<Uint8Array> { getTypeName() { return \"BytesWrapper\"; } }\nexport class Fixed64Wrapper extends ValueWrapper<bigint> { getTypeName() { return \"Fixed64Wrapper\"; } }\nexport class Fixed32Wrapper extends ValueWrapper<number> { getTypeName() { return \"Fixed32Wrapper\"; } }\nexport class SFixed32Wrapper extends ValueWrapper<number> { getTypeName() { return \"SFixed32Wrapper\"; } }\nexport class SFixed64Wrapper extends ValueWrapper<bigint> { getTypeName() { return \"SFixed64Wrapper\"; } }\nexport class SInt32Wrapper extends ValueWrapper<number> { getTypeName() { return \"SInt32Wrapper\"; } }\nexport class SInt64Wrapper extends ValueWrapper<bigint> { getTypeName() { return \"SInt64Wrapper\"; } }\nexport class UnknownWrapper extends ValueWrapper<unknown> { getTypeName() { return \"UnknownWrapper\"; } }\n\n// 类型提取工具\nexport type ExtractType<T> =\n T extends ArrayWrapper<infer V> ? V[] :\n T extends ValueWrapper<infer U> ? U :\n T extends ProtoBufBase ? ExtractSchema<T> :\n T;\n\nexport type ExtractSchema<T> = Omit<{\n [K in keyof T]: T[K] extends ProtoBufBase ? ExtractSchema<T[K]> : ExtractType<T[K]>;\n}, keyof ProtoBufBase>;\n\nconst NameDataKeys = {\n UInt32Wrapper: \"UInt32Wrapper\",\n Int32Wrapper: \"Int32Wrapper\",\n Int64Wrapper: \"Int64Wrapper\",\n UInt64Wrapper: \"UInt64Wrapper\",\n StringWrapper: \"StringWrapper\",\n ArrayWrapper: \"ArrayWrapper\",\n BoolWrapper: \"BoolWrapper\",\n BytesWrapper: \"BytesWrapper\",\n DoubleWrapper: \"DoubleWrapper\",\n FloatWrapper: \"FloatWrapper\",\n Fixed64Wrapper: \"Fixed64Wrapper\",\n Fixed32Wrapper: \"Fixed32Wrapper\",\n SFixed32Wrapper: \"SFixed32Wrapper\",\n SFixed64Wrapper: \"SFixed64Wrapper\",\n SInt32Wrapper: \"SInt32Wrapper\",\n SInt64Wrapper: \"SInt64Wrapper\",\n UnknownWrapper: \"UnknownWrapper\",\n}\n\n// 类型映射工具\nconst typeMap = {\n [NameDataKeys.UInt32Wrapper]: UInt32Wrapper,\n [NameDataKeys.Int32Wrapper]: Int32Wrapper,\n [NameDataKeys.Int64Wrapper]: Int64Wrapper,\n [NameDataKeys.UInt64Wrapper]: UInt64Wrapper,\n [NameDataKeys.StringWrapper]: StringWrapper,\n [NameDataKeys.ArrayWrapper]: ArrayWrapper,\n [NameDataKeys.BoolWrapper]: BoolWrapper,\n [NameDataKeys.BytesWrapper]: BytesWrapper,\n [NameDataKeys.DoubleWrapper]: DoubleWrapper,\n [NameDataKeys.FloatWrapper]: FloatWrapper,\n [NameDataKeys.Fixed64Wrapper]: Fixed64Wrapper,\n [NameDataKeys.Fixed32Wrapper]: Fixed32Wrapper,\n [NameDataKeys.SFixed32Wrapper]: SFixed32Wrapper,\n [NameDataKeys.SFixed64Wrapper]: SFixed64Wrapper,\n [NameDataKeys.SInt32Wrapper]: SInt32Wrapper,\n [NameDataKeys.SInt64Wrapper]: SInt64Wrapper,\n [NameDataKeys.UnknownWrapper]: UnknownWrapper,\n};\n\nconst scalarMap: { [key: string]: ScalarType } = {\n [NameDataKeys.UInt32Wrapper]: ScalarType.UINT32,\n [NameDataKeys.Int32Wrapper]: ScalarType.INT32,\n [NameDataKeys.Int64Wrapper]: ScalarType.INT64,\n [NameDataKeys.UInt64Wrapper]: ScalarType.UINT64,\n [NameDataKeys.StringWrapper]: ScalarType.STRING,\n [NameDataKeys.BytesWrapper]: ScalarType.BYTES,\n [NameDataKeys.BoolWrapper]: ScalarType.BOOL,\n [NameDataKeys.DoubleWrapper]: ScalarType.DOUBLE,\n [NameDataKeys.FloatWrapper]: ScalarType.FLOAT,\n [NameDataKeys.Fixed64Wrapper]: ScalarType.FIXED64,\n [NameDataKeys.Fixed32Wrapper]: ScalarType.FIXED32,\n [NameDataKeys.SFixed32Wrapper]: ScalarType.SFIXED32,\n [NameDataKeys.SFixed64Wrapper]: ScalarType.SFIXED64,\n [NameDataKeys.SInt32Wrapper]: ScalarType.SINT32,\n [NameDataKeys.SInt64Wrapper]: ScalarType.SINT64,\n [NameDataKeys.UnknownWrapper]: ScalarType.BYTES,\n};\n\nexport function autoTypeToClass(typeName: string) {\n return typeMap[typeName] || UnknownWrapper;\n}\n\nfunction autoTypeToScalar(typeName: string) {\n return scalarMap[typeName] || ScalarType.BYTES;\n}\n// 默认值创建构造类\nexport function PBArray<T>(field: number = 0, data: T, opt: boolean = false, value: T[] = []) {\n return new ArrayWrapper<T>(field, value, opt, () => data) as unknown as Omit<T, keyof ProtoBufBase>[];\n}\nexport function PBDouble(field: number = 0, opt: boolean = false, value = 0) {\n return new DoubleWrapper(field, value, opt) as unknown as number;\n}\nexport function PBFloat(field: number = 0, opt: boolean = false, value = 0) {\n return new FloatWrapper(field, value, opt) as unknown as number;\n}\nexport function PBString(field: number = 0, opt: boolean = false, value = \"\") {\n return new StringWrapper(field, value, opt) as unknown as string;\n}\nexport function PBUint32(field: number = 0, opt: boolean = false, value = 0) {\n return new UInt32Wrapper(field, value, opt) as unknown as number;\n}\nexport function PBInt32(field: number = 0, opt: boolean = false, value = 0) {\n return new Int32Wrapper(field, value, opt) as unknown as number;\n}\nexport function PBInt64(field: number = 0, opt: boolean = false, value = BigInt(0)) {\n return new Int64Wrapper(field, value, opt) as unknown as bigint;\n}\nexport function PBUint64(field: number = 0, opt: boolean = false, value = BigInt(0)) {\n return new UInt64Wrapper(field, value, opt) as unknown as bigint;\n}\nexport function PBBool(field: number = 0, opt: boolean = false, value = false) {\n return new BoolWrapper(field, value, opt) as unknown as boolean;\n}\nexport function PBBytes(field: number = 0, opt: boolean = false, value = new Uint8Array()) {\n return new BytesWrapper(field, value, opt) as unknown as Uint8Array;\n}\nexport function PBFixed64(field: number = 0, opt: boolean = false, value = BigInt(0)) {\n return new Fixed64Wrapper(field, value, opt) as unknown as bigint;\n}\nexport function PBFixed32(field: number = 0, opt: boolean = false, value = 0) {\n return new Fixed32Wrapper(field, value, opt) as unknown as number;\n}\nexport function PBSFixed32(field: number = 0, opt: boolean = false, value = 0) {\n return new SFixed32Wrapper(field, value, opt) as unknown as number;\n}\nexport function PBSFixed64(field: number = 0, opt: boolean = false, value = BigInt(0)) {\n return new SFixed64Wrapper(field, value, opt) as unknown as bigint;\n}\nexport function PBSInt32(field: number = 0, opt: boolean = false, value = 0) {\n return new SInt32Wrapper(field, value, opt) as unknown as number;\n}\nexport function PBSInt64(field: number = 0, opt: boolean = false, value = BigInt(0)) {\n return new SInt64Wrapper(field, value, opt) as unknown as bigint;\n}\n\nexport function autoTypeToField(key: string, dataValue: ValueWrapper<unknown>): PartialFieldInfo {\n const typeName = dataValue.getTypeName();\n const no = dataValue.getFieldId();\n const opt = dataValue._opt;\n if (typeName === NameDataKeys.ArrayWrapper) {\n const item = dataValue._callback?.();\n if (item instanceof ProtoBufBase) {\n return {\n no,\n name: key,\n kind: 'message',\n T: () => new MessageType(key, item.generateFields()),\n opt: opt || false,\n repeat: RepeatType.PACKED,\n } as PartialFieldInfo;\n }\n if (item instanceof ValueWrapper) {\n const itemType = item.getTypeName();\n return {\n no,\n name: key,\n kind: 'scalar',\n T: autoTypeToScalar(itemType),\n opt: opt || false,\n repeat: itemType === NameDataKeys.StringWrapper || itemType === NameDataKeys.BytesWrapper ? RepeatType.UNPACKED : RepeatType.PACKED,\n } as PartialFieldInfo;\n }\n throw new Error(\"ArrayWrapper item type error\");\n }\n return {\n no,\n name: key,\n kind: 'scalar',\n T: autoTypeToScalar(typeName),\n opt: opt || false,\n repeat: RepeatType.NO,\n } as PartialFieldInfo;\n}\n\n// Protobuf标记类\nexport class ProtoBufBase {\n public _fieldId: number = 0;\n\n //默认标记类\n public generateFields(): PartialFieldInfo[] {\n const fields: PartialFieldInfo[] = [];\n for (const innerKey of Object.keys(this)) {\n const key = '_' + innerKey;\n const value = this[key as keyof this];\n if (value instanceof ValueWrapper) {\n fields.push(value.getField(innerKey));\n }\n if (value instanceof ProtoBufBase) {\n fields.push({\n no: value._fieldId,\n name: innerKey,\n kind: 'message',\n T: () => new MessageType(key, value.generateFields()),\n repeat: RepeatType.NO,\n opt: false,\n });\n }\n }\n return fields;\n }\n\n public assignFields(fields: { [key: string]: unknown }) {\n for (const innerKey of Object.keys(this)) {\n const key = '_' + innerKey;\n let value = this[key as keyof this];\n if (value instanceof ValueWrapper) {\n const fieldValue = fields[innerKey];\n if (fieldValue !== undefined) {\n value.value = fieldValue;\n }\n } else if (value instanceof ProtoBufBase) {\n const fieldValue = fields[innerKey];\n if (fieldValue !== undefined) {\n value.assignFields(fieldValue as { [key: string]: unknown });\n }\n } else {\n const fieldValue = fields[innerKey];\n if (fieldValue !== undefined) {\n this[key as keyof this] = fieldValue as typeof value;\n }\n }\n }\n }\n\n public toObject(): Omit<this, keyof ProtoBufBase> {\n const obj: { [key: string]: unknown } = {};\n for (const innerKey of Object.keys(this)) {\n const key = '_' + innerKey;\n const value = this[key as keyof this];\n if (value) {\n if (value instanceof ValueWrapper) {\n obj[innerKey] = value.value;\n }\n if (value instanceof ProtoBufBase) {\n obj[innerKey] = value.toObject();\n }\n }\n }\n return obj as Omit<this, keyof ProtoBufBase>;\n }\n\n public encode(): Uint8Array {\n return new MessageType(\"message\", this.generateFields()).toBinary(this.toObject());\n }\n\n public decode(data: Uint8Array) {\n const pbData = new MessageType(\"message\", this.generateFields()).fromBinary(data);\n this.assignFields(pbData as { [key: string]: unknown });\n return this;\n }\n public then(callback: (data: this) => void) {\n callback(this);\n }\n}\n\nexport function proxyClassProtobuf<T extends ProtoBufBase>(protobuf: T): T {\n return new Proxy(protobuf, {\n set(target, prop, value) {\n const targetValue = target[prop as keyof T];\n if (targetValue instanceof ValueWrapper) {\n // 是否引用决定\n // const WrapperClass = autoTypeToClass(targetValue.getTypeName());\n // target[prop as keyof T] = new WrapperClass(targetValue._fieldId, value, targetValue._opt) as typeof targetValue;\n (target[prop as keyof T] as ValueWrapper<T>).value = value;\n return true;\n }\n target[prop as keyof T] = value;\n return true;\n },\n get(target, prop) {\n if (typeof prop === \"string\" && prop.startsWith(\"_\")) {\n const key = prop.slice(1);\n if (target[key as keyof T]) {\n return target[key as keyof T];\n }\n }\n const targetValue = target[prop as keyof T];\n if (targetValue instanceof ValueWrapper) {\n return targetValue.value;\n }\n return targetValue;\n }\n }) as T;\n}\n\n// 代理创建工具\nexport function ProtoBuf<T extends ProtoBufBase>(field: number, valueClass: new () => T): T;\nexport function ProtoBuf<T extends ProtoBufBase>(valueClass: new () => T): T;\nexport function ProtoBuf<T extends ProtoBufBase>(data: number | (new () => T), valueClass?: new () => T): T {\n const dataClass = proxyClassProtobuf(valueClass ? new valueClass() : new (data as new () => T)());\n dataClass._fieldId = typeof data === \"number\" ? data : 0;\n return dataClass;\n}\nexport function ProtoBufEx<T extends ProtoBufBase, U extends ExtractSchema<T>>(valueClass: new () => T, value?: U): T {\n const dataClass = proxyClassProtobuf(new valueClass());\n if (value) {\n dataClass.assignFields(value);\n }\n return dataClass;\n}\nexport function ProtoBufQuick<T extends {}, U extends T>(pb: T, data: U): ProtoBufBase {\n let protobuf = class extends ProtoBufBase { };\n const instance = ProtoBuf(protobuf);\n Object.assign(instance, pb);\n instance.assignFields(data);\n return instance;\n}\nexport function ProtoBufIn<T>(field: number, data: T): T;\nexport function ProtoBufIn<T>(data: T): T;\nexport function ProtoBufIn<T>(data: number | T, value?: T): T {\n if (typeof data === \"number\") {\n let dataclass = new class extends ProtoBufBase { constructor() { super(); Object.assign(this, value); } } as ProtoBufBase;\n dataclass._fieldId = data;\n return proxyClassProtobuf(dataclass) as T;\n }\n return proxyClassProtobuf(new class extends ProtoBufBase { constructor() { super(); Object.assign(this, data); } } as ProtoBufBase) as T;\n}\nexport function UnWrap<T>(data: T) {\n return (data as ValueWrapper<T>).value as T;\n}\nexport function decodeProtoBuf<T>(typeName: string, message: any, fieldNo: number, wireType: WireType, data: Uint8Array, encodeBytes?: (data: Uint8Array) => T) {\n let value;\n const reader = new BinaryReader(data);\n switch (wireType) {\n case WireType.Varint:\n value = reader.uint64();\n value = value.hi > 0 ? value.toBigInt() : Number(value.lo);\n break;\n case WireType.Bit64:\n value = reader.fixed64();\n break;\n case WireType.LengthDelimited:\n let data = reader.bytes();\n try {\n value = ProtoBufDecode(data);\n } catch (error) {\n try {\n value = new TextDecoder().decode(data);\n if (value.indexOf('�') !== -1) {\n throw new Error('Invalid UTF-8 sequence in input');\n }\n } catch (error) {\n if (encodeBytes) {\n value = encodeBytes(data);\n } else {\n value = data;\n }\n }\n }\n break;\n case WireType.StartGroup:\n case WireType.EndGroup:\n // Groups are deprecated and not supported\n break;\n case WireType.Bit32:\n value = reader.fixed32();\n break;\n default:\n throw new Error(`Unknown wire type: ${wireType}`);\n }\n if (message[fieldNo]) {\n if (message[fieldNo] instanceof Array) {\n message[fieldNo].push(value);\n } else {\n message[fieldNo] = [message[fieldNo], value];\n }\n } else {\n message[fieldNo] = value;\n }\n}\nexport function ProtoBufDecode<T>(data: Uint8Array, encodeBytes?: (data: Uint8Array) => T) {\n const messageType = new MessageType(\"message\", []);\n const decodedMessage = messageType.fromBinary(data, {\n readUnknownField: (typeName, message, fieldNo, wireType, data) => decodeProtoBuf(typeName, message, fieldNo, wireType, data, encodeBytes),\n });\n return decodedMessage;\n}\nexport class ChainProto extends ProtoBufBase {\n push<T>(data: T) {\n Object.assign(this, data);\n return this;\n }\n}"],"names":["ValueWrapper","field","value","opt","callback","__publicField","newValue","key","autoTypeToField","DoubleWrapper","FloatWrapper","StringWrapper","UInt32Wrapper","Int32Wrapper","Int64Wrapper","UInt64Wrapper","ArrayWrapper","BoolWrapper","BytesWrapper","Fixed64Wrapper","Fixed32Wrapper","SFixed32Wrapper","SFixed64Wrapper","SInt32Wrapper","SInt64Wrapper","UnknownWrapper","NameDataKeys","typeMap","scalarMap","ScalarType","autoTypeToClass","typeName","autoTypeToScalar","PBArray","data","PBDouble","PBFloat","PBString","PBUint32","PBInt32","PBInt64","PBUint64","PBBool","PBBytes","PBFixed64","PBFixed32","PBSFixed32","PBSFixed64","PBSInt32","PBSInt64","dataValue","no","item","_a","ProtoBufBase","MessageType","RepeatType","itemType","fields","innerKey","fieldValue","obj","pbData","proxyClassProtobuf","protobuf","target","prop","targetValue","ProtoBuf","valueClass","dataClass","ProtoBufEx","ProtoBufQuick","pb","instance","ProtoBufIn","dataclass","UnWrap","decodeProtoBuf","message","fieldNo","wireType","encodeBytes","reader","BinaryReader","WireType","ProtoBufDecode","ChainProto"],"mappings":"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"} |