Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 Bug Report: Missing type property in the AppwriteException declaration #73

Open
2 tasks done
Splinteer opened this issue Mar 17, 2024 · 2 comments
Open
2 tasks done
Assignees
Labels
bug Something isn't working

Comments

@Splinteer
Copy link

Splinteer commented Mar 17, 2024

👟 Reproduction steps

When using the node sdk, the AppwriteException doesn't have the type property in the interface

👍 Expected behavior

It should have the property since it's in the original class

👎 Actual Behavior

I actually tells that it doesn't exist

🎲 Appwrite version

Version 0.10.x

💻 Operating system

MacOS

🧱 Your Environment

In local dev

👀 Have you spent some time to check if this issue has been raised before?

  • I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

I made a PR for this bug:
#74

@Splinteer Splinteer added the bug Something isn't working label Mar 17, 2024
@Splinteer Splinteer changed the title 🐛 Bug Report: 🐛 Bug Report: Missing type property in the AppwriteException declaration Mar 17, 2024
@Splinteer
Copy link
Author

Splinteer commented Mar 17, 2024

It could also be cool to have a proper type for the type property instead of using string and having a dictionnary of possible AppwriteException types like:

export const AppwritePlatformErrors = {
  general_mock: 'general_mock',
  general_argument_invalid: 'general_argument_invalid',
  general_query_limit_exceeded: 'general_query_limit_exceeded',
  general_query_invalid: 'general_query_invalid',
  general_cursor_not_found: 'general_cursor_not_found',
  general_provider_failure: 'general_provider_failure',
  project_unknown: 'project_unknown',
  project_invalid_success_url: 'project_invalid_success_url',
  project_invalid_failure_url: 'project_invalid_failure_url',
  project_reserved_project: 'project_reserved_project',
  project_smtp_config_invalid: 'project_smtp_config_invalid',
  project_key_expired: 'project_key_expired',
  rule_verification_failed: 'rule_verification_failed',
  project_template_default_deletion: 'project_template_default_deletion',
  general_unknown_origin: 'general_unknown_origin',
  general_access_forbidden: 'general_access_forbidden',
  general_unauthorized_scope: 'general_unauthorized_scope',
  general_route_not_found: 'general_route_not_found',
  webhook_not_found: 'webhook_not_found',
  rule_resource_not_found: 'rule_resource_not_found',
  rule_not_found: 'rule_not_found',
  key_not_found: 'key_not_found',
  platform_not_found: 'platform_not_found',
  project_not_found: 'project_not_found',
  router_host_not_found: 'router_host_not_found',
  general_not_implemented: 'general_not_implemented',
  project_already_exists: 'project_already_exists',
  rule_already_exists: 'rule_already_exists',
  project_provider_disabled: 'project_provider_disabled',
  general_rate_limit_exceeded: 'general_rate_limit_exceeded',
  general_unknown: 'general_unknown',
  general_server_error: 'general_server_error',
  general_protocol_unsupported: 'general_protocol_unsupported',
  general_codes_disabled: 'general_codes_disabled',
  router_domain_not_configured: 'router_domain_not_configured',
  general_usage_disabled: 'general_usage_disabled',
  project_provider_unsupported: 'project_provider_unsupported',
  general_service_disabled: 'general_service_disabled',
  general_smtp_disabled: 'general_smtp_disabled',
  general_phone_disabled: 'general_phone_disabled',
} as const;

export const AppwriteAuthErrors = {
  user_password_mismatch: 'user_password_mismatch',
  password_recently_used: 'password_recently_used',
  password_personal_data: 'password_personal_data',
  user_phone_not_found: 'user_phone_not_found',
  user_missing_id: 'user_missing_id',
  user_oauth2_bad_request: 'user_oauth2_bad_request',
  user_jwt_invalid: 'user_jwt_invalid',
  user_blocked: 'user_blocked',
  user_invalid_token: 'user_invalid_token',
  user_email_not_whitelisted: 'user_email_not_whitelisted',
  user_invalid_code: 'user_invalid_code',
  user_ip_not_whitelisted: 'user_ip_not_whitelisted',
  user_invalid_credentials: 'user_invalid_credentials',
  user_anonymous_console_prohibited: 'user_anonymous_console_prohibited',
  user_session_already_exists: 'user_session_already_exists',
  user_unauthorized: 'user_unauthorized',
  user_oauth2_unauthorized: 'user_oauth2_unauthorized',
  team_invalid_secret: 'team_invalid_secret',
  team_invite_mismatch: 'team_invite_mismatch',
  user_not_found: 'user_not_found',
  user_session_not_found: 'user_session_not_found',
  user_identity_not_found: 'user_identity_not_found',
  team_not_found: 'team_not_found',
  team_invite_not_found: 'team_invite_not_found',
  team_membership_mismatch: 'team_membership_mismatch',
  membership_not_found: 'membership_not_found',
  user_already_exists: 'user_already_exists',
  user_email_already_exists: 'user_email_already_exists',
  user_phone_already_exists: 'user_phone_already_exists',
  team_invite_already_exists: 'team_invite_already_exists',
  team_already_exists: 'team_already_exists',
  membership_already_confirmed: 'membership_already_confirmed',
  user_password_reset_required: 'user_password_reset_required',
  user_oauth2_provider_error: 'user_oauth2_provider_error',
  user_count_exceeded: 'user_count_exceeded',
  user_auth_method_unsupported: 'user_auth_method_unsupported',
} as const;

