qstd 0.3.66 → 0.3.68
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/client/index.cjs +128 -10
- package/dist/client/index.js +128 -10
- package/dist/server/index.cjs +128 -10
- package/dist/server/index.js +128 -10
- package/dist/shared/api/domain.d.ts.map +1 -1
- package/dist/shared/api/fns.d.ts +21 -0
- package/dist/shared/api/fns.d.ts.map +1 -1
- package/dist/shared/api/types.d.ts +42 -2
- package/dist/shared/api/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/client/index.cjs
CHANGED
|
@@ -671,7 +671,8 @@ var isDev = () => {
|
|
|
671
671
|
if (typeof process !== "undefined" && process.env?.NODE_ENV) {
|
|
672
672
|
return process.env.NODE_ENV !== "production";
|
|
673
673
|
}
|
|
674
|
-
if (typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)) }) !== "undefined" &&
|
|
674
|
+
if (typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)) }) !== "undefined" && // @ts-expect-error - import.meta.env is Vite-specific
|
|
675
|
+
undefined?.DEV !== void 0) {
|
|
675
676
|
return undefined.DEV;
|
|
676
677
|
}
|
|
677
678
|
return false;
|
|
@@ -839,6 +840,83 @@ var parseResponse = async (response, output, onProgress) => {
|
|
|
839
840
|
const text = await response.text();
|
|
840
841
|
return text ? JSON.parse(text) : null;
|
|
841
842
|
};
|
|
843
|
+
var requestWithXhr = (props) => {
|
|
844
|
+
const {
|
|
845
|
+
url,
|
|
846
|
+
body,
|
|
847
|
+
method,
|
|
848
|
+
output,
|
|
849
|
+
signal,
|
|
850
|
+
headers,
|
|
851
|
+
onUploadProgress,
|
|
852
|
+
onProgress
|
|
853
|
+
} = props;
|
|
854
|
+
return new Promise((resolve, reject) => {
|
|
855
|
+
const xhr = new XMLHttpRequest();
|
|
856
|
+
xhr.open(method, url);
|
|
857
|
+
const out = output ?? "json";
|
|
858
|
+
if (out === "blob") {
|
|
859
|
+
xhr.responseType = "blob";
|
|
860
|
+
} else if (out === "arrayBuffer") {
|
|
861
|
+
xhr.responseType = "arraybuffer";
|
|
862
|
+
} else {
|
|
863
|
+
xhr.responseType = "text";
|
|
864
|
+
}
|
|
865
|
+
if (headers) {
|
|
866
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
867
|
+
if (key.toLowerCase() === "content-type" && body instanceof FormData) {
|
|
868
|
+
continue;
|
|
869
|
+
}
|
|
870
|
+
xhr.setRequestHeader(key, value);
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
if (onUploadProgress) {
|
|
874
|
+
xhr.upload.onprogress = (e) => {
|
|
875
|
+
if (e.lengthComputable) {
|
|
876
|
+
onUploadProgress({
|
|
877
|
+
percent: Math.round(e.loaded / e.total * 100),
|
|
878
|
+
loaded: e.loaded,
|
|
879
|
+
total: e.total
|
|
880
|
+
});
|
|
881
|
+
}
|
|
882
|
+
};
|
|
883
|
+
}
|
|
884
|
+
if (onProgress) {
|
|
885
|
+
xhr.onprogress = (e) => {
|
|
886
|
+
if (e.lengthComputable) {
|
|
887
|
+
onProgress({
|
|
888
|
+
loaded: e.loaded,
|
|
889
|
+
total: e.total,
|
|
890
|
+
percent: Math.round(e.loaded / e.total * 100)
|
|
891
|
+
});
|
|
892
|
+
}
|
|
893
|
+
};
|
|
894
|
+
}
|
|
895
|
+
if (signal) {
|
|
896
|
+
signal.addEventListener("abort", () => {
|
|
897
|
+
xhr.abort();
|
|
898
|
+
reject(new Error("Request aborted"));
|
|
899
|
+
});
|
|
900
|
+
}
|
|
901
|
+
xhr.onload = () => {
|
|
902
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
903
|
+
if (out === "blob" || out === "arrayBuffer") {
|
|
904
|
+
resolve(xhr.response);
|
|
905
|
+
} else if (out === "text") {
|
|
906
|
+
resolve(xhr.responseText);
|
|
907
|
+
} else {
|
|
908
|
+
const text = xhr.responseText;
|
|
909
|
+
resolve(text ? JSON.parse(text) : null);
|
|
910
|
+
}
|
|
911
|
+
} else {
|
|
912
|
+
reject(new RestError({ status: xhr.status, body: xhr.responseText }));
|
|
913
|
+
}
|
|
914
|
+
};
|
|
915
|
+
xhr.onerror = () => reject(new Error("Network request failed"));
|
|
916
|
+
xhr.ontimeout = () => reject(new Error("Request timed out"));
|
|
917
|
+
xhr.send(body);
|
|
918
|
+
});
|
|
919
|
+
};
|
|
842
920
|
|
|
843
921
|
// src/shared/api/domain.ts
|
|
844
922
|
var config = { baseUrl: "" };
|
|
@@ -850,6 +928,8 @@ var configHeaders = async () => {
|
|
|
850
928
|
return typeof config.headers === "function" ? await config.headers() : config.headers;
|
|
851
929
|
};
|
|
852
930
|
var request = async (method, path, options, defaultInput) => {
|
|
931
|
+
const start = Date.now();
|
|
932
|
+
config.onRequest?.(method, path);
|
|
853
933
|
const opts = options;
|
|
854
934
|
const url = prepareUrl(path, {
|
|
855
935
|
baseUrl: config.baseUrl,
|
|
@@ -862,26 +942,64 @@ var request = async (method, path, options, defaultInput) => {
|
|
|
862
942
|
const isExternal = isAbsolute(path);
|
|
863
943
|
const defaults = headersOption !== false && !isExternal ? await configHeaders() : {};
|
|
864
944
|
const headers = await prepareHeaders({
|
|
865
|
-
defaults,
|
|
866
945
|
headersOption,
|
|
867
|
-
|
|
868
|
-
|
|
946
|
+
body: rawBody,
|
|
947
|
+
defaults,
|
|
948
|
+
input
|
|
869
949
|
});
|
|
870
950
|
const body = prepareBody(rawBody, input);
|
|
871
|
-
const
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
951
|
+
const onUploadProgress = opts?.onUploadProgress;
|
|
952
|
+
if (onUploadProgress && body !== void 0) {
|
|
953
|
+
try {
|
|
954
|
+
const data2 = await requestWithXhr({
|
|
955
|
+
headers: headers ?? void 0,
|
|
956
|
+
onProgress: opts?.onProgress,
|
|
957
|
+
output: opts?.output,
|
|
958
|
+
signal: opts?.signal,
|
|
959
|
+
onUploadProgress,
|
|
960
|
+
method,
|
|
961
|
+
body,
|
|
962
|
+
url
|
|
963
|
+
});
|
|
964
|
+
const elapsed2 = Date.now() - start;
|
|
965
|
+
config.onResponse?.(method, path, elapsed2);
|
|
966
|
+
return opts?.onSuccess ? opts.onSuccess(data2) : data2;
|
|
967
|
+
} catch (error3) {
|
|
968
|
+
const elapsed2 = Date.now() - start;
|
|
969
|
+
const err = error3 instanceof Error ? error3 : new Error(String(error3));
|
|
970
|
+
config.onError?.(method, path, err, elapsed2);
|
|
971
|
+
if (opts?.onError && error3 instanceof RestError) {
|
|
972
|
+
return opts.onError(error3);
|
|
973
|
+
}
|
|
974
|
+
throw error3;
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
let response;
|
|
978
|
+
try {
|
|
979
|
+
response = await fetch(url, {
|
|
980
|
+
method,
|
|
981
|
+
...headers && { headers },
|
|
982
|
+
...body !== void 0 && { body },
|
|
983
|
+
...opts?.signal && { signal: opts.signal }
|
|
984
|
+
});
|
|
985
|
+
} catch (networkError) {
|
|
986
|
+
const elapsed2 = Date.now() - start;
|
|
987
|
+
const error3 = networkError instanceof Error ? networkError : new Error(String(networkError));
|
|
988
|
+
config.onError?.(method, path, error3, elapsed2);
|
|
989
|
+
throw error3;
|
|
990
|
+
}
|
|
877
991
|
if (!response.ok) {
|
|
992
|
+
const elapsed2 = Date.now() - start;
|
|
878
993
|
const error3 = new RestError({
|
|
879
994
|
status: response.status,
|
|
880
995
|
body: await response.text()
|
|
881
996
|
});
|
|
997
|
+
config.onError?.(method, path, error3, elapsed2);
|
|
882
998
|
if (opts?.onError) return opts.onError(error3);
|
|
883
999
|
throw error3;
|
|
884
1000
|
}
|
|
1001
|
+
const elapsed = Date.now() - start;
|
|
1002
|
+
config.onResponse?.(method, path, elapsed);
|
|
885
1003
|
const data = await parseResponse(
|
|
886
1004
|
response,
|
|
887
1005
|
opts?.output,
|
package/dist/client/index.js
CHANGED
|
@@ -664,7 +664,8 @@ var isDev = () => {
|
|
|
664
664
|
if (typeof process !== "undefined" && process.env?.NODE_ENV) {
|
|
665
665
|
return process.env.NODE_ENV !== "production";
|
|
666
666
|
}
|
|
667
|
-
if (typeof import.meta !== "undefined" && import.meta.env
|
|
667
|
+
if (typeof import.meta !== "undefined" && // @ts-expect-error - import.meta.env is Vite-specific
|
|
668
|
+
import.meta.env?.DEV !== void 0) {
|
|
668
669
|
return import.meta.env.DEV;
|
|
669
670
|
}
|
|
670
671
|
return false;
|
|
@@ -832,6 +833,83 @@ var parseResponse = async (response, output, onProgress) => {
|
|
|
832
833
|
const text = await response.text();
|
|
833
834
|
return text ? JSON.parse(text) : null;
|
|
834
835
|
};
|
|
836
|
+
var requestWithXhr = (props) => {
|
|
837
|
+
const {
|
|
838
|
+
url,
|
|
839
|
+
body,
|
|
840
|
+
method,
|
|
841
|
+
output,
|
|
842
|
+
signal,
|
|
843
|
+
headers,
|
|
844
|
+
onUploadProgress,
|
|
845
|
+
onProgress
|
|
846
|
+
} = props;
|
|
847
|
+
return new Promise((resolve, reject) => {
|
|
848
|
+
const xhr = new XMLHttpRequest();
|
|
849
|
+
xhr.open(method, url);
|
|
850
|
+
const out = output ?? "json";
|
|
851
|
+
if (out === "blob") {
|
|
852
|
+
xhr.responseType = "blob";
|
|
853
|
+
} else if (out === "arrayBuffer") {
|
|
854
|
+
xhr.responseType = "arraybuffer";
|
|
855
|
+
} else {
|
|
856
|
+
xhr.responseType = "text";
|
|
857
|
+
}
|
|
858
|
+
if (headers) {
|
|
859
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
860
|
+
if (key.toLowerCase() === "content-type" && body instanceof FormData) {
|
|
861
|
+
continue;
|
|
862
|
+
}
|
|
863
|
+
xhr.setRequestHeader(key, value);
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
if (onUploadProgress) {
|
|
867
|
+
xhr.upload.onprogress = (e) => {
|
|
868
|
+
if (e.lengthComputable) {
|
|
869
|
+
onUploadProgress({
|
|
870
|
+
percent: Math.round(e.loaded / e.total * 100),
|
|
871
|
+
loaded: e.loaded,
|
|
872
|
+
total: e.total
|
|
873
|
+
});
|
|
874
|
+
}
|
|
875
|
+
};
|
|
876
|
+
}
|
|
877
|
+
if (onProgress) {
|
|
878
|
+
xhr.onprogress = (e) => {
|
|
879
|
+
if (e.lengthComputable) {
|
|
880
|
+
onProgress({
|
|
881
|
+
loaded: e.loaded,
|
|
882
|
+
total: e.total,
|
|
883
|
+
percent: Math.round(e.loaded / e.total * 100)
|
|
884
|
+
});
|
|
885
|
+
}
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
if (signal) {
|
|
889
|
+
signal.addEventListener("abort", () => {
|
|
890
|
+
xhr.abort();
|
|
891
|
+
reject(new Error("Request aborted"));
|
|
892
|
+
});
|
|
893
|
+
}
|
|
894
|
+
xhr.onload = () => {
|
|
895
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
896
|
+
if (out === "blob" || out === "arrayBuffer") {
|
|
897
|
+
resolve(xhr.response);
|
|
898
|
+
} else if (out === "text") {
|
|
899
|
+
resolve(xhr.responseText);
|
|
900
|
+
} else {
|
|
901
|
+
const text = xhr.responseText;
|
|
902
|
+
resolve(text ? JSON.parse(text) : null);
|
|
903
|
+
}
|
|
904
|
+
} else {
|
|
905
|
+
reject(new RestError({ status: xhr.status, body: xhr.responseText }));
|
|
906
|
+
}
|
|
907
|
+
};
|
|
908
|
+
xhr.onerror = () => reject(new Error("Network request failed"));
|
|
909
|
+
xhr.ontimeout = () => reject(new Error("Request timed out"));
|
|
910
|
+
xhr.send(body);
|
|
911
|
+
});
|
|
912
|
+
};
|
|
835
913
|
|
|
836
914
|
// src/shared/api/domain.ts
|
|
837
915
|
var config = { baseUrl: "" };
|
|
@@ -843,6 +921,8 @@ var configHeaders = async () => {
|
|
|
843
921
|
return typeof config.headers === "function" ? await config.headers() : config.headers;
|
|
844
922
|
};
|
|
845
923
|
var request = async (method, path, options, defaultInput) => {
|
|
924
|
+
const start = Date.now();
|
|
925
|
+
config.onRequest?.(method, path);
|
|
846
926
|
const opts = options;
|
|
847
927
|
const url = prepareUrl(path, {
|
|
848
928
|
baseUrl: config.baseUrl,
|
|
@@ -855,26 +935,64 @@ var request = async (method, path, options, defaultInput) => {
|
|
|
855
935
|
const isExternal = isAbsolute(path);
|
|
856
936
|
const defaults = headersOption !== false && !isExternal ? await configHeaders() : {};
|
|
857
937
|
const headers = await prepareHeaders({
|
|
858
|
-
defaults,
|
|
859
938
|
headersOption,
|
|
860
|
-
|
|
861
|
-
|
|
939
|
+
body: rawBody,
|
|
940
|
+
defaults,
|
|
941
|
+
input
|
|
862
942
|
});
|
|
863
943
|
const body = prepareBody(rawBody, input);
|
|
864
|
-
const
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
944
|
+
const onUploadProgress = opts?.onUploadProgress;
|
|
945
|
+
if (onUploadProgress && body !== void 0) {
|
|
946
|
+
try {
|
|
947
|
+
const data2 = await requestWithXhr({
|
|
948
|
+
headers: headers ?? void 0,
|
|
949
|
+
onProgress: opts?.onProgress,
|
|
950
|
+
output: opts?.output,
|
|
951
|
+
signal: opts?.signal,
|
|
952
|
+
onUploadProgress,
|
|
953
|
+
method,
|
|
954
|
+
body,
|
|
955
|
+
url
|
|
956
|
+
});
|
|
957
|
+
const elapsed2 = Date.now() - start;
|
|
958
|
+
config.onResponse?.(method, path, elapsed2);
|
|
959
|
+
return opts?.onSuccess ? opts.onSuccess(data2) : data2;
|
|
960
|
+
} catch (error3) {
|
|
961
|
+
const elapsed2 = Date.now() - start;
|
|
962
|
+
const err = error3 instanceof Error ? error3 : new Error(String(error3));
|
|
963
|
+
config.onError?.(method, path, err, elapsed2);
|
|
964
|
+
if (opts?.onError && error3 instanceof RestError) {
|
|
965
|
+
return opts.onError(error3);
|
|
966
|
+
}
|
|
967
|
+
throw error3;
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
let response;
|
|
971
|
+
try {
|
|
972
|
+
response = await fetch(url, {
|
|
973
|
+
method,
|
|
974
|
+
...headers && { headers },
|
|
975
|
+
...body !== void 0 && { body },
|
|
976
|
+
...opts?.signal && { signal: opts.signal }
|
|
977
|
+
});
|
|
978
|
+
} catch (networkError) {
|
|
979
|
+
const elapsed2 = Date.now() - start;
|
|
980
|
+
const error3 = networkError instanceof Error ? networkError : new Error(String(networkError));
|
|
981
|
+
config.onError?.(method, path, error3, elapsed2);
|
|
982
|
+
throw error3;
|
|
983
|
+
}
|
|
870
984
|
if (!response.ok) {
|
|
985
|
+
const elapsed2 = Date.now() - start;
|
|
871
986
|
const error3 = new RestError({
|
|
872
987
|
status: response.status,
|
|
873
988
|
body: await response.text()
|
|
874
989
|
});
|
|
990
|
+
config.onError?.(method, path, error3, elapsed2);
|
|
875
991
|
if (opts?.onError) return opts.onError(error3);
|
|
876
992
|
throw error3;
|
|
877
993
|
}
|
|
994
|
+
const elapsed = Date.now() - start;
|
|
995
|
+
config.onResponse?.(method, path, elapsed);
|
|
878
996
|
const data = await parseResponse(
|
|
879
997
|
response,
|
|
880
998
|
opts?.output,
|
package/dist/server/index.cjs
CHANGED
|
@@ -683,7 +683,8 @@ var isDev = () => {
|
|
|
683
683
|
if (typeof process !== "undefined" && process.env?.NODE_ENV) {
|
|
684
684
|
return process.env.NODE_ENV !== "production";
|
|
685
685
|
}
|
|
686
|
-
if (typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)) }) !== "undefined" &&
|
|
686
|
+
if (typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)) }) !== "undefined" && // @ts-expect-error - import.meta.env is Vite-specific
|
|
687
|
+
undefined?.DEV !== void 0) {
|
|
687
688
|
return undefined.DEV;
|
|
688
689
|
}
|
|
689
690
|
return false;
|
|
@@ -851,6 +852,83 @@ var parseResponse = async (response2, output, onProgress) => {
|
|
|
851
852
|
const text = await response2.text();
|
|
852
853
|
return text ? JSON.parse(text) : null;
|
|
853
854
|
};
|
|
855
|
+
var requestWithXhr = (props) => {
|
|
856
|
+
const {
|
|
857
|
+
url,
|
|
858
|
+
body,
|
|
859
|
+
method,
|
|
860
|
+
output,
|
|
861
|
+
signal,
|
|
862
|
+
headers,
|
|
863
|
+
onUploadProgress,
|
|
864
|
+
onProgress
|
|
865
|
+
} = props;
|
|
866
|
+
return new Promise((resolve, reject) => {
|
|
867
|
+
const xhr = new XMLHttpRequest();
|
|
868
|
+
xhr.open(method, url);
|
|
869
|
+
const out = output ?? "json";
|
|
870
|
+
if (out === "blob") {
|
|
871
|
+
xhr.responseType = "blob";
|
|
872
|
+
} else if (out === "arrayBuffer") {
|
|
873
|
+
xhr.responseType = "arraybuffer";
|
|
874
|
+
} else {
|
|
875
|
+
xhr.responseType = "text";
|
|
876
|
+
}
|
|
877
|
+
if (headers) {
|
|
878
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
879
|
+
if (key.toLowerCase() === "content-type" && body instanceof FormData) {
|
|
880
|
+
continue;
|
|
881
|
+
}
|
|
882
|
+
xhr.setRequestHeader(key, value);
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
if (onUploadProgress) {
|
|
886
|
+
xhr.upload.onprogress = (e) => {
|
|
887
|
+
if (e.lengthComputable) {
|
|
888
|
+
onUploadProgress({
|
|
889
|
+
percent: Math.round(e.loaded / e.total * 100),
|
|
890
|
+
loaded: e.loaded,
|
|
891
|
+
total: e.total
|
|
892
|
+
});
|
|
893
|
+
}
|
|
894
|
+
};
|
|
895
|
+
}
|
|
896
|
+
if (onProgress) {
|
|
897
|
+
xhr.onprogress = (e) => {
|
|
898
|
+
if (e.lengthComputable) {
|
|
899
|
+
onProgress({
|
|
900
|
+
loaded: e.loaded,
|
|
901
|
+
total: e.total,
|
|
902
|
+
percent: Math.round(e.loaded / e.total * 100)
|
|
903
|
+
});
|
|
904
|
+
}
|
|
905
|
+
};
|
|
906
|
+
}
|
|
907
|
+
if (signal) {
|
|
908
|
+
signal.addEventListener("abort", () => {
|
|
909
|
+
xhr.abort();
|
|
910
|
+
reject(new Error("Request aborted"));
|
|
911
|
+
});
|
|
912
|
+
}
|
|
913
|
+
xhr.onload = () => {
|
|
914
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
915
|
+
if (out === "blob" || out === "arrayBuffer") {
|
|
916
|
+
resolve(xhr.response);
|
|
917
|
+
} else if (out === "text") {
|
|
918
|
+
resolve(xhr.responseText);
|
|
919
|
+
} else {
|
|
920
|
+
const text = xhr.responseText;
|
|
921
|
+
resolve(text ? JSON.parse(text) : null);
|
|
922
|
+
}
|
|
923
|
+
} else {
|
|
924
|
+
reject(new RestError({ status: xhr.status, body: xhr.responseText }));
|
|
925
|
+
}
|
|
926
|
+
};
|
|
927
|
+
xhr.onerror = () => reject(new Error("Network request failed"));
|
|
928
|
+
xhr.ontimeout = () => reject(new Error("Request timed out"));
|
|
929
|
+
xhr.send(body);
|
|
930
|
+
});
|
|
931
|
+
};
|
|
854
932
|
|
|
855
933
|
// src/shared/api/domain.ts
|
|
856
934
|
var config = { baseUrl: "" };
|
|
@@ -862,6 +940,8 @@ var configHeaders = async () => {
|
|
|
862
940
|
return typeof config.headers === "function" ? await config.headers() : config.headers;
|
|
863
941
|
};
|
|
864
942
|
var request = async (method, path, options, defaultInput) => {
|
|
943
|
+
const start = Date.now();
|
|
944
|
+
config.onRequest?.(method, path);
|
|
865
945
|
const opts = options;
|
|
866
946
|
const url = prepareUrl(path, {
|
|
867
947
|
baseUrl: config.baseUrl,
|
|
@@ -874,26 +954,64 @@ var request = async (method, path, options, defaultInput) => {
|
|
|
874
954
|
const isExternal = isAbsolute(path);
|
|
875
955
|
const defaults = headersOption !== false && !isExternal ? await configHeaders() : {};
|
|
876
956
|
const headers = await prepareHeaders({
|
|
877
|
-
defaults,
|
|
878
957
|
headersOption,
|
|
879
|
-
|
|
880
|
-
|
|
958
|
+
body: rawBody,
|
|
959
|
+
defaults,
|
|
960
|
+
input
|
|
881
961
|
});
|
|
882
962
|
const body = prepareBody(rawBody, input);
|
|
883
|
-
const
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
963
|
+
const onUploadProgress = opts?.onUploadProgress;
|
|
964
|
+
if (onUploadProgress && body !== void 0) {
|
|
965
|
+
try {
|
|
966
|
+
const data2 = await requestWithXhr({
|
|
967
|
+
headers: headers ?? void 0,
|
|
968
|
+
onProgress: opts?.onProgress,
|
|
969
|
+
output: opts?.output,
|
|
970
|
+
signal: opts?.signal,
|
|
971
|
+
onUploadProgress,
|
|
972
|
+
method,
|
|
973
|
+
body,
|
|
974
|
+
url
|
|
975
|
+
});
|
|
976
|
+
const elapsed2 = Date.now() - start;
|
|
977
|
+
config.onResponse?.(method, path, elapsed2);
|
|
978
|
+
return opts?.onSuccess ? opts.onSuccess(data2) : data2;
|
|
979
|
+
} catch (error2) {
|
|
980
|
+
const elapsed2 = Date.now() - start;
|
|
981
|
+
const err = error2 instanceof Error ? error2 : new Error(String(error2));
|
|
982
|
+
config.onError?.(method, path, err, elapsed2);
|
|
983
|
+
if (opts?.onError && error2 instanceof RestError) {
|
|
984
|
+
return opts.onError(error2);
|
|
985
|
+
}
|
|
986
|
+
throw error2;
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
let response2;
|
|
990
|
+
try {
|
|
991
|
+
response2 = await fetch(url, {
|
|
992
|
+
method,
|
|
993
|
+
...headers && { headers },
|
|
994
|
+
...body !== void 0 && { body },
|
|
995
|
+
...opts?.signal && { signal: opts.signal }
|
|
996
|
+
});
|
|
997
|
+
} catch (networkError) {
|
|
998
|
+
const elapsed2 = Date.now() - start;
|
|
999
|
+
const error2 = networkError instanceof Error ? networkError : new Error(String(networkError));
|
|
1000
|
+
config.onError?.(method, path, error2, elapsed2);
|
|
1001
|
+
throw error2;
|
|
1002
|
+
}
|
|
889
1003
|
if (!response2.ok) {
|
|
1004
|
+
const elapsed2 = Date.now() - start;
|
|
890
1005
|
const error2 = new RestError({
|
|
891
1006
|
status: response2.status,
|
|
892
1007
|
body: await response2.text()
|
|
893
1008
|
});
|
|
1009
|
+
config.onError?.(method, path, error2, elapsed2);
|
|
894
1010
|
if (opts?.onError) return opts.onError(error2);
|
|
895
1011
|
throw error2;
|
|
896
1012
|
}
|
|
1013
|
+
const elapsed = Date.now() - start;
|
|
1014
|
+
config.onResponse?.(method, path, elapsed);
|
|
897
1015
|
const data = await parseResponse(
|
|
898
1016
|
response2,
|
|
899
1017
|
opts?.output,
|
package/dist/server/index.js
CHANGED
|
@@ -675,7 +675,8 @@ var isDev = () => {
|
|
|
675
675
|
if (typeof process !== "undefined" && process.env?.NODE_ENV) {
|
|
676
676
|
return process.env.NODE_ENV !== "production";
|
|
677
677
|
}
|
|
678
|
-
if (typeof import.meta !== "undefined" && import.meta.env
|
|
678
|
+
if (typeof import.meta !== "undefined" && // @ts-expect-error - import.meta.env is Vite-specific
|
|
679
|
+
import.meta.env?.DEV !== void 0) {
|
|
679
680
|
return import.meta.env.DEV;
|
|
680
681
|
}
|
|
681
682
|
return false;
|
|
@@ -843,6 +844,83 @@ var parseResponse = async (response2, output, onProgress) => {
|
|
|
843
844
|
const text = await response2.text();
|
|
844
845
|
return text ? JSON.parse(text) : null;
|
|
845
846
|
};
|
|
847
|
+
var requestWithXhr = (props) => {
|
|
848
|
+
const {
|
|
849
|
+
url,
|
|
850
|
+
body,
|
|
851
|
+
method,
|
|
852
|
+
output,
|
|
853
|
+
signal,
|
|
854
|
+
headers,
|
|
855
|
+
onUploadProgress,
|
|
856
|
+
onProgress
|
|
857
|
+
} = props;
|
|
858
|
+
return new Promise((resolve, reject) => {
|
|
859
|
+
const xhr = new XMLHttpRequest();
|
|
860
|
+
xhr.open(method, url);
|
|
861
|
+
const out = output ?? "json";
|
|
862
|
+
if (out === "blob") {
|
|
863
|
+
xhr.responseType = "blob";
|
|
864
|
+
} else if (out === "arrayBuffer") {
|
|
865
|
+
xhr.responseType = "arraybuffer";
|
|
866
|
+
} else {
|
|
867
|
+
xhr.responseType = "text";
|
|
868
|
+
}
|
|
869
|
+
if (headers) {
|
|
870
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
871
|
+
if (key.toLowerCase() === "content-type" && body instanceof FormData) {
|
|
872
|
+
continue;
|
|
873
|
+
}
|
|
874
|
+
xhr.setRequestHeader(key, value);
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
if (onUploadProgress) {
|
|
878
|
+
xhr.upload.onprogress = (e) => {
|
|
879
|
+
if (e.lengthComputable) {
|
|
880
|
+
onUploadProgress({
|
|
881
|
+
percent: Math.round(e.loaded / e.total * 100),
|
|
882
|
+
loaded: e.loaded,
|
|
883
|
+
total: e.total
|
|
884
|
+
});
|
|
885
|
+
}
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
if (onProgress) {
|
|
889
|
+
xhr.onprogress = (e) => {
|
|
890
|
+
if (e.lengthComputable) {
|
|
891
|
+
onProgress({
|
|
892
|
+
loaded: e.loaded,
|
|
893
|
+
total: e.total,
|
|
894
|
+
percent: Math.round(e.loaded / e.total * 100)
|
|
895
|
+
});
|
|
896
|
+
}
|
|
897
|
+
};
|
|
898
|
+
}
|
|
899
|
+
if (signal) {
|
|
900
|
+
signal.addEventListener("abort", () => {
|
|
901
|
+
xhr.abort();
|
|
902
|
+
reject(new Error("Request aborted"));
|
|
903
|
+
});
|
|
904
|
+
}
|
|
905
|
+
xhr.onload = () => {
|
|
906
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
907
|
+
if (out === "blob" || out === "arrayBuffer") {
|
|
908
|
+
resolve(xhr.response);
|
|
909
|
+
} else if (out === "text") {
|
|
910
|
+
resolve(xhr.responseText);
|
|
911
|
+
} else {
|
|
912
|
+
const text = xhr.responseText;
|
|
913
|
+
resolve(text ? JSON.parse(text) : null);
|
|
914
|
+
}
|
|
915
|
+
} else {
|
|
916
|
+
reject(new RestError({ status: xhr.status, body: xhr.responseText }));
|
|
917
|
+
}
|
|
918
|
+
};
|
|
919
|
+
xhr.onerror = () => reject(new Error("Network request failed"));
|
|
920
|
+
xhr.ontimeout = () => reject(new Error("Request timed out"));
|
|
921
|
+
xhr.send(body);
|
|
922
|
+
});
|
|
923
|
+
};
|
|
846
924
|
|
|
847
925
|
// src/shared/api/domain.ts
|
|
848
926
|
var config = { baseUrl: "" };
|
|
@@ -854,6 +932,8 @@ var configHeaders = async () => {
|
|
|
854
932
|
return typeof config.headers === "function" ? await config.headers() : config.headers;
|
|
855
933
|
};
|
|
856
934
|
var request = async (method, path, options, defaultInput) => {
|
|
935
|
+
const start = Date.now();
|
|
936
|
+
config.onRequest?.(method, path);
|
|
857
937
|
const opts = options;
|
|
858
938
|
const url = prepareUrl(path, {
|
|
859
939
|
baseUrl: config.baseUrl,
|
|
@@ -866,26 +946,64 @@ var request = async (method, path, options, defaultInput) => {
|
|
|
866
946
|
const isExternal = isAbsolute(path);
|
|
867
947
|
const defaults = headersOption !== false && !isExternal ? await configHeaders() : {};
|
|
868
948
|
const headers = await prepareHeaders({
|
|
869
|
-
defaults,
|
|
870
949
|
headersOption,
|
|
871
|
-
|
|
872
|
-
|
|
950
|
+
body: rawBody,
|
|
951
|
+
defaults,
|
|
952
|
+
input
|
|
873
953
|
});
|
|
874
954
|
const body = prepareBody(rawBody, input);
|
|
875
|
-
const
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
955
|
+
const onUploadProgress = opts?.onUploadProgress;
|
|
956
|
+
if (onUploadProgress && body !== void 0) {
|
|
957
|
+
try {
|
|
958
|
+
const data2 = await requestWithXhr({
|
|
959
|
+
headers: headers ?? void 0,
|
|
960
|
+
onProgress: opts?.onProgress,
|
|
961
|
+
output: opts?.output,
|
|
962
|
+
signal: opts?.signal,
|
|
963
|
+
onUploadProgress,
|
|
964
|
+
method,
|
|
965
|
+
body,
|
|
966
|
+
url
|
|
967
|
+
});
|
|
968
|
+
const elapsed2 = Date.now() - start;
|
|
969
|
+
config.onResponse?.(method, path, elapsed2);
|
|
970
|
+
return opts?.onSuccess ? opts.onSuccess(data2) : data2;
|
|
971
|
+
} catch (error2) {
|
|
972
|
+
const elapsed2 = Date.now() - start;
|
|
973
|
+
const err = error2 instanceof Error ? error2 : new Error(String(error2));
|
|
974
|
+
config.onError?.(method, path, err, elapsed2);
|
|
975
|
+
if (opts?.onError && error2 instanceof RestError) {
|
|
976
|
+
return opts.onError(error2);
|
|
977
|
+
}
|
|
978
|
+
throw error2;
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
let response2;
|
|
982
|
+
try {
|
|
983
|
+
response2 = await fetch(url, {
|
|
984
|
+
method,
|
|
985
|
+
...headers && { headers },
|
|
986
|
+
...body !== void 0 && { body },
|
|
987
|
+
...opts?.signal && { signal: opts.signal }
|
|
988
|
+
});
|
|
989
|
+
} catch (networkError) {
|
|
990
|
+
const elapsed2 = Date.now() - start;
|
|
991
|
+
const error2 = networkError instanceof Error ? networkError : new Error(String(networkError));
|
|
992
|
+
config.onError?.(method, path, error2, elapsed2);
|
|
993
|
+
throw error2;
|
|
994
|
+
}
|
|
881
995
|
if (!response2.ok) {
|
|
996
|
+
const elapsed2 = Date.now() - start;
|
|
882
997
|
const error2 = new RestError({
|
|
883
998
|
status: response2.status,
|
|
884
999
|
body: await response2.text()
|
|
885
1000
|
});
|
|
1001
|
+
config.onError?.(method, path, error2, elapsed2);
|
|
886
1002
|
if (opts?.onError) return opts.onError(error2);
|
|
887
1003
|
throw error2;
|
|
888
1004
|
}
|
|
1005
|
+
const elapsed = Date.now() - start;
|
|
1006
|
+
config.onResponse?.(method, path, elapsed);
|
|
889
1007
|
const data = await parseResponse(
|
|
890
1008
|
response2,
|
|
891
1009
|
opts?.output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/shared/api/domain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEf,MAAM,EACN,aAAa,EAGb,OAAO,EAEP,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACT,MAAM,SAAS,CAAC;AASjB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,SAElC,CAAC;
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/shared/api/domain.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/api/fns.d.ts
CHANGED
|
@@ -180,4 +180,25 @@ export declare const prepareBody: (body: unknown, input: _t.Input | undefined) =
|
|
|
180
180
|
*/
|
|
181
181
|
export declare function parseSSE<T = unknown>(stream: ReadableStream<Uint8Array>): AsyncGenerator<_t.SSEEvent<T>, void, unknown>;
|
|
182
182
|
export declare const parseResponse: <Res, O extends _t.Output | undefined = undefined>(response: Response, output?: O, onProgress?: (progress: _t.Progress) => void) => Promise<_t.DataForOutput<Res, O>>;
|
|
183
|
+
/**
|
|
184
|
+
* Execute an HTTP request using XMLHttpRequest for upload progress tracking.
|
|
185
|
+
*
|
|
186
|
+
* This is used internally when `onUploadProgress` is provided. XHR is the only
|
|
187
|
+
* browser API that supports tracking upload progress via `xhr.upload.onprogress`.
|
|
188
|
+
*
|
|
189
|
+
* Note: This function does NOT support streaming outputs (`sse`, `stream`) because
|
|
190
|
+
* XHR buffers the entire response. The type system prevents this combination.
|
|
191
|
+
*
|
|
192
|
+
* @throws {RestError} When the response status is not 2xx.
|
|
193
|
+
*/
|
|
194
|
+
export declare const requestWithXhr: <Res, O extends _t.Output | undefined = undefined>(props: {
|
|
195
|
+
onUploadProgress?: (progress: _t.Progress) => void;
|
|
196
|
+
onProgress?: (progress: _t.Progress) => void;
|
|
197
|
+
headers?: _t.HeadersObject;
|
|
198
|
+
signal?: AbortSignal;
|
|
199
|
+
method: _t.Method;
|
|
200
|
+
body?: BodyInit;
|
|
201
|
+
url: string;
|
|
202
|
+
output?: O;
|
|
203
|
+
}) => Promise<_t.DataForOutput<Res, O>>;
|
|
183
204
|
//# sourceMappingURL=fns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../src/shared/api/fns.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fns.d.ts","sourceRoot":"","sources":["../../../src/shared/api/fns.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AA2B9B;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,YAA4B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,OAAO;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAA;CAAE,KAC7C,MA+BF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,cAAc,GAAU,OAAO;IAC1C,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC;IAC3B,aAAa,EACT,IAAI,GACJ,KAAK,GACL,EAAE,CAAC,aAAa,GAChB,EAAE,CAAC,gBAAgB,GACnB,SAAS,CAAC;IACd,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf,KAAG,OAAO,CAAC,EAAE,CAAC,aAAa,GAAG,SAAS,CAkCvC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,OAAO,EACb,OAAO,EAAE,CAAC,KAAK,GAAG,SAAS,KAC1B,QAAQ,GAAG,SAuBb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAuB,QAAQ,CAAC,CAAC,GAAG,OAAO,EACzC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAqF/C;AAED,eAAO,MAAM,aAAa,GACxB,GAAG,EACH,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,EAE3C,UAAU,QAAQ,EAClB,SAAS,CAAC,EACV,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,KAC3C,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAyDlC,CAAC;AAMF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GACzB,GAAG,EACH,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,EAC3C,OAAO;IACP,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC;IACnD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,KAAG,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAiGnC,CAAC"}
|
|
@@ -10,13 +10,45 @@ export declare class RestError extends Error {
|
|
|
10
10
|
export type HeadersObject = Record<string, string>;
|
|
11
11
|
export type HeadersGetter = () => HeadersObject | Promise<HeadersObject>;
|
|
12
12
|
export type HeadersTransform = (defaults: HeadersObject) => HeadersObject | Promise<HeadersObject>;
|
|
13
|
+
/**
|
|
14
|
+
* Interceptor hooks for observability (telemetry, logging, debugging).
|
|
15
|
+
*
|
|
16
|
+
* These hooks are called during the request lifecycle but do NOT affect
|
|
17
|
+
* the request/response. Use them for breadcrumbs, metrics, or logging.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* Api.configure({
|
|
22
|
+
* baseUrl: "https://api.example.com",
|
|
23
|
+
* onRequest: (method, path) => {
|
|
24
|
+
* Telemetry.addBreadcrumb({ type: "http", message: `${method} ${path}` });
|
|
25
|
+
* },
|
|
26
|
+
* onResponse: (method, path, elapsed) => {
|
|
27
|
+
* Telemetry.addBreadcrumb({ type: "http", message: `${method} ${path} OK (${elapsed}ms)` });
|
|
28
|
+
* },
|
|
29
|
+
* onError: (method, path, error, elapsed) => {
|
|
30
|
+
* Telemetry.addBreadcrumb({ type: "http", message: `${method} ${path} FAIL`, data: { error } });
|
|
31
|
+
* },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export type RequestHooks = {
|
|
36
|
+
/** Called before each request starts */
|
|
37
|
+
onRequest?: (method: Method, path: string) => void;
|
|
38
|
+
/** Called after successful response (before parsing) */
|
|
39
|
+
onResponse?: (method: Method, path: string, elapsed: number) => void;
|
|
40
|
+
/** Called when request fails (network error or non-ok response) */
|
|
41
|
+
onError?: (method: Method, path: string, error: Error, elapsed: number) => void;
|
|
42
|
+
};
|
|
13
43
|
export type Config = {
|
|
14
44
|
baseUrl: string;
|
|
15
45
|
headers?: HeadersObject | HeadersGetter;
|
|
16
|
-
};
|
|
46
|
+
} & RequestHooks;
|
|
17
47
|
export type Params = Record<string, string | number | boolean | undefined | null>;
|
|
18
48
|
export type Input = "json" | "form" | "text";
|
|
19
49
|
export type Output = "json" | "text" | "blob" | "stream" | "arrayBuffer" | "sse";
|
|
50
|
+
/** Output types that require fetch's streaming capabilities (incompatible with XHR). */
|
|
51
|
+
export type StreamingOutput = "sse" | "stream";
|
|
20
52
|
/**
|
|
21
53
|
* A parsed Server-Sent Event.
|
|
22
54
|
*
|
|
@@ -132,8 +164,16 @@ export type BodyOptions<Req = unknown, Res = unknown, Return = Res, O extends Ou
|
|
|
132
164
|
params?: Params;
|
|
133
165
|
output?: O;
|
|
134
166
|
signal?: AbortSignal;
|
|
135
|
-
/** Progress callback for
|
|
167
|
+
/** Progress callback for response body downloads (not applicable to SSE/stream). */
|
|
136
168
|
onProgress?: (progress: Progress) => void;
|
|
169
|
+
/**
|
|
170
|
+
* Progress callback for request body uploads. Uses XHR internally.
|
|
171
|
+
*
|
|
172
|
+
* ⚠️ Cannot be combined with streaming outputs (`output: "sse"` or `output: "stream"`)
|
|
173
|
+
* because XHR doesn't support true streaming responses. TypeScript will error if you
|
|
174
|
+
* try to use both.
|
|
175
|
+
*/
|
|
176
|
+
onUploadProgress?: [O] extends [StreamingOutput] ? never : (progress: Progress) => void;
|
|
137
177
|
onSuccess?: (data: DataForOutput<Res, O>) => Return;
|
|
138
178
|
onError?: (error: RestError) => Return;
|
|
139
179
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/api/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAMjE,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;gBAED,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAMpD;AAMD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACzE,MAAM,MAAM,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,aAAa,KACpB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5C,MAAM,MAAM,MAAM,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;CACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/api/types.ts"],"names":[],"mappings":"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"}
|