Skip to content

Commit a2024f7

Browse files
committed
feat: add encode param and encodeQueryParams method to basequery
1 parent 47f1bad commit a2024f7

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

src/lib/base-query.ts

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,17 @@ export class BaseQuery extends Pagination {
201201
* const result = await stack.asset(asset_uid).fetch();
202202
*/
203203

204-
async find<T>(): Promise<FindResponse<T>> {
204+
async find<T>(encode: boolean = false): Promise<FindResponse<T>> {
205205
let requestParams: { [key: string]: any } = this._queryParams;
206206

207207
if (Object.keys(this._parameters).length > 0) {
208-
requestParams = { ...this._queryParams, query: { ...this._parameters } };
208+
let queryParams = { ...this._parameters };
209+
210+
if (encode) {
211+
queryParams = this.encodeQueryParams(queryParams);
212+
}
213+
214+
requestParams = { ...this._queryParams, query: queryParams };
209215
}
210216

211217
const getRequestOptions: any = { params: requestParams };
@@ -220,4 +226,29 @@ export class BaseQuery extends Pagination {
220226

221227
return response as FindResponse<T>;
222228
}
229+
230+
/**
231+
* @private
232+
* @method encodeQueryParams
233+
* @description Encodes query parameters to handle special characters
234+
* @param {params} params - Parameters to encode
235+
* @returns {params} Encoded parameters
236+
*/
237+
private encodeQueryParams(params: params): params {
238+
const encodedParams: params = {};
239+
240+
for (const [key, value] of Object.entries(params)) {
241+
if (typeof value === 'string') {
242+
encodedParams[key] = encodeURIComponent(value);
243+
} else if (typeof value === 'object' && value !== null) {
244+
// Handle nested objects recursively
245+
encodedParams[key] = this.encodeQueryParams(value as params);
246+
} else {
247+
// Keep non-string values as is (numbers, booleans, etc.)
248+
encodedParams[key] = value;
249+
}
250+
}
251+
252+
return encodedParams;
253+
}
223254
}

0 commit comments

Comments
 (0)