@azure-net/kit 3.0.2 → 3.0.4
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.
|
@@ -6,8 +6,10 @@ import { EnvironmentUtil } from 'azure-net-tools';
|
|
|
6
6
|
import { UniversalCookie } from '../cookie/index.js';
|
|
7
7
|
export const createMiddlewareManager = (middlewares) => {
|
|
8
8
|
const universalRedirect = (location, status = 301, navigation) => {
|
|
9
|
-
if (EnvironmentUtil.isBrowser
|
|
10
|
-
navigation
|
|
9
|
+
if (EnvironmentUtil.isBrowser) {
|
|
10
|
+
if (navigation) {
|
|
11
|
+
navigation?.cancel();
|
|
12
|
+
}
|
|
11
13
|
return goto(location);
|
|
12
14
|
}
|
|
13
15
|
else {
|
|
@@ -4,6 +4,10 @@ export interface AsyncSignalOptions<TData, TError = Error> {
|
|
|
4
4
|
immediate?: boolean;
|
|
5
5
|
watch?: (() => unknown)[];
|
|
6
6
|
initialData?: TData;
|
|
7
|
+
beforeSend?: (meta: {
|
|
8
|
+
initial: boolean;
|
|
9
|
+
external: boolean;
|
|
10
|
+
}) => void | Promise<void>;
|
|
7
11
|
onSuccess?: (data: TData) => void | Promise<void>;
|
|
8
12
|
onError?: (error: TError) => void | Promise<void>;
|
|
9
13
|
key?: string;
|
|
@@ -54,11 +54,17 @@ export const createAsyncSignal = (handler, options = {}) => {
|
|
|
54
54
|
let abortController = null;
|
|
55
55
|
let currentPromise = null;
|
|
56
56
|
let currentRunId = 0;
|
|
57
|
-
|
|
57
|
+
let started = false;
|
|
58
|
+
const run = async (runId, external) => {
|
|
59
|
+
const initial = !started;
|
|
60
|
+
started = true;
|
|
58
61
|
if (abortController) {
|
|
59
62
|
abortController.abort();
|
|
60
63
|
}
|
|
61
64
|
abortController = new AbortController();
|
|
65
|
+
if (options.beforeSend) {
|
|
66
|
+
await options.beforeSend({ initial, external });
|
|
67
|
+
}
|
|
62
68
|
status = 'pending';
|
|
63
69
|
error = undefined;
|
|
64
70
|
try {
|
|
@@ -90,18 +96,21 @@ export const createAsyncSignal = (handler, options = {}) => {
|
|
|
90
96
|
}
|
|
91
97
|
}
|
|
92
98
|
};
|
|
93
|
-
const start = () => {
|
|
99
|
+
const start = (external) => {
|
|
100
|
+
if (currentPromise) {
|
|
101
|
+
return currentPromise;
|
|
102
|
+
}
|
|
94
103
|
const runId = ++currentRunId;
|
|
95
|
-
const localPromise = run(runId);
|
|
104
|
+
const localPromise = run(runId, external);
|
|
96
105
|
currentPromise = localPromise;
|
|
97
106
|
return localPromise;
|
|
98
107
|
};
|
|
99
108
|
const execute = async () => {
|
|
100
|
-
if (
|
|
109
|
+
if (currentPromise) {
|
|
101
110
|
await currentPromise;
|
|
102
111
|
return;
|
|
103
112
|
}
|
|
104
|
-
await start();
|
|
113
|
+
await start(true);
|
|
105
114
|
};
|
|
106
115
|
if (EnvironmentUtil.isBrowser) {
|
|
107
116
|
const signalKey = key ?? asyncSignalManager.generateKey();
|
|
@@ -120,7 +129,7 @@ export const createAsyncSignal = (handler, options = {}) => {
|
|
|
120
129
|
return;
|
|
121
130
|
}
|
|
122
131
|
if (!isFirst) {
|
|
123
|
-
void
|
|
132
|
+
void start(false);
|
|
124
133
|
}
|
|
125
134
|
isFirst = false;
|
|
126
135
|
});
|
|
@@ -129,11 +138,11 @@ export const createAsyncSignal = (handler, options = {}) => {
|
|
|
129
138
|
if (immediate) {
|
|
130
139
|
if (EnvironmentUtil.isServer && server) {
|
|
131
140
|
untrack(() => {
|
|
132
|
-
void
|
|
141
|
+
void start(false);
|
|
133
142
|
});
|
|
134
143
|
}
|
|
135
144
|
else if (EnvironmentUtil.isBrowser) {
|
|
136
|
-
void
|
|
145
|
+
void start(false);
|
|
137
146
|
}
|
|
138
147
|
}
|
|
139
148
|
return {
|
|
@@ -152,7 +161,7 @@ export const createAsyncSignal = (handler, options = {}) => {
|
|
|
152
161
|
get ready() {
|
|
153
162
|
if (currentPromise)
|
|
154
163
|
return currentPromise;
|
|
155
|
-
return start();
|
|
164
|
+
return start(false);
|
|
156
165
|
},
|
|
157
166
|
execute,
|
|
158
167
|
refresh: execute,
|