@jurijzahn8019/aws-sdk-paginate-list
v1.0.108
Published
Provides a function to paginate over a list function on aws-sdk
Downloads
358
Maintainers
Readme
aws-sdk-paginate-list
Synopsis
A function which wraps execution of pagination on aws-sdk results which
paginate their results. For example SecretsManager.listSecrets
Motivation
- implementing a pagiantion for every aws-sdk function is a pain.
- implementing a generic function is easy, but could get messy.
This package provides the generic wrapper function and also typings to infer the results and input args for the used pagination function in order to simplify the usage of those.
Features
- No Dependencies
- Typings
- Type inference on the usage
Usage
If the conditionally types are already setup fo the service/function. The usage is very easy:
import { KMS } from "aws-sdk";
import { paginate } from "@jurijzahn8019/aws-sdk-paginate-list";
const kms = new KMS();
const { Keys } = await paginate(kms, "listKeys");
But even if there are no mappings for certain types (PRs are welcome 😀) You can supply own config and metadata
import { SNS } from "aws-sdk";
import { paginate } from "@jurijzahn8019/aws-sdk-paginate-list";
const svc = new SNS();
const { Topics } = await paginate<SNS, "listTopics", SNS.ListTopicsInput>(
svc,
"listTopics"
);
The typescript inference will help you to pass parameter in a right way
Works Great with mocks
import { paginate } from "@jurijzahn8019/aws-sdk-paginate-list";
export async function getSecrets(only?: string[]): Promise<SecretsManager.SecretListType> {
const smn = new SecretsManager();
const { SecretList } = await paginate(smn, "listSecrets"));
return SecretList;
}
import { on } from "@jurijzahn8019/aws-promise-jest-mock";
import { SecretsManager } from "aws-sdk";
jest.mock("aws-sdk");
const listSecrets = on(SecretsManager)
.mock("listSecrets")
.resolve({
SecretList: [
{ Name: "one", Tags: [{ Key: "foo", Value: "bar" }] },
{ Name: "two" },
],
});
it("Should list secrets from secretsmanager", async () => {
const res = await getSecrets();
expect(res).toMatchSnapshot();
expect(listSecrets.mock).toHaveBeenCalledTimes(1);
});
Contribution
if you miss a function/service for better type inference, feel free to add it to Mappings and PR it back
Test
execute tests:
npm run test
Changelog
See change history here Changelog.