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

1 line
28 KiB
Plaintext

{"version":3,"file":"protobuf.js","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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"}