mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
refactor: NapProto -> https://github.com/NapNeko/NapProto
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/preset-typescript": "^7.24.7",
|
"@babel/preset-typescript": "^7.24.7",
|
||||||
"@log4js-node/log4js-api": "^1.0.2",
|
"@log4js-node/log4js-api": "^1.0.2",
|
||||||
|
"@napneko/nap-proto-core": "^0.0.2",
|
||||||
"@protobuf-ts/runtime": "^2.9.4",
|
"@protobuf-ts/runtime": "^2.9.4",
|
||||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
||||||
"@rollup/plugin-typescript": "^11.1.6",
|
"@rollup/plugin-typescript": "^11.1.6",
|
||||||
|
@@ -4,7 +4,7 @@ import { ChatType, InstanceContext, NapCatCore } from '..';
|
|||||||
import offset from '@/core/external/offset.json';
|
import offset from '@/core/external/offset.json';
|
||||||
import { PacketSession } from "@/core/packet/session";
|
import { PacketSession } from "@/core/packet/session";
|
||||||
import { OidbPacket, PacketHexStr } from "@/core/packet/packer";
|
import { OidbPacket, PacketHexStr } from "@/core/packet/packer";
|
||||||
import { NapProtoEncodeStructType, NapProtoDecodeStructType, NapProtoMsg } from '@/core/packet/proto/NapProto';
|
import { NapProtoMsg, NapProtoEncodeStructType, NapProtoDecodeStructType } from "@napneko/nap-proto-core";
|
||||||
import { OidbSvcTrpcTcp0X9067_202_Rsp_Body } from '@/core/packet/proto/oidb/Oidb.0x9067_202';
|
import { OidbSvcTrpcTcp0X9067_202_Rsp_Body } from '@/core/packet/proto/oidb/Oidb.0x9067_202';
|
||||||
import { OidbSvcTrpcTcpBase, OidbSvcTrpcTcpBaseRsp } from '@/core/packet/proto/oidb/OidbBase';
|
import { OidbSvcTrpcTcpBase, OidbSvcTrpcTcpBaseRsp } from '@/core/packet/proto/oidb/OidbBase';
|
||||||
import { OidbSvcTrpcTcp0XFE1_2RSP } from '@/core/packet/proto/oidb/Oidb.0XFE1_2';
|
import { OidbSvcTrpcTcp0XFE1_2RSP } from '@/core/packet/proto/oidb/Oidb.0XFE1_2';
|
||||||
|
@@ -2,7 +2,7 @@ import * as fs from "node:fs";
|
|||||||
import { ChatType, Peer } from "@/core";
|
import { ChatType, Peer } from "@/core";
|
||||||
import { LogWrapper } from "@/common/log";
|
import { LogWrapper } from "@/common/log";
|
||||||
import { PacketPacker } from "@/core/packet/packer";
|
import { PacketPacker } from "@/core/packet/packer";
|
||||||
import { NapProtoMsg } from "@/core/packet/proto/NapProto";
|
import { NapProtoMsg } from "@napneko/nap-proto-core";
|
||||||
import { HttpConn0x6ff_501Response } from "@/core/packet/proto/action/action";
|
import { HttpConn0x6ff_501Response } from "@/core/packet/proto/action/action";
|
||||||
import { PacketHighwayClient } from "@/core/packet/highway/client";
|
import { PacketHighwayClient } from "@/core/packet/highway/client";
|
||||||
import { NTV2RichMediaResp } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaResp";
|
import { NTV2RichMediaResp } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaResp";
|
||||||
|
@@ -4,7 +4,7 @@ import * as http from "node:http";
|
|||||||
import * as stream from "node:stream";
|
import * as stream from "node:stream";
|
||||||
import { LogWrapper } from "@/common/log";
|
import { LogWrapper } from "@/common/log";
|
||||||
import * as tea from "@/core/packet/utils/crypto/tea";
|
import * as tea from "@/core/packet/utils/crypto/tea";
|
||||||
import { NapProtoMsg } from "@/core/packet/proto/NapProto";
|
import { NapProtoMsg } from "@napneko/nap-proto-core";
|
||||||
import { ReqDataHighwayHead, RespDataHighwayHead } from "@/core/packet/proto/highway/highway";
|
import { ReqDataHighwayHead, RespDataHighwayHead } from "@/core/packet/proto/highway/highway";
|
||||||
import { BlockSize } from "@/core/packet/highway/session";
|
import { BlockSize } from "@/core/packet/highway/session";
|
||||||
import { PacketHighwayTrans } from "@/core/packet/highway/client";
|
import { PacketHighwayTrans } from "@/core/packet/highway/client";
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { NapProtoEncodeStructType } from "@/core/packet/proto/NapProto";
|
import { NapProtoEncodeStructType } from "@napneko/nap-proto-core";
|
||||||
import { IPv4 } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaResp";
|
import { IPv4 } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaResp";
|
||||||
import { NTHighwayIPv4 } from "@/core/packet/proto/highway/highway";
|
import { NTHighwayIPv4 } from "@/core/packet/proto/highway/highway";
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import * as crypto from "crypto";
|
import * as crypto from "crypto";
|
||||||
import { PushMsgBody } from "@/core/packet/proto/message/message";
|
import { PushMsgBody } from "@/core/packet/proto/message/message";
|
||||||
import { NapProtoEncodeStructType } from "@/core/packet/proto/NapProto";
|
import { NapProtoEncodeStructType } from "@napneko/nap-proto-core";
|
||||||
import { LogWrapper } from "@/common/log";
|
import { LogWrapper } from "@/common/log";
|
||||||
import { PacketMsg, PacketSendMsgElement } from "@/core/packet/message/message";
|
import { PacketMsg, PacketSendMsgElement } from "@/core/packet/message/message";
|
||||||
import { IPacketMsgElement, PacketMsgTextElement } from "@/core/packet/message/element";
|
import { IPacketMsgElement, PacketMsgTextElement } from "@/core/packet/message/element";
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import * as zlib from "node:zlib";
|
import * as zlib from "node:zlib";
|
||||||
import { NapProtoEncodeStructType, NapProtoMsg } from "@/core/packet/proto/NapProto";
|
import { NapProtoEncodeStructType, NapProtoMsg } from "@napneko/nap-proto-core";
|
||||||
import {
|
import {
|
||||||
CustomFace,
|
CustomFace,
|
||||||
Elem,
|
Elem,
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import * as zlib from "node:zlib";
|
import * as zlib from "node:zlib";
|
||||||
import * as crypto from "node:crypto";
|
import * as crypto from "node:crypto";
|
||||||
import { computeMd5AndLengthWithLimit } from "@/core/packet/utils/crypto/hash";
|
import { computeMd5AndLengthWithLimit } from "@/core/packet/utils/crypto/hash";
|
||||||
import { NapProtoEncodeStructType, NapProtoMsg } from "@/core/packet/proto/NapProto";
|
import { NapProtoEncodeStructType, NapProtoMsg } from "@napneko/nap-proto-core";
|
||||||
import { OidbSvcTrpcTcpBase } from "@/core/packet/proto/oidb/OidbBase";
|
import { OidbSvcTrpcTcpBase } from "@/core/packet/proto/oidb/OidbBase";
|
||||||
import { OidbSvcTrpcTcp0X9067_202 } from "@/core/packet/proto/oidb/Oidb.0x9067_202";
|
import { OidbSvcTrpcTcp0X9067_202 } from "@/core/packet/proto/oidb/Oidb.0x9067_202";
|
||||||
import { OidbSvcTrpcTcp0X8FC_2, OidbSvcTrpcTcp0X8FC_2_Body } from "@/core/packet/proto/oidb/Oidb.0x8FC_2";
|
import { OidbSvcTrpcTcp0X8FC_2, OidbSvcTrpcTcp0X8FC_2_Body } from "@/core/packet/proto/oidb/Oidb.0x8FC_2";
|
||||||
|
@@ -1,161 +0,0 @@
|
|||||||
import { MessageType, PartialMessage, RepeatType, ScalarType } from '@protobuf-ts/runtime';
|
|
||||||
import { PartialFieldInfo } from "@protobuf-ts/runtime/build/types/reflection-info";
|
|
||||||
|
|
||||||
type LowerCamelCase<S extends string> = CamelCaseHelper<S, false, true>;
|
|
||||||
|
|
||||||
type CamelCaseHelper<
|
|
||||||
S extends string,
|
|
||||||
CapNext extends boolean,
|
|
||||||
IsFirstChar extends boolean
|
|
||||||
> = S extends `${infer F}${infer R}`
|
|
||||||
? F extends '_'
|
|
||||||
? CamelCaseHelper<R, true, false>
|
|
||||||
: F extends `${number}`
|
|
||||||
? `${F}${CamelCaseHelper<R, true, false>}`
|
|
||||||
: CapNext extends true
|
|
||||||
? `${Uppercase<F>}${CamelCaseHelper<R, false, false>}`
|
|
||||||
: IsFirstChar extends true
|
|
||||||
? `${Lowercase<F>}${CamelCaseHelper<R, false, false>}`
|
|
||||||
: `${F}${CamelCaseHelper<R, false, false>}`
|
|
||||||
: '';
|
|
||||||
|
|
||||||
type ScalarTypeToTsType<T extends ScalarType> =
|
|
||||||
T extends ScalarType.DOUBLE | ScalarType.FLOAT | ScalarType.INT32 | ScalarType.FIXED32 | ScalarType.UINT32 | ScalarType.SFIXED32 | ScalarType.SINT32 ? number :
|
|
||||||
T extends ScalarType.INT64 | ScalarType.UINT64 | ScalarType.FIXED64 | ScalarType.SFIXED64 | ScalarType.SINT64 ? bigint :
|
|
||||||
T extends ScalarType.BOOL ? boolean :
|
|
||||||
T extends ScalarType.STRING ? string :
|
|
||||||
T extends ScalarType.BYTES ? Uint8Array :
|
|
||||||
never;
|
|
||||||
|
|
||||||
interface BaseProtoFieldType<T, O extends boolean, R extends O extends true ? false : boolean> {
|
|
||||||
kind: 'scalar' | 'message';
|
|
||||||
no: number;
|
|
||||||
type: T;
|
|
||||||
optional: O;
|
|
||||||
repeat: R;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ScalarProtoFieldType<T extends ScalarType, O extends boolean, R extends O extends true ? false : boolean> extends BaseProtoFieldType<T, O, R> {
|
|
||||||
kind: 'scalar';
|
|
||||||
}
|
|
||||||
|
|
||||||
interface MessageProtoFieldType<T extends () => ProtoMessageType, O extends boolean, R extends O extends true ? false : boolean> extends BaseProtoFieldType<T, O, R> {
|
|
||||||
kind: 'message';
|
|
||||||
}
|
|
||||||
|
|
||||||
type ProtoFieldType =
|
|
||||||
| ScalarProtoFieldType<ScalarType, boolean, boolean>
|
|
||||||
| MessageProtoFieldType<() => ProtoMessageType, boolean, boolean>;
|
|
||||||
|
|
||||||
type ProtoMessageType = {
|
|
||||||
[key: string]: ProtoFieldType;
|
|
||||||
};
|
|
||||||
|
|
||||||
export function ProtoField<T extends ScalarType, O extends boolean = false, R extends O extends true ? false : boolean = false>(no: number, type: T, optional?: O, repeat?: R): ScalarProtoFieldType<T, O, R>;
|
|
||||||
export function ProtoField<T extends () => ProtoMessageType, O extends boolean = false, R extends O extends true ? false : boolean = false>(no: number, type: T, optional?: O, repeat?: R): MessageProtoFieldType<T, O, R>;
|
|
||||||
export function ProtoField(no: number, type: ScalarType | (() => ProtoMessageType), optional?: boolean, repeat?: boolean): ProtoFieldType {
|
|
||||||
if (typeof type === 'function') {
|
|
||||||
return { kind: 'message', no: no, type: type, optional: optional ?? false, repeat: repeat ?? false };
|
|
||||||
} else {
|
|
||||||
return { kind: 'scalar', no: no, type: type, optional: optional ?? false, repeat: repeat ?? false };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type ProtoFieldReturnType<T, E extends boolean> = NonNullable<T> extends ScalarProtoFieldType<infer S, infer O, infer R>
|
|
||||||
? ScalarTypeToTsType<S>
|
|
||||||
: T extends NonNullable<MessageProtoFieldType<infer S, infer O, infer R>>
|
|
||||||
? NonNullable<NapProtoStructType<ReturnType<S>, E>>
|
|
||||||
: never;
|
|
||||||
|
|
||||||
type RequiredFieldsBaseType<T, E extends boolean> = {
|
|
||||||
[K in keyof T as T[K] extends { optional: true } ? never : LowerCamelCase<K & string>]:
|
|
||||||
T[K] extends { repeat: true }
|
|
||||||
? ProtoFieldReturnType<T[K], E>[]
|
|
||||||
: ProtoFieldReturnType<T[K], E>
|
|
||||||
}
|
|
||||||
|
|
||||||
type OptionalFieldsBaseType<T, E extends boolean> = {
|
|
||||||
[K in keyof T as T[K] extends { optional: true } ? LowerCamelCase<K & string> : never]?:
|
|
||||||
T[K] extends { repeat: true }
|
|
||||||
? ProtoFieldReturnType<T[K], E>[]
|
|
||||||
: ProtoFieldReturnType<T[K], E>
|
|
||||||
}
|
|
||||||
|
|
||||||
type RequiredFieldsType<T, E extends boolean> = E extends true ? Partial<RequiredFieldsBaseType<T, E>> : RequiredFieldsBaseType<T, E>;
|
|
||||||
|
|
||||||
type OptionalFieldsType<T, E extends boolean> = E extends true ? Partial<OptionalFieldsBaseType<T, E>> : OptionalFieldsBaseType<T, E>;
|
|
||||||
|
|
||||||
type NapProtoStructType<T, E extends boolean> = RequiredFieldsType<T, E> & OptionalFieldsType<T, E>;
|
|
||||||
|
|
||||||
export type NapProtoEncodeStructType<T> = NapProtoStructType<T, true>;
|
|
||||||
|
|
||||||
export type NapProtoDecodeStructType<T> = NapProtoStructType<T, false>;
|
|
||||||
|
|
||||||
class NapProtoRealMsg<T extends ProtoMessageType> {
|
|
||||||
private readonly _field: PartialFieldInfo[];
|
|
||||||
private readonly _proto_msg: MessageType<NapProtoStructType<T, boolean>>;
|
|
||||||
private static cache = new WeakMap<ProtoMessageType, NapProtoRealMsg<any>>();
|
|
||||||
|
|
||||||
private constructor(fields: T) {
|
|
||||||
this._field = Object.keys(fields).map(key => {
|
|
||||||
const field = fields[key];
|
|
||||||
if (field.kind === 'scalar') {
|
|
||||||
const repeatType = field.repeat
|
|
||||||
? [ScalarType.STRING, ScalarType.BYTES].includes(field.type)
|
|
||||||
? RepeatType.UNPACKED
|
|
||||||
: RepeatType.PACKED
|
|
||||||
: RepeatType.NO;
|
|
||||||
return {
|
|
||||||
no: field.no,
|
|
||||||
name: key,
|
|
||||||
kind: 'scalar',
|
|
||||||
T: field.type,
|
|
||||||
opt: field.optional,
|
|
||||||
repeat: repeatType,
|
|
||||||
};
|
|
||||||
} else if (field.kind === 'message') {
|
|
||||||
return {
|
|
||||||
no: field.no,
|
|
||||||
name: key,
|
|
||||||
kind: 'message',
|
|
||||||
repeat: field.repeat ? RepeatType.PACKED : RepeatType.NO,
|
|
||||||
T: () => NapProtoRealMsg.getInstance(field.type())._proto_msg,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}) as PartialFieldInfo[];
|
|
||||||
this._proto_msg = new MessageType<NapProtoStructType<T, boolean>>('nya', this._field);
|
|
||||||
}
|
|
||||||
|
|
||||||
static getInstance<T extends ProtoMessageType>(fields: T): NapProtoRealMsg<T> {
|
|
||||||
let instance = this.cache.get(fields);
|
|
||||||
if (!instance) {
|
|
||||||
instance = new NapProtoRealMsg(fields);
|
|
||||||
this.cache.set(fields, instance);
|
|
||||||
}
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
encode(data: NapProtoEncodeStructType<T>): Uint8Array {
|
|
||||||
return this._proto_msg.toBinary(this._proto_msg.create(data as PartialMessage<NapProtoEncodeStructType<T>>));
|
|
||||||
}
|
|
||||||
|
|
||||||
decode(data: Uint8Array): NapProtoDecodeStructType<T> {
|
|
||||||
return this._proto_msg.fromBinary(data) as NapProtoDecodeStructType<T>;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class NapProtoMsg<T extends ProtoMessageType> {
|
|
||||||
private realMsg: NapProtoRealMsg<T>;
|
|
||||||
|
|
||||||
constructor(fields: T) {
|
|
||||||
this.realMsg = NapProtoRealMsg.getInstance(fields);
|
|
||||||
}
|
|
||||||
|
|
||||||
encode(data: NapProtoEncodeStructType<T>): Uint8Array {
|
|
||||||
return this.realMsg.encode(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
decode(data: Uint8Array): NapProtoDecodeStructType<T> {
|
|
||||||
return this.realMsg.decode(data);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { ContentHead, MessageBody, MessageControl, RoutingHead } from "@/core/packet/proto/message/message";
|
import { ContentHead, MessageBody, MessageControl, RoutingHead } from "@/core/packet/proto/message/message";
|
||||||
|
|
||||||
export const FaceRoamRequest = {
|
export const FaceRoamRequest = {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const MiniAppAdaptShareInfoReq = {
|
export const MiniAppAdaptShareInfoReq = {
|
||||||
appId: ProtoField(2, ScalarType.STRING),
|
appId: ProtoField(2, ScalarType.STRING),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { MsgInfo, MsgInfoBody } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaReq";
|
import { MsgInfo, MsgInfoBody } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaReq";
|
||||||
|
|
||||||
export const DataHighwayHead = {
|
export const DataHighwayHead = {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { PushMsgBody } from "@/core/packet/proto/message/message";
|
import { PushMsgBody } from "@/core/packet/proto/message/message";
|
||||||
|
|
||||||
export const LongMsgResult = {
|
export const LongMsgResult = {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const C2C = {
|
export const C2C = {
|
||||||
uin: ProtoField(1, ScalarType.UINT32, true),
|
uin: ProtoField(1, ScalarType.UINT32, true),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { Elem } from "@/core/packet/proto/message/element";
|
import { Elem } from "@/core/packet/proto/message/element";
|
||||||
|
|
||||||
export const Attr = {
|
export const Attr = {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const Elem = {
|
export const Elem = {
|
||||||
text: ProtoField(1, () => Text, true),
|
text: ProtoField(1, () => Text, true),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const GroupRecallMsg = {
|
export const GroupRecallMsg = {
|
||||||
type: ProtoField(1, ScalarType.UINT32),
|
type: ProtoField(1, ScalarType.UINT32),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { ForwardHead, Grp, GrpTmp, ResponseForward, ResponseGrp, Trans0X211, WPATmp } from "@/core/packet/proto/message/routing";
|
import { ForwardHead, Grp, GrpTmp, ResponseForward, ResponseGrp, Trans0X211, WPATmp } from "@/core/packet/proto/message/routing";
|
||||||
import { RichText } from "@/core/packet/proto/message/component";
|
import { RichText } from "@/core/packet/proto/message/component";
|
||||||
import { C2C } from "@/core/packet/proto/message/c2c";
|
import { C2C } from "@/core/packet/proto/message/c2c";
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const FriendRecall = {
|
export const FriendRecall = {
|
||||||
info: ProtoField(1, () => FriendRecallInfo),
|
info: ProtoField(1, () => FriendRecallInfo),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const ForwardHead = {
|
export const ForwardHead = {
|
||||||
field1: ProtoField(1, ScalarType.UINT32, true),
|
field1: ProtoField(1, ScalarType.UINT32, true),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { OidbSvcTrpcTcp0XE37_800_1200Metadata } from "@/core/packet/proto/oidb/Oidb.0xE37_1200";
|
import { OidbSvcTrpcTcp0XE37_800_1200Metadata } from "@/core/packet/proto/oidb/Oidb.0xE37_1200";
|
||||||
|
|
||||||
export const OidbSvcTrpcTcp0XE37_800 = {
|
export const OidbSvcTrpcTcp0XE37_800 = {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const OidbSvcTrpcTcp0XFE1_2 = {
|
export const OidbSvcTrpcTcp0XFE1_2 = {
|
||||||
uin: ProtoField(1, ScalarType.UINT32),
|
uin: ProtoField(1, ScalarType.UINT32),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const OidbSvcTrpcTcp0x6D6 = {
|
export const OidbSvcTrpcTcp0x6D6 = {
|
||||||
file: ProtoField(1, () => OidbSvcTrpcTcp0x6D6Upload, true),
|
file: ProtoField(1, () => OidbSvcTrpcTcp0x6D6Upload, true),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
|
|
||||||
//设置群头衔 OidbSvcTrpcTcp.0x8fc_2
|
//设置群头衔 OidbSvcTrpcTcp.0x8fc_2
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { MultiMediaReqHead } from "./common/Ntv2.RichMediaReq";
|
import { MultiMediaReqHead } from "./common/Ntv2.RichMediaReq";
|
||||||
|
|
||||||
//Req
|
//Req
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { MsgInfo } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaReq";
|
import { MsgInfo } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaReq";
|
||||||
|
|
||||||
export const OidbSvcTrpcTcp0X929D_0 = {
|
export const OidbSvcTrpcTcp0X929D_0 = {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const OidbSvcTrpcTcp0XE37_1200 = {
|
export const OidbSvcTrpcTcp0XE37_1200 = {
|
||||||
subCommand: ProtoField(1, ScalarType.UINT32, true),
|
subCommand: ProtoField(1, ScalarType.UINT32, true),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const OidbSvcTrpcTcp0XE37_1700 = {
|
export const OidbSvcTrpcTcp0XE37_1700 = {
|
||||||
command: ProtoField(1, ScalarType.UINT32, true),
|
command: ProtoField(1, ScalarType.UINT32, true),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const OidbSvcTrpcTcp0XEB7_Body = {
|
export const OidbSvcTrpcTcp0XEB7_Body = {
|
||||||
uin: ProtoField(1, ScalarType.STRING),
|
uin: ProtoField(1, ScalarType.STRING),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
// Send Poke
|
// Send Poke
|
||||||
export const OidbSvcTrpcTcp0XED3_1 = {
|
export const OidbSvcTrpcTcp0XED3_1 = {
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const OidbSvcTrpcTcpBase = {
|
export const OidbSvcTrpcTcpBase = {
|
||||||
command: ProtoField(1, ScalarType.UINT32),
|
command: ProtoField(1, ScalarType.UINT32),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
|
|
||||||
export const NTV2RichMediaReq = {
|
export const NTV2RichMediaReq = {
|
||||||
ReqHead: ProtoField(1, () => MultiMediaReqHead),
|
ReqHead: ProtoField(1, () => MultiMediaReqHead),
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ScalarType } from "@protobuf-ts/runtime";
|
import { ScalarType } from "@protobuf-ts/runtime";
|
||||||
import { ProtoField } from "../../NapProto";
|
import { ProtoField } from "@napneko/nap-proto-core";
|
||||||
import { CommonHead, MsgInfo, PicUrlExtInfo, VideoExtInfo } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaReq";
|
import { CommonHead, MsgInfo, PicUrlExtInfo, VideoExtInfo } from "@/core/packet/proto/oidb/common/Ntv2.RichMediaReq";
|
||||||
|
|
||||||
export const NTV2RichMediaResp = {
|
export const NTV2RichMediaResp = {
|
||||||
|
Reference in New Issue
Block a user