diff --git a/.changeset/config.json b/.changeset/config.json deleted file mode 100644 index f26daf14..00000000 --- a/.changeset/config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", - "changelog": "@changesets/cli/changelog", - "commit": false, - "fixed": [], - "linked": [], - "access": "public", - "baseBranch": "main", - "updateInternalDependencies": "patch", - "ignore": [] -} diff --git a/js/package.json b/js/package.json index 28182030..adddf93e 100644 --- a/js/package.json +++ b/js/package.json @@ -12,7 +12,6 @@ "test": "pnpm -r test" }, "devDependencies": { - "@changesets/cli": "^2.27", "prettier": "^3.3", "turbo": "^2.2", "typescript": "^5.6" diff --git a/js/packages/core/src/__tests__/smoke.test.ts b/js/packages/core/src/__tests__/smoke.test.ts index c46d57e3..c634d4e5 100644 --- a/js/packages/core/src/__tests__/smoke.test.ts +++ b/js/packages/core/src/__tests__/smoke.test.ts @@ -377,6 +377,7 @@ describe("Enums", () => { expect(IDKitErrorCodes.CredentialUnavailable).toBe( "credential_unavailable", ); + expect(IDKitErrorCodes.FeatureUnavailable).toBe("feature_unavailable"); expect(IDKitErrorCodes.UserPresenceFailed).toBe("user_presence_failed"); expect(IDKitErrorCodes.WorldId4NotAvailable).toBe( "world_id_4_not_available", diff --git a/js/packages/core/src/types/result.ts b/js/packages/core/src/types/result.ts index 7a529bbf..e0db1608 100644 --- a/js/packages/core/src/types/result.ts +++ b/js/packages/core/src/types/result.ts @@ -59,6 +59,7 @@ export enum IDKitErrorCodes { UserRejected = "user_rejected", VerificationRejected = "verification_rejected", CredentialUnavailable = "credential_unavailable", + FeatureUnavailable = "feature_unavailable", WorldId4NotAvailable = "world_id_4_not_available", WorldId3NotAvailable = "world_id_3_not_available", MalformedRequest = "malformed_request", diff --git a/kotlin/bindings/src/main/kotlin/com/worldcoin/idkit/IdKit.kt b/kotlin/bindings/src/main/kotlin/com/worldcoin/idkit/IdKit.kt index b422357a..eabae952 100644 --- a/kotlin/bindings/src/main/kotlin/com/worldcoin/idkit/IdKit.kt +++ b/kotlin/bindings/src/main/kotlin/com/worldcoin/idkit/IdKit.kt @@ -108,6 +108,7 @@ enum class IDKitErrorCode(val rawValue: String) { USER_REJECTED("user_rejected"), VERIFICATION_REJECTED("verification_rejected"), CREDENTIAL_UNAVAILABLE("credential_unavailable"), + FEATURE_UNAVAILABLE("feature_unavailable"), WORLD_ID_4_NOT_AVAILABLE("world_id_4_not_available"), WORLD_ID_3_NOT_AVAILABLE("world_id_3_not_available"), MALFORMED_REQUEST("malformed_request"), @@ -138,6 +139,7 @@ enum class IDKitErrorCode(val rawValue: String) { AppError.USER_REJECTED -> USER_REJECTED AppError.VERIFICATION_REJECTED -> VERIFICATION_REJECTED AppError.CREDENTIAL_UNAVAILABLE -> CREDENTIAL_UNAVAILABLE + AppError.FEATURE_UNAVAILABLE -> FEATURE_UNAVAILABLE AppError.WORLD_ID4_NOT_AVAILABLE -> WORLD_ID_4_NOT_AVAILABLE AppError.WORLD_ID3_NOT_AVAILABLE -> WORLD_ID_3_NOT_AVAILABLE AppError.MALFORMED_REQUEST -> MALFORMED_REQUEST diff --git a/kotlin/bindings/src/test/kotlin/com/worldcoin/idkit/IDKitTests.kt b/kotlin/bindings/src/test/kotlin/com/worldcoin/idkit/IDKitTests.kt index 3a1fab8a..f209fe86 100644 --- a/kotlin/bindings/src/test/kotlin/com/worldcoin/idkit/IDKitTests.kt +++ b/kotlin/bindings/src/test/kotlin/com/worldcoin/idkit/IDKitTests.kt @@ -215,6 +215,10 @@ class IDKitTests { IDKitStatus.Failed(IDKitErrorCode.INVALID_NETWORK), IDKitRequest.mapStatus(StatusWrapper.Failed(AppError.INVALID_NETWORK)), ) + assertEquals( + IDKitStatus.Failed(IDKitErrorCode.FEATURE_UNAVAILABLE), + IDKitRequest.mapStatus(StatusWrapper.Failed(AppError.FEATURE_UNAVAILABLE)), + ) assertEquals( IDKitStatus.Failed(IDKitErrorCode.USER_PRESENCE_FAILED), IDKitRequest.mapStatus(StatusWrapper.Failed(AppError.USER_PRESENCE_FAILED)), diff --git a/rust/core/src/bridge.rs b/rust/core/src/bridge.rs index e49e468d..96b528f3 100644 --- a/rust/core/src/bridge.rs +++ b/rust/core/src/bridge.rs @@ -3443,6 +3443,7 @@ mod tests { ); let cases = [ + ("feature_unavailable", AppError::FeatureUnavailable), ("world_id_4_not_available", AppError::WorldId4NotAvailable), ("world_id_3_not_available", AppError::WorldId3NotAvailable), ("duplicate_nonce", AppError::DuplicateNonce), diff --git a/rust/core/src/error.rs b/rust/core/src/error.rs index 76f82dcf..14d4a058 100644 --- a/rust/core/src/error.rs +++ b/rust/core/src/error.rs @@ -76,6 +76,10 @@ pub enum AppError { #[error("Requested credential is not available")] CredentialUnavailable, + /// Requested feature is not enabled for the app + #[error("Requested feature is not available")] + FeatureUnavailable, + /// World ID 4.0 credential is not available #[error("World ID 4.0 is not available")] #[serde(rename = "world_id_4_not_available")] @@ -178,6 +182,7 @@ impl AppError { "user_rejected" => Self::UserRejected, "verification_rejected" => Self::VerificationRejected, "credential_unavailable" => Self::CredentialUnavailable, + "feature_unavailable" => Self::FeatureUnavailable, "world_id_4_not_available" => Self::WorldId4NotAvailable, "world_id_3_not_available" => Self::WorldId3NotAvailable, "malformed_request" => Self::MalformedRequest, diff --git a/rust/core/src/wasm_bindings.rs b/rust/core/src/wasm_bindings.rs index 00ad8e41..8f1d1f0c 100644 --- a/rust/core/src/wasm_bindings.rs +++ b/rust/core/src/wasm_bindings.rs @@ -1616,6 +1616,7 @@ export type IDKitErrorCode = | "user_rejected" | "verification_rejected" | "credential_unavailable" + | "feature_unavailable" | "world_id_4_not_available" | "world_id_3_not_available" | "malformed_request" diff --git a/swift/Sources/IDKit/IDKit.swift b/swift/Sources/IDKit/IDKit.swift index 0ed57745..210a540a 100644 --- a/swift/Sources/IDKit/IDKit.swift +++ b/swift/Sources/IDKit/IDKit.swift @@ -235,6 +235,7 @@ public enum IDKitErrorCode: String, Equatable { case userRejected = "user_rejected" case verificationRejected = "verification_rejected" case credentialUnavailable = "credential_unavailable" + case featureUnavailable = "feature_unavailable" case worldId4NotAvailable = "world_id_4_not_available" case worldId3NotAvailable = "world_id_3_not_available" case malformedRequest = "malformed_request" @@ -268,6 +269,8 @@ public enum IDKitErrorCode: String, Equatable { .verificationRejected case .credentialUnavailable: .credentialUnavailable + case .featureUnavailable: + .featureUnavailable case .worldId4NotAvailable: .worldId4NotAvailable case .worldId3NotAvailable: diff --git a/swift/Tests/IDKitTests/IDKitTests.swift b/swift/Tests/IDKitTests/IDKitTests.swift index 2fcc26de..cb055758 100644 --- a/swift/Tests/IDKitTests/IDKitTests.swift +++ b/swift/Tests/IDKitTests/IDKitTests.swift @@ -43,6 +43,12 @@ private func sampleRpContext() throws -> RpContext { ) } +@Test("feature unavailable maps to the canonical public error") +func featureUnavailableErrorMapping() { + #expect(IDKitErrorCode.from(appError: .featureUnavailable) == .featureUnavailable) + #expect(IDKitErrorCode.featureUnavailable.rawValue == "feature_unavailable") +} + @Test("IDKit entrypoints expose canonical builders") func idkitEntrypoints() throws {