This commit is contained in:
lxy 2025-08-22 18:15:31 +08:00
parent c6ef2e2fc7
commit 39cf2f7e3a
8 changed files with 80 additions and 14 deletions

View File

@ -44,6 +44,10 @@ export const desc = {
type: "enum",
enumeration: ["login", "changePassword", "confirm"]
},
applicationId: {
type: "ref",
ref: "application"
},
iState: {
type: "enum",
enumeration: ["unsent", "sending", "sent", "failure"]

View File

@ -1,3 +1,4 @@
import { ForeignKey } from "oak-domain/lib/types/DataType";
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, Q_EnumValue, NodeId, ExprOp, ExpressionKey } from "oak-domain/lib/types/Demand";
import { MakeAction as OakMakeAction, EntityShape } from "oak-domain/lib/types/Entity";
import { Action, ParticularAction, IState } from "./Action";
@ -12,6 +13,7 @@ export type OpSchema = EntityShape & {
expired: Boolean;
expiresAt: Datetime;
type: "login" | "changePassword" | "confirm";
applicationId?: ForeignKey<"application"> | null;
iState?: IState | null;
} & {
[A in ExpressionKey]?: any;
@ -31,6 +33,7 @@ export type OpFilter = {
expired: Q_BooleanValue;
expiresAt: Q_DateValue;
type: Q_EnumValue<"login" | "changePassword" | "confirm">;
applicationId: Q_StringValue;
iState: Q_EnumValue<IState>;
} & ExprOp<OpAttr | string>;
export type OpProjection = {
@ -49,6 +52,7 @@ export type OpProjection = {
expired?: number;
expiresAt?: number;
type?: number;
applicationId?: number;
iState?: number;
} & Partial<ExprOp<OpAttr | string>>;
export type OpSortAttr = Partial<{
@ -64,6 +68,7 @@ export type OpSortAttr = Partial<{
expired: number;
expiresAt: number;
type: number;
applicationId: number;
iState: number;
[k: string]: any;
} | ExprOp<OpAttr | string>>;

View File

@ -10,7 +10,8 @@
"expired": "是否过期",
"expiresAt": "过期时间",
"iState": "状态",
"type": "类型"
"type": "类型",
"application": "应用"
},
"action": {
"send": "发送",

View File

@ -1211,6 +1211,7 @@ export type Application = {
system: System["Schema"];
domain?: Domain["Schema"];
applicationPassport$application?: Array<Omit<ApplicationPassport["Schema"], "application">>;
captcha$application?: Array<Omit<Captcha["Schema"], "application">>;
extraFile$application?: Array<Omit<ExtraFile["Schema"], "application">>;
notification$application?: Array<Omit<Notification["Schema"], "application">>;
sessionMessage$application?: Array<Omit<SessionMessage["Schema"], "application">>;
@ -1228,6 +1229,7 @@ export type Application = {
wpProduct$application?: Array<Omit<WpProduct["Schema"], "application">>;
session$entity?: Array<Omit<Session["Schema"], "entity">>;
applicationPassport$application$$aggr?: AggregationResult<Omit<ApplicationPassport["Schema"], "application">>;
captcha$application$$aggr?: AggregationResult<Omit<Captcha["Schema"], "application">>;
extraFile$application$$aggr?: AggregationResult<Omit<ExtraFile["Schema"], "application">>;
notification$application$$aggr?: AggregationResult<Omit<Notification["Schema"], "application">>;
sessionMessage$application$$aggr?: AggregationResult<Omit<SessionMessage["Schema"], "application">>;
@ -1254,6 +1256,12 @@ export type Application = {
applicationPassport$application$$aggr?: DeduceAggregation<Omit<ApplicationPassport["Projection"], "application">, Omit<ApplicationPassport["Filter"], "application">, ApplicationPassport["Sorter"]> & {
$entity: "applicationPassport";
};
captcha$application?: OakSelection<"select", Omit<Captcha["Projection"], "application">, Omit<Captcha["Filter"], "application">, Captcha["Sorter"]> & {
$entity: "captcha";
};
captcha$application$$aggr?: DeduceAggregation<Omit<Captcha["Projection"], "application">, Omit<Captcha["Filter"], "application">, Captcha["Sorter"]> & {
$entity: "captcha";
};
extraFile$application?: OakSelection<"select", Omit<ExtraFile["Projection"], "application">, Omit<ExtraFile["Filter"], "application">, ExtraFile["Sorter"]> & {
$entity: "extraFile";
};
@ -1355,6 +1363,7 @@ export type Application = {
system: MakeFilter<System["FilterUnit"]>;
domain: MakeFilter<Domain["FilterUnit"]>;
applicationPassport$application: MakeFilter<Omit<ApplicationPassport["FilterUnit"], "application">> & SubQueryPredicateMetadata;
captcha$application: MakeFilter<Omit<Captcha["FilterUnit"], "application">> & SubQueryPredicateMetadata;
extraFile$application: MakeFilter<Omit<ExtraFile["FilterUnit"], "application">> & SubQueryPredicateMetadata;
notification$application: MakeFilter<Omit<Notification["FilterUnit"], "application">> & SubQueryPredicateMetadata;
sessionMessage$application: MakeFilter<Omit<SessionMessage["FilterUnit"], "application">> & SubQueryPredicateMetadata;
@ -1388,6 +1397,7 @@ export type Application = {
system?: OakOperation<"create", System["CreateOperationData"]> | OakOperation<BaseSystem.OpUpdateAction, System["UpdateOperationData"], System["Filter"]>;
domain?: OakOperation<"create", Domain["CreateOperationData"]> | OakOperation<BaseDomain.OpUpdateAction, Domain["UpdateOperationData"], Domain["Filter"]>;
applicationPassport$application?: (OakOperation<"create", Omit<ApplicationPassport["CreateOperationData"], "application"> | Omit<ApplicationPassport["CreateOperationData"], "application">[]> | OakOperation<BaseApplicationPassport.OpUpdateAction, Omit<ApplicationPassport["UpdateOperationData"], "application">, ApplicationPassport["Filter"]>)[];
captcha$application?: (OakOperation<"create", Omit<Captcha["CreateOperationData"], "application"> | Omit<Captcha["CreateOperationData"], "application">[]> | OakOperation<BaseCaptcha.OpUpdateAction, Omit<Captcha["UpdateOperationData"], "application">, Captcha["Filter"]>)[];
extraFile$application?: (OakOperation<"create", Omit<ExtraFile["CreateOperationData"], "application"> | Omit<ExtraFile["CreateOperationData"], "application">[]> | OakOperation<BaseExtraFile.OpUpdateAction, Omit<ExtraFile["UpdateOperationData"], "application">, ExtraFile["Filter"]>)[];
notification$application?: (OakOperation<"create", Omit<Notification["CreateOperationData"], "application"> | Omit<Notification["CreateOperationData"], "application">[]> | OakOperation<BaseNotification.OpUpdateAction, Omit<Notification["UpdateOperationData"], "application">, Notification["Filter"]>)[];
sessionMessage$application?: (OakOperation<"create", Omit<SessionMessage["CreateOperationData"], "application"> | Omit<SessionMessage["CreateOperationData"], "application">[]> | OakOperation<BaseSessionMessage.OpUpdateAction, Omit<SessionMessage["UpdateOperationData"], "application">, SessionMessage["Filter"]>)[];
@ -1412,6 +1422,7 @@ export type Application = {
system?: OakOperation<"create", System["CreateOperationData"]> | OakOperation<BaseSystem.OpUpdateAction, System["UpdateOperationData"], System["Filter"]> | OakOperation<"remove", System["RemoveOperationData"], System["Filter"]>;
domain?: OakOperation<"create", Domain["CreateOperationData"]> | OakOperation<BaseDomain.OpUpdateAction, Domain["UpdateOperationData"], Domain["Filter"]> | OakOperation<"remove", Domain["RemoveOperationData"], Domain["Filter"]>;
applicationPassport$application?: (OakOperation<"create", Omit<ApplicationPassport["CreateOperationData"], "application"> | Omit<ApplicationPassport["CreateOperationData"], "application">[]> | OakOperation<BaseApplicationPassport.OpUpdateAction, Omit<ApplicationPassport["UpdateOperationData"], "application">, ApplicationPassport["Filter"]> | OakOperation<"remove", ApplicationPassport["RemoveOperationData"], ApplicationPassport["Filter"]>)[];
captcha$application?: (OakOperation<"create", Omit<Captcha["CreateOperationData"], "application"> | Omit<Captcha["CreateOperationData"], "application">[]> | OakOperation<BaseCaptcha.OpUpdateAction, Omit<Captcha["UpdateOperationData"], "application">, Captcha["Filter"]> | OakOperation<"remove", Captcha["RemoveOperationData"], Captcha["Filter"]>)[];
extraFile$application?: (OakOperation<"create", Omit<ExtraFile["CreateOperationData"], "application"> | Omit<ExtraFile["CreateOperationData"], "application">[]> | OakOperation<BaseExtraFile.OpUpdateAction, Omit<ExtraFile["UpdateOperationData"], "application">, ExtraFile["Filter"]> | OakOperation<"remove", ExtraFile["RemoveOperationData"], ExtraFile["Filter"]>)[];
notification$application?: (OakOperation<"create", Omit<Notification["CreateOperationData"], "application"> | Omit<Notification["CreateOperationData"], "application">[]> | OakOperation<BaseNotification.OpUpdateAction, Omit<Notification["UpdateOperationData"], "application">, Notification["Filter"]> | OakOperation<"remove", Notification["RemoveOperationData"], Notification["Filter"]>)[];
sessionMessage$application?: (OakOperation<"create", Omit<SessionMessage["CreateOperationData"], "application"> | Omit<SessionMessage["CreateOperationData"], "application">[]> | OakOperation<BaseSessionMessage.OpUpdateAction, Omit<SessionMessage["UpdateOperationData"], "application">, SessionMessage["Filter"]> | OakOperation<"remove", SessionMessage["RemoveOperationData"], SessionMessage["Filter"]>)[];
@ -1675,11 +1686,19 @@ export type ArticleMenu = {
export type Captcha = {
OpSchema: BaseCaptcha.OpSchema;
Action: BaseCaptcha.OpAction;
Schema: BaseCaptcha.OpSchema & {};
Projection: BaseCaptcha.OpProjection & {};
FilterUnit: BaseCaptcha.OpFilter & {};
Schema: BaseCaptcha.OpSchema & {
application?: Application["Schema"];
};
Projection: BaseCaptcha.OpProjection & {
application?: Application["Projection"];
};
FilterUnit: BaseCaptcha.OpFilter & {
application: MakeFilter<Application["FilterUnit"]>;
};
Filter: MakeFilter<Captcha["FilterUnit"]>;
SortAttr: Partial<BaseCaptcha.OpSortAttr | {}>;
SortAttr: Partial<BaseCaptcha.OpSortAttr | {
application: Application["SortAttr"];
}>;
SortNode: {
$attr: Captcha["SortAttr"];
$direction?: "asc" | "desc";
@ -1687,11 +1706,15 @@ export type Captcha = {
Sorter: Captcha["SortNode"][];
Selection: OakSelection<"select", Captcha["Projection"], Captcha["Filter"], Captcha["Sorter"]>;
Aggregation: DeduceAggregation<Captcha["Projection"], Captcha["Filter"], Captcha["Sorter"]>;
CreateOperationData: FormCreateData<BaseCaptcha.OpSchema>;
CreateOperationData: FormCreateData<BaseCaptcha.OpSchema & {
application?: OakOperation<"create", Application["CreateOperationData"]> | OakOperation<BaseApplication.OpUpdateAction, Application["UpdateOperationData"], Application["Filter"]>;
}>;
CreateSingle: OakOperation<"create", Captcha["CreateOperationData"]>;
CreateMulti: OakOperation<"create", Array<Captcha["CreateOperationData"]>>;
Create: Captcha["CreateSingle"] | Captcha["CreateMulti"];
UpdateOperationData: FormUpdateData<BaseCaptcha.OpSchema>;
UpdateOperationData: FormUpdateData<BaseCaptcha.OpSchema & {
application?: OakOperation<"create", Application["CreateOperationData"]> | OakOperation<BaseApplication.OpUpdateAction, Application["UpdateOperationData"], Application["Filter"]> | OakOperation<"remove", Application["RemoveOperationData"], Application["Filter"]>;
}>;
Update: OakOperation<BaseCaptcha.OpUpdateAction, Captcha["UpdateOperationData"], Captcha["Filter"], Captcha["Sorter"]>;
RemoveOperationData: {};
Remove: OakOperation<"remove", Captcha["RemoveOperationData"], Captcha["Filter"], Captcha["Sorter"]>;

View File

@ -47,6 +47,10 @@ exports.desc = {
type: "enum",
enumeration: ["login", "changePassword", "confirm"]
},
applicationId: {
type: "ref",
ref: "application"
},
iState: {
type: "enum",
enumeration: ["unsent", "sending", "sent", "failure"]

View File

@ -1,3 +1,4 @@
import { ForeignKey } from "oak-domain/lib/types/DataType";
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, Q_EnumValue, NodeId, ExprOp, ExpressionKey } from "oak-domain/lib/types/Demand";
import { MakeAction as OakMakeAction, EntityShape } from "oak-domain/lib/types/Entity";
import { Action, ParticularAction, IState } from "./Action";
@ -12,6 +13,7 @@ export type OpSchema = EntityShape & {
expired: Boolean;
expiresAt: Datetime;
type: "login" | "changePassword" | "confirm";
applicationId?: ForeignKey<"application"> | null;
iState?: IState | null;
} & {
[A in ExpressionKey]?: any;
@ -31,6 +33,7 @@ export type OpFilter = {
expired: Q_BooleanValue;
expiresAt: Q_DateValue;
type: Q_EnumValue<"login" | "changePassword" | "confirm">;
applicationId: Q_StringValue;
iState: Q_EnumValue<IState>;
} & ExprOp<OpAttr | string>;
export type OpProjection = {
@ -49,6 +52,7 @@ export type OpProjection = {
expired?: number;
expiresAt?: number;
type?: number;
applicationId?: number;
iState?: number;
} & Partial<ExprOp<OpAttr | string>>;
export type OpSortAttr = Partial<{
@ -64,6 +68,7 @@ export type OpSortAttr = Partial<{
expired: number;
expiresAt: number;
type: number;
applicationId: number;
iState: number;
[k: string]: any;
} | ExprOp<OpAttr | string>>;

View File

@ -10,7 +10,8 @@
"expired": "是否过期",
"expiresAt": "过期时间",
"iState": "状态",
"type": "类型"
"type": "类型",
"application": "应用"
},
"action": {
"send": "发送",

View File

@ -1211,6 +1211,7 @@ export type Application = {
system: System["Schema"];
domain?: Domain["Schema"];
applicationPassport$application?: Array<Omit<ApplicationPassport["Schema"], "application">>;
captcha$application?: Array<Omit<Captcha["Schema"], "application">>;
extraFile$application?: Array<Omit<ExtraFile["Schema"], "application">>;
notification$application?: Array<Omit<Notification["Schema"], "application">>;
sessionMessage$application?: Array<Omit<SessionMessage["Schema"], "application">>;
@ -1228,6 +1229,7 @@ export type Application = {
wpProduct$application?: Array<Omit<WpProduct["Schema"], "application">>;
session$entity?: Array<Omit<Session["Schema"], "entity">>;
applicationPassport$application$$aggr?: AggregationResult<Omit<ApplicationPassport["Schema"], "application">>;
captcha$application$$aggr?: AggregationResult<Omit<Captcha["Schema"], "application">>;
extraFile$application$$aggr?: AggregationResult<Omit<ExtraFile["Schema"], "application">>;
notification$application$$aggr?: AggregationResult<Omit<Notification["Schema"], "application">>;
sessionMessage$application$$aggr?: AggregationResult<Omit<SessionMessage["Schema"], "application">>;
@ -1254,6 +1256,12 @@ export type Application = {
applicationPassport$application$$aggr?: DeduceAggregation<Omit<ApplicationPassport["Projection"], "application">, Omit<ApplicationPassport["Filter"], "application">, ApplicationPassport["Sorter"]> & {
$entity: "applicationPassport";
};
captcha$application?: OakSelection<"select", Omit<Captcha["Projection"], "application">, Omit<Captcha["Filter"], "application">, Captcha["Sorter"]> & {
$entity: "captcha";
};
captcha$application$$aggr?: DeduceAggregation<Omit<Captcha["Projection"], "application">, Omit<Captcha["Filter"], "application">, Captcha["Sorter"]> & {
$entity: "captcha";
};
extraFile$application?: OakSelection<"select", Omit<ExtraFile["Projection"], "application">, Omit<ExtraFile["Filter"], "application">, ExtraFile["Sorter"]> & {
$entity: "extraFile";
};
@ -1355,6 +1363,7 @@ export type Application = {
system: MakeFilter<System["FilterUnit"]>;
domain: MakeFilter<Domain["FilterUnit"]>;
applicationPassport$application: MakeFilter<Omit<ApplicationPassport["FilterUnit"], "application">> & SubQueryPredicateMetadata;
captcha$application: MakeFilter<Omit<Captcha["FilterUnit"], "application">> & SubQueryPredicateMetadata;
extraFile$application: MakeFilter<Omit<ExtraFile["FilterUnit"], "application">> & SubQueryPredicateMetadata;
notification$application: MakeFilter<Omit<Notification["FilterUnit"], "application">> & SubQueryPredicateMetadata;
sessionMessage$application: MakeFilter<Omit<SessionMessage["FilterUnit"], "application">> & SubQueryPredicateMetadata;
@ -1388,6 +1397,7 @@ export type Application = {
system?: OakOperation<"create", System["CreateOperationData"]> | OakOperation<BaseSystem.OpUpdateAction, System["UpdateOperationData"], System["Filter"]>;
domain?: OakOperation<"create", Domain["CreateOperationData"]> | OakOperation<BaseDomain.OpUpdateAction, Domain["UpdateOperationData"], Domain["Filter"]>;
applicationPassport$application?: (OakOperation<"create", Omit<ApplicationPassport["CreateOperationData"], "application"> | Omit<ApplicationPassport["CreateOperationData"], "application">[]> | OakOperation<BaseApplicationPassport.OpUpdateAction, Omit<ApplicationPassport["UpdateOperationData"], "application">, ApplicationPassport["Filter"]>)[];
captcha$application?: (OakOperation<"create", Omit<Captcha["CreateOperationData"], "application"> | Omit<Captcha["CreateOperationData"], "application">[]> | OakOperation<BaseCaptcha.OpUpdateAction, Omit<Captcha["UpdateOperationData"], "application">, Captcha["Filter"]>)[];
extraFile$application?: (OakOperation<"create", Omit<ExtraFile["CreateOperationData"], "application"> | Omit<ExtraFile["CreateOperationData"], "application">[]> | OakOperation<BaseExtraFile.OpUpdateAction, Omit<ExtraFile["UpdateOperationData"], "application">, ExtraFile["Filter"]>)[];
notification$application?: (OakOperation<"create", Omit<Notification["CreateOperationData"], "application"> | Omit<Notification["CreateOperationData"], "application">[]> | OakOperation<BaseNotification.OpUpdateAction, Omit<Notification["UpdateOperationData"], "application">, Notification["Filter"]>)[];
sessionMessage$application?: (OakOperation<"create", Omit<SessionMessage["CreateOperationData"], "application"> | Omit<SessionMessage["CreateOperationData"], "application">[]> | OakOperation<BaseSessionMessage.OpUpdateAction, Omit<SessionMessage["UpdateOperationData"], "application">, SessionMessage["Filter"]>)[];
@ -1412,6 +1422,7 @@ export type Application = {
system?: OakOperation<"create", System["CreateOperationData"]> | OakOperation<BaseSystem.OpUpdateAction, System["UpdateOperationData"], System["Filter"]> | OakOperation<"remove", System["RemoveOperationData"], System["Filter"]>;
domain?: OakOperation<"create", Domain["CreateOperationData"]> | OakOperation<BaseDomain.OpUpdateAction, Domain["UpdateOperationData"], Domain["Filter"]> | OakOperation<"remove", Domain["RemoveOperationData"], Domain["Filter"]>;
applicationPassport$application?: (OakOperation<"create", Omit<ApplicationPassport["CreateOperationData"], "application"> | Omit<ApplicationPassport["CreateOperationData"], "application">[]> | OakOperation<BaseApplicationPassport.OpUpdateAction, Omit<ApplicationPassport["UpdateOperationData"], "application">, ApplicationPassport["Filter"]> | OakOperation<"remove", ApplicationPassport["RemoveOperationData"], ApplicationPassport["Filter"]>)[];
captcha$application?: (OakOperation<"create", Omit<Captcha["CreateOperationData"], "application"> | Omit<Captcha["CreateOperationData"], "application">[]> | OakOperation<BaseCaptcha.OpUpdateAction, Omit<Captcha["UpdateOperationData"], "application">, Captcha["Filter"]> | OakOperation<"remove", Captcha["RemoveOperationData"], Captcha["Filter"]>)[];
extraFile$application?: (OakOperation<"create", Omit<ExtraFile["CreateOperationData"], "application"> | Omit<ExtraFile["CreateOperationData"], "application">[]> | OakOperation<BaseExtraFile.OpUpdateAction, Omit<ExtraFile["UpdateOperationData"], "application">, ExtraFile["Filter"]> | OakOperation<"remove", ExtraFile["RemoveOperationData"], ExtraFile["Filter"]>)[];
notification$application?: (OakOperation<"create", Omit<Notification["CreateOperationData"], "application"> | Omit<Notification["CreateOperationData"], "application">[]> | OakOperation<BaseNotification.OpUpdateAction, Omit<Notification["UpdateOperationData"], "application">, Notification["Filter"]> | OakOperation<"remove", Notification["RemoveOperationData"], Notification["Filter"]>)[];
sessionMessage$application?: (OakOperation<"create", Omit<SessionMessage["CreateOperationData"], "application"> | Omit<SessionMessage["CreateOperationData"], "application">[]> | OakOperation<BaseSessionMessage.OpUpdateAction, Omit<SessionMessage["UpdateOperationData"], "application">, SessionMessage["Filter"]> | OakOperation<"remove", SessionMessage["RemoveOperationData"], SessionMessage["Filter"]>)[];
@ -1675,11 +1686,19 @@ export type ArticleMenu = {
export type Captcha = {
OpSchema: BaseCaptcha.OpSchema;
Action: BaseCaptcha.OpAction;
Schema: BaseCaptcha.OpSchema & {};
Projection: BaseCaptcha.OpProjection & {};
FilterUnit: BaseCaptcha.OpFilter & {};
Schema: BaseCaptcha.OpSchema & {
application?: Application["Schema"];
};
Projection: BaseCaptcha.OpProjection & {
application?: Application["Projection"];
};
FilterUnit: BaseCaptcha.OpFilter & {
application: MakeFilter<Application["FilterUnit"]>;
};
Filter: MakeFilter<Captcha["FilterUnit"]>;
SortAttr: Partial<BaseCaptcha.OpSortAttr | {}>;
SortAttr: Partial<BaseCaptcha.OpSortAttr | {
application: Application["SortAttr"];
}>;
SortNode: {
$attr: Captcha["SortAttr"];
$direction?: "asc" | "desc";
@ -1687,11 +1706,15 @@ export type Captcha = {
Sorter: Captcha["SortNode"][];
Selection: OakSelection<"select", Captcha["Projection"], Captcha["Filter"], Captcha["Sorter"]>;
Aggregation: DeduceAggregation<Captcha["Projection"], Captcha["Filter"], Captcha["Sorter"]>;
CreateOperationData: FormCreateData<BaseCaptcha.OpSchema>;
CreateOperationData: FormCreateData<BaseCaptcha.OpSchema & {
application?: OakOperation<"create", Application["CreateOperationData"]> | OakOperation<BaseApplication.OpUpdateAction, Application["UpdateOperationData"], Application["Filter"]>;
}>;
CreateSingle: OakOperation<"create", Captcha["CreateOperationData"]>;
CreateMulti: OakOperation<"create", Array<Captcha["CreateOperationData"]>>;
Create: Captcha["CreateSingle"] | Captcha["CreateMulti"];
UpdateOperationData: FormUpdateData<BaseCaptcha.OpSchema>;
UpdateOperationData: FormUpdateData<BaseCaptcha.OpSchema & {
application?: OakOperation<"create", Application["CreateOperationData"]> | OakOperation<BaseApplication.OpUpdateAction, Application["UpdateOperationData"], Application["Filter"]> | OakOperation<"remove", Application["RemoveOperationData"], Application["Filter"]>;
}>;
Update: OakOperation<BaseCaptcha.OpUpdateAction, Captcha["UpdateOperationData"], Captcha["Filter"], Captcha["Sorter"]>;
RemoveOperationData: {};
Remove: OakOperation<"remove", Captcha["RemoveOperationData"], Captcha["Filter"], Captcha["Sorter"]>;