diff --git a/.changeset/canonical-awaiting-input.md b/.changeset/canonical-awaiting-input.md new file mode 100644 index 0000000..bc0f2f3 --- /dev/null +++ b/.changeset/canonical-awaiting-input.md @@ -0,0 +1,5 @@ +--- +"@onkernel/managed-auth-react": minor +--- + +Prefer canonical managed-auth fields and choices when present, submit their stable IDs through `field_values` and `selected_choice_id`, and retain legacy rendering and submission fallbacks during the deprecation window. diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index b261341..b8dafb9 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -41,6 +41,9 @@ jobs: - name: Typecheck run: bun run typecheck + - name: Test + run: bun run test + # Dry-run npm pack so we catch missing files / bad exports BEFORE a # tagged release tries to publish. Exits non-zero if e.g. dist/ is # missing from `files` or an export points at a non-existent path. diff --git a/bun.lock b/bun.lock index 61be4b1..7d4405e 100644 --- a/bun.lock +++ b/bun.lock @@ -7,6 +7,7 @@ "devDependencies": { "@changesets/changelog-github": "0.7.0", "@changesets/cli": "^2.27.0", + "@types/bun": "1.2.21", "@types/node": "^20", "prettier": "^3.3.0", "typescript": "^5.6.0", @@ -265,6 +266,8 @@ "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + "@types/bun": ["@types/bun@1.2.21", "", { "dependencies": { "bun-types": "1.2.21" } }, "sha512-NiDnvEqmbfQ6dmZ3EeUO577s4P5bf4HCTXtI6trMc6f6RzirY5IrF3aIookuSpyslFzrnvv2lmEWv5HyC1X79A=="], + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], "@types/node": ["@types/node@20.19.39", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw=="], @@ -297,6 +300,8 @@ "browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="], + "bun-types": ["bun-types@1.2.21", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-sa2Tj77Ijc/NTLS0/Odjq/qngmEPZfbfnOERi0KRUYhT9R8M4VBioWVmMWE5GrYbKMc+5lVybXygLdibHaqVqw=="], + "bundle-require": ["bundle-require@5.1.0", "", { "dependencies": { "load-tsconfig": "^0.2.3" }, "peerDependencies": { "esbuild": ">=0.18" } }, "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA=="], "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], diff --git a/package.json b/package.json index 87a9bbd..b67c1d4 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "build": "bun run --filter '*' build", "dev": "bun run --filter '*' dev", "typecheck": "bun run --filter '*' typecheck", + "test": "bun test", "lint": "bun run --filter '*' lint", "format": "prettier --write \"**/*.{ts,tsx,js,json,md,css}\"", "format:check": "prettier --check \"**/*.{ts,tsx,js,json,md,css}\"", @@ -18,6 +19,7 @@ "devDependencies": { "@changesets/changelog-github": "0.7.0", "@changesets/cli": "^2.27.0", + "@types/bun": "1.2.21", "@types/node": "^20", "prettier": "^3.3.0", "typescript": "^5.6.0" diff --git a/packages/managed-auth-react/src/components/ExternalActionWaiting.tsx b/packages/managed-auth-react/src/components/ExternalActionWaiting.tsx index 964c2b7..ca54a98 100644 --- a/packages/managed-auth-react/src/components/ExternalActionWaiting.tsx +++ b/packages/managed-auth-react/src/components/ExternalActionWaiting.tsx @@ -36,7 +36,7 @@ function getMFAIcon(type: MFAType) { interface ExternalActionWaitingProps { message?: string | null; mfaOptions?: MFAOption[]; - onMFASelect?: (mfaType: MFAType) => void; + onMFASelect?: (mfaType: MFAType, choiceId?: string) => void; isLoading?: boolean; } @@ -91,11 +91,11 @@ export function ExternalActionWaiting({
{mfaOptions.map((option, idx) => (