diff --git a/dist/common/types.d.ts b/dist/common/types.d.ts index 20ac5b4..11a992f 100644 --- a/dist/common/types.d.ts +++ b/dist/common/types.d.ts @@ -1,8 +1,20 @@ export type TellerOptionsBase = { accessToken: string; }; +/** + * Using the latest Teller Version: 2020-10-12 + */ export type TellerOptionsPagination = TellerOptionsBase & { - cursor: string; - limit: number; + /** + * The maximum number of transactions to return in the API response. + */ + count?: number; + /** + * The transaction from where to start the page. + * The first transaction in the API response will be the one immediately before the transaction in the ledger with this id. + * + * example: txn_oiluj93igokseo0i3a005 + */ + from_id?: string; }; //# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/dist/common/types.d.ts.map b/dist/common/types.d.ts.map index a12a442..b559748 100644 --- a/dist/common/types.d.ts.map +++ b/dist/common/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAA"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"} \ No newline at end of file diff --git a/dist/modules/transaction.d.ts.map b/dist/modules/transaction.d.ts.map index 47c7b5f..0a0a70a 100644 --- a/dist/modules/transaction.d.ts.map +++ b/dist/modules/transaction.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/modules/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,UAAU;IACvD,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0BzB,GAAG,CACP,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EACpD,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,iBAAiB,CAAC;CAiB9B"} \ No newline at end of file +{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/modules/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,UAAU;IACvD,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAyBzB,GAAG,CACP,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EACpD,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,iBAAiB,CAAC;CAiB9B"} \ No newline at end of file diff --git a/dist/modules/transaction.js b/dist/modules/transaction.js index bb81479..e9c380c 100644 --- a/dist/modules/transaction.js +++ b/dist/modules/transaction.js @@ -12,12 +12,11 @@ export default class TellerTransactionModule extends ClientBase { list(accountId, options) { return __awaiter(this, void 0, void 0, function* () { var _a; - const searchParams = (options === null || options === void 0 ? void 0 : options.cursor) && typeof (options === null || options === void 0 ? void 0 : options.limit) === "number" - ? new URLSearchParams({ - from_id: options === null || options === void 0 ? void 0 : options.cursor, - count: (_a = options === null || options === void 0 ? void 0 : options.limit) === null || _a === void 0 ? void 0 : _a.toString(), - }).toString() - : null; + const params = Object.entries({ + count: (_a = options === null || options === void 0 ? void 0 : options.count) === null || _a === void 0 ? void 0 : _a.toString(), + from_id: options === null || options === void 0 ? void 0 : options.from_id, + }).filter((entry) => entry[1] != null); + const searchParams = new URLSearchParams(params); const response = yield this.axios.get(`/accounts/${accountId}/transactions?${searchParams}`, { auth: (options === null || options === void 0 ? void 0 : options.accessToken) ? { username: options.accessToken, password: "" } @@ -45,4 +44,4 @@ export default class TellerTransactionModule extends ClientBase { }); } } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy90cmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXpDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sdUJBQXdCLFNBQVEsVUFBVTtJQUN2RCxJQUFJLENBQ1IsU0FBaUIsRUFDakIsT0FBaUM7OztZQUVqQyxNQUFNLFlBQVksR0FDaEIsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxLQUFJLE9BQU8sQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxDQUFBLEtBQUssUUFBUTtnQkFDbkQsQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU07b0JBQ3hCLEtBQUssRUFBRSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLFFBQVEsRUFBRTtpQkFDbEMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDZixDQUFDLENBQUMsSUFBSSxDQUFDO1lBRVgsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDbkMsYUFBYSxTQUFTLGlCQUFpQixZQUFZLEVBQUUsRUFDckQ7Z0JBQ0UsSUFBSSxFQUFFLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVc7b0JBQ3hCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7b0JBQ2pELENBQUMsQ0FBQyxTQUFTO2dCQUNiLFlBQVksRUFBRSxNQUFNO2FBQ3JCLENBQ0YsQ0FBQztZQUVGLElBQUksT0FBTyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztLQUFBO0lBRUssR0FBRzs2REFDUCxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQXFDLEVBQ3BELE9BQWlDO1lBRWpDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ25DLGFBQWEsU0FBUyxpQkFBaUIsRUFBRSxFQUFFLEVBQzNDO2dCQUNFLElBQUksRUFBRSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXO29CQUN4QixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO29CQUNqRCxDQUFDLENBQUMsU0FBUztnQkFDYixZQUFZLEVBQUUsTUFBTTthQUNyQixDQUNGLENBQUM7WUFFRixJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7S0FBQTtDQUNGIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlcy90cmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXpDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sdUJBQXdCLFNBQVEsVUFBVTtJQUN2RCxJQUFJLENBQ1IsU0FBaUIsRUFDakIsT0FBaUM7OztZQUVqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUM1QixLQUFLLEVBQUUsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSywwQ0FBRSxRQUFRLEVBQUU7Z0JBQ2pDLE9BQU8sRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsT0FBTzthQUMxQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUE2QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBRWxFLE1BQU0sWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ25DLGFBQWEsU0FBUyxpQkFBaUIsWUFBWSxFQUFFLEVBQ3JEO2dCQUNFLElBQUksRUFBRSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxXQUFXO29CQUN4QixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO29CQUNqRCxDQUFDLENBQUMsU0FBUztnQkFDYixZQUFZLEVBQUUsTUFBTTthQUNyQixDQUNGLENBQUM7WUFFRixJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7S0FBQTtJQUVLLEdBQUc7NkRBQ1AsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFxQyxFQUNwRCxPQUFpQztZQUVqQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNuQyxhQUFhLFNBQVMsaUJBQWlCLEVBQUUsRUFBRSxFQUMzQztnQkFDRSxJQUFJLEVBQUUsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsV0FBVztvQkFDeEIsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtvQkFDakQsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsWUFBWSxFQUFFLE1BQU07YUFDckIsQ0FDRixDQUFDO1lBRUYsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUVELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO0tBQUE7Q0FDRiJ9 \ No newline at end of file diff --git a/package.json b/package.json index bc46117..aad7959 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "teller", - "version": "0.1.0", + "name": "node-teller", + "version": "0.1.5", "description": "teller.io API client for nodejs", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/common/types.ts b/src/common/types.ts index e0da02d..f52d2aa 100644 --- a/src/common/types.ts +++ b/src/common/types.ts @@ -1,8 +1,20 @@ export type TellerOptionsBase = { accessToken: string; -} +}; +/** + * Using the latest Teller Version: 2020-10-12 + */ export type TellerOptionsPagination = TellerOptionsBase & { - cursor: string; - limit: number; -} \ No newline at end of file + /** + * The maximum number of transactions to return in the API response. + */ + count?: number; + /** + * The transaction from where to start the page. + * The first transaction in the API response will be the one immediately before the transaction in the ledger with this id. + * + * example: txn_oiluj93igokseo0i3a005 + */ + from_id?: string; +}; diff --git a/src/modules/transaction.ts b/src/modules/transaction.ts index 3d6c160..9a66603 100644 --- a/src/modules/transaction.ts +++ b/src/modules/transaction.ts @@ -5,15 +5,14 @@ import type { TellerTransaction } from "../interfaces/transaction.js"; export default class TellerTransactionModule extends ClientBase { async list( accountId: string, - options?: TellerOptionsPagination, + options?: TellerOptionsPagination ): Promise { - const searchParams = - options?.cursor && typeof options?.limit === "number" - ? new URLSearchParams({ - from_id: options?.cursor, - count: options?.limit?.toString(), - }).toString() - : null; + const params = Object.entries({ + count: options?.count?.toString(), + from_id: options?.from_id, + }).filter((entry): entry is [string, string] => entry[1] != null); + + const searchParams = new URLSearchParams(params); const response = await this.axios.get( `/accounts/${accountId}/transactions?${searchParams}`, @@ -22,7 +21,7 @@ export default class TellerTransactionModule extends ClientBase { ? { username: options.accessToken, password: "" } : undefined, responseType: "json", - }, + } ); if (typeof response.data === "string") { @@ -34,7 +33,7 @@ export default class TellerTransactionModule extends ClientBase { async get( { accountId, id }: { id: string; accountId: string }, - options?: TellerOptionsPagination, + options?: TellerOptionsPagination ): Promise { const response = await this.axios.get( `/accounts/${accountId}/transactions/${id}`, @@ -43,7 +42,7 @@ export default class TellerTransactionModule extends ClientBase { ? { username: options.accessToken, password: "" } : undefined, responseType: "json", - }, + } ); if (typeof response.data === "string") {