From 23d1ea02c85fb871b878ea18a3ba407fe6279ca3 Mon Sep 17 00:00:00 2001 From: Nick Nisi Date: Thu, 19 Mar 2026 09:21:50 -0500 Subject: [PATCH 1/2] fix(vault): forward order and before params in listObjects The listObjects method accepted PaginationOptions but only forwarded 'after' and 'limit' to the API, silently dropping 'order' and 'before'. This caused broken backward pagination and inability to control sort order. Closes #1516 --- src/vault/vault.spec.ts | 44 ++++++++++++++++++++++++++++++++++++++++- src/vault/vault.ts | 6 ++++++ 2 files changed, 49 insertions(+), 1 deletion(-) 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(), From 6f89061b30b04ca8d706c08a6309c82098f41207 Mon Sep 17 00:00:00 2001 From: Nick Nisi Date: Thu, 19 Mar 2026 10:31:22 -0500 Subject: [PATCH 2/2] chore: increment jose version --- package-lock.json | 12 ++++++++++++ package.json | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) 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" } }