@crosspost/sdk
Advanced tools
Comparing version
@@ -331,20 +331,21 @@ // src/core/request.ts | ||
if (!query) return {}; | ||
const queryObj = query; | ||
const result = {}; | ||
Object.keys(queryObj).forEach((key) => { | ||
if (key !== "filter") { | ||
result[key] = queryObj[key]; | ||
if (query.limit !== void 0) { | ||
result.limit = query.limit; | ||
} | ||
if (query.offset !== void 0) { | ||
result.offset = query.offset; | ||
} | ||
if (query.filter) { | ||
const filterParams = query.filter; | ||
for (const filterKey in filterParams) { | ||
if (Object.prototype.hasOwnProperty.call(filterParams, filterKey) && filterParams[filterKey] !== void 0) { | ||
const value = filterParams[filterKey]; | ||
if (Array.isArray(value)) { | ||
result[`filter[${filterKey}]`] = value.join(","); | ||
} else { | ||
result[`filter[${filterKey}]`] = String(value); | ||
} | ||
} | ||
} | ||
}); | ||
if (queryObj.filter) { | ||
const filter = queryObj.filter; | ||
if (filter.platforms && Array.isArray(filter.platforms)) { | ||
result.platforms = filter.platforms.join(","); | ||
} | ||
if (filter.types && Array.isArray(filter.types)) { | ||
result.types = filter.types.join(","); | ||
} | ||
if (filter.timeframe) { | ||
result.timeframe = filter.timeframe; | ||
} | ||
} | ||
@@ -351,0 +352,0 @@ return result; |
{ | ||
"name": "@crosspost/sdk", | ||
"version": "0.2.8", | ||
"version": "0.2.9", | ||
"description": "SDK for interacting with the Crosspost API", | ||
@@ -5,0 +5,0 @@ "type": "module", |
@@ -13,36 +13,40 @@ import type { | ||
/** | ||
* Creates a modified query object with filter properties flattened | ||
* Creates a modified query object with filter properties | ||
* @param query The original query object | ||
* @returns A new query object with filter properties flattened | ||
* @returns A new query object with filter properties formatted as filter[key]=value. | ||
*/ | ||
function createFilterQuery<T>(query?: T): Record<string, unknown> { | ||
function createFilterQuery< | ||
T extends { filter?: Record<string, any>; limit?: number; offset?: number }, | ||
>( | ||
query?: T, | ||
): Record<string, string | number | boolean> { | ||
if (!query) return {}; | ||
const queryObj = query as Record<string, any>; | ||
const result: Record<string, unknown> = {}; | ||
const result: Record<string, string | number | boolean> = {}; | ||
// Copy non-filter properties | ||
Object.keys(queryObj).forEach((key) => { | ||
if (key !== 'filter') { | ||
result[key] = queryObj[key]; | ||
} | ||
}); | ||
if (query.limit !== undefined) { | ||
result.limit = query.limit; | ||
} | ||
if (query.offset !== undefined) { | ||
result.offset = query.offset; | ||
} | ||
// Extract and flatten filter properties if they exist | ||
if (queryObj.filter) { | ||
const filter = queryObj.filter; | ||
if (filter.platforms && Array.isArray(filter.platforms)) { | ||
result.platforms = filter.platforms.join(','); | ||
// e.g., query.filter = { timeframe: 'month', platforms: ['twitter'] } | ||
// becomes result['filter[timeframe]'] = 'month', result['filter[platforms]'] = 'twitter' | ||
if (query.filter) { | ||
const filterParams = query.filter; | ||
for (const filterKey in filterParams) { | ||
if ( | ||
Object.prototype.hasOwnProperty.call(filterParams, filterKey) && | ||
filterParams[filterKey] !== undefined | ||
) { | ||
const value = filterParams[filterKey]; | ||
if (Array.isArray(value)) { | ||
result[`filter[${filterKey}]`] = value.join(','); | ||
} else { | ||
result[`filter[${filterKey}]`] = String(value); | ||
} | ||
} | ||
} | ||
if (filter.types && Array.isArray(filter.types)) { | ||
result.types = filter.types.join(','); | ||
} | ||
if (filter.timeframe) { | ||
result.timeframe = filter.timeframe; | ||
} | ||
} | ||
return result; | ||
@@ -49,0 +53,0 @@ } |
Sorry, the diff of this file is not supported yet
127543
0.38%3281
0.31%