mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
style: NapProto
This commit is contained in:
parent
938a84a460
commit
a2c4498694
@ -1,5 +1,5 @@
|
|||||||
import {MessageType, RepeatType, ScalarType} from '@protobuf-ts/runtime';
|
import { MessageType, RepeatType, ScalarType } from '@protobuf-ts/runtime';
|
||||||
import {PartialFieldInfo} from "@protobuf-ts/runtime/build/types/reflection-info";
|
import { PartialFieldInfo } from "@protobuf-ts/runtime/build/types/reflection-info";
|
||||||
|
|
||||||
type LowerCamelCase<S extends string> = CamelCaseHelper<S, false, true>;
|
type LowerCamelCase<S extends string> = CamelCaseHelper<S, false, true>;
|
||||||
|
|
||||||
@ -55,9 +55,9 @@ function ProtoField<T extends ScalarType, O extends boolean = false, R extends O
|
|||||||
function ProtoField<T extends () => ProtoMessageType, O extends boolean = false, R extends O extends true ? false : boolean = false>(no: number, type: T, repeated?: R, optional?: O): MessageProtoFieldType<T, O, R>;
|
function ProtoField<T extends () => ProtoMessageType, O extends boolean = false, R extends O extends true ? false : boolean = false>(no: number, type: T, repeated?: R, optional?: O): MessageProtoFieldType<T, O, R>;
|
||||||
function ProtoField(no: number, type: ScalarType | (() => ProtoMessageType), repeated?: boolean, optional?: boolean): ProtoFieldType {
|
function ProtoField(no: number, type: ScalarType | (() => ProtoMessageType), repeated?: boolean, optional?: boolean): ProtoFieldType {
|
||||||
if (typeof type === 'function') {
|
if (typeof type === 'function') {
|
||||||
return {kind: 'message', no: no, type: type, repeated: repeated ?? false, optional: optional ?? false};
|
return { kind: 'message', no: no, type: type, repeated: repeated ?? false, optional: optional ?? false };
|
||||||
} else {
|
} else {
|
||||||
return {kind: 'scalar', no: no, type: type, repeated: repeated ?? false, optional: optional ?? false};
|
return { kind: 'scalar', no: no, type: type, repeated: repeated ?? false, optional: optional ?? false };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,17 +99,18 @@ class NapProtoMsg<T extends ProtoMessageType> {
|
|||||||
this._field = Object.keys(fields).map(key => {
|
this._field = Object.keys(fields).map(key => {
|
||||||
const field = fields[key];
|
const field = fields[key];
|
||||||
if (field.kind === 'scalar') {
|
if (field.kind === 'scalar') {
|
||||||
|
const repeatType = field.repeated
|
||||||
|
? [ScalarType.STRING, ScalarType.BYTES].includes(field.type)
|
||||||
|
? RepeatType.UNPACKED
|
||||||
|
: RepeatType.PACKED
|
||||||
|
: RepeatType.NO;
|
||||||
return {
|
return {
|
||||||
no: field.no,
|
no: field.no,
|
||||||
name: key,
|
name: key,
|
||||||
kind: 'scalar',
|
kind: 'scalar',
|
||||||
T: field.type,
|
T: field.type,
|
||||||
opt: field.optional,
|
opt: field.optional,
|
||||||
repeat: field.repeated
|
repeat: repeatType,
|
||||||
? [ScalarType.STRING, ScalarType.BYTES].includes(field.type)
|
|
||||||
? RepeatType.UNPACKED
|
|
||||||
: RepeatType.PACKED
|
|
||||||
: RepeatType.NO,
|
|
||||||
};
|
};
|
||||||
} else if (field.kind === 'message') {
|
} else if (field.kind === 'message') {
|
||||||
const rt = NapProtoMsgCache.get(field.type()) ?? (() => {
|
const rt = NapProtoMsgCache.get(field.type()) ?? (() => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user