@snail-js/api 0.1.21 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/snailMethod.d.ts +6 -11
- package/dist/eventEmmit/index.d.ts +1 -0
- package/dist/eventEmmit/snail.event.d.ts +10 -0
- package/dist/snail-api.js +69 -73
- package/dist/snail-api.umd.cjs +69 -73
- package/dist/typings/apiProxy.d.ts +1 -1
- package/dist/typings/index.d.ts +1 -0
- package/dist/typings/snail.event.d.ts +6 -0
- package/dist/typings/snail.method.d.ts +0 -8
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosResponse, AxiosRequestConfig } from "axios";
|
|
2
|
-
import {
|
|
2
|
+
import { Strategy, ResponseData, SendRequest, StandardResponseData, SnailSuccessListener, SnailErrorListener, SnailHitCacheListener, SnailFinishListener } from "../typings";
|
|
3
3
|
import { SnailApi } from "./snailApi";
|
|
4
4
|
/**
|
|
5
5
|
* SnailMethod
|
|
@@ -14,8 +14,7 @@ export declare class SnailMethod<RT extends ResponseData = StandardResponseData>
|
|
|
14
14
|
private Request;
|
|
15
15
|
private Response;
|
|
16
16
|
private Error;
|
|
17
|
-
private
|
|
18
|
-
private onceWrapperMap;
|
|
17
|
+
private EventEmit;
|
|
19
18
|
private propertyKey;
|
|
20
19
|
private Url;
|
|
21
20
|
private Path;
|
|
@@ -29,14 +28,10 @@ export declare class SnailMethod<RT extends ResponseData = StandardResponseData>
|
|
|
29
28
|
private initVersion;
|
|
30
29
|
private getExpireSources;
|
|
31
30
|
private createRequest;
|
|
32
|
-
onSuccess: (
|
|
33
|
-
onError: (
|
|
34
|
-
onHitCache: (
|
|
35
|
-
onFinish: (
|
|
36
|
-
on: (eventName: SnailMethodEventType, handler: EventHandler<RT>) => void;
|
|
37
|
-
once: (eventName: SnailMethodEventType, handler: EventHandler<RT>) => void;
|
|
38
|
-
emit: (eventName: SnailMethodEventType, ...args: any) => boolean;
|
|
39
|
-
off: (eventName: SnailMethodEventType, handler: EventHandler<RT>) => void;
|
|
31
|
+
onSuccess: (listener: SnailSuccessListener<RT>) => void;
|
|
32
|
+
onError: <ErrorData = any>(listener: SnailErrorListener<RT, ErrorData>) => void;
|
|
33
|
+
onHitCache: (listener: SnailHitCacheListener<RT>) => void;
|
|
34
|
+
onFinish: (listener: SnailFinishListener<RT>) => void;
|
|
40
35
|
private getCacheData;
|
|
41
36
|
private setCacheData;
|
|
42
37
|
get response(): AxiosResponse<RT, any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./snail.event";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SnailEventListener } from "../typings";
|
|
2
|
+
export declare class SnailEvent<DT = any> {
|
|
3
|
+
private eventMap;
|
|
4
|
+
private onceWrapperMap;
|
|
5
|
+
constructor();
|
|
6
|
+
on: <ErrorData = any>(eventName: string, listener: SnailEventListener<DT, ErrorData>) => void;
|
|
7
|
+
off: (eventName: string, listener: SnailEventListener<DT>) => void;
|
|
8
|
+
once: (eventName: string, listener: SnailEventListener<DT>) => void;
|
|
9
|
+
emit: (eventName: string, ...args: any) => boolean;
|
|
10
|
+
}
|
package/dist/snail-api.js
CHANGED
|
@@ -3764,13 +3764,6 @@ class SseOptions {
|
|
|
3764
3764
|
__publicField(this, "version");
|
|
3765
3765
|
}
|
|
3766
3766
|
}
|
|
3767
|
-
var EventType = /* @__PURE__ */ ((EventType2) => {
|
|
3768
|
-
EventType2["Success"] = "success";
|
|
3769
|
-
EventType2["Error"] = "error";
|
|
3770
|
-
EventType2["hitCache"] = "hitCache";
|
|
3771
|
-
EventType2["Finish"] = "finish";
|
|
3772
|
-
return EventType2;
|
|
3773
|
-
})(EventType || {});
|
|
3774
3767
|
function createCache(optios) {
|
|
3775
3768
|
const { type } = optios;
|
|
3776
3769
|
if (type === CacheType.Custom) {
|
|
@@ -3976,6 +3969,54 @@ const HitSource = (...sources) => {
|
|
|
3976
3969
|
Reflect.defineMetadata(CACHE_EXPIRE_SOURCE_KEY, sources, target);
|
|
3977
3970
|
};
|
|
3978
3971
|
};
|
|
3972
|
+
class SnailEvent {
|
|
3973
|
+
constructor() {
|
|
3974
|
+
__publicField(this, "eventMap");
|
|
3975
|
+
__publicField(this, "onceWrapperMap");
|
|
3976
|
+
__publicField(this, "on", (eventName, listener) => {
|
|
3977
|
+
if (typeof listener !== "function") {
|
|
3978
|
+
throw new TypeError("Handler must be a function");
|
|
3979
|
+
}
|
|
3980
|
+
const listeners = this.eventMap.get(eventName) || /* @__PURE__ */ new Set();
|
|
3981
|
+
listeners.add(listener);
|
|
3982
|
+
this.eventMap.set(eventName, listeners);
|
|
3983
|
+
});
|
|
3984
|
+
__publicField(this, "off", (eventName, listener) => {
|
|
3985
|
+
const listeners = this.eventMap.get(eventName);
|
|
3986
|
+
if (!listeners) return;
|
|
3987
|
+
if (this.onceWrapperMap.has(listener)) {
|
|
3988
|
+
this.onceWrapperMap.delete(listener);
|
|
3989
|
+
}
|
|
3990
|
+
if (listeners.size === 0) {
|
|
3991
|
+
this.eventMap.delete(eventName);
|
|
3992
|
+
}
|
|
3993
|
+
});
|
|
3994
|
+
__publicField(this, "once", (eventName, listener) => {
|
|
3995
|
+
const onceHandler = (data) => {
|
|
3996
|
+
try {
|
|
3997
|
+
listener.apply(this, [data]);
|
|
3998
|
+
} finally {
|
|
3999
|
+
this.off(eventName, onceHandler);
|
|
4000
|
+
this.onceWrapperMap.delete(listener);
|
|
4001
|
+
}
|
|
4002
|
+
};
|
|
4003
|
+
this.onceWrapperMap.set(listener, onceHandler);
|
|
4004
|
+
this.on(eventName, onceHandler);
|
|
4005
|
+
});
|
|
4006
|
+
__publicField(this, "emit", (eventName, ...args) => {
|
|
4007
|
+
const listeners = this.eventMap.get(eventName);
|
|
4008
|
+
if (!listeners || listeners.size === 0) return false;
|
|
4009
|
+
listeners.forEach((listener) => {
|
|
4010
|
+
Promise.resolve().then(() => {
|
|
4011
|
+
listener.apply(this, args);
|
|
4012
|
+
});
|
|
4013
|
+
});
|
|
4014
|
+
return true;
|
|
4015
|
+
});
|
|
4016
|
+
this.eventMap = /* @__PURE__ */ new Map();
|
|
4017
|
+
this.onceWrapperMap = /* @__PURE__ */ new Map();
|
|
4018
|
+
}
|
|
4019
|
+
}
|
|
3979
4020
|
const versionHandlers = {
|
|
3980
4021
|
[VersioningType.Uri]: (version, versioning) => {
|
|
3981
4022
|
const prefix = versioning.prefix || "v";
|
|
@@ -4029,8 +4070,9 @@ class SnailMethod {
|
|
|
4029
4070
|
__publicField(this, "Request");
|
|
4030
4071
|
__publicField(this, "Response");
|
|
4031
4072
|
__publicField(this, "Error");
|
|
4032
|
-
__publicField(this, "
|
|
4033
|
-
|
|
4073
|
+
__publicField(this, "EventEmit");
|
|
4074
|
+
// private eventMap: Map<string, Set<EventHandler>>;
|
|
4075
|
+
// private onceWrapperMap: Map<EventHandler, EventHandler>;
|
|
4034
4076
|
__publicField(this, "propertyKey");
|
|
4035
4077
|
__publicField(this, "Url", "");
|
|
4036
4078
|
__publicField(this, "Path", "");
|
|
@@ -4069,9 +4111,9 @@ class SnailMethod {
|
|
|
4069
4111
|
const { data: data2 } = await this.getCacheData(serverName);
|
|
4070
4112
|
this.enableLog() && console.log("getCacheData:", data2);
|
|
4071
4113
|
if (data2) {
|
|
4072
|
-
this.emit("hitCache", data2);
|
|
4073
|
-
this.emit("success", data2);
|
|
4074
|
-
this.emit("finish", data2);
|
|
4114
|
+
this.EventEmit.emit("hitCache", data2);
|
|
4115
|
+
this.EventEmit.emit("success", data2);
|
|
4116
|
+
this.EventEmit.emit("finish", data2);
|
|
4075
4117
|
return data2;
|
|
4076
4118
|
}
|
|
4077
4119
|
}
|
|
@@ -4092,8 +4134,8 @@ class SnailMethod {
|
|
|
4092
4134
|
this.applyHitSource(serverName);
|
|
4093
4135
|
isSpecial && console.log("isSpecial:", isSpecial);
|
|
4094
4136
|
if (isSpecial) {
|
|
4095
|
-
this.emit("success", response.data);
|
|
4096
|
-
this.emit("finish", response.data);
|
|
4137
|
+
this.EventEmit.emit("success", response.data);
|
|
4138
|
+
this.EventEmit.emit("finish", response.data);
|
|
4097
4139
|
return response;
|
|
4098
4140
|
}
|
|
4099
4141
|
!isSpecial && console.log("isSpecial:", isSpecial);
|
|
@@ -4102,71 +4144,31 @@ class SnailMethod {
|
|
|
4102
4144
|
const statuCodeKey = key ?? "code";
|
|
4103
4145
|
const data2 = response.data;
|
|
4104
4146
|
if (rule(data2[statuCodeKey])) {
|
|
4105
|
-
this.emit("success", response.data);
|
|
4147
|
+
this.EventEmit.emit("success", response.data);
|
|
4106
4148
|
} else {
|
|
4107
|
-
this.emit("error", response.data);
|
|
4149
|
+
this.EventEmit.emit("error", response.data);
|
|
4108
4150
|
}
|
|
4109
4151
|
}
|
|
4110
4152
|
return response.data;
|
|
4111
4153
|
} catch (error) {
|
|
4112
|
-
this.emit("error", error);
|
|
4113
|
-
this.emit("finish", error);
|
|
4154
|
+
this.EventEmit.emit("error", error);
|
|
4155
|
+
this.EventEmit.emit("finish", error);
|
|
4114
4156
|
console.error(error);
|
|
4115
4157
|
this.Error = error;
|
|
4116
4158
|
return error;
|
|
4117
4159
|
}
|
|
4118
4160
|
});
|
|
4119
|
-
__publicField(this, "onSuccess", (
|
|
4120
|
-
this.on("success",
|
|
4121
|
-
});
|
|
4122
|
-
__publicField(this, "onError", (handler) => {
|
|
4123
|
-
this.on("error", handler);
|
|
4161
|
+
__publicField(this, "onSuccess", (listener) => {
|
|
4162
|
+
this.EventEmit.on("success", listener);
|
|
4124
4163
|
});
|
|
4125
|
-
__publicField(this, "
|
|
4126
|
-
this.on("
|
|
4127
|
-
});
|
|
4128
|
-
__publicField(this, "onFinish", (handler) => {
|
|
4129
|
-
this.on("finish", handler);
|
|
4130
|
-
});
|
|
4131
|
-
__publicField(this, "on", (eventName, handler) => {
|
|
4132
|
-
if (typeof handler !== "function") {
|
|
4133
|
-
throw new TypeError("Handler must be a function");
|
|
4134
|
-
}
|
|
4135
|
-
const handlers = this.eventMap.get(eventName) || /* @__PURE__ */ new Set();
|
|
4136
|
-
handlers.add(handler);
|
|
4137
|
-
this.eventMap.set(eventName, handlers);
|
|
4138
|
-
});
|
|
4139
|
-
__publicField(this, "once", (eventName, handler) => {
|
|
4140
|
-
const onceHandler = (data) => {
|
|
4141
|
-
try {
|
|
4142
|
-
handler.apply(this, [data]);
|
|
4143
|
-
} finally {
|
|
4144
|
-
this.off(eventName, onceHandler);
|
|
4145
|
-
this.onceWrapperMap.delete(handler);
|
|
4146
|
-
}
|
|
4147
|
-
};
|
|
4148
|
-
this.onceWrapperMap.set(handler, onceHandler);
|
|
4149
|
-
this.on(eventName, onceHandler);
|
|
4164
|
+
__publicField(this, "onError", (listener) => {
|
|
4165
|
+
this.EventEmit.on("error", listener);
|
|
4150
4166
|
});
|
|
4151
|
-
__publicField(this, "
|
|
4152
|
-
|
|
4153
|
-
if (!handlers || handlers.size === 0) return false;
|
|
4154
|
-
handlers.forEach((handler) => {
|
|
4155
|
-
Promise.resolve().then(() => {
|
|
4156
|
-
handler.apply(this, args);
|
|
4157
|
-
});
|
|
4158
|
-
});
|
|
4159
|
-
return true;
|
|
4167
|
+
__publicField(this, "onHitCache", (listener) => {
|
|
4168
|
+
this.EventEmit.on("hitCache", listener);
|
|
4160
4169
|
});
|
|
4161
|
-
__publicField(this, "
|
|
4162
|
-
|
|
4163
|
-
if (!handlers) return;
|
|
4164
|
-
if (handlers.has(handler)) {
|
|
4165
|
-
handlers.delete(handler);
|
|
4166
|
-
}
|
|
4167
|
-
if (handlers.size === 0) {
|
|
4168
|
-
this.eventMap.delete(eventName);
|
|
4169
|
-
}
|
|
4170
|
+
__publicField(this, "onFinish", (listener) => {
|
|
4171
|
+
this.EventEmit.on("finish", listener);
|
|
4170
4172
|
});
|
|
4171
4173
|
__publicField(this, "registerStrategies", (...strategys) => {
|
|
4172
4174
|
this.strategies.push(...strategys);
|
|
@@ -4177,12 +4179,7 @@ class SnailMethod {
|
|
|
4177
4179
|
this.Args = args ?? [];
|
|
4178
4180
|
this.init();
|
|
4179
4181
|
this.enableLog() && console.log("url:", this.Url);
|
|
4180
|
-
this.
|
|
4181
|
-
this.onceWrapperMap = /* @__PURE__ */ new Map();
|
|
4182
|
-
this.eventMap.set("success", /* @__PURE__ */ new Set());
|
|
4183
|
-
this.eventMap.set("hitCache", /* @__PURE__ */ new Set());
|
|
4184
|
-
this.eventMap.set("error", /* @__PURE__ */ new Set());
|
|
4185
|
-
this.eventMap.set("finish", /* @__PURE__ */ new Set());
|
|
4182
|
+
this.EventEmit = new SnailEvent();
|
|
4186
4183
|
}
|
|
4187
4184
|
init() {
|
|
4188
4185
|
const methodOptions = this.getMethodOptions();
|
|
@@ -4820,7 +4817,6 @@ export {
|
|
|
4820
4817
|
CacheType,
|
|
4821
4818
|
Data,
|
|
4822
4819
|
Delete,
|
|
4823
|
-
EventType,
|
|
4824
4820
|
Get,
|
|
4825
4821
|
Head,
|
|
4826
4822
|
HitSource,
|
package/dist/snail-api.umd.cjs
CHANGED
|
@@ -3768,13 +3768,6 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
3768
3768
|
__publicField(this, "version");
|
|
3769
3769
|
}
|
|
3770
3770
|
}
|
|
3771
|
-
var EventType = /* @__PURE__ */ ((EventType2) => {
|
|
3772
|
-
EventType2["Success"] = "success";
|
|
3773
|
-
EventType2["Error"] = "error";
|
|
3774
|
-
EventType2["hitCache"] = "hitCache";
|
|
3775
|
-
EventType2["Finish"] = "finish";
|
|
3776
|
-
return EventType2;
|
|
3777
|
-
})(EventType || {});
|
|
3778
3771
|
function createCache(optios) {
|
|
3779
3772
|
const { type } = optios;
|
|
3780
3773
|
if (type === CacheType.Custom) {
|
|
@@ -3980,6 +3973,54 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
3980
3973
|
Reflect.defineMetadata(CACHE_EXPIRE_SOURCE_KEY, sources, target);
|
|
3981
3974
|
};
|
|
3982
3975
|
};
|
|
3976
|
+
class SnailEvent {
|
|
3977
|
+
constructor() {
|
|
3978
|
+
__publicField(this, "eventMap");
|
|
3979
|
+
__publicField(this, "onceWrapperMap");
|
|
3980
|
+
__publicField(this, "on", (eventName, listener) => {
|
|
3981
|
+
if (typeof listener !== "function") {
|
|
3982
|
+
throw new TypeError("Handler must be a function");
|
|
3983
|
+
}
|
|
3984
|
+
const listeners = this.eventMap.get(eventName) || /* @__PURE__ */ new Set();
|
|
3985
|
+
listeners.add(listener);
|
|
3986
|
+
this.eventMap.set(eventName, listeners);
|
|
3987
|
+
});
|
|
3988
|
+
__publicField(this, "off", (eventName, listener) => {
|
|
3989
|
+
const listeners = this.eventMap.get(eventName);
|
|
3990
|
+
if (!listeners) return;
|
|
3991
|
+
if (this.onceWrapperMap.has(listener)) {
|
|
3992
|
+
this.onceWrapperMap.delete(listener);
|
|
3993
|
+
}
|
|
3994
|
+
if (listeners.size === 0) {
|
|
3995
|
+
this.eventMap.delete(eventName);
|
|
3996
|
+
}
|
|
3997
|
+
});
|
|
3998
|
+
__publicField(this, "once", (eventName, listener) => {
|
|
3999
|
+
const onceHandler = (data) => {
|
|
4000
|
+
try {
|
|
4001
|
+
listener.apply(this, [data]);
|
|
4002
|
+
} finally {
|
|
4003
|
+
this.off(eventName, onceHandler);
|
|
4004
|
+
this.onceWrapperMap.delete(listener);
|
|
4005
|
+
}
|
|
4006
|
+
};
|
|
4007
|
+
this.onceWrapperMap.set(listener, onceHandler);
|
|
4008
|
+
this.on(eventName, onceHandler);
|
|
4009
|
+
});
|
|
4010
|
+
__publicField(this, "emit", (eventName, ...args) => {
|
|
4011
|
+
const listeners = this.eventMap.get(eventName);
|
|
4012
|
+
if (!listeners || listeners.size === 0) return false;
|
|
4013
|
+
listeners.forEach((listener) => {
|
|
4014
|
+
Promise.resolve().then(() => {
|
|
4015
|
+
listener.apply(this, args);
|
|
4016
|
+
});
|
|
4017
|
+
});
|
|
4018
|
+
return true;
|
|
4019
|
+
});
|
|
4020
|
+
this.eventMap = /* @__PURE__ */ new Map();
|
|
4021
|
+
this.onceWrapperMap = /* @__PURE__ */ new Map();
|
|
4022
|
+
}
|
|
4023
|
+
}
|
|
3983
4024
|
const versionHandlers = {
|
|
3984
4025
|
[VersioningType.Uri]: (version, versioning) => {
|
|
3985
4026
|
const prefix = versioning.prefix || "v";
|
|
@@ -4033,8 +4074,9 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4033
4074
|
__publicField(this, "Request");
|
|
4034
4075
|
__publicField(this, "Response");
|
|
4035
4076
|
__publicField(this, "Error");
|
|
4036
|
-
__publicField(this, "
|
|
4037
|
-
|
|
4077
|
+
__publicField(this, "EventEmit");
|
|
4078
|
+
// private eventMap: Map<string, Set<EventHandler>>;
|
|
4079
|
+
// private onceWrapperMap: Map<EventHandler, EventHandler>;
|
|
4038
4080
|
__publicField(this, "propertyKey");
|
|
4039
4081
|
__publicField(this, "Url", "");
|
|
4040
4082
|
__publicField(this, "Path", "");
|
|
@@ -4073,9 +4115,9 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4073
4115
|
const { data: data2 } = await this.getCacheData(serverName);
|
|
4074
4116
|
this.enableLog() && console.log("getCacheData:", data2);
|
|
4075
4117
|
if (data2) {
|
|
4076
|
-
this.emit("hitCache", data2);
|
|
4077
|
-
this.emit("success", data2);
|
|
4078
|
-
this.emit("finish", data2);
|
|
4118
|
+
this.EventEmit.emit("hitCache", data2);
|
|
4119
|
+
this.EventEmit.emit("success", data2);
|
|
4120
|
+
this.EventEmit.emit("finish", data2);
|
|
4079
4121
|
return data2;
|
|
4080
4122
|
}
|
|
4081
4123
|
}
|
|
@@ -4096,8 +4138,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4096
4138
|
this.applyHitSource(serverName);
|
|
4097
4139
|
isSpecial && console.log("isSpecial:", isSpecial);
|
|
4098
4140
|
if (isSpecial) {
|
|
4099
|
-
this.emit("success", response.data);
|
|
4100
|
-
this.emit("finish", response.data);
|
|
4141
|
+
this.EventEmit.emit("success", response.data);
|
|
4142
|
+
this.EventEmit.emit("finish", response.data);
|
|
4101
4143
|
return response;
|
|
4102
4144
|
}
|
|
4103
4145
|
!isSpecial && console.log("isSpecial:", isSpecial);
|
|
@@ -4106,71 +4148,31 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4106
4148
|
const statuCodeKey = key ?? "code";
|
|
4107
4149
|
const data2 = response.data;
|
|
4108
4150
|
if (rule(data2[statuCodeKey])) {
|
|
4109
|
-
this.emit("success", response.data);
|
|
4151
|
+
this.EventEmit.emit("success", response.data);
|
|
4110
4152
|
} else {
|
|
4111
|
-
this.emit("error", response.data);
|
|
4153
|
+
this.EventEmit.emit("error", response.data);
|
|
4112
4154
|
}
|
|
4113
4155
|
}
|
|
4114
4156
|
return response.data;
|
|
4115
4157
|
} catch (error) {
|
|
4116
|
-
this.emit("error", error);
|
|
4117
|
-
this.emit("finish", error);
|
|
4158
|
+
this.EventEmit.emit("error", error);
|
|
4159
|
+
this.EventEmit.emit("finish", error);
|
|
4118
4160
|
console.error(error);
|
|
4119
4161
|
this.Error = error;
|
|
4120
4162
|
return error;
|
|
4121
4163
|
}
|
|
4122
4164
|
});
|
|
4123
|
-
__publicField(this, "onSuccess", (
|
|
4124
|
-
this.on("success",
|
|
4125
|
-
});
|
|
4126
|
-
__publicField(this, "onError", (handler) => {
|
|
4127
|
-
this.on("error", handler);
|
|
4165
|
+
__publicField(this, "onSuccess", (listener) => {
|
|
4166
|
+
this.EventEmit.on("success", listener);
|
|
4128
4167
|
});
|
|
4129
|
-
__publicField(this, "
|
|
4130
|
-
this.on("
|
|
4131
|
-
});
|
|
4132
|
-
__publicField(this, "onFinish", (handler) => {
|
|
4133
|
-
this.on("finish", handler);
|
|
4134
|
-
});
|
|
4135
|
-
__publicField(this, "on", (eventName, handler) => {
|
|
4136
|
-
if (typeof handler !== "function") {
|
|
4137
|
-
throw new TypeError("Handler must be a function");
|
|
4138
|
-
}
|
|
4139
|
-
const handlers = this.eventMap.get(eventName) || /* @__PURE__ */ new Set();
|
|
4140
|
-
handlers.add(handler);
|
|
4141
|
-
this.eventMap.set(eventName, handlers);
|
|
4142
|
-
});
|
|
4143
|
-
__publicField(this, "once", (eventName, handler) => {
|
|
4144
|
-
const onceHandler = (data) => {
|
|
4145
|
-
try {
|
|
4146
|
-
handler.apply(this, [data]);
|
|
4147
|
-
} finally {
|
|
4148
|
-
this.off(eventName, onceHandler);
|
|
4149
|
-
this.onceWrapperMap.delete(handler);
|
|
4150
|
-
}
|
|
4151
|
-
};
|
|
4152
|
-
this.onceWrapperMap.set(handler, onceHandler);
|
|
4153
|
-
this.on(eventName, onceHandler);
|
|
4168
|
+
__publicField(this, "onError", (listener) => {
|
|
4169
|
+
this.EventEmit.on("error", listener);
|
|
4154
4170
|
});
|
|
4155
|
-
__publicField(this, "
|
|
4156
|
-
|
|
4157
|
-
if (!handlers || handlers.size === 0) return false;
|
|
4158
|
-
handlers.forEach((handler) => {
|
|
4159
|
-
Promise.resolve().then(() => {
|
|
4160
|
-
handler.apply(this, args);
|
|
4161
|
-
});
|
|
4162
|
-
});
|
|
4163
|
-
return true;
|
|
4171
|
+
__publicField(this, "onHitCache", (listener) => {
|
|
4172
|
+
this.EventEmit.on("hitCache", listener);
|
|
4164
4173
|
});
|
|
4165
|
-
__publicField(this, "
|
|
4166
|
-
|
|
4167
|
-
if (!handlers) return;
|
|
4168
|
-
if (handlers.has(handler)) {
|
|
4169
|
-
handlers.delete(handler);
|
|
4170
|
-
}
|
|
4171
|
-
if (handlers.size === 0) {
|
|
4172
|
-
this.eventMap.delete(eventName);
|
|
4173
|
-
}
|
|
4174
|
+
__publicField(this, "onFinish", (listener) => {
|
|
4175
|
+
this.EventEmit.on("finish", listener);
|
|
4174
4176
|
});
|
|
4175
4177
|
__publicField(this, "registerStrategies", (...strategys) => {
|
|
4176
4178
|
this.strategies.push(...strategys);
|
|
@@ -4181,12 +4183,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4181
4183
|
this.Args = args ?? [];
|
|
4182
4184
|
this.init();
|
|
4183
4185
|
this.enableLog() && console.log("url:", this.Url);
|
|
4184
|
-
this.
|
|
4185
|
-
this.onceWrapperMap = /* @__PURE__ */ new Map();
|
|
4186
|
-
this.eventMap.set("success", /* @__PURE__ */ new Set());
|
|
4187
|
-
this.eventMap.set("hitCache", /* @__PURE__ */ new Set());
|
|
4188
|
-
this.eventMap.set("error", /* @__PURE__ */ new Set());
|
|
4189
|
-
this.eventMap.set("finish", /* @__PURE__ */ new Set());
|
|
4186
|
+
this.EventEmit = new SnailEvent();
|
|
4190
4187
|
}
|
|
4191
4188
|
init() {
|
|
4192
4189
|
const methodOptions = this.getMethodOptions();
|
|
@@ -4823,7 +4820,6 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4823
4820
|
exports2.CacheType = CacheType;
|
|
4824
4821
|
exports2.Data = Data;
|
|
4825
4822
|
exports2.Delete = Delete;
|
|
4826
|
-
exports2.EventType = EventType;
|
|
4827
4823
|
exports2.Get = Get;
|
|
4828
4824
|
exports2.Head = Head;
|
|
4829
4825
|
exports2.HitSource = HitSource;
|
|
@@ -6,7 +6,7 @@ export type ApiResponse<T> = Promise<{
|
|
|
6
6
|
hitCache?: boolean;
|
|
7
7
|
}>;
|
|
8
8
|
export type ApiProxy<T extends object, RT extends ResponseData = Omit<StandardResponseData, "data">, DK extends string = "data"> = {
|
|
9
|
-
[K in keyof T]: T[K] extends (...args: infer A) => any ? RT extends SpecialResponseData ? <RD>(...args: A) => SnailMethod<RD extends SpecialResponseData ? RD : never> : <RD>(...args: A) => RD extends SpecialResponseData ? SnailMethod<RD> : SnailMethod<RT & {
|
|
9
|
+
[K in keyof T]: T[K] extends (...args: infer A) => any ? RT extends SpecialResponseData ? <RD = unknown>(...args: A) => SnailMethod<RD extends SpecialResponseData ? RD : never> : <RD = unknown>(...args: A) => RD extends SpecialResponseData ? SnailMethod<RD> : SnailMethod<RT & {
|
|
10
10
|
[KK in DK]: RD;
|
|
11
11
|
}> : T[K];
|
|
12
12
|
};
|
package/dist/typings/index.d.ts
CHANGED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AxiosResponse } from "axios";
|
|
2
|
+
export type SnailSuccessListener<T = any> = (data?: T) => void;
|
|
3
|
+
export type SnailErrorListener<T = any, ErrorData = any> = (response?: AxiosResponse<T> | Error | ErrorData) => void;
|
|
4
|
+
export type SnailHitCacheListener<T = any> = (cacheData?: T) => void;
|
|
5
|
+
export type SnailFinishListener<T = any> = (data?: T) => void;
|
|
6
|
+
export type SnailEventListener<T = any, ErrorData = any> = SnailSuccessListener<T> | SnailErrorListener<T, ErrorData> | SnailHitCacheListener<T> | SnailFinishListener<T>;
|
|
@@ -1,11 +1,3 @@
|
|
|
1
1
|
import { AxiosResponse } from "axios";
|
|
2
2
|
import { ResponseData, ResponseJsonData, StandardResponseData, SpecialResponseData } from "./response.data";
|
|
3
|
-
export type EventHandler<T = any> = (data?: T) => void;
|
|
4
|
-
export declare enum EventType {
|
|
5
|
-
Success = "success",
|
|
6
|
-
Error = "error",
|
|
7
|
-
hitCache = "hitCache",
|
|
8
|
-
Finish = "finish"
|
|
9
|
-
}
|
|
10
|
-
export type SnailMethodEventType = `${EventType}` | EventType | string;
|
|
11
3
|
export type SendRequest<RD extends ResponseData = StandardResponseData<ResponseJsonData>> = () => Promise<RD extends SpecialResponseData ? AxiosResponse<RD> : RD>;
|