export const AppwriteDatabaseErrors = {
  collection_limit_exceeded: 'collection_limit_exceeded',
  document_invalid_structure: 'document_invalid_structure',
  document_missing_data: 'document_missing_data',
  document_missing_payload: 'document_missing_payload',
  attribute_unknown: 'attribute_unknown',
  attribute_not_available: 'attribute_not_available',
  attribute_format_unsupported: 'attribute_format_unsupported',
  attribute_default_unsupported: 'attribute_default_unsupported',
  attribute_limit_exceeded: 'attribute_limit_exceeded',
  attribute_value_invalid: 'attribute_value_invalid',
  attribute_type_invalid: 'attribute_type_invalid',
  index_limit_exceeded: 'index_limit_exceeded',
  index_invalid: 'index_invalid',
  document_delete_restricted: 'document_delete_restricted',
  execution_not_found: 'execution_not_found',
  database_not_found: 'database_not_found',
  collection_not_found: 'collection_not_found',
  document_not_found: 'document_not_found',
  attribute_not_found: 'attribute_not_found',
  index_not_found: 'index_not_found',
  database_already_exists: 'database_already_exists',
  collection_already_exists: 'collection_already_exists',
  document_already_exists: 'document_already_exists',
  document_update_conflict: 'document_update_conflict',
  attribute_already_exists: 'attribute_already_exists',
  index_already_exists: 'index_already_exists',
} as const;

export const AppwriteStorageErrors = {
  storage_device_not_found: 'storage_device_not_found',
  storage_file_empty: 'storage_file_empty',
  storage_file_type_unsupported: 'storage_file_type_unsupported',
  storage_invalid_file_size: 'storage_invalid_file_size',
  storage_invalid_content_range: 'storage_invalid_content_range',
  storage_invalid_appwrite_id: 'storage_invalid_appwrite_id',
  storage_invalid_file: 'storage_invalid_file',
  storage_file_not_found: 'storage_file_not_found',
  storage_bucket_not_found: 'storage_bucket_not_found',
  storage_file_already_exists: 'storage_file_already_exists',
  storage_bucket_already_exists: 'storage_bucket_already_exists',
  storage_invalid_range: 'storage_invalid_range',
} as const;

const AppwriteFunctionsErrors = {
  build_not_ready: 'build_not_ready',
  build_in_progress: 'build_in_progress',
  installation_not_found: 'installation_not_found',
  provider_repository_not_found: 'provider_repository_not_found',
  repository_not_found: 'repository_not_found',
  function_not_found: 'function_not_found',
  function_runtime_unsupported: 'function_runtime_unsupported',
  build_not_found: 'build_not_found',
  deployment_not_found: 'deployment_not_found',
  variable_not_found: 'variable_not_found',
  provider_contribution_conflict: 'provider_contribution_conflict',
  variable_already_exists: 'variable_already_exists',
} as const;

const AppwriteMigrationErrors = {
  migration_not_found: 'migration_not_found',
  migration_already_exists: 'migration_already_exists',
  migration_in_progress: 'migration_in_progress',
} as const;

const AppwriteAvatarErrors = {
  avatar_set_not_found: 'avatar_set_not_found',
  avatar_not_found: 'avatar_not_found',
  avatar_image_not_found: 'avatar_image_not_found',
  avatar_remote_url_failed: 'avatar_remote_url_failed',
  avatar_icon_not_found: 'avatar_icon_not_found',
} as const;

export const AppwriteGraphQLErrors = {
  graphql_no_query: 'graphql_no_query',
  graphql_too_many_queries: 'graphql_too_many_queries',
} as const;

export type AppwriteExceptionTypes =
  | (typeof AppwritePlatformErrors)[keyof typeof AppwritePlatformErrors]
  | (typeof AppwriteAuthErrors)[keyof typeof AppwriteAuthErrors]
  | (typeof AppwriteDatabaseErrors)[keyof typeof AppwriteDatabaseErrors]
  | (typeof AppwriteStorageErrors)[keyof typeof AppwriteStorageErrors]
  | (typeof AppwriteFunctionsErrors)[keyof typeof AppwriteFunctionsErrors]
  | (typeof AppwriteMigrationErrors)[keyof typeof AppwriteMigrationErrors]
  | (typeof AppwriteAvatarErrors)[keyof typeof AppwriteAvatarErrors]
  | (typeof AppwriteGraphQLErrors)[keyof typeof AppwriteGraphQLErrors];

@hadnet
Copy link

hadnet commented Oct 25, 2024

The response prop of AppwriteException declares string, but the response is actually an object in version 1.6.0:

response: string;

response: {
    message: 'Invalid token passed in the request.',
    code: 401,
    type: 'user_invalid_token',
    version: '1.6.0'
  }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants