refactor(document): extract file route builder and normalize query composition
This commit is contained in:
@@ -126,6 +126,33 @@ const loadServiceModule = (fileName, injected = {}) => {
|
||||
});
|
||||
};
|
||||
|
||||
const defaultBuildFileQuery = (pathValue, params = {}, options = {}) => {
|
||||
const { encode = false } = options;
|
||||
const entries = Object.entries(params).filter(([, value]) => {
|
||||
return value !== undefined && value !== null;
|
||||
});
|
||||
|
||||
if (entries.length === 0) {
|
||||
return pathValue;
|
||||
}
|
||||
|
||||
const query = entries
|
||||
.map(([key, value]) => {
|
||||
if (!encode) {
|
||||
return `${key}=${String(value)}`;
|
||||
}
|
||||
|
||||
return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;
|
||||
})
|
||||
.join("&");
|
||||
|
||||
return `${pathValue}?${query}`;
|
||||
};
|
||||
|
||||
const defaultWithBaseUrl = (baseUrl, route) => `${baseUrl}${route}`;
|
||||
const defaultAppendQuerySuffix = (route, suffix = "") =>
|
||||
`${route}${suffix}`;
|
||||
|
||||
const context = {
|
||||
module: { exports: {} },
|
||||
exports: {},
|
||||
@@ -147,6 +174,10 @@ const loadServiceModule = (fileName, injected = {}) => {
|
||||
downloadFileBlob: injected.downloadFileBlob || defaultDownloadFileBlob,
|
||||
buildHashedQueryUrl:
|
||||
injected.buildHashedQueryUrl || defaultBuildHashedQueryUrl,
|
||||
buildFileQuery: injected.buildFileQuery || defaultBuildFileQuery,
|
||||
withBaseUrl: injected.withBaseUrl || defaultWithBaseUrl,
|
||||
appendQuerySuffix:
|
||||
injected.appendQuerySuffix || defaultAppendQuerySuffix,
|
||||
...injected
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user