diff --git a/package-lock.json b/package-lock.json index 60f4cf38d..5f55838fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -131,6 +131,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -4667,6 +4668,7 @@ "integrity": "sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.57.1", @@ -4706,6 +4708,7 @@ "integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.57.1", "@typescript-eslint/types": "8.57.1", @@ -5238,6 +5241,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5634,6 +5638,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6356,6 +6361,7 @@ "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -7383,6 +7389,7 @@ "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "30.3.0", "@jest/types": "30.3.0", @@ -8243,6 +8250,7 @@ "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", "dev": true, "license": "MIT", + "peer": true, "bin": { "marked": "bin/marked.js" }, @@ -9049,6 +9057,7 @@ "integrity": "sha512-JRJFeBTrfx4qLwEuGFPk+haJOJN97KnPuK01yj+4k/Wj5BgoOK5uNsivporiqBjk2JDaslg7qJOhGRnpltGeog==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@publint/pack": "^0.1.4", "package-manager-detector": "^1.6.0", @@ -9244,6 +9253,7 @@ "integrity": "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@oxc-project/types": "=0.115.0", "@rolldown/pluginutils": "1.0.0-rc.9" @@ -9977,6 +9987,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -10206,6 +10217,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 5aa329a7a..ccba5d2da 100644 --- a/package.json +++ b/package.json @@ -89,8 +89,8 @@ "node": ">=20.15.0" }, "inlinedDependencies": { - "uint8array-extras": "1.5.0", "iron-webcrypto": "2.0.0", - "jose": "6.2.0" + "jose": "6.2.1", + "uint8array-extras": "1.5.0" } } diff --git a/src/vault/vault.spec.ts b/src/vault/vault.spec.ts index 2419f91c3..2dd9debb8 100644 --- a/src/vault/vault.spec.ts +++ b/src/vault/vault.spec.ts @@ -1,5 +1,10 @@ import fetch from 'jest-fetch-mock'; -import { fetchMethod, fetchOnce, fetchURL } from '../common/utils/test-utils'; +import { + fetchMethod, + fetchOnce, + fetchSearchParams, + fetchURL, +} from '../common/utils/test-utils'; import { WorkOS } from '../workos'; import { List } from '../common/interfaces'; import { @@ -184,6 +189,43 @@ describe('Vault', () => { }, }); }); + + it('sends order parameter when provided', async () => { + fetchOnce({ + data: [], + list_metadata: { after: null, before: null }, + }); + await workos.vault.listObjects({ order: 'asc' }); + expect(fetchSearchParams()).toMatchObject({ order: 'asc' }); + }); + + it('sends before parameter when provided', async () => { + fetchOnce({ + data: [], + list_metadata: { after: null, before: null }, + }); + await workos.vault.listObjects({ before: 'cursor_abc' }); + expect(fetchSearchParams()).toMatchObject({ before: 'cursor_abc' }); + }); + + it('sends all pagination parameters when provided', async () => { + fetchOnce({ + data: [], + list_metadata: { after: null, before: null }, + }); + await workos.vault.listObjects({ + after: 'cursor_after', + before: 'cursor_before', + limit: 10, + order: 'desc', + }); + expect(fetchSearchParams()).toMatchObject({ + after: 'cursor_after', + before: 'cursor_before', + limit: '10', + order: 'desc', + }); + }); }); describe('listObjectVersions', () => { diff --git a/src/vault/vault.ts b/src/vault/vault.ts index 896c3dc1a..e5b169448 100644 --- a/src/vault/vault.ts +++ b/src/vault/vault.ts @@ -88,9 +88,15 @@ export class Vault { if (options?.after) { url.searchParams.set('after', options.after); } + if (options?.before) { + url.searchParams.set('before', options.before); + } if (options?.limit) { url.searchParams.set('limit', options.limit.toString()); } + if (options?.order) { + url.searchParams.set('order', options.order); + } const { data } = await this.workos.get>( url.toString(),