Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
8719e4f
#25 add query builder
easingthemes Mar 14, 2023
5dc358f
#25 add paginated query suport
easingthemes Mar 14, 2023
a8f77ed
#25 lint fixes
easingthemes Mar 14, 2023
00d4b23
#25 add default empty args
easingthemes Mar 14, 2023
da823af
#25 add jsdocs
easingthemes Mar 14, 2023
cfb682b
#25 check required params
easingthemes Mar 14, 2023
90dc9c4
#25 throw if required param missing
easingthemes Mar 14, 2023
9c22f02
#25 split large method
easingthemes Mar 14, 2023
3ea8e06
#25 fix object to args string
easingthemes Mar 14, 2023
20332d1
#25 move args update in the loop
easingthemes Mar 14, 2023
335ed17
#25 update offset
easingthemes Mar 14, 2023
aa5f2dc
#25 update pagingArgs
easingthemes Mar 14, 2023
00551b4
#25 check page size
easingthemes Mar 14, 2023
767b18a
#25 fix string as a param val
easingthemes Mar 14, 2023
ee52188
#25 fix string as a param val
easingthemes Mar 14, 2023
85f27db
#25 check page size
easingthemes Mar 14, 2023
06efd4e
#25 ok response with errors data
easingthemes Mar 14, 2023
8e5ce4a
#25 update docs
easingthemes Mar 15, 2023
71e3c49
#25 remove loop break
easingthemes Mar 15, 2023
f641ee1
#25 add possibility to loop all
easingthemes Mar 15, 2023
456c1f1
#25 update docs
easingthemes Mar 15, 2023
8352f49
#25 add unit tests
easingthemes Mar 15, 2023
da821e8
#25 add jsdocs and more examples
easingthemes Mar 15, 2023
f4a2d91
#25 rename and reorder methods
easingthemes Mar 15, 2023
83f28a2
#25 update docs
easingthemes Mar 15, 2023
e846b0a
#25 move static methods to utils
easingthemes Mar 15, 2023
79b0bea
#25 jsdocs update
easingthemes Mar 15, 2023
c414f3c
#25 add typeDefs to readme
easingthemes Mar 15, 2023
11899f9
#25 fix helper functions
easingthemes Mar 15, 2023
8beda7d
#25 typo fix
easingthemes Mar 15, 2023
7e157a2
#25 prevent empty request
easingthemes Mar 15, 2023
3d200b9
#25 simplify readme examples
easingthemes Mar 15, 2023
681b08d
feat: #25 add pageSize config
easingthemes Mar 21, 2023
eaf900e
fix: #25 update docs
easingthemes Mar 21, 2023
19e19c5
fix: #25 reorder arguments
easingthemes Mar 23, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"extends": ["@adobe/eslint-config-aio-lib-config"],
"rules": {
"jsdoc/no-undefined-types": 0,
"jsdoc/check-tag-names": [
"error",
{
Expand Down
32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,38 @@ aemHeadlessClient.runPersistedQuery('wknd/persist-query-name-with-variables', {
})()
```

#### Pagination:
```javascript
(async () => {
const model = 'article'
const fields = `{
title
_path
authorFragment {
firstName
profilePicture {
...on ImageRef {
_authorUrl
}
}
}
}`

// Loop all pages (default Cursor based)
const cursorQueryAll = await aemHeadlessClient.runPaginatedQuery(model, fields, { pageSize: 3 })
for await (let value of cursorQueryAll) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for my understanding: This pattern uses the same approach under the hood than the one using done/next().

Or, in other words: this pattern does not load everything before entering the loop, it uses lazy loading whenever there are not enough items (aka the next page) is read.

Otherwise it would be counterproductive to what we're trying to achieve with paging.

Copy link
Collaborator Author

@easingthemes easingthemes Mar 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It uses exactly the same code/approach as done/next,

const cursorQueryAll = await aemHeadlessClient.runPaginatedQuery
is not making any requests.

Requests are in for loop for each page.

console.log('cursorQueryAll', value)
}
// Manually get next page (default pageSize = 10)
const cursorQuery = await aemHeadlessClient.runPaginatedQuery(model, fields)
while (true) {
const { done, value } = await cursorQuery.next();
if (done) break
console.log('cursorQuery', value)
}
})()
```

## Authorization

If `auth` param is a string, it's treated as a Bearer token
Expand Down
Loading