From d572ae98bb53a090c6fe203528a1f97190c3d2c2 Mon Sep 17 00:00:00 2001 From: Mayur Pawashe Date: Fri, 3 Sep 2021 19:38:30 -0700 Subject: [PATCH] Integrate API Reference pages (#83) --- .github/workflows/jekyll.yml | 2 + _layouts/documentation-v2.html | 18 - .../Classes/SPUDownloadData.html | 364 +++ .../Classes/SPUStandardUpdaterController.html | 549 ++++ .../Classes/SPUStandardUserDriver.html | 325 +++ .../Classes/SPUUpdatePermissionRequest.html | 318 +++ .../api-reference/Classes/SPUUpdater.html | 1055 ++++++++ .../Classes/SPUUpdaterSettings.html | 432 +++ .../Classes/SPUUserUpdateState.html | 331 +++ .../api-reference/Classes/SUAppcast.html | 299 +++ .../api-reference/Classes/SUAppcastItem.html | 1406 ++++++++++ .../Classes/SUStandardVersionComparator.html | 374 +++ .../Classes/SUUpdatePermissionResponse.html | 393 +++ .../api-reference/Classes/SUUpdater.html | 911 +++++++ documentation/api-reference/Constants.html | 894 +++++++ documentation/api-reference/Enums.html | 427 +++ .../Enums/SPUNoUpdateFoundReason.html | 394 +++ .../api-reference/Enums/SPUUpdateCheck.html | 312 +++ .../Enums/SPUUserUpdateChoice.html | 330 +++ .../Enums/SPUUserUpdateStage.html | 330 +++ .../api-reference/Enums/SUError.html | 1269 +++++++++ documentation/api-reference/Protocols.html | 432 +++ .../SPUStandardUserDriverDelegate.html | 330 +++ .../Protocols/SPUUpdaterDelegate.html | 2379 +++++++++++++++++ .../Protocols/SPUUserDriver.html | 1368 ++++++++++ .../Protocols/SUUpdaterDelegate.html | 1220 +++++++++ .../Protocols/SUVersionComparison.html | 270 ++ .../Protocols/SUVersionDisplay.html | 270 ++ .../_app_kit_prevention_8h_source.html | 97 + ...ler_progress_app_controller_8h_source.html | 108 + ...installer_progress_delegate_8h_source.html | 105 + .../_s_p_u_appcast_item_state_8h_source.html | 110 + ...m_state_resolver_09_private_8h_source.html | 108 + ...appcast_item_state_resolver_8h_source.html | 118 + ...p_u_automatic_update_driver_8h_source.html | 109 + .../_s_p_u_basic_update_driver_8h_source.html | 132 + ..._u_core_based_update_driver_8h_source.html | 165 ++ .../_s_p_u_download_data_8h_source.html | 130 + .../_s_p_u_download_driver_8h_source.html | 143 + .../_s_p_u_downloaded_update_8h_source.html | 107 + ..._s_p_u_informational_update_8h_source.html | 104 + .../_s_p_u_installation_type_8h_source.html | 100 + ..._u_installer_agent_protocol_8h_source.html | 111 + .../_s_p_u_installer_driver_8h_source.html | 136 + ...s_p_u_local_cache_directory_8h_source.html | 117 + ..._s_p_u_probe_install_status_8h_source.html | 107 + ...s_p_u_probing_update_driver_8h_source.html | 108 + .../_s_p_u_resumable_update_8h_source.html | 105 + ...p_u_scheduled_update_driver_8h_source.html | 110 + .../_s_p_u_secure_coding_8h_source.html | 101 + .../_s_p_u_skipped_update_8h_source.html | 122 + ...standard_updater_controller_8h_source.html | 141 + ..._s_p_u_standard_user_driver_8h_source.html | 117 + ...andard_user_driver_delegate_8h_source.html | 117 + ...p_u_u_i_based_update_driver_8h_source.html | 135 + .../_s_p_u_u_r_l_request_8h_source.html | 113 + .../_s_p_u_update_driver_8h_source.html | 121 + ...u_update_permission_request_8h_source.html | 112 + .../_s_p_u_updater_8h_source.html | 181 ++ .../_s_p_u_updater_cycle_8h_source.html | 115 + .../_s_p_u_updater_delegate_8h_source.html | 225 ++ .../_s_p_u_updater_settings_8h_source.html | 124 + .../_s_p_u_updater_timer_8h_source.html | 114 + .../_s_p_u_user_driver_8h_source.html | 173 ++ ...ser_initiated_update_driver_8h_source.html | 109 + ...ser_update_state_09_private_8h_source.html | 106 + .../_s_p_u_user_update_state_8h_source.html | 130 + .../_s_p_u_x_p_c_service_info_8h_source.html | 100 + .../_s_u_appcast_09_private_8h_source.html | 115 + .../api-reference/_s_u_appcast_8h_source.html | 116 + .../_s_u_appcast_driver_8h_source.html | 122 + ...s_u_appcast_item_09_private_8h_source.html | 117 + .../_s_u_appcast_item_8h_source.html | 166 ++ .../_s_u_application_info_8h_source.html | 110 + .../_s_u_bundle_icon_8h_source.html | 104 + .../_s_u_constants_8h_source.html | 185 ++ .../api-reference/_s_u_errors_8h_source.html | 171 ++ .../api-reference/_s_u_export_8h_source.html | 99 + .../_s_u_file_manager_8h_source.html | 123 + .../api-reference/_s_u_host_8h_source.html | 124 + ...r_agent_initiation_protocol_8h_source.html | 99 + .../_s_u_installer_protocol_8h_source.html | 118 + .../_s_u_legacy_web_view_8h_source.html | 105 + .../_s_u_localizations_8h_source.html | 97 + .../_s_u_log_09_n_s_error_8h_source.html | 97 + .../api-reference/_s_u_log_8h_source.html | 110 + .../_s_u_normalization_8h_source.html | 98 + .../_s_u_operating_system_8h_source.html | 107 + ..._u_phased_update_group_info_8h_source.html | 105 + .../_s_u_signatures_8h_source.html | 140 + ...standard_version_comparator_8h_source.html | 130 + .../_s_u_status_controller_8h_source.html | 123 + .../_s_u_system_profiler_8h_source.html | 107 + ..._s_u_touch_bar_button_group_8h_source.html | 107 + ...ch_bar_forward_declarations_8h_source.html | 176 ++ .../_s_u_update_alert_8h_source.html | 126 + ..._u_update_permission_prompt_8h_source.html | 110 + ..._update_permission_response_8h_source.html | 116 + .../_s_u_update_validator_8h_source.html | 112 + .../api-reference/_s_u_updater_8h_source.html | 159 ++ .../_s_u_updater_delegate_8h_source.html | 195 ++ ...version_comparison_protocol_8h_source.html | 122 + ..._u_version_display_protocol_8h_source.html | 105 + .../_s_u_w_k_web_view_8h_source.html | 105 + .../_s_u_web_view_8h_source.html | 114 + .../_s_u_web_view_common_8h_source.html | 100 + .../_show_installer_progress_8h_source.html | 101 + .../api-reference/_sparkle_8h_source.html | 120 + .../_termination_listener_8h_source.html | 106 + documentation/api-reference/annotated.html | 180 ++ documentation/api-reference/badge.svg | 28 + documentation/api-reference/bc_s.png | Bin 0 -> 676 bytes documentation/api-reference/bdwn.png | Bin 0 -> 147 bytes ...progress_app_controller_07_08-members.html | 101 + ...staller_progress_app_controller_07_08.html | 163 ++ ...nstaller_progress_app_controller_07_08.png | Bin 0 -> 1238 bytes ...n_s_button_07_sierra_s_d_k_08-members.html | 81 + ...ategory_n_s_button_07_sierra_s_d_k_08.html | 90 + ..._07_s_u_signature_verifier_08-members.html | 81 + ...n_s_data_07_s_u_signature_verifier_08.html | 90 + ...7_private_delegate_methods_08-members.html | 81 + ...object_07_private_delegate_methods_08.html | 90 + ...tegory_n_s_process_info_07_08-members.html | 81 + .../category_n_s_process_info_07_08.html | 90 + ...tegory_s_p_u_appcast_item_state_07_08.html | 86 + ...ategory_s_p_u_appcast_item_state_07_08.png | Bin 0 -> 659 bytes ...automatic_update_driver_07_08-members.html | 99 + ...y_s_p_u_automatic_update_driver_07_08.html | 157 ++ ...ry_s_p_u_automatic_update_driver_07_08.png | Bin 0 -> 1125 bytes ...p_u_basic_update_driver_07_08-members.html | 91 + ...egory_s_p_u_basic_update_driver_07_08.html | 133 + ...tegory_s_p_u_basic_update_driver_07_08.png | Bin 0 -> 1008 bytes ...ore_based_update_driver_07_08-members.html | 114 + ..._s_p_u_core_based_update_driver_07_08.html | 206 ++ ...y_s_p_u_core_based_update_driver_07_08.png | Bin 0 -> 2035 bytes ...y_s_p_u_download_driver_07_08-members.html | 91 + .../category_s_p_u_download_driver_07_08.html | 126 + .../category_s_p_u_download_driver_07_08.png | Bin 0 -> 692 bytes ..._s_p_u_installer_driver_07_08-members.html | 98 + ...category_s_p_u_installer_driver_07_08.html | 147 + .../category_s_p_u_installer_driver_07_08.png | Bin 0 -> 746 bytes ...u_probing_update_driver_07_08-members.html | 85 + ...ory_s_p_u_probing_update_driver_07_08.html | 115 + ...gory_s_p_u_probing_update_driver_07_08.png | Bin 0 -> 1061 bytes ...scheduled_update_driver_07_08-members.html | 87 + ...y_s_p_u_scheduled_update_driver_07_08.html | 121 + ...ry_s_p_u_scheduled_update_driver_07_08.png | Bin 0 -> 1083 bytes ...u_i_based_update_driver_07_08-members.html | 106 + ...y_s_p_u_u_i_based_update_driver_07_08.html | 178 ++ ...ry_s_p_u_u_i_based_update_driver_07_08.png | Bin 0 -> 1103 bytes ...ory_s_p_u_u_r_l_request_07_08-members.html | 85 + .../category_s_p_u_u_r_l_request_07_08.html | 102 + .../category_s_p_u_updater_07_08-members.html | 98 + .../category_s_p_u_updater_07_08.html | 156 ++ .../category_s_p_u_updater_07_08.png | Bin 0 -> 1399 bytes ...ory_s_p_u_updater_cycle_07_08-members.html | 81 + .../category_s_p_u_updater_cycle_07_08.html | 90 + ..._s_p_u_updater_settings_07_08-members.html | 81 + ...category_s_p_u_updater_settings_07_08.html | 90 + ...ory_s_p_u_updater_timer_07_08-members.html | 82 + .../category_s_p_u_updater_timer_07_08.html | 93 + ...initiated_update_driver_07_08-members.html | 90 + ..._u_user_initiated_update_driver_07_08.html | 130 + ...p_u_user_initiated_update_driver_07_08.png | Bin 0 -> 1092 bytes ...ategory_s_p_u_user_update_state_07_08.html | 86 + ...category_s_p_u_user_update_state_07_08.png | Bin 0 -> 638 bytes ...er_update_state_07_private_08-members.html | 81 + ...s_p_u_user_update_state_07_private_08.html | 90 + .../category_s_u_appcast_07_08-members.html | 81 + .../category_s_u_appcast_07_08.html | 90 + ...ory_s_u_appcast_07_private_08-members.html | 82 + .../category_s_u_appcast_07_private_08.html | 93 + ...gory_s_u_appcast_driver_07_08-members.html | 91 + .../category_s_u_appcast_driver_07_08.html | 133 + .../category_s_u_appcast_driver_07_08.png | Bin 0 -> 1003 bytes ...tegory_s_u_appcast_item_07_08-members.html | 83 + .../category_s_u_appcast_item_07_08.html | 96 + ..._u_appcast_item_07_private_08-members.html | 81 + ...tegory_s_u_appcast_item_07_private_08.html | 142 + ...ategory_s_u_appcast_item_07_private_08.png | Bin 0 -> 675 bytes .../category_s_u_host_07_08-members.html | 85 + .../category_s_u_host_07_08.html | 102 + ...y_s_u_status_controller_07_08-members.html | 84 + .../category_s_u_status_controller_07_08.html | 105 + .../category_s_u_status_controller_07_08.png | Bin 0 -> 667 bytes ...ry_s_u_update_validator_07_08-members.html | 84 + .../category_s_u_update_validator_07_08.html | 99 + ...show_installer_progress_07_08-members.html | 81 + ...ategory_show_installer_progress_07_08.html | 90 + ...ry_termination_listener_07_08-members.html | 83 + .../category_termination_listener_07_08.html | 96 + documentation/api-reference/classes.html | 670 +++++ documentation/api-reference/closed.png | Bin 0 -> 132 bytes documentation/api-reference/css/highlight.css | 200 ++ documentation/api-reference/css/jazzy.css | 412 +++ .../dir_3429d7ca3cc00bc309a2ec9474a0a508.html | 85 + .../dir_9735f67ecdf0c41f32abd6fc1aab85b9.html | 81 + .../dir_e955798b210d66193b03eac1f9f3f1d5.html | 81 + documentation/api-reference/doc.png | Bin 0 -> 746 bytes .../Sparkle.docset/Contents/Info.plist | 20 + .../Documents/Classes/SPUDownloadData.html | 364 +++ .../Classes/SPUStandardUpdaterController.html | 549 ++++ .../Classes/SPUStandardUserDriver.html | 325 +++ .../Classes/SPUUpdatePermissionRequest.html | 318 +++ .../Documents/Classes/SPUUpdater.html | 1055 ++++++++ .../Documents/Classes/SPUUpdaterSettings.html | 432 +++ .../Documents/Classes/SPUUserUpdateState.html | 331 +++ .../Documents/Classes/SUAppcast.html | 299 +++ .../Documents/Classes/SUAppcastItem.html | 1406 ++++++++++ .../Classes/SUStandardVersionComparator.html | 374 +++ .../Classes/SUUpdatePermissionResponse.html | 393 +++ .../Documents/Classes/SUUpdater.html | 911 +++++++ .../Resources/Documents/Constants.html | 894 +++++++ .../Contents/Resources/Documents/Enums.html | 427 +++ .../Enums/SPUNoUpdateFoundReason.html | 394 +++ .../Documents/Enums/SPUUpdateCheck.html | 312 +++ .../Documents/Enums/SPUUserUpdateChoice.html | 330 +++ .../Documents/Enums/SPUUserUpdateStage.html | 330 +++ .../Resources/Documents/Enums/SUError.html | 1269 +++++++++ .../Resources/Documents/Protocols.html | 432 +++ .../SPUStandardUserDriverDelegate.html | 330 +++ .../Protocols/SPUUpdaterDelegate.html | 2379 +++++++++++++++++ .../Documents/Protocols/SPUUserDriver.html | 1368 ++++++++++ .../Protocols/SUUpdaterDelegate.html | 1220 +++++++++ .../Protocols/SUVersionComparison.html | 270 ++ .../Documents/Protocols/SUVersionDisplay.html | 270 ++ .../_app_kit_prevention_8h_source.html | 97 + ...ler_progress_app_controller_8h_source.html | 108 + ...installer_progress_delegate_8h_source.html | 105 + .../_s_p_u_appcast_item_state_8h_source.html | 110 + ...m_state_resolver_09_private_8h_source.html | 108 + ...appcast_item_state_resolver_8h_source.html | 118 + ...p_u_automatic_update_driver_8h_source.html | 109 + .../_s_p_u_basic_update_driver_8h_source.html | 132 + ..._u_core_based_update_driver_8h_source.html | 165 ++ .../_s_p_u_download_data_8h_source.html | 130 + .../_s_p_u_download_driver_8h_source.html | 143 + .../_s_p_u_downloaded_update_8h_source.html | 107 + ..._s_p_u_informational_update_8h_source.html | 104 + .../_s_p_u_installation_type_8h_source.html | 100 + ..._u_installer_agent_protocol_8h_source.html | 111 + .../_s_p_u_installer_driver_8h_source.html | 136 + ...s_p_u_local_cache_directory_8h_source.html | 117 + ..._s_p_u_probe_install_status_8h_source.html | 107 + ...s_p_u_probing_update_driver_8h_source.html | 108 + .../_s_p_u_resumable_update_8h_source.html | 105 + ...p_u_scheduled_update_driver_8h_source.html | 110 + .../_s_p_u_secure_coding_8h_source.html | 101 + .../_s_p_u_skipped_update_8h_source.html | 122 + ...standard_updater_controller_8h_source.html | 141 + ..._s_p_u_standard_user_driver_8h_source.html | 117 + ...andard_user_driver_delegate_8h_source.html | 117 + ...p_u_u_i_based_update_driver_8h_source.html | 135 + .../_s_p_u_u_r_l_request_8h_source.html | 113 + .../_s_p_u_update_driver_8h_source.html | 121 + ...u_update_permission_request_8h_source.html | 112 + .../Documents/_s_p_u_updater_8h_source.html | 181 ++ .../_s_p_u_updater_cycle_8h_source.html | 115 + .../_s_p_u_updater_delegate_8h_source.html | 225 ++ .../_s_p_u_updater_settings_8h_source.html | 124 + .../_s_p_u_updater_timer_8h_source.html | 114 + .../_s_p_u_user_driver_8h_source.html | 173 ++ ...ser_initiated_update_driver_8h_source.html | 109 + ...ser_update_state_09_private_8h_source.html | 106 + .../_s_p_u_user_update_state_8h_source.html | 130 + .../_s_p_u_x_p_c_service_info_8h_source.html | 100 + .../_s_u_appcast_09_private_8h_source.html | 115 + .../Documents/_s_u_appcast_8h_source.html | 116 + .../_s_u_appcast_driver_8h_source.html | 122 + ...s_u_appcast_item_09_private_8h_source.html | 117 + .../_s_u_appcast_item_8h_source.html | 166 ++ .../_s_u_application_info_8h_source.html | 110 + .../Documents/_s_u_bundle_icon_8h_source.html | 104 + .../Documents/_s_u_constants_8h_source.html | 185 ++ .../Documents/_s_u_errors_8h_source.html | 171 ++ .../Documents/_s_u_export_8h_source.html | 99 + .../_s_u_file_manager_8h_source.html | 123 + .../Documents/_s_u_host_8h_source.html | 124 + ...r_agent_initiation_protocol_8h_source.html | 99 + .../_s_u_installer_protocol_8h_source.html | 118 + .../_s_u_legacy_web_view_8h_source.html | 105 + .../_s_u_localizations_8h_source.html | 97 + .../_s_u_log_09_n_s_error_8h_source.html | 97 + .../Documents/_s_u_log_8h_source.html | 110 + .../_s_u_normalization_8h_source.html | 98 + .../_s_u_operating_system_8h_source.html | 107 + ..._u_phased_update_group_info_8h_source.html | 105 + .../Documents/_s_u_signatures_8h_source.html | 140 + ...standard_version_comparator_8h_source.html | 130 + .../_s_u_status_controller_8h_source.html | 123 + .../_s_u_system_profiler_8h_source.html | 107 + ..._s_u_touch_bar_button_group_8h_source.html | 107 + ...ch_bar_forward_declarations_8h_source.html | 176 ++ .../_s_u_update_alert_8h_source.html | 126 + ..._u_update_permission_prompt_8h_source.html | 110 + ..._update_permission_response_8h_source.html | 116 + .../_s_u_update_validator_8h_source.html | 112 + .../Documents/_s_u_updater_8h_source.html | 159 ++ .../_s_u_updater_delegate_8h_source.html | 195 ++ ...version_comparison_protocol_8h_source.html | 122 + ..._u_version_display_protocol_8h_source.html | 105 + .../_s_u_w_k_web_view_8h_source.html | 105 + .../Documents/_s_u_web_view_8h_source.html | 114 + .../_s_u_web_view_common_8h_source.html | 100 + .../_show_installer_progress_8h_source.html | 101 + .../Documents/_sparkle_8h_source.html | 120 + .../_termination_listener_8h_source.html | 106 + .../Resources/Documents/annotated.html | 180 ++ .../Contents/Resources/Documents/badge.svg | 28 + .../Contents/Resources/Documents/bc_s.png | Bin 0 -> 676 bytes .../Contents/Resources/Documents/bdwn.png | Bin 0 -> 147 bytes ...progress_app_controller_07_08-members.html | 101 + ...staller_progress_app_controller_07_08.html | 163 ++ ...nstaller_progress_app_controller_07_08.png | Bin 0 -> 1238 bytes ...n_s_button_07_sierra_s_d_k_08-members.html | 81 + ...ategory_n_s_button_07_sierra_s_d_k_08.html | 90 + ..._07_s_u_signature_verifier_08-members.html | 81 + ...n_s_data_07_s_u_signature_verifier_08.html | 90 + ...7_private_delegate_methods_08-members.html | 81 + ...object_07_private_delegate_methods_08.html | 90 + ...tegory_n_s_process_info_07_08-members.html | 81 + .../category_n_s_process_info_07_08.html | 90 + ...tegory_s_p_u_appcast_item_state_07_08.html | 86 + ...ategory_s_p_u_appcast_item_state_07_08.png | Bin 0 -> 659 bytes ...automatic_update_driver_07_08-members.html | 99 + ...y_s_p_u_automatic_update_driver_07_08.html | 157 ++ ...ry_s_p_u_automatic_update_driver_07_08.png | Bin 0 -> 1125 bytes ...p_u_basic_update_driver_07_08-members.html | 91 + ...egory_s_p_u_basic_update_driver_07_08.html | 133 + ...tegory_s_p_u_basic_update_driver_07_08.png | Bin 0 -> 1008 bytes ...ore_based_update_driver_07_08-members.html | 114 + ..._s_p_u_core_based_update_driver_07_08.html | 206 ++ ...y_s_p_u_core_based_update_driver_07_08.png | Bin 0 -> 2035 bytes ...y_s_p_u_download_driver_07_08-members.html | 91 + .../category_s_p_u_download_driver_07_08.html | 126 + .../category_s_p_u_download_driver_07_08.png | Bin 0 -> 692 bytes ..._s_p_u_installer_driver_07_08-members.html | 98 + ...category_s_p_u_installer_driver_07_08.html | 147 + .../category_s_p_u_installer_driver_07_08.png | Bin 0 -> 746 bytes ...u_probing_update_driver_07_08-members.html | 85 + ...ory_s_p_u_probing_update_driver_07_08.html | 115 + ...gory_s_p_u_probing_update_driver_07_08.png | Bin 0 -> 1061 bytes ...scheduled_update_driver_07_08-members.html | 87 + ...y_s_p_u_scheduled_update_driver_07_08.html | 121 + ...ry_s_p_u_scheduled_update_driver_07_08.png | Bin 0 -> 1083 bytes ...u_i_based_update_driver_07_08-members.html | 106 + ...y_s_p_u_u_i_based_update_driver_07_08.html | 178 ++ ...ry_s_p_u_u_i_based_update_driver_07_08.png | Bin 0 -> 1103 bytes ...ory_s_p_u_u_r_l_request_07_08-members.html | 85 + .../category_s_p_u_u_r_l_request_07_08.html | 102 + .../category_s_p_u_updater_07_08-members.html | 98 + .../category_s_p_u_updater_07_08.html | 156 ++ .../category_s_p_u_updater_07_08.png | Bin 0 -> 1399 bytes ...ory_s_p_u_updater_cycle_07_08-members.html | 81 + .../category_s_p_u_updater_cycle_07_08.html | 90 + ..._s_p_u_updater_settings_07_08-members.html | 81 + ...category_s_p_u_updater_settings_07_08.html | 90 + ...ory_s_p_u_updater_timer_07_08-members.html | 82 + .../category_s_p_u_updater_timer_07_08.html | 93 + ...initiated_update_driver_07_08-members.html | 90 + ..._u_user_initiated_update_driver_07_08.html | 130 + ...p_u_user_initiated_update_driver_07_08.png | Bin 0 -> 1092 bytes ...ategory_s_p_u_user_update_state_07_08.html | 86 + ...category_s_p_u_user_update_state_07_08.png | Bin 0 -> 638 bytes ...er_update_state_07_private_08-members.html | 81 + ...s_p_u_user_update_state_07_private_08.html | 90 + .../category_s_u_appcast_07_08-members.html | 81 + .../Documents/category_s_u_appcast_07_08.html | 90 + ...ory_s_u_appcast_07_private_08-members.html | 82 + .../category_s_u_appcast_07_private_08.html | 93 + ...gory_s_u_appcast_driver_07_08-members.html | 91 + .../category_s_u_appcast_driver_07_08.html | 133 + .../category_s_u_appcast_driver_07_08.png | Bin 0 -> 1003 bytes ...tegory_s_u_appcast_item_07_08-members.html | 83 + .../category_s_u_appcast_item_07_08.html | 96 + ..._u_appcast_item_07_private_08-members.html | 81 + ...tegory_s_u_appcast_item_07_private_08.html | 142 + ...ategory_s_u_appcast_item_07_private_08.png | Bin 0 -> 675 bytes .../category_s_u_host_07_08-members.html | 85 + .../Documents/category_s_u_host_07_08.html | 102 + ...y_s_u_status_controller_07_08-members.html | 84 + .../category_s_u_status_controller_07_08.html | 105 + .../category_s_u_status_controller_07_08.png | Bin 0 -> 667 bytes ...ry_s_u_update_validator_07_08-members.html | 84 + .../category_s_u_update_validator_07_08.html | 99 + ...show_installer_progress_07_08-members.html | 81 + ...ategory_show_installer_progress_07_08.html | 90 + ...ry_termination_listener_07_08-members.html | 83 + .../category_termination_listener_07_08.html | 96 + .../Contents/Resources/Documents/classes.html | 670 +++++ .../Contents/Resources/Documents/closed.png | Bin 0 -> 132 bytes .../Resources/Documents/css/highlight.css | 200 ++ .../Resources/Documents/css/jazzy.css | 412 +++ .../dir_3429d7ca3cc00bc309a2ec9474a0a508.html | 85 + .../dir_9735f67ecdf0c41f32abd6fc1aab85b9.html | 81 + .../dir_e955798b210d66193b03eac1f9f3f1d5.html | 81 + .../Contents/Resources/Documents/doc.png | Bin 0 -> 746 bytes .../Contents/Resources/Documents/doxygen.css | 1793 +++++++++++++ .../Contents/Resources/Documents/doxygen.svg | 26 + .../Resources/Documents/dynsections.js | 121 + .../Contents/Resources/Documents/files.html | 165 ++ .../Resources/Documents/folderclosed.png | Bin 0 -> 616 bytes .../Resources/Documents/folderopen.png | Bin 0 -> 597 bytes .../Resources/Documents/functions.html | 463 ++++ .../Resources/Documents/functions_func.html | 369 +++ .../Resources/Documents/functions_prop.html | 157 ++ .../Resources/Documents/hierarchy.html | 210 ++ .../Resources/Documents/icon_32x32@2x.png | Bin 0 -> 4689 bytes .../Resources/Documents/img/carat.png | Bin 0 -> 274 bytes .../Contents/Resources/Documents/img/dash.png | Bin 0 -> 1338 bytes .../Contents/Resources/Documents/img/gh.png | Bin 0 -> 1571 bytes .../Resources/Documents/img/spinner.gif | Bin 0 -> 1849 bytes .../Contents/Resources/Documents/index.html | 228 ++ ...aller_progress_app_controller-members.html | 83 + ...ace_installer_progress_app_controller.html | 103 + ...face_installer_progress_app_controller.png | Bin 0 -> 1049 bytes ...face_s_p_u_appcast_item_state-members.html | 87 + .../interface_s_p_u_appcast_item_state.html | 119 + .../interface_s_p_u_appcast_item_state.png | Bin 0 -> 558 bytes ...u_appcast_item_state_resolver-members.html | 87 + ...ace_s_p_u_appcast_item_state_resolver.html | 131 + ...face_s_p_u_appcast_item_state_resolver.png | Bin 0 -> 665 bytes ...s_p_u_automatic_update_driver-members.html | 87 + ...terface_s_p_u_automatic_update_driver.html | 123 + ...nterface_s_p_u_automatic_update_driver.png | Bin 0 -> 1373 bytes ...ace_s_p_u_basic_update_driver-members.html | 86 + .../interface_s_p_u_basic_update_driver.html | 112 + .../interface_s_p_u_basic_update_driver.png | Bin 0 -> 583 bytes ..._p_u_core_based_update_driver-members.html | 92 + ...erface_s_p_u_core_based_update_driver.html | 130 + ...terface_s_p_u_core_based_update_driver.png | Bin 0 -> 645 bytes ...interface_s_p_u_download_data-members.html | 85 + .../interface_s_p_u_download_data.html | 196 ++ .../interface_s_p_u_download_data.png | Bin 0 -> 769 bytes ...terface_s_p_u_download_driver-members.html | 88 + .../interface_s_p_u_download_driver.html | 122 + .../interface_s_p_u_download_driver.png | Bin 0 -> 508 bytes ...rface_s_p_u_downloaded_update-members.html | 85 + .../interface_s_p_u_downloaded_update.html | 117 + .../interface_s_p_u_downloaded_update.png | Bin 0 -> 1305 bytes ...ce_s_p_u_informational_update-members.html | 83 + .../interface_s_p_u_informational_update.html | 110 + .../interface_s_p_u_informational_update.png | Bin 0 -> 1306 bytes ...erface_s_p_u_installer_driver-members.html | 87 + .../interface_s_p_u_installer_driver.html | 115 + .../interface_s_p_u_installer_driver.png | Bin 0 -> 524 bytes ...e_s_p_u_local_cache_directory-members.html | 83 + ...interface_s_p_u_local_cache_directory.html | 103 + .../interface_s_p_u_local_cache_directory.png | Bin 0 -> 609 bytes ...ce_s_p_u_probe_install_status-members.html | 82 + .../interface_s_p_u_probe_install_status.html | 100 + .../interface_s_p_u_probe_install_status.png | Bin 0 -> 568 bytes ...e_s_p_u_probing_update_driver-members.html | 87 + ...interface_s_p_u_probing_update_driver.html | 122 + .../interface_s_p_u_probing_update_driver.png | Bin 0 -> 1321 bytes ...ce_s_p_u_release_notes_driver-members.html | 88 + .../interface_s_p_u_release_notes_driver.html | 124 + .../interface_s_p_u_release_notes_driver.png | Bin 0 -> 1474 bytes ...s_p_u_scheduled_update_driver-members.html | 87 + ...terface_s_p_u_scheduled_update_driver.html | 123 + ...nterface_s_p_u_scheduled_update_driver.png | Bin 0 -> 1377 bytes ...nterface_s_p_u_skipped_update-members.html | 86 + .../interface_s_p_u_skipped_update.html | 120 + .../interface_s_p_u_skipped_update.png | Bin 0 -> 522 bytes ...u_standard_updater_controller-members.html | 89 + ...ace_s_p_u_standard_updater_controller.html | 347 +++ ...face_s_p_u_standard_updater_controller.png | Bin 0 -> 662 bytes ...ce_s_p_u_standard_user_driver-members.html | 103 + .../interface_s_p_u_standard_user_driver.html | 212 ++ .../interface_s_p_u_standard_user_driver.png | Bin 0 -> 1296 bytes ...s_p_u_u_i_based_update_driver-members.html | 87 + ...terface_s_p_u_u_i_based_update_driver.html | 115 + ...nterface_s_p_u_u_i_based_update_driver.png | Bin 0 -> 604 bytes ...interface_s_p_u_u_r_l_request-members.html | 82 + .../interface_s_p_u_u_r_l_request.html | 104 + .../interface_s_p_u_u_r_l_request.png | Bin 0 -> 752 bytes ...p_u_update_permission_request-members.html | 82 + ...rface_s_p_u_update_permission_request.html | 139 + ...erface_s_p_u_update_permission_request.png | Bin 0 -> 992 bytes .../interface_s_p_u_updater-members.html | 101 + .../Documents/interface_s_p_u_updater.html | 645 +++++ .../Documents/interface_s_p_u_updater.png | Bin 0 -> 441 bytes ...interface_s_p_u_updater_cycle-members.html | 83 + .../interface_s_p_u_updater_cycle.html | 103 + .../interface_s_p_u_updater_cycle.png | Bin 0 -> 531 bytes ...erface_s_p_u_updater_settings-members.html | 86 + .../interface_s_p_u_updater_settings.html | 154 ++ .../interface_s_p_u_updater_settings.png | Bin 0 -> 540 bytes ...interface_s_p_u_updater_timer-members.html | 83 + .../interface_s_p_u_updater_timer.html | 103 + .../interface_s_p_u_updater_timer.png | Bin 0 -> 509 bytes ..._user_initiated_update_driver-members.html | 87 + ...ce_s_p_u_user_initiated_update_driver.html | 123 + ...ace_s_p_u_user_initiated_update_driver.png | Bin 0 -> 1398 bytes ...rface_s_p_u_user_update_state-members.html | 84 + .../interface_s_p_u_user_update_state.html | 109 + .../interface_s_p_u_user_update_state.png | Bin 0 -> 513 bytes .../interface_s_u_appcast-members.html | 83 + .../Documents/interface_s_u_appcast.html | 106 + .../Documents/interface_s_u_appcast.png | Bin 0 -> 445 bytes .../interface_s_u_appcast_driver-members.html | 83 + .../interface_s_u_appcast_driver.html | 103 + .../interface_s_u_appcast_driver.png | Bin 0 -> 524 bytes .../interface_s_u_appcast_item-members.html | 113 + .../Documents/interface_s_u_appcast_item.html | 247 ++ .../Documents/interface_s_u_appcast_item.png | Bin 0 -> 772 bytes ...nterface_s_u_application_info-members.html | 82 + .../interface_s_u_application_info.html | 100 + .../interface_s_u_application_info.png | Bin 0 -> 513 bytes .../interface_s_u_bundle_icon-members.html | 81 + .../Documents/interface_s_u_bundle_icon.html | 97 + .../Documents/interface_s_u_bundle_icon.png | Bin 0 -> 465 bytes .../interface_s_u_file_manager-members.html | 91 + .../Documents/interface_s_u_file_manager.html | 552 ++++ .../Documents/interface_s_u_file_manager.png | Bin 0 -> 505 bytes .../Documents/interface_s_u_host-members.html | 99 + .../Documents/interface_s_u_host.html | 155 ++ .../Documents/interface_s_u_host.png | Bin 0 -> 388 bytes ...nterface_s_u_operating_system-members.html | 83 + .../interface_s_u_operating_system.html | 103 + .../interface_s_u_operating_system.png | Bin 0 -> 567 bytes ..._s_u_phased_update_group_info-members.html | 82 + ...nterface_s_u_phased_update_group_info.html | 100 + ...interface_s_u_phased_update_group_info.png | Bin 0 -> 624 bytes .../interface_s_u_public_keys-members.html | 87 + .../Documents/interface_s_u_public_keys.html | 124 + .../Documents/interface_s_u_public_keys.png | Bin 0 -> 485 bytes .../interface_s_u_signatures-members.html | 86 + .../Documents/interface_s_u_signatures.html | 120 + .../Documents/interface_s_u_signatures.png | Bin 0 -> 772 bytes ...u_standard_version_comparator-members.html | 83 + ...rface_s_u_standard_version_comparator.html | 173 ++ ...erface_s_u_standard_version_comparator.png | Bin 0 -> 1078 bytes ...terface_s_u_status_controller-members.html | 90 + .../interface_s_u_status_controller.html | 128 + .../interface_s_u_status_controller.png | Bin 0 -> 541 bytes ...interface_s_u_system_profiler-members.html | 81 + .../interface_s_u_system_profiler.html | 97 + .../interface_s_u_system_profiler.png | Bin 0 -> 529 bytes ...ce_s_u_touch_bar_button_group-members.html | 82 + .../interface_s_u_touch_bar_button_group.html | 104 + .../interface_s_u_touch_bar_button_group.png | Bin 0 -> 654 bytes ..._u_update_permission_response-members.html | 84 + ...erface_s_u_update_permission_response.html | 157 ++ ...terface_s_u_update_permission_response.png | Bin 0 -> 1002 bytes ...nterface_s_u_update_validator-members.html | 83 + .../interface_s_u_update_validator.html | 103 + .../interface_s_u_update_validator.png | Bin 0 -> 517 bytes ...rface_show_installer_progress-members.html | 82 + .../interface_show_installer_progress.html | 102 + .../interface_show_installer_progress.png | Bin 0 -> 1427 bytes ...nterface_termination_listener-members.html | 83 + .../interface_termination_listener.html | 107 + .../interface_termination_listener.png | Bin 0 -> 521 bytes .../Contents/Resources/Documents/jquery.js | 35 + .../Contents/Resources/Documents/js/jazzy.js | 70 + .../Resources/Documents/js/jazzy.search.js | 70 + .../Resources/Documents/js/jquery.min.js | 2 + .../Resources/Documents/js/lunr.min.js | 6 + .../Documents/js/typeahead.jquery.js | 1694 ++++++++++++ .../Contents/Resources/Documents/menu.js | 51 + .../Contents/Resources/Documents/menudata.js | 63 + .../Contents/Resources/Documents/nav_f.png | Bin 0 -> 153 bytes .../Contents/Resources/Documents/nav_g.png | Bin 0 -> 95 bytes .../Contents/Resources/Documents/nav_h.png | Bin 0 -> 98 bytes .../Contents/Resources/Documents/open.png | Bin 0 -> 123 bytes ...installer_progress_delegate-p-members.html | 82 + ...rotocol_installer_progress_delegate-p.html | 102 + ...protocol_installer_progress_delegate-p.png | Bin 0 -> 1008 bytes ...asic_update_driver_delegate-p-members.html | 83 + ..._s_p_u_basic_update_driver_delegate-p.html | 106 + ...l_s_p_u_basic_update_driver_delegate-p.png | Bin 0 -> 1525 bytes ...ased_update_driver_delegate-p-members.html | 93 + ...u_core_based_update_driver_delegate-p.html | 136 + ..._u_core_based_update_driver_delegate-p.png | Bin 0 -> 1591 bytes ..._u_download_driver_delegate-p-members.html | 86 + ...ocol_s_p_u_download_driver_delegate-p.html | 116 + ...tocol_s_p_u_download_driver_delegate-p.png | Bin 0 -> 1988 bytes ..._u_installer_agent_protocol-p-members.html | 86 + ...ocol_s_p_u_installer_agent_protocol-p.html | 114 + ...tocol_s_p_u_installer_agent_protocol-p.png | Bin 0 -> 795 bytes ...u_installer_driver_delegate-p-members.html | 89 + ...col_s_p_u_installer_driver_delegate-p.html | 123 + ...ocol_s_p_u_installer_driver_delegate-p.png | Bin 0 -> 1045 bytes ...ocol_s_p_u_resumable_update-p-members.html | 82 + .../protocol_s_p_u_resumable_update-p.html | 103 + .../protocol_s_p_u_resumable_update-p.png | Bin 0 -> 1314 bytes ...andard_user_driver_delegate-p-members.html | 83 + ...s_p_u_standard_user_driver_delegate-p.html | 141 + ..._s_p_u_standard_user_driver_delegate-p.png | Bin 0 -> 736 bytes ...ased_update_driver_delegate-p-members.html | 85 + ..._u_u_i_based_update_driver_delegate-p.html | 112 + ...p_u_u_i_based_update_driver_delegate-p.png | Bin 0 -> 1550 bytes ...rotocol_s_p_u_update_driver-p-members.html | 86 + .../protocol_s_p_u_update_driver-p.html | 121 + .../protocol_s_p_u_update_driver-p.png | Bin 0 -> 2042 bytes ..._p_u_updater_cycle_delegate-p-members.html | 81 + ...otocol_s_p_u_updater_cycle_delegate-p.html | 99 + ...rotocol_s_p_u_updater_cycle_delegate-p.png | Bin 0 -> 931 bytes ...ocol_s_p_u_updater_delegate-p-members.html | 110 + .../protocol_s_p_u_updater_delegate-p.html | 1460 ++++++++++ .../protocol_s_p_u_updater_delegate-p.png | Bin 0 -> 596 bytes ..._p_u_updater_timer_delegate-p-members.html | 81 + ...otocol_s_p_u_updater_timer_delegate-p.html | 99 + ...rotocol_s_p_u_updater_timer_delegate-p.png | Bin 0 -> 914 bytes .../protocol_s_p_u_user_driver-p-members.html | 101 + .../protocol_s_p_u_user_driver-p.html | 706 +++++ .../protocol_s_p_u_user_driver-p.png | Bin 0 -> 903 bytes ...s_u_appcast_driver_delegate-p-members.html | 84 + ...rotocol_s_u_appcast_driver_delegate-p.html | 108 + ...protocol_s_u_appcast_driver_delegate-p.png | Bin 0 -> 1014 bytes ...r_agent_initiation_protocol-p-members.html | 82 + ...installer_agent_initiation_protocol-p.html | 93 + ...ocol_s_u_installer_protocol-p-members.html | 84 + .../protocol_s_u_installer_protocol-p.html | 105 + .../protocol_s_u_installer_protocol-p.png | Bin 0 -> 557 bytes ...ocol_s_u_version_comparison-p-members.html | 81 + .../protocol_s_u_version_comparison-p.html | 140 + .../protocol_s_u_version_comparison-p.png | Bin 0 -> 761 bytes ...rotocol_s_u_version_display-p-members.html | 81 + .../protocol_s_u_version_display-p.html | 129 + .../Contents/Resources/Documents/search.json | 1 + .../Resources/Documents/search/all_0.html | 37 + .../Resources/Documents/search/all_0.js | 9 + .../Resources/Documents/search/all_1.html | 37 + .../Resources/Documents/search/all_1.js | 4 + .../Resources/Documents/search/all_2.html | 37 + .../Resources/Documents/search/all_2.js | 11 + .../Resources/Documents/search/all_3.html | 37 + .../Resources/Documents/search/all_3.js | 7 + .../Resources/Documents/search/all_4.html | 37 + .../Resources/Documents/search/all_4.js | 7 + .../Resources/Documents/search/all_5.html | 37 + .../Resources/Documents/search/all_5.js | 6 + .../Resources/Documents/search/all_6.html | 37 + .../Resources/Documents/search/all_6.js | 14 + .../Resources/Documents/search/all_7.html | 37 + .../Resources/Documents/search/all_7.js | 4 + .../Resources/Documents/search/all_8.html | 37 + .../Resources/Documents/search/all_8.js | 7 + .../Resources/Documents/search/all_9.html | 37 + .../Resources/Documents/search/all_9.js | 9 + .../Resources/Documents/search/all_a.html | 37 + .../Resources/Documents/search/all_a.js | 7 + .../Resources/Documents/search/all_b.html | 37 + .../Resources/Documents/search/all_b.js | 121 + .../Resources/Documents/search/all_c.html | 37 + .../Resources/Documents/search/all_c.js | 6 + .../Resources/Documents/search/all_d.html | 37 + .../Resources/Documents/search/all_d.js | 35 + .../Resources/Documents/search/all_e.html | 37 + .../Resources/Documents/search/all_e.js | 4 + .../Resources/Documents/search/classes_0.html | 37 + .../Resources/Documents/search/classes_0.js | 6 + .../Resources/Documents/search/classes_1.html | 37 + .../Resources/Documents/search/classes_1.js | 8 + .../Resources/Documents/search/classes_2.html | 37 + .../Resources/Documents/search/classes_2.js | 92 + .../Resources/Documents/search/classes_3.html | 37 + .../Resources/Documents/search/classes_3.js | 5 + .../Resources/Documents/search/close.svg | 31 + .../Documents/search/functions_0.html | 37 + .../Resources/Documents/search/functions_0.js | 5 + .../Documents/search/functions_1.html | 37 + .../Resources/Documents/search/functions_1.js | 4 + .../Documents/search/functions_2.html | 37 + .../Resources/Documents/search/functions_2.js | 10 + .../Documents/search/functions_3.html | 37 + .../Resources/Documents/search/functions_3.js | 6 + .../Documents/search/functions_4.html | 37 + .../Resources/Documents/search/functions_4.js | 6 + .../Documents/search/functions_5.html | 37 + .../Resources/Documents/search/functions_5.js | 11 + .../Documents/search/functions_6.html | 37 + .../Resources/Documents/search/functions_6.js | 6 + .../Documents/search/functions_7.html | 37 + .../Resources/Documents/search/functions_7.js | 4 + .../Documents/search/functions_8.html | 37 + .../Resources/Documents/search/functions_8.js | 7 + .../Documents/search/functions_9.html | 37 + .../Resources/Documents/search/functions_9.js | 26 + .../Documents/search/functions_a.html | 37 + .../Resources/Documents/search/functions_a.js | 28 + .../Documents/search/functions_b.html | 37 + .../Resources/Documents/search/functions_b.js | 4 + .../Resources/Documents/search/mag_sel.svg | 74 + .../Resources/Documents/search/nomatches.html | 13 + .../Documents/search/properties_0.html | 37 + .../Documents/search/properties_0.js | 7 + .../Documents/search/properties_1.html | 37 + .../Documents/search/properties_1.js | 4 + .../Documents/search/properties_2.html | 37 + .../Documents/search/properties_2.js | 4 + .../Documents/search/properties_3.html | 37 + .../Documents/search/properties_3.js | 4 + .../Documents/search/properties_4.html | 37 + .../Documents/search/properties_4.js | 6 + .../Documents/search/properties_5.html | 37 + .../Documents/search/properties_5.js | 4 + .../Documents/search/properties_6.html | 37 + .../Documents/search/properties_6.js | 4 + .../Documents/search/properties_7.html | 37 + .../Documents/search/properties_7.js | 9 + .../Documents/search/properties_8.html | 37 + .../Documents/search/properties_8.js | 4 + .../Documents/search/properties_9.html | 37 + .../Documents/search/properties_9.js | 10 + .../Resources/Documents/search/search.css | 257 ++ .../Resources/Documents/search/search.js | 816 ++++++ .../Resources/Documents/search/search_l.png | Bin 0 -> 567 bytes .../Resources/Documents/search/search_m.png | Bin 0 -> 158 bytes .../Resources/Documents/search/search_r.png | Bin 0 -> 553 bytes .../Resources/Documents/search/searchdata.js | 24 + .../Contents/Resources/Documents/splitbar.png | Bin 0 -> 314 bytes ..._n_s_operating_system_version-members.html | 83 + .../struct_n_s_operating_system_version.html | 96 + .../Contents/Resources/Documents/sync_off.png | Bin 0 -> 853 bytes .../Contents/Resources/Documents/sync_on.png | Bin 0 -> 845 bytes .../Contents/Resources/Documents/tab_a.png | Bin 0 -> 142 bytes .../Contents/Resources/Documents/tab_b.png | Bin 0 -> 169 bytes .../Contents/Resources/Documents/tab_h.png | Bin 0 -> 177 bytes .../Contents/Resources/Documents/tab_s.png | Bin 0 -> 184 bytes .../Contents/Resources/Documents/tabs.css | 1 + .../Resources/Documents/undocumented.json | 866 ++++++ .../Contents/Resources/docSet.dsidx | Bin 0 -> 90112 bytes .../api-reference/docsets/Sparkle.tgz | Bin 0 -> 575585 bytes documentation/api-reference/doxygen.css | 1793 +++++++++++++ documentation/api-reference/doxygen.svg | 26 + documentation/api-reference/dynsections.js | 121 + documentation/api-reference/files.html | 165 ++ documentation/api-reference/folderclosed.png | Bin 0 -> 616 bytes documentation/api-reference/folderopen.png | Bin 0 -> 597 bytes documentation/api-reference/functions.html | 463 ++++ .../api-reference/functions_func.html | 369 +++ .../api-reference/functions_prop.html | 157 ++ documentation/api-reference/hierarchy.html | 210 ++ documentation/api-reference/icon_32x32@2x.png | Bin 0 -> 4689 bytes documentation/api-reference/img/carat.png | Bin 0 -> 274 bytes documentation/api-reference/img/dash.png | Bin 0 -> 1338 bytes documentation/api-reference/img/gh.png | Bin 0 -> 1571 bytes documentation/api-reference/img/spinner.gif | Bin 0 -> 1849 bytes documentation/api-reference/index.html | 228 ++ ...aller_progress_app_controller-members.html | 83 + ...ace_installer_progress_app_controller.html | 103 + ...face_installer_progress_app_controller.png | Bin 0 -> 1049 bytes ...face_s_p_u_appcast_item_state-members.html | 87 + .../interface_s_p_u_appcast_item_state.html | 119 + .../interface_s_p_u_appcast_item_state.png | Bin 0 -> 558 bytes ...u_appcast_item_state_resolver-members.html | 87 + ...ace_s_p_u_appcast_item_state_resolver.html | 131 + ...face_s_p_u_appcast_item_state_resolver.png | Bin 0 -> 665 bytes ...s_p_u_automatic_update_driver-members.html | 87 + ...terface_s_p_u_automatic_update_driver.html | 123 + ...nterface_s_p_u_automatic_update_driver.png | Bin 0 -> 1373 bytes ...ace_s_p_u_basic_update_driver-members.html | 86 + .../interface_s_p_u_basic_update_driver.html | 112 + .../interface_s_p_u_basic_update_driver.png | Bin 0 -> 583 bytes ..._p_u_core_based_update_driver-members.html | 92 + ...erface_s_p_u_core_based_update_driver.html | 130 + ...terface_s_p_u_core_based_update_driver.png | Bin 0 -> 645 bytes ...interface_s_p_u_download_data-members.html | 85 + .../interface_s_p_u_download_data.html | 196 ++ .../interface_s_p_u_download_data.png | Bin 0 -> 769 bytes ...terface_s_p_u_download_driver-members.html | 88 + .../interface_s_p_u_download_driver.html | 122 + .../interface_s_p_u_download_driver.png | Bin 0 -> 508 bytes ...rface_s_p_u_downloaded_update-members.html | 85 + .../interface_s_p_u_downloaded_update.html | 117 + .../interface_s_p_u_downloaded_update.png | Bin 0 -> 1305 bytes ...ce_s_p_u_informational_update-members.html | 83 + .../interface_s_p_u_informational_update.html | 110 + .../interface_s_p_u_informational_update.png | Bin 0 -> 1306 bytes ...erface_s_p_u_installer_driver-members.html | 87 + .../interface_s_p_u_installer_driver.html | 115 + .../interface_s_p_u_installer_driver.png | Bin 0 -> 524 bytes ...e_s_p_u_local_cache_directory-members.html | 83 + ...interface_s_p_u_local_cache_directory.html | 103 + .../interface_s_p_u_local_cache_directory.png | Bin 0 -> 609 bytes ...ce_s_p_u_probe_install_status-members.html | 82 + .../interface_s_p_u_probe_install_status.html | 100 + .../interface_s_p_u_probe_install_status.png | Bin 0 -> 568 bytes ...e_s_p_u_probing_update_driver-members.html | 87 + ...interface_s_p_u_probing_update_driver.html | 122 + .../interface_s_p_u_probing_update_driver.png | Bin 0 -> 1321 bytes ...ce_s_p_u_release_notes_driver-members.html | 88 + .../interface_s_p_u_release_notes_driver.html | 124 + .../interface_s_p_u_release_notes_driver.png | Bin 0 -> 1474 bytes ...s_p_u_scheduled_update_driver-members.html | 87 + ...terface_s_p_u_scheduled_update_driver.html | 123 + ...nterface_s_p_u_scheduled_update_driver.png | Bin 0 -> 1377 bytes ...nterface_s_p_u_skipped_update-members.html | 86 + .../interface_s_p_u_skipped_update.html | 120 + .../interface_s_p_u_skipped_update.png | Bin 0 -> 522 bytes ...u_standard_updater_controller-members.html | 89 + ...ace_s_p_u_standard_updater_controller.html | 347 +++ ...face_s_p_u_standard_updater_controller.png | Bin 0 -> 662 bytes ...ce_s_p_u_standard_user_driver-members.html | 103 + .../interface_s_p_u_standard_user_driver.html | 212 ++ .../interface_s_p_u_standard_user_driver.png | Bin 0 -> 1296 bytes ...s_p_u_u_i_based_update_driver-members.html | 87 + ...terface_s_p_u_u_i_based_update_driver.html | 115 + ...nterface_s_p_u_u_i_based_update_driver.png | Bin 0 -> 604 bytes ...interface_s_p_u_u_r_l_request-members.html | 82 + .../interface_s_p_u_u_r_l_request.html | 104 + .../interface_s_p_u_u_r_l_request.png | Bin 0 -> 752 bytes ...p_u_update_permission_request-members.html | 82 + ...rface_s_p_u_update_permission_request.html | 139 + ...erface_s_p_u_update_permission_request.png | Bin 0 -> 992 bytes .../interface_s_p_u_updater-members.html | 101 + .../interface_s_p_u_updater.html | 645 +++++ .../api-reference/interface_s_p_u_updater.png | Bin 0 -> 441 bytes ...interface_s_p_u_updater_cycle-members.html | 83 + .../interface_s_p_u_updater_cycle.html | 103 + .../interface_s_p_u_updater_cycle.png | Bin 0 -> 531 bytes ...erface_s_p_u_updater_settings-members.html | 86 + .../interface_s_p_u_updater_settings.html | 154 ++ .../interface_s_p_u_updater_settings.png | Bin 0 -> 540 bytes ...interface_s_p_u_updater_timer-members.html | 83 + .../interface_s_p_u_updater_timer.html | 103 + .../interface_s_p_u_updater_timer.png | Bin 0 -> 509 bytes ..._user_initiated_update_driver-members.html | 87 + ...ce_s_p_u_user_initiated_update_driver.html | 123 + ...ace_s_p_u_user_initiated_update_driver.png | Bin 0 -> 1398 bytes ...rface_s_p_u_user_update_state-members.html | 84 + .../interface_s_p_u_user_update_state.html | 109 + .../interface_s_p_u_user_update_state.png | Bin 0 -> 513 bytes .../interface_s_u_appcast-members.html | 83 + .../api-reference/interface_s_u_appcast.html | 106 + .../api-reference/interface_s_u_appcast.png | Bin 0 -> 445 bytes .../interface_s_u_appcast_driver-members.html | 83 + .../interface_s_u_appcast_driver.html | 103 + .../interface_s_u_appcast_driver.png | Bin 0 -> 524 bytes .../interface_s_u_appcast_item-members.html | 113 + .../interface_s_u_appcast_item.html | 247 ++ .../interface_s_u_appcast_item.png | Bin 0 -> 772 bytes ...nterface_s_u_application_info-members.html | 82 + .../interface_s_u_application_info.html | 100 + .../interface_s_u_application_info.png | Bin 0 -> 513 bytes .../interface_s_u_bundle_icon-members.html | 81 + .../interface_s_u_bundle_icon.html | 97 + .../interface_s_u_bundle_icon.png | Bin 0 -> 465 bytes .../interface_s_u_file_manager-members.html | 91 + .../interface_s_u_file_manager.html | 552 ++++ .../interface_s_u_file_manager.png | Bin 0 -> 505 bytes .../interface_s_u_host-members.html | 99 + .../api-reference/interface_s_u_host.html | 155 ++ .../api-reference/interface_s_u_host.png | Bin 0 -> 388 bytes ...nterface_s_u_operating_system-members.html | 83 + .../interface_s_u_operating_system.html | 103 + .../interface_s_u_operating_system.png | Bin 0 -> 567 bytes ..._s_u_phased_update_group_info-members.html | 82 + ...nterface_s_u_phased_update_group_info.html | 100 + ...interface_s_u_phased_update_group_info.png | Bin 0 -> 624 bytes .../interface_s_u_public_keys-members.html | 87 + .../interface_s_u_public_keys.html | 124 + .../interface_s_u_public_keys.png | Bin 0 -> 485 bytes .../interface_s_u_signatures-members.html | 86 + .../interface_s_u_signatures.html | 120 + .../interface_s_u_signatures.png | Bin 0 -> 772 bytes ...u_standard_version_comparator-members.html | 83 + ...rface_s_u_standard_version_comparator.html | 173 ++ ...erface_s_u_standard_version_comparator.png | Bin 0 -> 1078 bytes ...terface_s_u_status_controller-members.html | 90 + .../interface_s_u_status_controller.html | 128 + .../interface_s_u_status_controller.png | Bin 0 -> 541 bytes ...interface_s_u_system_profiler-members.html | 81 + .../interface_s_u_system_profiler.html | 97 + .../interface_s_u_system_profiler.png | Bin 0 -> 529 bytes ...ce_s_u_touch_bar_button_group-members.html | 82 + .../interface_s_u_touch_bar_button_group.html | 104 + .../interface_s_u_touch_bar_button_group.png | Bin 0 -> 654 bytes ..._u_update_permission_response-members.html | 84 + ...erface_s_u_update_permission_response.html | 157 ++ ...terface_s_u_update_permission_response.png | Bin 0 -> 1002 bytes ...nterface_s_u_update_validator-members.html | 83 + .../interface_s_u_update_validator.html | 103 + .../interface_s_u_update_validator.png | Bin 0 -> 517 bytes ...rface_show_installer_progress-members.html | 82 + .../interface_show_installer_progress.html | 102 + .../interface_show_installer_progress.png | Bin 0 -> 1427 bytes ...nterface_termination_listener-members.html | 83 + .../interface_termination_listener.html | 107 + .../interface_termination_listener.png | Bin 0 -> 521 bytes documentation/api-reference/jquery.js | 35 + documentation/api-reference/js/jazzy.js | 70 + .../api-reference/js/jazzy.search.js | 70 + documentation/api-reference/js/jquery.min.js | 2 + documentation/api-reference/js/lunr.min.js | 6 + .../api-reference/js/typeahead.jquery.js | 1694 ++++++++++++ documentation/api-reference/menu.js | 51 + documentation/api-reference/menudata.js | 63 + documentation/api-reference/nav_f.png | Bin 0 -> 153 bytes documentation/api-reference/nav_g.png | Bin 0 -> 95 bytes documentation/api-reference/nav_h.png | Bin 0 -> 98 bytes documentation/api-reference/open.png | Bin 0 -> 123 bytes ...installer_progress_delegate-p-members.html | 82 + ...rotocol_installer_progress_delegate-p.html | 102 + ...protocol_installer_progress_delegate-p.png | Bin 0 -> 1008 bytes ...asic_update_driver_delegate-p-members.html | 83 + ..._s_p_u_basic_update_driver_delegate-p.html | 106 + ...l_s_p_u_basic_update_driver_delegate-p.png | Bin 0 -> 1525 bytes ...ased_update_driver_delegate-p-members.html | 93 + ...u_core_based_update_driver_delegate-p.html | 136 + ..._u_core_based_update_driver_delegate-p.png | Bin 0 -> 1591 bytes ..._u_download_driver_delegate-p-members.html | 86 + ...ocol_s_p_u_download_driver_delegate-p.html | 116 + ...tocol_s_p_u_download_driver_delegate-p.png | Bin 0 -> 1988 bytes ..._u_installer_agent_protocol-p-members.html | 86 + ...ocol_s_p_u_installer_agent_protocol-p.html | 114 + ...tocol_s_p_u_installer_agent_protocol-p.png | Bin 0 -> 795 bytes ...u_installer_driver_delegate-p-members.html | 89 + ...col_s_p_u_installer_driver_delegate-p.html | 123 + ...ocol_s_p_u_installer_driver_delegate-p.png | Bin 0 -> 1045 bytes ...ocol_s_p_u_resumable_update-p-members.html | 82 + .../protocol_s_p_u_resumable_update-p.html | 103 + .../protocol_s_p_u_resumable_update-p.png | Bin 0 -> 1314 bytes ...andard_user_driver_delegate-p-members.html | 83 + ...s_p_u_standard_user_driver_delegate-p.html | 141 + ..._s_p_u_standard_user_driver_delegate-p.png | Bin 0 -> 736 bytes ...ased_update_driver_delegate-p-members.html | 85 + ..._u_u_i_based_update_driver_delegate-p.html | 112 + ...p_u_u_i_based_update_driver_delegate-p.png | Bin 0 -> 1550 bytes ...rotocol_s_p_u_update_driver-p-members.html | 86 + .../protocol_s_p_u_update_driver-p.html | 121 + .../protocol_s_p_u_update_driver-p.png | Bin 0 -> 2042 bytes ..._p_u_updater_cycle_delegate-p-members.html | 81 + ...otocol_s_p_u_updater_cycle_delegate-p.html | 99 + ...rotocol_s_p_u_updater_cycle_delegate-p.png | Bin 0 -> 931 bytes ...ocol_s_p_u_updater_delegate-p-members.html | 110 + .../protocol_s_p_u_updater_delegate-p.html | 1460 ++++++++++ .../protocol_s_p_u_updater_delegate-p.png | Bin 0 -> 596 bytes ..._p_u_updater_timer_delegate-p-members.html | 81 + ...otocol_s_p_u_updater_timer_delegate-p.html | 99 + ...rotocol_s_p_u_updater_timer_delegate-p.png | Bin 0 -> 914 bytes .../protocol_s_p_u_user_driver-p-members.html | 101 + .../protocol_s_p_u_user_driver-p.html | 706 +++++ .../protocol_s_p_u_user_driver-p.png | Bin 0 -> 903 bytes ...s_u_appcast_driver_delegate-p-members.html | 84 + ...rotocol_s_u_appcast_driver_delegate-p.html | 108 + ...protocol_s_u_appcast_driver_delegate-p.png | Bin 0 -> 1014 bytes ...r_agent_initiation_protocol-p-members.html | 82 + ...installer_agent_initiation_protocol-p.html | 93 + ...ocol_s_u_installer_protocol-p-members.html | 84 + .../protocol_s_u_installer_protocol-p.html | 105 + .../protocol_s_u_installer_protocol-p.png | Bin 0 -> 557 bytes ...ocol_s_u_version_comparison-p-members.html | 81 + .../protocol_s_u_version_comparison-p.html | 140 + .../protocol_s_u_version_comparison-p.png | Bin 0 -> 761 bytes ...rotocol_s_u_version_display-p-members.html | 81 + .../protocol_s_u_version_display-p.html | 129 + documentation/api-reference/search.json | 1 + documentation/api-reference/search/all_0.html | 37 + documentation/api-reference/search/all_0.js | 9 + documentation/api-reference/search/all_1.html | 37 + documentation/api-reference/search/all_1.js | 4 + documentation/api-reference/search/all_2.html | 37 + documentation/api-reference/search/all_2.js | 11 + documentation/api-reference/search/all_3.html | 37 + documentation/api-reference/search/all_3.js | 7 + documentation/api-reference/search/all_4.html | 37 + documentation/api-reference/search/all_4.js | 7 + documentation/api-reference/search/all_5.html | 37 + documentation/api-reference/search/all_5.js | 6 + documentation/api-reference/search/all_6.html | 37 + documentation/api-reference/search/all_6.js | 14 + documentation/api-reference/search/all_7.html | 37 + documentation/api-reference/search/all_7.js | 4 + documentation/api-reference/search/all_8.html | 37 + documentation/api-reference/search/all_8.js | 7 + documentation/api-reference/search/all_9.html | 37 + documentation/api-reference/search/all_9.js | 9 + documentation/api-reference/search/all_a.html | 37 + documentation/api-reference/search/all_a.js | 7 + documentation/api-reference/search/all_b.html | 37 + documentation/api-reference/search/all_b.js | 121 + documentation/api-reference/search/all_c.html | 37 + documentation/api-reference/search/all_c.js | 6 + documentation/api-reference/search/all_d.html | 37 + documentation/api-reference/search/all_d.js | 35 + documentation/api-reference/search/all_e.html | 37 + documentation/api-reference/search/all_e.js | 4 + .../api-reference/search/classes_0.html | 37 + .../api-reference/search/classes_0.js | 6 + .../api-reference/search/classes_1.html | 37 + .../api-reference/search/classes_1.js | 8 + .../api-reference/search/classes_2.html | 37 + .../api-reference/search/classes_2.js | 92 + .../api-reference/search/classes_3.html | 37 + .../api-reference/search/classes_3.js | 5 + documentation/api-reference/search/close.svg | 31 + .../api-reference/search/functions_0.html | 37 + .../api-reference/search/functions_0.js | 5 + .../api-reference/search/functions_1.html | 37 + .../api-reference/search/functions_1.js | 4 + .../api-reference/search/functions_2.html | 37 + .../api-reference/search/functions_2.js | 10 + .../api-reference/search/functions_3.html | 37 + .../api-reference/search/functions_3.js | 6 + .../api-reference/search/functions_4.html | 37 + .../api-reference/search/functions_4.js | 6 + .../api-reference/search/functions_5.html | 37 + .../api-reference/search/functions_5.js | 11 + .../api-reference/search/functions_6.html | 37 + .../api-reference/search/functions_6.js | 6 + .../api-reference/search/functions_7.html | 37 + .../api-reference/search/functions_7.js | 4 + .../api-reference/search/functions_8.html | 37 + .../api-reference/search/functions_8.js | 7 + .../api-reference/search/functions_9.html | 37 + .../api-reference/search/functions_9.js | 26 + .../api-reference/search/functions_a.html | 37 + .../api-reference/search/functions_a.js | 28 + .../api-reference/search/functions_b.html | 37 + .../api-reference/search/functions_b.js | 4 + .../api-reference/search/mag_sel.svg | 74 + .../api-reference/search/nomatches.html | 13 + .../api-reference/search/properties_0.html | 37 + .../api-reference/search/properties_0.js | 7 + .../api-reference/search/properties_1.html | 37 + .../api-reference/search/properties_1.js | 4 + .../api-reference/search/properties_2.html | 37 + .../api-reference/search/properties_2.js | 4 + .../api-reference/search/properties_3.html | 37 + .../api-reference/search/properties_3.js | 4 + .../api-reference/search/properties_4.html | 37 + .../api-reference/search/properties_4.js | 6 + .../api-reference/search/properties_5.html | 37 + .../api-reference/search/properties_5.js | 4 + .../api-reference/search/properties_6.html | 37 + .../api-reference/search/properties_6.js | 4 + .../api-reference/search/properties_7.html | 37 + .../api-reference/search/properties_7.js | 9 + .../api-reference/search/properties_8.html | 37 + .../api-reference/search/properties_8.js | 4 + .../api-reference/search/properties_9.html | 37 + .../api-reference/search/properties_9.js | 10 + documentation/api-reference/search/search.css | 257 ++ documentation/api-reference/search/search.js | 816 ++++++ .../api-reference/search/search_l.png | Bin 0 -> 567 bytes .../api-reference/search/search_m.png | Bin 0 -> 158 bytes .../api-reference/search/search_r.png | Bin 0 -> 553 bytes .../api-reference/search/searchdata.js | 24 + documentation/api-reference/splitbar.png | Bin 0 -> 314 bytes ..._n_s_operating_system_version-members.html | 83 + .../struct_n_s_operating_system_version.html | 96 + documentation/api-reference/sync_off.png | Bin 0 -> 853 bytes documentation/api-reference/sync_on.png | Bin 0 -> 845 bytes documentation/api-reference/tab_a.png | Bin 0 -> 142 bytes documentation/api-reference/tab_b.png | Bin 0 -> 169 bytes documentation/api-reference/tab_h.png | Bin 0 -> 177 bytes documentation/api-reference/tab_s.png | Bin 0 -> 184 bytes documentation/api-reference/tabs.css | 1 + documentation/api-reference/undocumented.json | 866 ++++++ documentation/bundles/index.md | 4 +- documentation/customization/index.md | 150 +- documentation/index.md | 2 +- documentation/package-updates/index.md | 4 +- documentation/preferences-ui/index.md | 2 +- documentation/programmatic-setup/index.md | 10 +- documentation/publishing/index.md | 6 +- documentation/upgrading/index.md | 10 +- 1061 files changed, 123108 insertions(+), 182 deletions(-) delete mode 100644 _layouts/documentation-v2.html create mode 100644 documentation/api-reference/Classes/SPUDownloadData.html create mode 100644 documentation/api-reference/Classes/SPUStandardUpdaterController.html create mode 100644 documentation/api-reference/Classes/SPUStandardUserDriver.html create mode 100644 documentation/api-reference/Classes/SPUUpdatePermissionRequest.html create mode 100644 documentation/api-reference/Classes/SPUUpdater.html create mode 100644 documentation/api-reference/Classes/SPUUpdaterSettings.html create mode 100644 documentation/api-reference/Classes/SPUUserUpdateState.html create mode 100644 documentation/api-reference/Classes/SUAppcast.html create mode 100644 documentation/api-reference/Classes/SUAppcastItem.html create mode 100644 documentation/api-reference/Classes/SUStandardVersionComparator.html create mode 100644 documentation/api-reference/Classes/SUUpdatePermissionResponse.html create mode 100644 documentation/api-reference/Classes/SUUpdater.html create mode 100644 documentation/api-reference/Constants.html create mode 100644 documentation/api-reference/Enums.html create mode 100644 documentation/api-reference/Enums/SPUNoUpdateFoundReason.html create mode 100644 documentation/api-reference/Enums/SPUUpdateCheck.html create mode 100644 documentation/api-reference/Enums/SPUUserUpdateChoice.html create mode 100644 documentation/api-reference/Enums/SPUUserUpdateStage.html create mode 100644 documentation/api-reference/Enums/SUError.html create mode 100644 documentation/api-reference/Protocols.html create mode 100644 documentation/api-reference/Protocols/SPUStandardUserDriverDelegate.html create mode 100644 documentation/api-reference/Protocols/SPUUpdaterDelegate.html create mode 100644 documentation/api-reference/Protocols/SPUUserDriver.html create mode 100644 documentation/api-reference/Protocols/SUUpdaterDelegate.html create mode 100644 documentation/api-reference/Protocols/SUVersionComparison.html create mode 100644 documentation/api-reference/Protocols/SUVersionDisplay.html create mode 100644 documentation/api-reference/_app_kit_prevention_8h_source.html create mode 100644 documentation/api-reference/_installer_progress_app_controller_8h_source.html create mode 100644 documentation/api-reference/_installer_progress_delegate_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_appcast_item_state_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_appcast_item_state_resolver_09_private_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_appcast_item_state_resolver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_automatic_update_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_basic_update_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_core_based_update_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_download_data_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_download_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_downloaded_update_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_informational_update_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_installation_type_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_installer_agent_protocol_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_installer_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_local_cache_directory_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_probe_install_status_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_probing_update_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_resumable_update_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_scheduled_update_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_secure_coding_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_skipped_update_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_standard_updater_controller_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_standard_user_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_standard_user_driver_delegate_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_u_i_based_update_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_u_r_l_request_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_update_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_update_permission_request_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_updater_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_updater_cycle_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_updater_delegate_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_updater_settings_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_updater_timer_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_user_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_user_initiated_update_driver_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_user_update_state_09_private_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_user_update_state_8h_source.html create mode 100644 documentation/api-reference/_s_p_u_x_p_c_service_info_8h_source.html create mode 100644 documentation/api-reference/_s_u_appcast_09_private_8h_source.html create mode 100644 documentation/api-reference/_s_u_appcast_8h_source.html create mode 100644 documentation/api-reference/_s_u_appcast_driver_8h_source.html create mode 100644 documentation/api-reference/_s_u_appcast_item_09_private_8h_source.html create mode 100644 documentation/api-reference/_s_u_appcast_item_8h_source.html create mode 100644 documentation/api-reference/_s_u_application_info_8h_source.html create mode 100644 documentation/api-reference/_s_u_bundle_icon_8h_source.html create mode 100644 documentation/api-reference/_s_u_constants_8h_source.html create mode 100644 documentation/api-reference/_s_u_errors_8h_source.html create mode 100644 documentation/api-reference/_s_u_export_8h_source.html create mode 100644 documentation/api-reference/_s_u_file_manager_8h_source.html create mode 100644 documentation/api-reference/_s_u_host_8h_source.html create mode 100644 documentation/api-reference/_s_u_installer_agent_initiation_protocol_8h_source.html create mode 100644 documentation/api-reference/_s_u_installer_protocol_8h_source.html create mode 100644 documentation/api-reference/_s_u_legacy_web_view_8h_source.html create mode 100644 documentation/api-reference/_s_u_localizations_8h_source.html create mode 100644 documentation/api-reference/_s_u_log_09_n_s_error_8h_source.html create mode 100644 documentation/api-reference/_s_u_log_8h_source.html create mode 100644 documentation/api-reference/_s_u_normalization_8h_source.html create mode 100644 documentation/api-reference/_s_u_operating_system_8h_source.html create mode 100644 documentation/api-reference/_s_u_phased_update_group_info_8h_source.html create mode 100644 documentation/api-reference/_s_u_signatures_8h_source.html create mode 100644 documentation/api-reference/_s_u_standard_version_comparator_8h_source.html create mode 100644 documentation/api-reference/_s_u_status_controller_8h_source.html create mode 100644 documentation/api-reference/_s_u_system_profiler_8h_source.html create mode 100644 documentation/api-reference/_s_u_touch_bar_button_group_8h_source.html create mode 100644 documentation/api-reference/_s_u_touch_bar_forward_declarations_8h_source.html create mode 100644 documentation/api-reference/_s_u_update_alert_8h_source.html create mode 100644 documentation/api-reference/_s_u_update_permission_prompt_8h_source.html create mode 100644 documentation/api-reference/_s_u_update_permission_response_8h_source.html create mode 100644 documentation/api-reference/_s_u_update_validator_8h_source.html create mode 100644 documentation/api-reference/_s_u_updater_8h_source.html create mode 100644 documentation/api-reference/_s_u_updater_delegate_8h_source.html create mode 100644 documentation/api-reference/_s_u_version_comparison_protocol_8h_source.html create mode 100644 documentation/api-reference/_s_u_version_display_protocol_8h_source.html create mode 100644 documentation/api-reference/_s_u_w_k_web_view_8h_source.html create mode 100644 documentation/api-reference/_s_u_web_view_8h_source.html create mode 100644 documentation/api-reference/_s_u_web_view_common_8h_source.html create mode 100644 documentation/api-reference/_show_installer_progress_8h_source.html create mode 100644 documentation/api-reference/_sparkle_8h_source.html create mode 100644 documentation/api-reference/_termination_listener_8h_source.html create mode 100644 documentation/api-reference/annotated.html create mode 100644 documentation/api-reference/badge.svg create mode 100644 documentation/api-reference/bc_s.png create mode 100644 documentation/api-reference/bdwn.png create mode 100644 documentation/api-reference/category_installer_progress_app_controller_07_08-members.html create mode 100644 documentation/api-reference/category_installer_progress_app_controller_07_08.html create mode 100644 documentation/api-reference/category_installer_progress_app_controller_07_08.png create mode 100644 documentation/api-reference/category_n_s_button_07_sierra_s_d_k_08-members.html create mode 100644 documentation/api-reference/category_n_s_button_07_sierra_s_d_k_08.html create mode 100644 documentation/api-reference/category_n_s_data_07_s_u_signature_verifier_08-members.html create mode 100644 documentation/api-reference/category_n_s_data_07_s_u_signature_verifier_08.html create mode 100644 documentation/api-reference/category_n_s_object_07_private_delegate_methods_08-members.html create mode 100644 documentation/api-reference/category_n_s_object_07_private_delegate_methods_08.html create mode 100644 documentation/api-reference/category_n_s_process_info_07_08-members.html create mode 100644 documentation/api-reference/category_n_s_process_info_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_appcast_item_state_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_appcast_item_state_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_automatic_update_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_automatic_update_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_automatic_update_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_basic_update_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_basic_update_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_basic_update_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_core_based_update_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_core_based_update_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_core_based_update_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_download_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_download_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_download_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_installer_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_installer_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_installer_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_probing_update_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_probing_update_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_probing_update_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_scheduled_update_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_scheduled_update_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_scheduled_update_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_u_r_l_request_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_u_r_l_request_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_updater_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_updater_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_updater_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_updater_cycle_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_updater_cycle_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_updater_settings_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_updater_settings_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_updater_timer_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_updater_timer_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_user_update_state_07_08.html create mode 100644 documentation/api-reference/category_s_p_u_user_update_state_07_08.png create mode 100644 documentation/api-reference/category_s_p_u_user_update_state_07_private_08-members.html create mode 100644 documentation/api-reference/category_s_p_u_user_update_state_07_private_08.html create mode 100644 documentation/api-reference/category_s_u_appcast_07_08-members.html create mode 100644 documentation/api-reference/category_s_u_appcast_07_08.html create mode 100644 documentation/api-reference/category_s_u_appcast_07_private_08-members.html create mode 100644 documentation/api-reference/category_s_u_appcast_07_private_08.html create mode 100644 documentation/api-reference/category_s_u_appcast_driver_07_08-members.html create mode 100644 documentation/api-reference/category_s_u_appcast_driver_07_08.html create mode 100644 documentation/api-reference/category_s_u_appcast_driver_07_08.png create mode 100644 documentation/api-reference/category_s_u_appcast_item_07_08-members.html create mode 100644 documentation/api-reference/category_s_u_appcast_item_07_08.html create mode 100644 documentation/api-reference/category_s_u_appcast_item_07_private_08-members.html create mode 100644 documentation/api-reference/category_s_u_appcast_item_07_private_08.html create mode 100644 documentation/api-reference/category_s_u_appcast_item_07_private_08.png create mode 100644 documentation/api-reference/category_s_u_host_07_08-members.html create mode 100644 documentation/api-reference/category_s_u_host_07_08.html create mode 100644 documentation/api-reference/category_s_u_status_controller_07_08-members.html create mode 100644 documentation/api-reference/category_s_u_status_controller_07_08.html create mode 100644 documentation/api-reference/category_s_u_status_controller_07_08.png create mode 100644 documentation/api-reference/category_s_u_update_validator_07_08-members.html create mode 100644 documentation/api-reference/category_s_u_update_validator_07_08.html create mode 100644 documentation/api-reference/category_show_installer_progress_07_08-members.html create mode 100644 documentation/api-reference/category_show_installer_progress_07_08.html create mode 100644 documentation/api-reference/category_termination_listener_07_08-members.html create mode 100644 documentation/api-reference/category_termination_listener_07_08.html create mode 100644 documentation/api-reference/classes.html create mode 100644 documentation/api-reference/closed.png create mode 100644 documentation/api-reference/css/highlight.css create mode 100644 documentation/api-reference/css/jazzy.css create mode 100644 documentation/api-reference/dir_3429d7ca3cc00bc309a2ec9474a0a508.html create mode 100644 documentation/api-reference/dir_9735f67ecdf0c41f32abd6fc1aab85b9.html create mode 100644 documentation/api-reference/dir_e955798b210d66193b03eac1f9f3f1d5.html create mode 100644 documentation/api-reference/doc.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Info.plist create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUDownloadData.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUStandardUpdaterController.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUStandardUserDriver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdatePermissionRequest.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdater.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdaterSettings.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUserUpdateState.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUAppcast.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUAppcastItem.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUStandardVersionComparator.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUUpdatePermissionResponse.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUUpdater.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Constants.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUNoUpdateFoundReason.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUpdateCheck.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUserUpdateChoice.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUserUpdateStage.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SUError.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUStandardUserDriverDelegate.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUUpdaterDelegate.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUUserDriver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUUpdaterDelegate.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUVersionComparison.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUVersionDisplay.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_app_kit_prevention_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_installer_progress_app_controller_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_installer_progress_delegate_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_resolver_09_private_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_resolver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_automatic_update_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_basic_update_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_core_based_update_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_download_data_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_download_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_downloaded_update_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_informational_update_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installation_type_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installer_agent_protocol_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installer_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_local_cache_directory_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_probe_install_status_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_probing_update_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_resumable_update_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_scheduled_update_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_secure_coding_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_skipped_update_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_updater_controller_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_user_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_user_driver_delegate_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_u_i_based_update_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_u_r_l_request_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_update_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_update_permission_request_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_cycle_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_delegate_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_settings_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_timer_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_initiated_update_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_update_state_09_private_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_update_state_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_x_p_c_service_info_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_09_private_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_driver_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_item_09_private_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_item_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_application_info_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_bundle_icon_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_constants_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_errors_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_export_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_file_manager_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_host_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_installer_agent_initiation_protocol_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_installer_protocol_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_legacy_web_view_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_localizations_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_log_09_n_s_error_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_log_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_normalization_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_operating_system_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_phased_update_group_info_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_signatures_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_standard_version_comparator_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_status_controller_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_system_profiler_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_touch_bar_button_group_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_touch_bar_forward_declarations_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_alert_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_permission_prompt_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_permission_response_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_validator_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_updater_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_updater_delegate_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_version_comparison_protocol_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_version_display_protocol_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_w_k_web_view_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_web_view_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_web_view_common_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_show_installer_progress_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_sparkle_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_termination_listener_8h_source.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/annotated.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/badge.svg create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/bc_s.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/bdwn.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_installer_progress_app_controller_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_installer_progress_app_controller_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_installer_progress_app_controller_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_button_07_sierra_s_d_k_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_button_07_sierra_s_d_k_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_data_07_s_u_signature_verifier_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_data_07_s_u_signature_verifier_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_object_07_private_delegate_methods_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_object_07_private_delegate_methods_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_process_info_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_process_info_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_appcast_item_state_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_appcast_item_state_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_basic_update_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_basic_update_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_basic_update_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_core_based_update_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_core_based_update_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_core_based_update_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_download_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_download_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_download_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_scheduled_update_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_scheduled_update_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_scheduled_update_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_r_l_request_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_r_l_request_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_cycle_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_cycle_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_settings_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_settings_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_timer_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_timer_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_private_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_private_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_private_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_private_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_host_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_host_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_update_validator_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_update_validator_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_show_installer_progress_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_show_installer_progress_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_termination_listener_07_08-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_termination_listener_07_08.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/classes.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/closed.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/css/highlight.css create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/css/jazzy.css create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_3429d7ca3cc00bc309a2ec9474a0a508.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_9735f67ecdf0c41f32abd6fc1aab85b9.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_e955798b210d66193b03eac1f9f3f1d5.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doc.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doxygen.css create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doxygen.svg create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dynsections.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/files.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/folderclosed.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/folderopen.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions_func.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions_prop.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/hierarchy.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/icon_32x32@2x.png create mode 100755 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/img/carat.png create mode 100755 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/img/dash.png create mode 100755 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/img/gh.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/img/spinner.gif create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/index.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state_resolver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state_resolver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state_resolver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_data-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_data.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_data.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_scheduled_update_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_scheduled_update_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_scheduled_update_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_updater_controller-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_updater_controller.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_updater_controller.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_user_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_user_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_user_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_i_based_update_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_i_based_update_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_i_based_update_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_update_state-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_update_state.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_update_state.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_item-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_item.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_item.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_application_info-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_application_info.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_application_info.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_phased_update_group_info-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_phased_update_group_info.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_phased_update_group_info.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_standard_version_comparator-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_standard_version_comparator.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_standard_version_comparator.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_status_controller-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_status_controller.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_status_controller.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_validator-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_validator.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_validator.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_show_installer_progress-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_show_installer_progress.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_show_installer_progress.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/jquery.js create mode 100755 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jazzy.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jazzy.search.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jquery.min.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/lunr.min.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/typeahead.jquery.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/menu.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/menudata.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/nav_f.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/nav_g.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/nav_h.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/open.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_installer_progress_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_installer_progress_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_installer_progress_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_core_based_update_driver_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_core_based_update_driver_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_core_based_update_driver_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_download_driver_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_download_driver_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_download_driver_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_agent_protocol-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_agent_protocol-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_agent_protocol-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_driver_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_driver_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_driver_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_standard_user_driver_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_standard_user_driver_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_standard_user_driver_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_u_i_based_update_driver_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_u_i_based_update_driver_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_u_i_based_update_driver_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_update_driver-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_update_driver-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_update_driver-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_agent_initiation_protocol-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_agent_initiation_protocol-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_display-p-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_display-p.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search.json create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_0.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_0.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_1.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_1.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_2.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_2.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_3.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_3.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_4.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_4.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_5.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_5.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_6.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_6.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_7.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_7.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_8.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_8.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_9.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_9.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_a.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_a.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_b.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_b.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_c.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_c.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_d.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_d.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_e.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_e.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_0.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_0.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_1.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_1.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_2.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_2.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_3.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_3.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/close.svg create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_0.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_0.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_1.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_1.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_2.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_2.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_3.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_3.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_4.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_4.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_5.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_5.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_6.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_6.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_7.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_7.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_8.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_8.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_9.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_9.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_a.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_a.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_b.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_b.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/mag_sel.svg create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/nomatches.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_0.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_0.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_1.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_1.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_2.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_2.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_3.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_3.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_4.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_4.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_5.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_5.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_6.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_6.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_7.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_7.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_8.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_8.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_9.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_9.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search.css create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search_l.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search_m.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search_r.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/searchdata.js create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/splitbar.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/struct_n_s_operating_system_version-members.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/struct_n_s_operating_system_version.html create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/sync_off.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/sync_on.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tab_a.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tab_b.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tab_h.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tab_s.png create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tabs.css create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/undocumented.json create mode 100644 documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/docSet.dsidx create mode 100644 documentation/api-reference/docsets/Sparkle.tgz create mode 100644 documentation/api-reference/doxygen.css create mode 100644 documentation/api-reference/doxygen.svg create mode 100644 documentation/api-reference/dynsections.js create mode 100644 documentation/api-reference/files.html create mode 100644 documentation/api-reference/folderclosed.png create mode 100644 documentation/api-reference/folderopen.png create mode 100644 documentation/api-reference/functions.html create mode 100644 documentation/api-reference/functions_func.html create mode 100644 documentation/api-reference/functions_prop.html create mode 100644 documentation/api-reference/hierarchy.html create mode 100644 documentation/api-reference/icon_32x32@2x.png create mode 100755 documentation/api-reference/img/carat.png create mode 100755 documentation/api-reference/img/dash.png create mode 100755 documentation/api-reference/img/gh.png create mode 100644 documentation/api-reference/img/spinner.gif create mode 100644 documentation/api-reference/index.html create mode 100644 documentation/api-reference/interface_installer_progress_app_controller-members.html create mode 100644 documentation/api-reference/interface_installer_progress_app_controller.html create mode 100644 documentation/api-reference/interface_installer_progress_app_controller.png create mode 100644 documentation/api-reference/interface_s_p_u_appcast_item_state-members.html create mode 100644 documentation/api-reference/interface_s_p_u_appcast_item_state.html create mode 100644 documentation/api-reference/interface_s_p_u_appcast_item_state.png create mode 100644 documentation/api-reference/interface_s_p_u_appcast_item_state_resolver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_appcast_item_state_resolver.html create mode 100644 documentation/api-reference/interface_s_p_u_appcast_item_state_resolver.png create mode 100644 documentation/api-reference/interface_s_p_u_automatic_update_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_automatic_update_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_automatic_update_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_basic_update_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_basic_update_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_basic_update_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_core_based_update_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_core_based_update_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_core_based_update_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_download_data-members.html create mode 100644 documentation/api-reference/interface_s_p_u_download_data.html create mode 100644 documentation/api-reference/interface_s_p_u_download_data.png create mode 100644 documentation/api-reference/interface_s_p_u_download_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_download_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_download_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_downloaded_update-members.html create mode 100644 documentation/api-reference/interface_s_p_u_downloaded_update.html create mode 100644 documentation/api-reference/interface_s_p_u_downloaded_update.png create mode 100644 documentation/api-reference/interface_s_p_u_informational_update-members.html create mode 100644 documentation/api-reference/interface_s_p_u_informational_update.html create mode 100644 documentation/api-reference/interface_s_p_u_informational_update.png create mode 100644 documentation/api-reference/interface_s_p_u_installer_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_installer_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_installer_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_local_cache_directory-members.html create mode 100644 documentation/api-reference/interface_s_p_u_local_cache_directory.html create mode 100644 documentation/api-reference/interface_s_p_u_local_cache_directory.png create mode 100644 documentation/api-reference/interface_s_p_u_probe_install_status-members.html create mode 100644 documentation/api-reference/interface_s_p_u_probe_install_status.html create mode 100644 documentation/api-reference/interface_s_p_u_probe_install_status.png create mode 100644 documentation/api-reference/interface_s_p_u_probing_update_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_probing_update_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_probing_update_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_release_notes_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_release_notes_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_release_notes_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_scheduled_update_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_scheduled_update_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_scheduled_update_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_skipped_update-members.html create mode 100644 documentation/api-reference/interface_s_p_u_skipped_update.html create mode 100644 documentation/api-reference/interface_s_p_u_skipped_update.png create mode 100644 documentation/api-reference/interface_s_p_u_standard_updater_controller-members.html create mode 100644 documentation/api-reference/interface_s_p_u_standard_updater_controller.html create mode 100644 documentation/api-reference/interface_s_p_u_standard_updater_controller.png create mode 100644 documentation/api-reference/interface_s_p_u_standard_user_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_standard_user_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_standard_user_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_u_i_based_update_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_u_i_based_update_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_u_i_based_update_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_u_r_l_request-members.html create mode 100644 documentation/api-reference/interface_s_p_u_u_r_l_request.html create mode 100644 documentation/api-reference/interface_s_p_u_u_r_l_request.png create mode 100644 documentation/api-reference/interface_s_p_u_update_permission_request-members.html create mode 100644 documentation/api-reference/interface_s_p_u_update_permission_request.html create mode 100644 documentation/api-reference/interface_s_p_u_update_permission_request.png create mode 100644 documentation/api-reference/interface_s_p_u_updater-members.html create mode 100644 documentation/api-reference/interface_s_p_u_updater.html create mode 100644 documentation/api-reference/interface_s_p_u_updater.png create mode 100644 documentation/api-reference/interface_s_p_u_updater_cycle-members.html create mode 100644 documentation/api-reference/interface_s_p_u_updater_cycle.html create mode 100644 documentation/api-reference/interface_s_p_u_updater_cycle.png create mode 100644 documentation/api-reference/interface_s_p_u_updater_settings-members.html create mode 100644 documentation/api-reference/interface_s_p_u_updater_settings.html create mode 100644 documentation/api-reference/interface_s_p_u_updater_settings.png create mode 100644 documentation/api-reference/interface_s_p_u_updater_timer-members.html create mode 100644 documentation/api-reference/interface_s_p_u_updater_timer.html create mode 100644 documentation/api-reference/interface_s_p_u_updater_timer.png create mode 100644 documentation/api-reference/interface_s_p_u_user_initiated_update_driver-members.html create mode 100644 documentation/api-reference/interface_s_p_u_user_initiated_update_driver.html create mode 100644 documentation/api-reference/interface_s_p_u_user_initiated_update_driver.png create mode 100644 documentation/api-reference/interface_s_p_u_user_update_state-members.html create mode 100644 documentation/api-reference/interface_s_p_u_user_update_state.html create mode 100644 documentation/api-reference/interface_s_p_u_user_update_state.png create mode 100644 documentation/api-reference/interface_s_u_appcast-members.html create mode 100644 documentation/api-reference/interface_s_u_appcast.html create mode 100644 documentation/api-reference/interface_s_u_appcast.png create mode 100644 documentation/api-reference/interface_s_u_appcast_driver-members.html create mode 100644 documentation/api-reference/interface_s_u_appcast_driver.html create mode 100644 documentation/api-reference/interface_s_u_appcast_driver.png create mode 100644 documentation/api-reference/interface_s_u_appcast_item-members.html create mode 100644 documentation/api-reference/interface_s_u_appcast_item.html create mode 100644 documentation/api-reference/interface_s_u_appcast_item.png create mode 100644 documentation/api-reference/interface_s_u_application_info-members.html create mode 100644 documentation/api-reference/interface_s_u_application_info.html create mode 100644 documentation/api-reference/interface_s_u_application_info.png create mode 100644 documentation/api-reference/interface_s_u_bundle_icon-members.html create mode 100644 documentation/api-reference/interface_s_u_bundle_icon.html create mode 100644 documentation/api-reference/interface_s_u_bundle_icon.png create mode 100644 documentation/api-reference/interface_s_u_file_manager-members.html create mode 100644 documentation/api-reference/interface_s_u_file_manager.html create mode 100644 documentation/api-reference/interface_s_u_file_manager.png create mode 100644 documentation/api-reference/interface_s_u_host-members.html create mode 100644 documentation/api-reference/interface_s_u_host.html create mode 100644 documentation/api-reference/interface_s_u_host.png create mode 100644 documentation/api-reference/interface_s_u_operating_system-members.html create mode 100644 documentation/api-reference/interface_s_u_operating_system.html create mode 100644 documentation/api-reference/interface_s_u_operating_system.png create mode 100644 documentation/api-reference/interface_s_u_phased_update_group_info-members.html create mode 100644 documentation/api-reference/interface_s_u_phased_update_group_info.html create mode 100644 documentation/api-reference/interface_s_u_phased_update_group_info.png create mode 100644 documentation/api-reference/interface_s_u_public_keys-members.html create mode 100644 documentation/api-reference/interface_s_u_public_keys.html create mode 100644 documentation/api-reference/interface_s_u_public_keys.png create mode 100644 documentation/api-reference/interface_s_u_signatures-members.html create mode 100644 documentation/api-reference/interface_s_u_signatures.html create mode 100644 documentation/api-reference/interface_s_u_signatures.png create mode 100644 documentation/api-reference/interface_s_u_standard_version_comparator-members.html create mode 100644 documentation/api-reference/interface_s_u_standard_version_comparator.html create mode 100644 documentation/api-reference/interface_s_u_standard_version_comparator.png create mode 100644 documentation/api-reference/interface_s_u_status_controller-members.html create mode 100644 documentation/api-reference/interface_s_u_status_controller.html create mode 100644 documentation/api-reference/interface_s_u_status_controller.png create mode 100644 documentation/api-reference/interface_s_u_system_profiler-members.html create mode 100644 documentation/api-reference/interface_s_u_system_profiler.html create mode 100644 documentation/api-reference/interface_s_u_system_profiler.png create mode 100644 documentation/api-reference/interface_s_u_touch_bar_button_group-members.html create mode 100644 documentation/api-reference/interface_s_u_touch_bar_button_group.html create mode 100644 documentation/api-reference/interface_s_u_touch_bar_button_group.png create mode 100644 documentation/api-reference/interface_s_u_update_permission_response-members.html create mode 100644 documentation/api-reference/interface_s_u_update_permission_response.html create mode 100644 documentation/api-reference/interface_s_u_update_permission_response.png create mode 100644 documentation/api-reference/interface_s_u_update_validator-members.html create mode 100644 documentation/api-reference/interface_s_u_update_validator.html create mode 100644 documentation/api-reference/interface_s_u_update_validator.png create mode 100644 documentation/api-reference/interface_show_installer_progress-members.html create mode 100644 documentation/api-reference/interface_show_installer_progress.html create mode 100644 documentation/api-reference/interface_show_installer_progress.png create mode 100644 documentation/api-reference/interface_termination_listener-members.html create mode 100644 documentation/api-reference/interface_termination_listener.html create mode 100644 documentation/api-reference/interface_termination_listener.png create mode 100644 documentation/api-reference/jquery.js create mode 100755 documentation/api-reference/js/jazzy.js create mode 100644 documentation/api-reference/js/jazzy.search.js create mode 100644 documentation/api-reference/js/jquery.min.js create mode 100644 documentation/api-reference/js/lunr.min.js create mode 100644 documentation/api-reference/js/typeahead.jquery.js create mode 100644 documentation/api-reference/menu.js create mode 100644 documentation/api-reference/menudata.js create mode 100644 documentation/api-reference/nav_f.png create mode 100644 documentation/api-reference/nav_g.png create mode 100644 documentation/api-reference/nav_h.png create mode 100644 documentation/api-reference/open.png create mode 100644 documentation/api-reference/protocol_installer_progress_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_installer_progress_delegate-p.html create mode 100644 documentation/api-reference/protocol_installer_progress_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_core_based_update_driver_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_core_based_update_driver_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_core_based_update_driver_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_download_driver_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_download_driver_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_download_driver_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_installer_agent_protocol-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_installer_agent_protocol-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_installer_agent_protocol-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_installer_driver_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_installer_driver_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_installer_driver_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_resumable_update-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_resumable_update-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_resumable_update-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_standard_user_driver_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_standard_user_driver_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_standard_user_driver_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_u_i_based_update_driver_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_u_i_based_update_driver_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_u_i_based_update_driver_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_update_driver-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_update_driver-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_update_driver-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_updater_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_updater_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_updater_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_p_u_user_driver-p-members.html create mode 100644 documentation/api-reference/protocol_s_p_u_user_driver-p.html create mode 100644 documentation/api-reference/protocol_s_p_u_user_driver-p.png create mode 100644 documentation/api-reference/protocol_s_u_appcast_driver_delegate-p-members.html create mode 100644 documentation/api-reference/protocol_s_u_appcast_driver_delegate-p.html create mode 100644 documentation/api-reference/protocol_s_u_appcast_driver_delegate-p.png create mode 100644 documentation/api-reference/protocol_s_u_installer_agent_initiation_protocol-p-members.html create mode 100644 documentation/api-reference/protocol_s_u_installer_agent_initiation_protocol-p.html create mode 100644 documentation/api-reference/protocol_s_u_installer_protocol-p-members.html create mode 100644 documentation/api-reference/protocol_s_u_installer_protocol-p.html create mode 100644 documentation/api-reference/protocol_s_u_installer_protocol-p.png create mode 100644 documentation/api-reference/protocol_s_u_version_comparison-p-members.html create mode 100644 documentation/api-reference/protocol_s_u_version_comparison-p.html create mode 100644 documentation/api-reference/protocol_s_u_version_comparison-p.png create mode 100644 documentation/api-reference/protocol_s_u_version_display-p-members.html create mode 100644 documentation/api-reference/protocol_s_u_version_display-p.html create mode 100644 documentation/api-reference/search.json create mode 100644 documentation/api-reference/search/all_0.html create mode 100644 documentation/api-reference/search/all_0.js create mode 100644 documentation/api-reference/search/all_1.html create mode 100644 documentation/api-reference/search/all_1.js create mode 100644 documentation/api-reference/search/all_2.html create mode 100644 documentation/api-reference/search/all_2.js create mode 100644 documentation/api-reference/search/all_3.html create mode 100644 documentation/api-reference/search/all_3.js create mode 100644 documentation/api-reference/search/all_4.html create mode 100644 documentation/api-reference/search/all_4.js create mode 100644 documentation/api-reference/search/all_5.html create mode 100644 documentation/api-reference/search/all_5.js create mode 100644 documentation/api-reference/search/all_6.html create mode 100644 documentation/api-reference/search/all_6.js create mode 100644 documentation/api-reference/search/all_7.html create mode 100644 documentation/api-reference/search/all_7.js create mode 100644 documentation/api-reference/search/all_8.html create mode 100644 documentation/api-reference/search/all_8.js create mode 100644 documentation/api-reference/search/all_9.html create mode 100644 documentation/api-reference/search/all_9.js create mode 100644 documentation/api-reference/search/all_a.html create mode 100644 documentation/api-reference/search/all_a.js create mode 100644 documentation/api-reference/search/all_b.html create mode 100644 documentation/api-reference/search/all_b.js create mode 100644 documentation/api-reference/search/all_c.html create mode 100644 documentation/api-reference/search/all_c.js create mode 100644 documentation/api-reference/search/all_d.html create mode 100644 documentation/api-reference/search/all_d.js create mode 100644 documentation/api-reference/search/all_e.html create mode 100644 documentation/api-reference/search/all_e.js create mode 100644 documentation/api-reference/search/classes_0.html create mode 100644 documentation/api-reference/search/classes_0.js create mode 100644 documentation/api-reference/search/classes_1.html create mode 100644 documentation/api-reference/search/classes_1.js create mode 100644 documentation/api-reference/search/classes_2.html create mode 100644 documentation/api-reference/search/classes_2.js create mode 100644 documentation/api-reference/search/classes_3.html create mode 100644 documentation/api-reference/search/classes_3.js create mode 100644 documentation/api-reference/search/close.svg create mode 100644 documentation/api-reference/search/functions_0.html create mode 100644 documentation/api-reference/search/functions_0.js create mode 100644 documentation/api-reference/search/functions_1.html create mode 100644 documentation/api-reference/search/functions_1.js create mode 100644 documentation/api-reference/search/functions_2.html create mode 100644 documentation/api-reference/search/functions_2.js create mode 100644 documentation/api-reference/search/functions_3.html create mode 100644 documentation/api-reference/search/functions_3.js create mode 100644 documentation/api-reference/search/functions_4.html create mode 100644 documentation/api-reference/search/functions_4.js create mode 100644 documentation/api-reference/search/functions_5.html create mode 100644 documentation/api-reference/search/functions_5.js create mode 100644 documentation/api-reference/search/functions_6.html create mode 100644 documentation/api-reference/search/functions_6.js create mode 100644 documentation/api-reference/search/functions_7.html create mode 100644 documentation/api-reference/search/functions_7.js create mode 100644 documentation/api-reference/search/functions_8.html create mode 100644 documentation/api-reference/search/functions_8.js create mode 100644 documentation/api-reference/search/functions_9.html create mode 100644 documentation/api-reference/search/functions_9.js create mode 100644 documentation/api-reference/search/functions_a.html create mode 100644 documentation/api-reference/search/functions_a.js create mode 100644 documentation/api-reference/search/functions_b.html create mode 100644 documentation/api-reference/search/functions_b.js create mode 100644 documentation/api-reference/search/mag_sel.svg create mode 100644 documentation/api-reference/search/nomatches.html create mode 100644 documentation/api-reference/search/properties_0.html create mode 100644 documentation/api-reference/search/properties_0.js create mode 100644 documentation/api-reference/search/properties_1.html create mode 100644 documentation/api-reference/search/properties_1.js create mode 100644 documentation/api-reference/search/properties_2.html create mode 100644 documentation/api-reference/search/properties_2.js create mode 100644 documentation/api-reference/search/properties_3.html create mode 100644 documentation/api-reference/search/properties_3.js create mode 100644 documentation/api-reference/search/properties_4.html create mode 100644 documentation/api-reference/search/properties_4.js create mode 100644 documentation/api-reference/search/properties_5.html create mode 100644 documentation/api-reference/search/properties_5.js create mode 100644 documentation/api-reference/search/properties_6.html create mode 100644 documentation/api-reference/search/properties_6.js create mode 100644 documentation/api-reference/search/properties_7.html create mode 100644 documentation/api-reference/search/properties_7.js create mode 100644 documentation/api-reference/search/properties_8.html create mode 100644 documentation/api-reference/search/properties_8.js create mode 100644 documentation/api-reference/search/properties_9.html create mode 100644 documentation/api-reference/search/properties_9.js create mode 100644 documentation/api-reference/search/search.css create mode 100644 documentation/api-reference/search/search.js create mode 100644 documentation/api-reference/search/search_l.png create mode 100644 documentation/api-reference/search/search_m.png create mode 100644 documentation/api-reference/search/search_r.png create mode 100644 documentation/api-reference/search/searchdata.js create mode 100644 documentation/api-reference/splitbar.png create mode 100644 documentation/api-reference/struct_n_s_operating_system_version-members.html create mode 100644 documentation/api-reference/struct_n_s_operating_system_version.html create mode 100644 documentation/api-reference/sync_off.png create mode 100644 documentation/api-reference/sync_on.png create mode 100644 documentation/api-reference/tab_a.png create mode 100644 documentation/api-reference/tab_b.png create mode 100644 documentation/api-reference/tab_h.png create mode 100644 documentation/api-reference/tab_s.png create mode 100644 documentation/api-reference/tabs.css create mode 100644 documentation/api-reference/undocumented.json diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml index 80666d3..848d2be 100644 --- a/.github/workflows/jekyll.yml +++ b/.github/workflows/jekyll.yml @@ -14,7 +14,9 @@ jobs: steps: - uses: actions/checkout@v2 - name: Build the site in the jekyll/builder container + # We will need to remove api-reference from XML validation. Some issues are incorect and others we need to get resolved upstream. run: | + rm -rf documentation/api-reference docker run \ -v ${{ github.workspace }}:/srv/jekyll -v ${{ github.workspace }}/_site:/srv/jekyll/_site \ jekyll/builder:latest /bin/bash -c "chmod 777 /srv/jekyll && jekyll build --future && find /srv/jekyll/_site -type f -name '*.html' -exec xmllint --noout {} \; && wget https://github.com/validator/validator/releases/download/18.11.5/vnu.jar_18.11.5.zip && unzip -p vnu.jar_18.11.5.zip dist/vnu.jar > vnu.jar && java -jar vnu.jar --skip-non-html /srv/jekyll/_site" diff --git a/_layouts/documentation-v2.html b/_layouts/documentation-v2.html deleted file mode 100644 index 62615f4..0000000 --- a/_layouts/documentation-v2.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default ---- -
- -
-
- {{ content }} -
-
-
diff --git a/documentation/api-reference/Classes/SPUDownloadData.html b/documentation/api-reference/Classes/SPUDownloadData.html new file mode 100644 index 0000000..bdf3473 --- /dev/null +++ b/documentation/api-reference/Classes/SPUDownloadData.html @@ -0,0 +1,364 @@ + + + + SPUDownloadData Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUDownloadData

+
+
+

Objective-C

+
@interface SPUDownloadData : NSObject <NSSecureCoding>
+ +
+
+

Swift

+
class SPUDownloadData : NSObject, NSSecureCoding
+ +
+
+

A class for containing downloaded data along with some information about it.

+ +
+
+
+
    +
  • +
    + + + + data + +
    +
    +
    +
    +
    +
    +

    The raw data that was downloaded.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSData *_Nonnull data;
    + +
    +
    +

    Swift

    +
    var data: Data { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + URL + +
    +
    +
    +
    +
    +
    +

    The URL that was fetched from.

    + +

    This may be different from the URL in the request if there were redirects involved.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly) NSURL *_Nonnull URL;
    + +
    +
    +

    Swift

    +
    var url: URL { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textEncodingName + +
    +
    +
    +
    +
    +
    +

    The IANA charset encoding name if available. Eg: “utf-8”

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly, nullable) NSString *textEncodingName;
    + +
    +
    +

    Swift

    +
    var textEncodingName: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MIMEType + +
    +
    +
    +
    +
    +
    +

    The MIME type if available. Eg: “text/plain”

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly, nullable) NSString *MIMEType;
    + +
    +
    +

    Swift

    +
    var mimeType: String? { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SPUStandardUpdaterController.html b/documentation/api-reference/Classes/SPUStandardUpdaterController.html new file mode 100644 index 0000000..7f3d5ee --- /dev/null +++ b/documentation/api-reference/Classes/SPUStandardUpdaterController.html @@ -0,0 +1,549 @@ + + + + SPUStandardUpdaterController Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUStandardUpdaterController

+
+
+

Objective-C

+
@interface SPUStandardUpdaterController : NSObject
+ +
+
+

Swift

+
class SPUStandardUpdaterController : NSObject
+ +
+
+

A controller class that instantiates a SPUUpdater and allows binding UI to its updater settings.

+ +

This class can be instantiated in a nib or created programatically using -initWithUpdaterDelegate:userDriverDelegate: or -initWithStartingUpdater:updaterDelegate:userDriverDelegate:.

+ +

The controller’s updater targets the application’s main bundle and uses Sparkle’s standard user interface. +Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programatically too.

+ +

The controller creates an SPUUpdater instance using a SPUStandardUserDriver and allows hooking up the check for updates action and handling menu item validation. +It also allows hooking up the updater’s and user driver’s delegates.

+ +

If you need more control over what bundle you want to update, or you want to provide a custom user interface (via SPUUserDriver), please use SPUUpdater directly instead.

+ +
+
+
+
    +
  • +
    + + + + updaterDelegate + +
    +
    +
    +
    +
    +
    +

    Interface builder outlet for the updater’s delegate.

    + +

    This property should only be set using Interface Builder by creating a connection using the outlet.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, weak, nullable) id<SPUUpdaterDelegate> updaterDelegate;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userDriverDelegate + +
    +
    +
    +
    +
    +
    +

    Interface builder outlet for the user driver’s delegate.

    + +

    This property should only be set using Interface Builder by creating a connection using the outlet.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, weak, nullable) id<SPUStandardUserDriverDelegate> userDriverDelegate;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updater + +
    +
    +
    +
    +
    +
    +

    Accessible property for the updater. Some properties on the updater can be binded via KVO

    + +

    When instantiated from a nib, don’t perform update checks before the application has finished launching in a MainMenu nib (i.e applicationDidFinishLaunching:) or before the corresponding window/view controller has been loaded (i.e, windowDidLoad or viewDidLoad). The updater is not guaranteed to be started yet before these points.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) SPUUpdater *_Nonnull updater;
    + +
    +
    +

    Swift

    +
    var updater: SPUUpdater { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userDriver + +
    +
    +
    +
    +
    +
    +

    Accessible property for the updater’s user driver.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) SPUStandardUserDriver *_Nonnull userDriver;
    + +
    +
    +

    Swift

    +
    var userDriver: SPUStandardUserDriver { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Create a new SPUStandardUpdaterController from a nib.

    + +

    You cannot call this initializer directly. You must instantiate a SPUStandardUpdaterController inside of a nib (typically the MainMenu nib) to use it.

    + +

    To create a SPUStandardUpdaterController programatically, use -initWithUpdaterDelegate:userDriverDelegate: or -initWithStartingUpdater:updaterDelegate:userDriverDelegate: instead.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)init;
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create a new SPUStandardUpdaterController programmatically.

    + +

    The updater is started automatically. See -startUpdater for more information.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)
    +    initWithUpdaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate
    +         userDriverDelegate:
    +             (nullable id<SPUStandardUserDriverDelegate>)userDriverDelegate;
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create a new SPUStandardUpdaterController programmatically allowing you to specify whether or not to start the updater immediately.

    + +

    You can specify whether or not you want to start the updater immediately. +If you do not start the updater, you must invoke -startUpdater at a later time to start it.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)
    +    initWithStartingUpdater:(BOOL)startUpdater
    +            updaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate
    +         userDriverDelegate:
    +             (nullable id<SPUStandardUserDriverDelegate>)userDriverDelegate;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -startUpdater + +
    +
    +
    +
    +
    +
    +

    Starts the updater if it has not already been started.

    + +

    You should only call this method yourself if you opted out of starting the updater on initialization. +Hence, do not call this yourself if you are instantiating this controller from a nib.

    + +

    This invokes -[SPUUpdater startUpdater:]. If the application is misconfigured with Sparkle, an error is logged and an alert is shown to the user (after a few seconds) to contact the developer. +If you want more control over this behavior, you can create your own SPUUpdater instead of using SPUStandardUpdaterController.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)startUpdater;
    + +
    +
    +

    Swift

    +
    func startUpdater()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -checkForUpdates: + +
    +
    +
    +
    +
    +
    +

    Explicitly checks for updates and displays a progress dialog while doing so.

    + +

    This method is meant for a main menu item. +Connect any NSMenuItem to this action in Interface Builder or programmatically, +and Sparkle will check for updates and report back its findings verbosely when it is invoked.

    + +

    When the target/action of the menu item is set to this controller and this method, +this controller also handles enabling/disabling the menu item by checking +-[SPUUpdater canCheckForUpdates]

    + +

    This action checks updates by invoking -[SPUUpdater checkForUpdates]

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdates:(nullable id)sender;
    + +
    +
    +

    Swift

    +
    @IBAction func checkForUpdates(_ sender: Any?)
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SPUStandardUserDriver.html b/documentation/api-reference/Classes/SPUStandardUserDriver.html new file mode 100644 index 0000000..3b7de4b --- /dev/null +++ b/documentation/api-reference/Classes/SPUStandardUserDriver.html @@ -0,0 +1,325 @@ + + + + SPUStandardUserDriver Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUStandardUserDriver

+
+
+

Objective-C

+
@interface SPUStandardUserDriver : NSObject <SPUUserDriver>
+ +
+
+

Swift

+
class SPUStandardUserDriver : NSObject, SPUUserDriver
+ +
+
+

Sparkle’s standard built-in user driver for updater interactions

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a Sparkle’s standard user driver for user update interactions

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)
    +    initWithHostBundle:(nonnull NSBundle *)hostBundle
    +              delegate:(nullable id<SPUStandardUserDriverDelegate>)delegate;
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + hostBundle + + +
    +

    The target bundle of the host that is being updated.

    +
    +
    + + delegate + + +
    +

    The optional delegate to this user driver.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Use initWithHostBundle:delegate: instead.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)init;
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SPUUpdatePermissionRequest.html b/documentation/api-reference/Classes/SPUUpdatePermissionRequest.html new file mode 100644 index 0000000..de7af8a --- /dev/null +++ b/documentation/api-reference/Classes/SPUUpdatePermissionRequest.html @@ -0,0 +1,318 @@ + + + + SPUUpdatePermissionRequest Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdatePermissionRequest

+
+
+

Objective-C

+
@interface SPUUpdatePermissionRequest : NSObject <NSSecureCoding>
+ +
+
+

Swift

+
class SPUUpdatePermissionRequest : NSObject, NSSecureCoding
+ +
+
+

This class represents information needed to make a permission request for checking updates.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a new update permission request instance.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)initWithSystemProfile:
    +    (nonnull NSArray<NSDictionary<NSString *, NSString *> *> *)systemProfile;
    + +
    +
    +

    Swift

    +
    init(systemProfile: [[String : String]])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + systemProfile + + +
    +

    The system profile information.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + systemProfile + +
    +
    +
    +
    +
    +
    +

    A read-only property for the user’s system profile.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSArray<NSDictionary<NSString *, NSString *> *> *_Nonnull systemProfile;
    + +
    +
    +

    Swift

    +
    var systemProfile: [[String : String]] { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SPUUpdater.html b/documentation/api-reference/Classes/SPUUpdater.html new file mode 100644 index 0000000..d672f91 --- /dev/null +++ b/documentation/api-reference/Classes/SPUUpdater.html @@ -0,0 +1,1055 @@ + + + + SPUUpdater Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdater

+
+
+

Objective-C

+
@interface SPUUpdater : NSObject
+ +
+
+

Swift

+
class SPUUpdater : NSObject
+ +
+
+

The main API in Sparkle for controlling the update mechanism.

+ +

This class is used to configure the update parameters as well as manually and automatically schedule and control checks for updates.

+ +

For convenience, you can create a standard or nib instantiable updater by using SPUStandardUpdaterController.

+ +

Prefer to set initial properties in your bundle’s Info.plist as described in Customizing Sparkle.

+ +

Otherwise only if you need dynamic behavior (eg. for user preferences) should you set properties on the updater such as:

+ +
    +
  • automaticallyChecksForUpdates
  • +
  • updateCheckInterval
  • +
  • automaticallyDownloadsUpdates
  • +
  • feedURL
  • +
+ +

Please view the documentation on each of these properties for more detail if you are to configure them dynamically.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a new SPUUpdater instance

    + +

    This creates an updater, but to start it and schedule update checks -startUpdater: needs to be invoked first.

    + +

    Related: See SPUStandardUpdaterController which wraps a SPUUpdater instance and is suitable for instantiating inside of nib files.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)initWithHostBundle:(nonnull NSBundle *)hostBundle
    +                         applicationBundle:(nonnull NSBundle *)applicationBundle
    +                                userDriver:(nonnull id<SPUUserDriver>)userDriver
    +                                  delegate:
    +                                      (nullable id<SPUUpdaterDelegate>)delegate;
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + hostBundle + + +
    +

    The bundle that should be targetted for updating.

    +
    +
    + + applicationBundle + + +
    +

    The application bundle that should be waited for termination and relaunched (unless overridden). Usually this can be the same as hostBundle. This may differ when updating a plug-in or other non-application bundle.

    +
    +
    + + userDriver + + +
    +

    The user driver that Sparkle uses for user update interaction.

    +
    +
    + + delegate + + +
    +

    The delegate for SPUUpdater.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standard adapter instead.

    + +

    If you want to drop an updater into a nib, use SPUStandardUpdaterController.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)init;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -startUpdater: + +
    +
    +
    +
    +
    +
    +

    Starts the updater.

    + +

    This method first checks if Sparkle is configured properly. A valid feed URL should be set before this method is invoked.

    + +

    If the configuration is valid, an update cycle is started in the next main runloop cycle. +During this cycle, a permission prompt may be brought up (if needed) for checking if the user wants automatic update checking. +Otherwise if automatic update checks are enabled, a scheduled update alert may be brought up if enough time has elapsed since the last check. +See automaticallyChecksForUpdates for more information.

    + +

    After starting the updater and before the next runloop cycle, one of -checkForUpdates, -checkForUpdatesInBackground, or -checkForUpdateInformation can be invoked. +This may be useful if you want to check for updates immediately or without showing a potential permission prompt.

    + +

    If the updater cannot be started (i.e, due to a configuration issue in the application), you may want to fall back appropriately. +For example, the standard updater controller (SPUStandardUpdaterController) alerts the user that the app is misconfigured and to contact the developer.

    + +

    This must be called on the main thread.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)startUpdater:(NSError *_Nullable *_Nullable)error;
    + +
    +
    +

    Swift

    +
    func start() throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + error + + +
    +

    The error that is populated if this method fails. Pass NULL if not interested in the error information.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater started otherwise NO with a populated error

    +
    +
    +
    +
  • +
  • +
    + + + + -checkForUpdates + +
    +
    +
    +
    +
    +
    +

    Checks for updates, and displays progress while doing so if needed.

    + +

    This is meant for users initiating a new update check or checking the current update progress.

    + +

    If an update hasn’t started, the user may be shown that a new check for updates is occurring. +If an update has already been downloaded or begun installing from a previous session, the user may be presented to install that update. +If the user is already being presented with an update, that update will be shown to the user in active focus.

    + +

    This will find updates that the user has previously opted into skipping.

    + +

    See canCheckForUpdates property which can determine when this method may be invoked.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdates;
    + +
    +
    +

    Swift

    +
    func checkForUpdates()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks for updates, but does not display any UI unless an update is found.

    + +

    This is meant for programmatically initating a check for updates. +That is, it will display no UI unless it finds an update, in which case it proceeds as usual. +This will not find updates that the user has opted into skipping.

    + +

    Note if there is no resumable update found, and automated updating is turned on, +the update will be downloaded in the background without disrupting the user.

    + +

    This method does not do anything if there is a sessionInProgress.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdatesInBackground;
    + +
    +
    +

    Swift

    +
    func checkForUpdatesInBackground()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Begins a “probing” check for updates which will not actually offer to +update to that version.

    + +

    However, the delegate methods +-[SPUUpdaterDelegate updater:didFindValidUpdate:] and +-[SPUUpdaterDelegate updaterDidNotFindUpdate:] will be called, +so you can use that information in your UI.

    + +

    -[SPUUpdaterDelegate updater:didFinishUpdateCycleForUpdateCheck:error:] will be called when +this probing check is completed.

    + +

    Updates that have been skipped by the user will not be found.

    + +

    This method does not do anything if there is a sessionInProgress.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdateInformation;
    + +
    +
    +

    Swift

    +
    func checkForUpdateInformation()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + canCheckForUpdates + +
    +
    +
    +
    +
    +
    +

    A property indicating whether or not updates can be checked by the user.

    + +

    An update check can be made by the user when an update session isn’t in progress, or when an update or its progress is being shown to the user.

    + +

    This property is suitable to use for menu item validation for seeing if -checkForUpdates can be invoked.

    + +

    Note this property does not reflect whether or not an update session is in progress. Please see sessionInProgress property instead.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL canCheckForUpdates;
    + +
    +
    +

    Swift

    +
    var canCheckForUpdates: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sessionInProgress + +
    +
    +
    +
    +
    +
    +

    A property indicating whether or not an update session is in progress.

    + +

    An update session is in progress when the appcast is being downloaded, an update is being downloaded, +an update is being shown, update permission is being requested, or the installer is being started.

    + +

    An active session is when Sparkle’s fired scheduler is running.

    + +

    Note an update session may not be running even though Sparkle’s installer (ran as a separate process) may be running, +or even though the update has been downloaded but the installation has been deferred. In both of these cases, a new update session +may be activated with the update resumed at a later point (automatically or manually).

    + +

    See also:

    + + + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL sessionInProgress;
    + +
    +
    +

    Swift

    +
    var sessionInProgress: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A property indicating whether or not to check for updates automatically.

    + +

    By default, Sparkle asks users on second launch for permission if they want automatic update checks enabled +and sets this property based on their response. If SUEnableAutomaticChecks is set in the Info.plist, +this permission request is not performed however.

    + +

    Setting this property will persist in the host bundle’s user defaults.

    + +

    The update schedule cycle will be reset in a short delay after the property’s new value is set. +This is to allow reverting this property without kicking off a schedule change immediately

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL automaticallyChecksForUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyChecksForUpdates: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateCheckInterval + +
    +
    +
    +
    +
    +
    +

    A property indicating the current automatic update check interval in seconds.

    + +

    Setting this property will persist in the host bundle’s user defaults. +For this reason, only set this property if you need dynamic behavior (eg user preferences). +Otherwise prefer to set SUScheduledCheckInterval directly in your Info.plist.

    + +

    The update schedule cycle will be reset in a short delay after the property’s new value is set. +This is to allow reverting this property without kicking off a schedule change immediately

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) NSTimeInterval updateCheckInterval;
    + +
    +
    +

    Swift

    +
    var updateCheckInterval: TimeInterval { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A property indicating whether or not updates can be automatically downloaded in the background.

    + +

    By default, updates are not automatically downloaded.

    + +

    Note that the developer can disallow automatic downloading of updates from being enabled. +In this case, this property will return NO regardless of how this property is set.

    + +

    Setting this property will persist in the host bundle’s user defaults. +For this reason, only set this property if you need dynamic behavior (eg user preferences). +Otherwise prefer to set SUAutomaticallyUpdate directly in your Info.plist.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL automaticallyDownloadsUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyDownloadsUpdates: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + feedURL + +
    +
    +
    +
    +
    +
    +

    The URL of the appcast used to download update information.

    + +

    If the updater’s delegate implements -[SPUUpdaterDelegate feedURLStringForUpdater:], this will return that feed URL. +Otherwise if the feed URL has been set before, the feed URL returned will be retrieved from the host bundle’s user defaults. +Otherwise the feed URL in the host bundle’s Info.plist will be returned. +If no feed URL can be retrieved, returns nil.

    + +

    This property must be called on the main thread; calls from background threads will return nil.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly, nullable) NSURL *feedURL;
    + +
    +
    +

    Swift

    +
    var feedURL: URL? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hostBundle + +
    +
    +
    +
    +
    +
    +

    The host bundle that is being updated.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSBundle *_Nonnull hostBundle;
    + +
    +
    +

    Swift

    +
    var hostBundle: Bundle { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userAgentString + +
    +
    +
    +
    +
    +
    +

    The user agent used when checking for updates.

    + +

    By default the user agent string returned is in the format: +$(BundleDisplayName)/$(BundleDisplayVersion) Sparkle/$(SparkleDisplayVersion)

    + +

    BundleDisplayVersion is derived from the application Info.plist’s CFBundleShortVersionString.

    + +

    This default implementation can be overrided.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy) NSString *_Nonnull userAgentString;
    + +
    +
    +

    Swift

    +
    var userAgentString: String { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + httpHeaders + +
    +
    +
    +
    +
    +
    +

    The HTTP headers used when checking for updates, downloading release notes, and downloading updates.

    + +

    The keys of this dictionary are HTTP header fields and values are corresponding values.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, nullable) NSDictionary<NSString *, NSString *> *httpHeaders;
    + +
    +
    +

    Swift

    +
    var httpHeaders: [String : String]? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sendsSystemProfile + +
    +
    +
    +
    +
    +
    +

    A property indicating whether or not the user’s system profile information is sent when checking for updates.

    + +

    Setting this property will persist in the host bundle’s user defaults.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL sendsSystemProfile;
    + +
    +
    +

    Swift

    +
    var sendsSystemProfile: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lastUpdateCheckDate + +
    +
    +
    +
    +
    +
    +

    The date of the last update check or nil if no check has been performed yet.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly, nullable) NSDate *lastUpdateCheckDate;
    + +
    +
    +

    Swift

    +
    var lastUpdateCheckDate: Date? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -resetUpdateCycle + +
    +
    +
    +
    +
    +
    +

    Appropriately schedules or cancels the update checking timer according to the preferences for time interval and automatic checks.

    + +

    This call does not change the date of the next check, but only the internal timer.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)resetUpdateCycle;
    + +
    +
    +

    Swift

    +
    func resetUpdateCycle()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + systemProfileArray + +
    +
    +
    +
    +
    +
    +

    The system profile information that is sent when checking for updates.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly) NSArray<NSDictionary<NSString *, NSString *> *> *_Nonnull systemProfileArray;
    + +
    +
    +

    Swift

    +
    var systemProfileArray: [[String : String]] { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SPUUpdaterSettings.html b/documentation/api-reference/Classes/SPUUpdaterSettings.html new file mode 100644 index 0000000..5488c33 --- /dev/null +++ b/documentation/api-reference/Classes/SPUUpdaterSettings.html @@ -0,0 +1,432 @@ + + + + SPUUpdaterSettings Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdaterSettings

+
+
+

Objective-C

+
@interface SPUUpdaterSettings : NSObject
+ +
+
+

Swift

+
class SPUUpdaterSettings : NSObject
+ +
+
+

This class can be used for reading certain updater settings.

+ +

It retrieves the settings by first looking into the host’s user defaults. +If the setting is not found in there, then the host’s Info.plist file is looked at.

+ +
+
+
+
    +
  • +
    + + + + -initWithHostBundle: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)initWithHostBundle:(NSBundle *)hostBundle;
    + +
    +
    +

    Swift

    +
    init(hostBundle: Bundle)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not automatic update checks are enabled.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL automaticallyChecksForUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyChecksForUpdates: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateCheckInterval + +
    +
    +
    +
    +
    +
    +

    The regular update check interval.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSTimeInterval updateCheckInterval;
    + +
    +
    +

    Swift

    +
    var updateCheckInterval: TimeInterval { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not automatically downloading updates is allowed to be turned on by the user.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL allowsAutomaticUpdates;
    + +
    +
    +

    Swift

    +
    var allowsAutomaticUpdates: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not automatically downloading updates is enabled by the user or developer.

    + +

    Note this does not indicate whether or not automatic downloading of updates is allowable. + See -allowsAutomaticUpdates property for that.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL automaticallyDownloadsUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyDownloadsUpdates: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sendsSystemProfile + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not anonymous system profile information is sent when checking for updates.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL sendsSystemProfile;
    + +
    +
    +

    Swift

    +
    var sendsSystemProfile: Bool { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SPUUserUpdateState.html b/documentation/api-reference/Classes/SPUUserUpdateState.html new file mode 100644 index 0000000..44f3f52 --- /dev/null +++ b/documentation/api-reference/Classes/SPUUserUpdateState.html @@ -0,0 +1,331 @@ + + + + SPUUserUpdateState Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUserUpdateState

+
+
+

Objective-C

+
@interface SPUUserUpdateState : NSObject
+ +
+
+

Swift

+
class SPUUserUpdateState : NSObject
+ +
+
+

This represents the user’s current update state.

+ +
+
+
+
    +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)init NS_UNAVAILABLE;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + stage + +
    +
    +
    +
    +
    +
    +

    The current update stage.

    + +

    This stage indicates if data has been already downloaded or not, or if an update is currently being installed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) SPUUserUpdateStage stage;
    + +
    +
    +

    Swift

    +
    var stage: SPUUserUpdateStage { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userInitiated + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update check was initiated by the user.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL userInitiated;
    + +
    +
    +

    Swift

    +
    var userInitiated: Bool { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SUAppcast.html b/documentation/api-reference/Classes/SUAppcast.html new file mode 100644 index 0000000..8a04165 --- /dev/null +++ b/documentation/api-reference/Classes/SUAppcast.html @@ -0,0 +1,299 @@ + + + + SUAppcast Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUAppcast

+
+
+

Objective-C

+
@interface SUAppcast : NSObject
+ +
+
+

Swift

+
class SUAppcast : NSObject
+ +
+
+

The appcast representing a collection of SUAppcastItem items in the feed.

+ +
+
+
+
    +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)init NS_UNAVAILABLE;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + items + +
    +
    +
    +
    +
    +
    +

    The collection of update items.

    + +

    These SUAppcastItem items are in the same order as specified in the appcast XML feed and are thus not sorted by version.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly) NSArray<SUAppcastItem *> *_Nonnull items;
    + +
    +
    +

    Swift

    +
    var items: [SUAppcastItem] { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SUAppcastItem.html b/documentation/api-reference/Classes/SUAppcastItem.html new file mode 100644 index 0000000..cefb2fa --- /dev/null +++ b/documentation/api-reference/Classes/SUAppcastItem.html @@ -0,0 +1,1406 @@ + + + + SUAppcastItem Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUAppcastItem

+
+
+

Objective-C

+
@interface SUAppcastItem : NSObject <NSSecureCoding>
+ +
+
+

Swift

+
class SUAppcastItem : NSObject, NSSecureCoding
+ +
+
+

The appcast item describing an update in the application’s appcast feed.

+ +

An appcast item represents a single update item in the SUAppcast contained within the <item> element.

+ +

Every appcast item must have a versionString, and either a fileURL or an infoURL. +All the remaining properties describing an update to the application are optional.

+ +

Extended documentation and examples on using appcast item features are available at: +https://sparkle-project.org/documentation/publishing/

+ +
+
+
+
    +
  • +
    + + + + versionString + +
    +
    +
    +
    +
    +
    +

    The version of the update item.

    + +

    Sparkle uses this property to compare update items and determine the best available update item in the SUAppcast.

    + +

    This corresponds to the application update’s CFBundleVersion

    + +

    This is extracted from the <sparkle:version> element, or the sparkle:version attribute from the <enclosure> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly) NSString *_Nonnull versionString;
    + +
    +
    +

    Swift

    +
    var versionString: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + displayVersionString + +
    +
    +
    +
    +
    +
    +

    The human-readable display version of the update item if provided.

    + +

    This is the version string shown to the user when they are notified of a new update.

    + +

    This corresponds to the application update’s CFBundleShortVersionString

    + +

    This is extracted from the <sparkle:shortVersionString> element, or the sparkle:shortVersionString attribute from the <enclosure> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *displayVersionString;
    + +
    +
    +

    Swift

    +
    var displayVersionString: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fileURL + +
    +
    +
    +
    +
    +
    +

    The file URL to the update item if provided.

    + +

    This download contains the actual update Sparkle will attempt to install. +In cases where a download cannot be provided, an infoURL must be provided instead.

    + +

    A file URL should have an accompanying contentLength provided.

    + +

    This is extracted from the url attribute in the <enclosure> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, nullable) NSURL *fileURL;
    + +
    +
    +

    Swift

    +
    var fileURL: URL? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentLength + +
    +
    +
    +
    +
    +
    +

    The content length of the download in bytes.

    + +

    This property is used as a fallback when the server doesn’t report the content length of the download. +In that case, it is used to report progress of the downloading update to the user.

    + +

    A warning is outputted if this property is not equal the server’s expected content length (if provided).

    + +

    This is extracted from the length attribute in the <enclosure> element. +It should be specified if a fileURL is provided.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) uint64_t contentLength;
    + +
    +
    +

    Swift

    +
    var contentLength: UInt64 { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + infoURL + +
    +
    +
    +
    +
    +
    +

    The info URL to the update item if provided.

    + +

    This informational link is used to direct the user to learn more about an update they cannot download/install directly from within the application. +The link should point to the product’s web page.

    + +

    The informational link will be used if informationOnlyUpdate is YES

    + +

    This is extracted from the <link> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, nullable) NSURL *infoURL;
    + +
    +
    +

    Swift

    +
    var infoURL: URL? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + informationOnlyUpdate + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update item is only informational and has no download.

    + +

    If infoURL is not present, this is NO

    + +

    If fileURL is not present, this is YES

    + +

    Otherwise this is determined based on the contents extracted from the <sparkle:informationalUpdate> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isInformationOnlyUpdate) BOOL informationOnlyUpdate;
    + +
    +
    +

    Swift

    +
    var isInformationOnlyUpdate: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + title + +
    +
    +
    +
    +
    +
    +

    The title of the appcast item if provided.

    + +

    This is extracted from the <title> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *title;
    + +
    +
    +

    Swift

    +
    var title: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + dateString + +
    +
    +
    +
    +
    +
    +

    The date string of the appcast item if provided.

    + +

    The date property is constructed from this property and expects this string to comply with the following date format: +E, dd MMM yyyy HH:mm:ss Z

    + +

    This is extracted from the <pubDate> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *dateString;
    + +
    +
    +

    Swift

    +
    var dateString: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + date + +
    +
    +
    +
    +
    +
    +

    The date constructed from the dateString property if provided.

    + +

    Sparkle by itself only uses this property for phased group rollouts specified via phasedRolloutInterval, but clients may query this property too.

    + +

    This date is constructed using the en_US locale.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSDate *date;
    + +
    +
    +

    Swift

    +
    var date: Date? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + releaseNotesURL + +
    +
    +
    +
    +
    +
    +

    The release notes URL of the appcast item if provided.

    + +

    This external link points to an HTML file that Sparkle downloads and renders to show the user a new or old update item’s changelog.

    + +

    An alternative to using an external release notes link is providing an embedded itemDescription.

    + +

    This is extracted from the <sparkle:releaseNotesLink> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, nullable) NSURL *releaseNotesURL;
    + +
    +
    +

    Swift

    +
    var releaseNotesURL: URL? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + itemDescription + +
    +
    +
    +
    +
    +
    +

    The description of the appcast item if provided.

    + +

    A description may be provided for inline/embedded release notes for new updates using <![CDATA[...]]> +This is an alternative to providing a releaseNotesURL.

    + +

    This is extracted from the <description> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *itemDescription;
    + +
    +
    +

    Swift

    +
    var itemDescription: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumSystemVersion + +
    +
    +
    +
    +
    +
    +

    The required minimum system operating version string for this update if provided.

    + +

    This version string should contain three period-separated components.

    + +

    Example: 10.12.0

    + +

    Use minimumOperatingSystemVersionIsOK property to test if the current running system passes this requirement.

    + +

    This is extracted from the <sparkle:minimumSystemVersion> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *minimumSystemVersion;
    + +
    +
    +

    Swift

    +
    var minimumSystemVersion: String? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not the current running system passes the minimumSystemVersion requirement.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL minimumOperatingSystemVersionIsOK;
    + +
    +
    +

    Swift

    +
    var minimumOperatingSystemVersionIsOK: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + maximumSystemVersion + +
    +
    +
    +
    +
    +
    +

    The required maximum system operating version string for this update if provided.

    + +

    A maximum system operating version requirement should only be made in unusual scenarios.

    + +

    This version string should contain three period-separated components.

    + +

    Example: 10.13.0

    + +

    Use maximumOperatingSystemVersionIsOK property to test if the current running system passes this requirement.

    + +

    This is extracted from the <sparkle:maximumSystemVersion> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *maximumSystemVersion;
    + +
    +
    +

    Swift

    +
    var maximumSystemVersion: String? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not the current running system passes the maximumSystemVersion requirement.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL maximumOperatingSystemVersionIsOK;
    + +
    +
    +

    Swift

    +
    var maximumOperatingSystemVersionIsOK: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + channel + +
    +
    +
    +
    +
    +
    +

    The channel the update item is on if provided.

    + +

    An update item may specify a custom channel name (such as beta) that can only be found by updaters that filter for that channel. +If no channel is provided, the update item is assumed to be on the default channel.

    + +

    This is extracted from the <sparkle:channel> element. +Old applications must be using Sparkle 2 or later to interpret the channel element and to ignore unmatched channels.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly, nullable) NSString *channel;
    + +
    +
    +

    Swift

    +
    var channel: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + installationType + +
    +
    +
    +
    +
    +
    +

    The installation type of the update at fileURL

    + +

    This may be:

    + +
      +
    • application - indicates this is a regular application update.
    • +
    • package - indicates this is a guided package installer update.
    • +
    • interactive-package - indicates this is an interactive package installer update (deprecated; use “package” instead)
    • +
    + +

    This is extracted from the sparkle:installationType attribute in the <enclosure> element.

    + +

    If no installation type is provided in the enclosure, the installation type is inferred from the fileURL file extension instead.

    + +

    If the file extension is pkg or mpkg, the installation type is package otherwise it is application

    + +

    Hence, the installation type in the enclosure element only needs to be specified for package based updates distributed inside of a zip or other archive format.

    + +

    Old applications must be using Sparkle 1.26 or later to support downloading bare package updates (pkg or mpkg) that are not additionally archived inside of a zip or other archive format.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly) NSString *_Nonnull installationType;
    + +
    +
    +

    Swift

    +
    var installationType: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + phasedRolloutInterval + +
    +
    +
    +
    +
    +
    +

    The phased rollout interval of the update item in seconds if provided.

    + +

    This is the interval between when different groups of users are notified of a new update.

    + +

    For this property to be used by Sparkle, the published date on the update item must be present as well.

    + +

    After each interval after the update item’s date, a new group of users become eligible for being notified of the new update.

    + +

    This is extracted from the <sparkle:phasedRolloutInterval> element.

    + +

    Old applications must be using Sparkle 1.25 or later to support phased rollout intervals, otherwise they may assume updates are immediately available.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSNumber *phasedRolloutInterval;
    + +
    +
    +

    Swift

    +
    @NSCopying var phasedRolloutInterval: NSNumber? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The minimum bundle version string this update requires for automatically downloading and installing updates if provided.

    + +

    If an application’s bundle version meets this version requirement, it can install the new update item in the background automatically.

    + +

    Otherwise if the requirement is not met, the user is always prompted to install the update. In this case, the update is assumed to be a majorUpgrade.

    + +

    If the update is a majorUpgrade and the update is skipped by the user, other future update alerts with the same minimumAutoupdateVersion will also be skipped.

    + +

    This version string corresponds to the application’s CFBundleVersion

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *minimumAutoupdateVersion;
    + +
    +
    +

    Swift

    +
    var minimumAutoupdateVersion: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + majorUpgrade + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update item is a major upgrade.

    + +

    An update is a major upgrade if the application’s bundle version doesn’t meet the minimumAutoupdateVersion requirement.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isMajorUpgrade) BOOL majorUpgrade;
    + +
    +
    +

    Swift

    +
    var isMajorUpgrade: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + criticalUpdate + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update item is critical.

    + +

    Critical updates are shown to the user more promptly. Sparkle’s standard user interface also does not allow them to be skipped.

    + +

    This is determined and extracted from a top-level <sparkle:criticalUpdate> element or a sparkle:criticalUpdate element inside of a sparkle:tags element.

    + +

    Old applications must be using Sparkle 2 or later to support the top-level <sparkle:criticalUpdate> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isCriticalUpdate) BOOL criticalUpdate;
    + +
    +
    +

    Swift

    +
    var isCriticalUpdate: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + osString + +
    +
    +
    +
    +
    +
    +

    Specifies the operating system the download update is available for if provided.

    + +

    If this property is not provided, then the supported operating system is assumed to be macOS.

    + +

    Known potential values for this string are macos and windows

    + +

    Sparkle on Mac ignores update items that are for other operating systems. +This is only useful for sharing appcasts between Sparkle on Mac and Sparkle on other operating systems.

    + +

    Use macOsUpdate property to test if this update item is for macOS.

    + +

    This is extracted from the sparkle:os attribute in the <enclosure> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *osString;
    + +
    +
    +

    Swift

    +
    var osString: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + macOsUpdate + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not this update item is for macOS.

    + +

    This is determined from the osString property.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isMacOsUpdate) BOOL macOsUpdate;
    + +
    +
    +

    Swift

    +
    var isMacOsUpdate: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + deltaUpdates + +
    +
    +
    +
    +
    +
    +

    The delta updates for this update item.

    + +

    Sparkle uses these to download and apply a smaller update based on the version the user is updating from.

    + +

    The key is based on the sparkle:version of the update. +The value is an update item that will have deltaUpdate be YES

    + +

    Clients typically should not need to examine the contents of the delta updates.

    + +

    This is extracted from the <sparkle:deltas> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSDictionary<NSString *, SUAppcastItem *> *deltaUpdates;
    + +
    +
    +

    Swift

    +
    var deltaUpdates: [String : SUAppcastItem]? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + deltaUpdate + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update item is a delta update.

    + +

    An update item is a delta update if it is in the deltaUpdates of another update item.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isDeltaUpdate) BOOL deltaUpdate;
    + +
    +
    +

    Swift

    +
    var isDeltaUpdate: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + propertiesDictionary + +
    +
    +
    +
    +
    +
    +

    The dictionary representing the entire appcast item.

    + +

    This is useful for querying custom extensions or elements from the appcast item.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly) NSDictionary *_Nonnull propertiesDictionary;
    + +
    +
    +

    Swift

    +
    var propertiesDictionary: [AnyHashable : Any] { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)init NS_UNAVAILABLE;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +emptyAppcastItem + +
    +
    +
    +
    +
    +
    +

    An empty appcast item.

    + +

    This may be used as a potential return value in -[SPUUpdaterDelegate bestValidUpdateInAppcast:forUpdater:]

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    + (nonnull instancetype)emptyAppcastItem;
    + +
    +
    +

    Swift

    +
    class func empty() -> Self
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -initWithDictionary: + +
    +
    +
    +
    +
    +
    +

    Deprecated

    +

    Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable instancetype)initWithDictionary:(NSDictionary *)dict __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
    + +
    +
    +

    Swift

    +
    init?(dictionary dict: [AnyHashable : Any])
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
    + +
    +
    +

    Swift

    +
    init?(dictionary dict: [AnyHashable : Any], failureReason error: AutoreleasingUnsafeMutablePointer<NSString?>?)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
    + +
    +
    +

    Swift

    +
    init?(dictionary dict: [AnyHashable : Any], relativeTo appcastURL: URL?, failureReason error: AutoreleasingUnsafeMutablePointer<NSString?>?)
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SUStandardVersionComparator.html b/documentation/api-reference/Classes/SUStandardVersionComparator.html new file mode 100644 index 0000000..5223321 --- /dev/null +++ b/documentation/api-reference/Classes/SUStandardVersionComparator.html @@ -0,0 +1,374 @@ + + + + SUStandardVersionComparator Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUStandardVersionComparator

+
+
+

Objective-C

+
@interface SUStandardVersionComparator : NSObject <SUVersionComparison>
+ +
+
+

Swift

+
class SUStandardVersionComparator : NSObject, SUVersionComparison
+ +
+
+

Sparkle’s default version comparator.

+ +

This comparator is adapted from MacPAD, by Kevin Ballard. +It’s “dumb” in that it does essentially string comparison, +in components split by character type.

+ +
+
+
+
    +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Initializes a new instance of the standard version comparator.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)init;
    + +
    +
    +

    Swift

    +
    init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + defaultComparator + +
    +
    +
    +
    +
    +
    +

    A singleton instance of the comparator.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (class, nonatomic, readonly) SUStandardVersionComparator *_Nonnull defaultComparator;
    + +
    +
    +

    Swift

    +
    class var `default`: SUStandardVersionComparator { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Compares two version strings through textual analysis.

    + +

    These version strings should be in the format of x, x.y, or x.y.z where each component is a number. +For example, valid version strings include “1.5.3”, “500”, or “4000.1” +These versions that are compared correspond to the CFBundleVersion values of the updates.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (NSComparisonResult)compareVersion:(nonnull NSString *)versionA
    +                           toVersion:(nonnull NSString *)versionB;
    + +
    +
    +

    Swift

    +
    func compareVersion(_ versionA: String, toVersion versionB: String) -> ComparisonResult
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + versionA + + +
    +

    The first version string to compare.

    +
    +
    + + versionB + + +
    +

    The second version string to compare.

    +
    +
    +
    +
    +

    Return Value

    +

    A comparison result between versionA and versionB

    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SUUpdatePermissionResponse.html b/documentation/api-reference/Classes/SUUpdatePermissionResponse.html new file mode 100644 index 0000000..8ef84bd --- /dev/null +++ b/documentation/api-reference/Classes/SUUpdatePermissionResponse.html @@ -0,0 +1,393 @@ + + + + SUUpdatePermissionResponse Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUUpdatePermissionResponse

+
+
+

Objective-C

+
@interface SUUpdatePermissionResponse : NSObject <NSSecureCoding>
+ +
+
+

Swift

+
class SUUpdatePermissionResponse : NSObject, NSSecureCoding
+ +
+
+

This class represents a response for permission to check updates.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a new update permission response instance.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)initWithAutomaticUpdateChecks:(BOOL)automaticUpdateChecks
    +                            sendSystemProfile:(BOOL)sendSystemProfile;
    + +
    +
    +

    Swift

    +
    init!(automaticUpdateChecks: Bool, sendSystemProfile: Bool)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + automaticUpdateChecks + + +
    +

    Flag for whether to allow automatic update checks.

    +
    +
    + + sendSystemProfile + + +
    +

    Flag for if system profile information should be sent to the server hosting the appcast.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)init NS_UNAVAILABLE;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + automaticUpdateChecks + +
    +
    +
    +
    +
    +
    +

    A read-only property indicating whether automatic update checks are allowed or not.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL automaticUpdateChecks;
    + +
    +
    +

    Swift

    +
    var automaticUpdateChecks: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sendSystemProfile + +
    +
    +
    +
    +
    +
    +

    A read-only property indicating if system profile should be sent or not.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL sendSystemProfile;
    + +
    +
    +

    Swift

    +
    var sendSystemProfile: Bool { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Classes/SUUpdater.html b/documentation/api-reference/Classes/SUUpdater.html new file mode 100644 index 0000000..ad994a1 --- /dev/null +++ b/documentation/api-reference/Classes/SUUpdater.html @@ -0,0 +1,911 @@ + + + + SUUpdater Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUUpdater

+
+

Deprecated

+

Deprecated in Sparkle 2. Use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.

+ +
+
+
+

Objective-C

+

+@interface SUUpdater : NSObject
+ +
+
+

Swift

+
class SUUpdater : NSObject
+ +
+
+

The legacy API in Sparkle for controlling the update mechanism.

+ +

This class is now deprecated and acts as a thin wrapper around SPUUpdater and SPUStandardUserDriver.

+ +

If you are migrating to Sparkle 2, use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.

+ +
+
+
+
    +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) IBOutlet id<SUUpdaterDelegate> delegate
    + +
    +
    +

    Swift

    +
    @IBOutlet unowned(unsafe) var delegate: SUUpdaterDelegate! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +sharedUpdater + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    + (SUUpdater *)sharedUpdater;
    + +
    +
    +

    Swift

    +
    class func shared() -> SUUpdater!
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +updaterForBundle: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    + (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -initForBundle: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)initForBundle:(NSBundle *)bundle;
    + +
    +
    +

    Swift

    +
    init!(for bundle: Bundle!)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -checkForUpdates: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdates:(id)sender;
    + +
    +
    +

    Swift

    +
    @IBAction func checkForUpdates(_ sender: Any!)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -validateMenuItem: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
    + +
    +
    +

    Swift

    +
    func validate(_ menuItem: NSMenuItem!) -> Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdatesInBackground;
    + +
    +
    +

    Swift

    +
    func checkForUpdatesInBackground()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL automaticallyChecksForUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyChecksForUpdates: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL automaticallyDownloadsUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyDownloadsUpdates: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateCheckInterval + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) NSTimeInterval updateCheckInterval;
    + +
    +
    +

    Swift

    +
    var updateCheckInterval: TimeInterval { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdateInformation;
    + +
    +
    +

    Swift

    +
    func checkForUpdateInformation()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + feedURL + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy) NSURL *feedURL;
    + +
    +
    +

    Swift

    +
    var feedURL: URL! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hostBundle + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSBundle *hostBundle;
    + +
    +
    +

    Swift

    +
    var hostBundle: Bundle! { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sparkleBundle + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSBundle *sparkleBundle;
    + +
    +
    +

    Swift

    +
    var sparkleBundle: Bundle! { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userAgentString + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy) NSString *userAgentString;
    + +
    +
    +

    Swift

    +
    var userAgentString: String! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + httpHeaders + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy) NSDictionary<NSString *, NSString *> *httpHeaders;
    + +
    +
    +

    Swift

    +
    var httpHeaders: [String : String]! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sendsSystemProfile + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL sendsSystemProfile;
    + +
    +
    +

    Swift

    +
    var sendsSystemProfile: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + decryptionPassword + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy) NSString *decryptionPassword;
    + +
    +
    +

    Swift

    +
    var decryptionPassword: String! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lastUpdateCheckDate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly) NSDate *lastUpdateCheckDate;
    + +
    +
    +

    Swift

    +
    var lastUpdateCheckDate: Date! { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -resetUpdateCycle + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)resetUpdateCycle;
    + +
    +
    +

    Swift

    +
    func resetUpdateCycle()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateInProgress + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL updateInProgress;
    + +
    +
    +

    Swift

    +
    var updateInProgress: Bool { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Constants.html b/documentation/api-reference/Constants.html new file mode 100644 index 0000000..6dc5d7e --- /dev/null +++ b/documentation/api-reference/Constants.html @@ -0,0 +1,894 @@ + + + + Constants Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

Constants

+

The following constants are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification
    + +
    +
    +

    Swift

    +
    static let SUUpdaterDidFinishLoadingAppCast: NSNotification.Name
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterDidFindValidUpdateNotification
    + +
    +
    +

    Swift

    +
    static let SUUpdaterDidFindValidUpdate: NSNotification.Name
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterDidNotFindUpdateNotification
    + +
    +
    +

    Swift

    +
    static let SUUpdaterDidNotFindUpdate: NSNotification.Name
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterWillRestartNotification
    + +
    +
    +

    Swift

    +
    static let SUUpdaterWillRestart: NSNotification.Name
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterAppcastItemNotificationKey
    + +
    +
    +

    Swift

    +
    let SUUpdaterAppcastItemNotificationKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterAppcastNotificationKey
    + +
    +
    +

    Swift

    +
    let SUUpdaterAppcastNotificationKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerApplicationNameKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerApplicationNameKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerApplicationVersionKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerApplicationVersionKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPU64bitKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPU64bitKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPUCountKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPUCountKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPUFrequencyKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPUFrequencyKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPUTypeKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPUTypeKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPUSubtypeKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPUSubtypeKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerHardwareModelKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerHardwareModelKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerMemoryKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerMemoryKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerOperatingSystemVersionKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerOperatingSystemVersionKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerPreferredLanguageKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerPreferredLanguageKey: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUSparkleErrorDomain + +
    +
    +
    +
    +
    +
    +

    Error domain used by Sparkle

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSparkleErrorDomain
    + +
    +
    +

    Swift

    +
    let SUSparkleErrorDomain: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SPUNoUpdateFoundReasonKey
    + +
    +
    +

    Swift

    +
    let SPUNoUpdateFoundReasonKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SPULatestAppcastItemFoundKey
    + +
    +
    +

    Swift

    +
    let SPULatestAppcastItemFoundKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SPUNoUpdateFoundUserInitiatedKey
    + +
    +
    +

    Swift

    +
    let SPUNoUpdateFoundUserInitiatedKey: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Enums.html b/documentation/api-reference/Enums.html new file mode 100644 index 0000000..7bf7e8c --- /dev/null +++ b/documentation/api-reference/Enums.html @@ -0,0 +1,427 @@ + + + + Enumerations Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
    +
  • +
    + + + + SPUUpdateCheck + +
    +
    +
    +
    +
    +
    +

    Describes the type of update check being performed.

    + +

    Each update check corresponds to an update check method on SPUUpdater.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SPUUpdateCheck : NSInteger {}
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUserUpdateChoice + +
    +
    +
    +
    +
    +
    +

    A choice made by the user when prompted with a new update.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SPUUserUpdateChoice : NSInteger {}
    + +
    +
    +

    Swift

    +
    enum SPUUserUpdateChoice : Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUserUpdateStage + +
    +
    +
    +
    +
    +
    +

    Describes the current stage an update is undergoing.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SPUUserUpdateStage : NSInteger {}
    + +
    +
    +

    Swift

    +
    enum SPUUserUpdateStage : Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(OSStatus, SUError) {
    +    // Configuration phase errors
    +    SUNoPublicDSAFoundError = 0001,
    +    SUInsufficientSigningError = 0002,
    +    SUInsecureFeedURLError = 0003,
    +    SUInvalidFeedURLError = 0004,
    +    SUInvalidUpdaterError = 0005,
    +    SUInvalidHostBundleIdentifierError = 0006,
    +    SUInvalidHostVersionError = 0007,
    +    
    +    // Appcast phase errors.
    +    SUAppcastParseError = 1000,
    +    SUNoUpdateError = 1001,
    +    SUAppcastError = 1002,
    +    SURunningFromDiskImageError = 1003,
    +    SUResumeAppcastError = 1004,
    +    SURunningTranslocated = 1005,
    +    SUWebKitTerminationError = 1006,
    +
    +    // Download phase errors.
    +    SUTemporaryDirectoryError = 2000,
    +    SUDownloadError = 2001,
    +
    +    // Extraction phase errors.
    +    SUUnarchivingError = 3000,
    +    SUSignatureError = 3001,
    +    SUValidationError = 3002,
    +    
    +    // Installation phase errors.
    +    SUFileCopyFailure = 4000,
    +    SUAuthenticationFailure = 4001,
    +    SUMissingUpdateError = 4002,
    +    SUMissingInstallerToolError = 4003,
    +    SURelaunchError = 4004,
    +    SUInstallationError = 4005,
    +    SUDowngradeError = 4006,
    +    SUInstallationCanceledError = 4007,
    +    SUInstallationAuthorizeLaterError = 4008,
    +    SUNotValidUpdateError = 4009,
    +    SUAgentInvalidationError = 4010,
    +    
    +    // API misuse errors.
    +    SUIncorrectAPIUsageError = 5000
    +}
    + +
    +
    +

    Swift

    +
    enum SUError : OSStatus
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The reason why a new update is not available.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SPUNoUpdateFoundReason : OSStatus {}
    + +
    +
    +

    Swift

    +
    enum SPUNoUpdateFoundReason : OSStatus
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Enums/SPUNoUpdateFoundReason.html b/documentation/api-reference/Enums/SPUNoUpdateFoundReason.html new file mode 100644 index 0000000..3794bae --- /dev/null +++ b/documentation/api-reference/Enums/SPUNoUpdateFoundReason.html @@ -0,0 +1,394 @@ + + + + SPUNoUpdateFoundReason Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUNoUpdateFoundReason

+
+
+

Objective-C

+
enum SPUNoUpdateFoundReason : OSStatus {}
+ +
+
+

Swift

+
enum SPUNoUpdateFoundReason : OSStatus
+ +
+
+

The reason why a new update is not available.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable for an unknown reason.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonUnknown
    + +
    +
    +

    Swift

    +
    case unknown = 0
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable because the user is on the latest known version in the appcast feed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonOnLatestVersion
    + +
    +
    +

    Swift

    +
    case onLatestVersion = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable because the user is on a version newer than the latest known version in the appcast feed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonOnNewerThanLatestVersion
    + +
    +
    +

    Swift

    +
    case onNewerThanLatestVersion = 2
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable because the user’s operating system version is too old for the update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonSystemIsTooOld
    + +
    +
    +

    Swift

    +
    case systemIsTooOld = 3
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable because the user’s operating system version is too new for the update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonSystemIsTooNew
    + +
    +
    +

    Swift

    +
    case systemIsTooNew = 4
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Enums/SPUUpdateCheck.html b/documentation/api-reference/Enums/SPUUpdateCheck.html new file mode 100644 index 0000000..87c8977 --- /dev/null +++ b/documentation/api-reference/Enums/SPUUpdateCheck.html @@ -0,0 +1,312 @@ + + + + SPUUpdateCheck Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdateCheck

+
+
+ +
enum SPUUpdateCheck : NSInteger {}
+ +
+
+

Describes the type of update check being performed.

+ +

Each update check corresponds to an update check method on SPUUpdater.

+ +
+
+
+ +
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Enums/SPUUserUpdateChoice.html b/documentation/api-reference/Enums/SPUUserUpdateChoice.html new file mode 100644 index 0000000..9ab81cc --- /dev/null +++ b/documentation/api-reference/Enums/SPUUserUpdateChoice.html @@ -0,0 +1,330 @@ + + + + SPUUserUpdateChoice Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUserUpdateChoice

+
+
+

Objective-C

+
enum SPUUserUpdateChoice : NSInteger {}
+ +
+
+

Swift

+
enum SPUUserUpdateChoice : Int
+ +
+
+

A choice made by the user when prompted with a new update.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Dismisses the update and skips being notified of it in the future.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateChoiceSkip
    + +
    +
    +

    Swift

    +
    case skip = 0
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Downloads (if needed) and installs the update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateChoiceInstall
    + +
    +
    +

    Swift

    +
    case install = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Dismisses the update until Sparkle reminds the user of it at a later time.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateChoiceDismiss
    + +
    +
    +

    Swift

    +
    case dismiss = 2
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Enums/SPUUserUpdateStage.html b/documentation/api-reference/Enums/SPUUserUpdateStage.html new file mode 100644 index 0000000..e7b72a9 --- /dev/null +++ b/documentation/api-reference/Enums/SPUUserUpdateStage.html @@ -0,0 +1,330 @@ + + + + SPUUserUpdateStage Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUserUpdateStage

+
+
+

Objective-C

+
enum SPUUserUpdateStage : NSInteger {}
+ +
+
+

Swift

+
enum SPUUserUpdateStage : Int
+ +
+
+

Describes the current stage an update is undergoing.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    The update has not been downloaded.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateStageNotDownloaded
    + +
    +
    +

    Swift

    +
    case notDownloaded = 0
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The update has already been downloaded but not begun installing.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateStageDownloaded
    + +
    +
    +

    Swift

    +
    case downloaded = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The update has already been downloaded and began installing in the background.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateStageInstalling
    + +
    +
    +

    Swift

    +
    case installing = 2
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Enums/SUError.html b/documentation/api-reference/Enums/SUError.html new file mode 100644 index 0000000..75f2bf3 --- /dev/null +++ b/documentation/api-reference/Enums/SUError.html @@ -0,0 +1,1269 @@ + + + + SUError Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUError

+
+
+

Objective-C

+
NS_ENUM(OSStatus, SUError) {
+    // Configuration phase errors
+    SUNoPublicDSAFoundError = 0001,
+    SUInsufficientSigningError = 0002,
+    SUInsecureFeedURLError = 0003,
+    SUInvalidFeedURLError = 0004,
+    SUInvalidUpdaterError = 0005,
+    SUInvalidHostBundleIdentifierError = 0006,
+    SUInvalidHostVersionError = 0007,
+    
+    // Appcast phase errors.
+    SUAppcastParseError = 1000,
+    SUNoUpdateError = 1001,
+    SUAppcastError = 1002,
+    SURunningFromDiskImageError = 1003,
+    SUResumeAppcastError = 1004,
+    SURunningTranslocated = 1005,
+    SUWebKitTerminationError = 1006,
+
+    // Download phase errors.
+    SUTemporaryDirectoryError = 2000,
+    SUDownloadError = 2001,
+
+    // Extraction phase errors.
+    SUUnarchivingError = 3000,
+    SUSignatureError = 3001,
+    SUValidationError = 3002,
+    
+    // Installation phase errors.
+    SUFileCopyFailure = 4000,
+    SUAuthenticationFailure = 4001,
+    SUMissingUpdateError = 4002,
+    SUMissingInstallerToolError = 4003,
+    SURelaunchError = 4004,
+    SUInstallationError = 4005,
+    SUDowngradeError = 4006,
+    SUInstallationCanceledError = 4007,
+    SUInstallationAuthorizeLaterError = 4008,
+    SUNotValidUpdateError = 4009,
+    SUAgentInvalidationError = 4010,
+    
+    // API misuse errors.
+    SUIncorrectAPIUsageError = 5000
+}
+ +
+
+

Swift

+
enum SUError : OSStatus
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUNoPublicDSAFoundError = 0001
    + +
    +
    +

    Swift

    +
    case noPublicDSAFoundError = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInsufficientSigningError = 0002
    + +
    +
    +

    Swift

    +
    case insufficientSigningError = 2
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInsecureFeedURLError = 0003
    + +
    +
    +

    Swift

    +
    case insecureFeedURLError = 3
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUInvalidFeedURLError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInvalidFeedURLError = 0004
    + +
    +
    +

    Swift

    +
    case invalidFeedURLError = 4
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUInvalidUpdaterError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInvalidUpdaterError = 0005
    + +
    +
    +

    Swift

    +
    case invalidUpdaterError = 5
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInvalidHostBundleIdentifierError = 0006
    + +
    +
    +

    Swift

    +
    case invalidHostBundleIdentifierError = 6
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInvalidHostVersionError = 0007
    + +
    +
    +

    Swift

    +
    case invalidHostVersionError = 7
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUAppcastParseError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUAppcastParseError = 1000
    + +
    +
    +

    Swift

    +
    case appcastParseError = 1000
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUNoUpdateError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUNoUpdateError = 1001
    + +
    +
    +

    Swift

    +
    case noUpdateError = 1001
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUAppcastError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUAppcastError = 1002
    + +
    +
    +

    Swift

    +
    case appcastError = 1002
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SURunningFromDiskImageError = 1003
    + +
    +
    +

    Swift

    +
    case runningFromDiskImageError = 1003
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUResumeAppcastError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUResumeAppcastError = 1004
    + +
    +
    +

    Swift

    +
    case resumeAppcastError = 1004
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SURunningTranslocated + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SURunningTranslocated = 1005
    + +
    +
    +

    Swift

    +
    case runningTranslocated = 1005
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUWebKitTerminationError = 1006
    + +
    +
    +

    Swift

    +
    case webKitTerminationError = 1006
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUTemporaryDirectoryError = 2000
    + +
    +
    +

    Swift

    +
    case temporaryDirectoryError = 2000
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUDownloadError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUDownloadError = 2001
    + +
    +
    +

    Swift

    +
    case downloadError = 2001
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUUnarchivingError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUUnarchivingError = 3000
    + +
    +
    +

    Swift

    +
    case unarchivingError = 3000
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUSignatureError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUSignatureError = 3001
    + +
    +
    +

    Swift

    +
    case signatureError = 3001
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUValidationError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUValidationError = 3002
    + +
    +
    +

    Swift

    +
    case validationError = 3002
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUFileCopyFailure + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUFileCopyFailure = 4000
    + +
    +
    +

    Swift

    +
    case fileCopyFailure = 4000
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUAuthenticationFailure = 4001
    + +
    +
    +

    Swift

    +
    case authenticationFailure = 4001
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUMissingUpdateError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUMissingUpdateError = 4002
    + +
    +
    +

    Swift

    +
    case missingUpdateError = 4002
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUMissingInstallerToolError = 4003
    + +
    +
    +

    Swift

    +
    case missingInstallerToolError = 4003
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SURelaunchError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SURelaunchError = 4004
    + +
    +
    +

    Swift

    +
    case relaunchError = 4004
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUInstallationError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInstallationError = 4005
    + +
    +
    +

    Swift

    +
    case installationError = 4005
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUDowngradeError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUDowngradeError = 4006
    + +
    +
    +

    Swift

    +
    case downgradeError = 4006
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInstallationCanceledError = 4007
    + +
    +
    +

    Swift

    +
    case installationCanceledError = 4007
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInstallationAuthorizeLaterError = 4008
    + +
    +
    +

    Swift

    +
    case installationAuthorizeLaterError = 4008
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUNotValidUpdateError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUNotValidUpdateError = 4009
    + +
    +
    +

    Swift

    +
    case notValidUpdateError = 4009
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUAgentInvalidationError = 4010
    + +
    +
    +

    Swift

    +
    case agentInvalidationError = 4010
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUIncorrectAPIUsageError = 5000
    + +
    +
    +

    Swift

    +
    case incorrectAPIUsageError = 5000
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Protocols.html b/documentation/api-reference/Protocols.html new file mode 100644 index 0000000..27ae1ab --- /dev/null +++ b/documentation/api-reference/Protocols.html @@ -0,0 +1,432 @@ + + + + Protocols Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    A protocol for Sparkle’s standard user driver’s delegate

    + +

    This includes methods related to UI interactions

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SPUStandardUserDriverDelegate <NSObject>
    + +
    +
    +

    Swift

    +
    protocol SPUStandardUserDriverDelegate : NSObjectProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUpdaterDelegate + +
    +
    +
    +
    +
    +
    +

    Provides delegation methods to control the behavior of an SPUUpdater object.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SPUUpdaterDelegate <NSObject>
    + +
    +
    +

    Swift

    +
    protocol SPUUpdaterDelegate : NSObjectProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUserDriver + +
    +
    +
    +
    +
    +
    +

    The API in Sparkle for controlling the user interaction.

    + +

    This protocol is used for implementing a user interface for the Sparkle updater. Sparkle’s internal drivers tell +an object that implements this protocol what actions to take and show to the user.

    + +

    Every method in this protocol can be assumed to be called from the main thread.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SPUUserDriver <NSObject>
    + +
    +
    +

    Swift

    +
    protocol SPUUserDriver : NSObjectProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUUpdaterDelegate + +
    +
    +
    +
    +
    +
    +

    Deprecated

    +

    Deprecated in Sparkle 2. See SPUUpdaterDelegate instead

    + +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SUUpdaterDelegate <NSObject>
    + +
    +
    +

    Swift

    +
    protocol SUUpdaterDelegate : NSObjectProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUVersionComparison + +
    +
    +
    +
    +
    +
    +

    Provides version comparison facilities for Sparkle.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SUVersionComparison
    + +
    +
    +

    Swift

    +
    protocol SUVersionComparison
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUVersionDisplay + +
    +
    +
    +
    +
    +
    +

    Applies special display formatting to version numbers.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SUVersionDisplay
    + +
    +
    +

    Swift

    +
    protocol SUVersionDisplay
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Protocols/SPUStandardUserDriverDelegate.html b/documentation/api-reference/Protocols/SPUStandardUserDriverDelegate.html new file mode 100644 index 0000000..9382d80 --- /dev/null +++ b/documentation/api-reference/Protocols/SPUStandardUserDriverDelegate.html @@ -0,0 +1,330 @@ + + + + SPUStandardUserDriverDelegate Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUStandardUserDriverDelegate

+
+
+

Objective-C

+
@protocol SPUStandardUserDriverDelegate <NSObject>
+ +
+
+

Swift

+
protocol SPUStandardUserDriverDelegate : NSObjectProtocol
+ +
+
+

A protocol for Sparkle’s standard user driver’s delegate

+ +

This includes methods related to UI interactions

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Called before showing a modal alert window, +to give the opportunity to hide attached windows that may get in the way.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)standardUserDriverWillShowModalAlert;
    + +
    +
    +

    Swift

    +
    optional func standardUserDriverWillShowModalAlert()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after showing a modal alert window, +to give the opportunity to hide attached windows that may get in the way.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)standardUserDriverDidShowModalAlert;
    + +
    +
    +

    Swift

    +
    optional func standardUserDriverDidShowModalAlert()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an object that formats version numbers for display to the user. +If you don’t implement this method or return nil, the standard version formatter will be used.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (id<SUVersionDisplay> _Nullable)standardUserDriverRequestsVersionDisplayer;
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Protocols/SPUUpdaterDelegate.html b/documentation/api-reference/Protocols/SPUUpdaterDelegate.html new file mode 100644 index 0000000..84ef51c --- /dev/null +++ b/documentation/api-reference/Protocols/SPUUpdaterDelegate.html @@ -0,0 +1,2379 @@ + + + + SPUUpdaterDelegate Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdaterDelegate

+
+
+

Objective-C

+
@protocol SPUUpdaterDelegate <NSObject>
+ +
+
+

Swift

+
protocol SPUUpdaterDelegate : NSObjectProtocol
+ +
+
+

Provides delegation methods to control the behavior of an SPUUpdater object.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Returns whether to allow Sparkle to check for updates.

    + +

    For example, this may be used to prevent Sparkle from interrupting a setup assistant. +Alternatively, you may want to consider starting the updater after eg: the setup assistant finishes

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +    mayPerformUpdateCheck:(SPUUpdateCheck)updateCheck
    +                    error:(NSError *_Nullable *_Nullable)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, mayPerform updateCheck: SPUUpdateCheck) throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + updateCheck + + +
    +

    The type of update check that will be performed if the updater is allowed to check for updates.

    +
    +
    + + error + + +
    +

    The (optionally) populated error object if the updater may not perform a new update check.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater is allowed to check for updates, otherwise NO

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the set of Sparkle channels the updater is allowed to find new updates from.

    + +

    An appcast item can specify a channel the update is posted to. Without specifying a channel, the appcast item is posted to the default channel. +For instance:

    +
    <item>
    +   <sparkle:version>2.0 Beta 1</sparkle:version>
    +   <sparkle:channel>beta</sparkle:channel>
    +</item>
    +
    + +

    This example posts an update to the beta channel, so only updaters that are allowed to use the beta channel can find this update.

    + +

    If the <sparkle:channel> element is not present, the update item is posted to the default channel and can be found by any updater.

    + +

    You can pick any name you’d like for the channel. The valid characters for channel names are letters, numbers, dashes, underscores, and periods.

    + +

    Note to use this feature, all app versions that your users may update from in your feed must use a version of Sparkle that supports this feature. +This feature was added in Sparkle 2.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull NSSet<NSString *> *)allowedChannelsForUpdater:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func allowedChannels(for updater: SPUUpdater) -> Set<String>
    + +
    +
    +
    +

    Return Value

    +

    The set of channel names the updater is allowed to find new updates in. An empty set is the default behavior, + which means the updater will only look for updates in the default channel.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a custom appcast URL used for checking for new updates.

    + +

    Override this to dynamically specify the feed URL.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable NSString *)feedURLStringForUpdater:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func feedURLString(for updater: SPUUpdater) -> String?
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    An appcast feed URL to check for new updates in, or nil for the default behavior and if you don’t want to be delegated this task.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns additional parameters to append to the appcast URL’s query string.

    + +

    This is potentially based on whether or not Sparkle will also be sending along the system profile.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull NSArray<NSDictionary<NSString *, NSString *> *> *)
    +    feedParametersForUpdater:(nonnull SPUUpdater *)updater
    +        sendingSystemProfile:(BOOL)sendingProfile;
    + +
    +
    +

    Swift

    +
    optional func feedParameters(for updater: SPUUpdater, sendingSystemProfile sendingProfile: Bool) -> [[String : String]]
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + sendingProfile + + +
    +

    Whether the system profile will also be sent.

    +
    +
    +
    +
    +

    Return Value

    +

    An array of dictionaries with keys: key, value, displayKey, displayValue, the latter two being specifically for display to the user.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether Sparkle should prompt the user about checking for new updates automatically.

    + +

    Use this to override the default behavior.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterShouldPromptForPermissionToCheck(forUpdates updater: SPUUpdater) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater should prompt for permission to check for new updates automatically, otherwise NO

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an allowed list of system profile keys to be appended to the appcast URL’s query string.

    + +

    By default all keys will be included. This method allows overriding which keys should only be allowed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable NSArray<NSString *> *)allowedSystemProfileKeysForUpdater:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func allowedSystemProfileKeys(for updater: SPUUpdater) -> [String]?
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    An array of system profile keys to include in the appcast URL’s query string. Elements must be one of the SUSystemProfiler*Key constants. Return nil for the default behavior and if you don’t want to be delegated this task.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after Sparkle has downloaded the appcast from the remote server.

    + +

    Implement this if you want to do some special handling with the appcast once it finishes loading.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didFinishLoadingAppcast:(nonnull SUAppcast *)appcast;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didFinishLoading appcast: SUAppcast)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + appcast + + +
    +

    The appcast that was downloaded from the remote server.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when a new valid update is found by the update driver.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didFindValidUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didFindValidUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be installed.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when a valid new update is not found.

    + +

    There are various reasons a new update is unavailable and can’t be installed.

    + +

    The userInfo dictionary on the error is populated with three keys:

    + + + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updaterDidNotFindUpdate:(nonnull SPUUpdater *)updater
    +                          error:(nonnull NSError *)error;
    + +
    +
    +

    Swift

    +
    optional func updaterDidNotFindUpdate(_ updater: SPUUpdater, error: Error)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + error + + +
    +

    An error containing information on why a new valid update was not found

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when a valid new update is not found.

    + +

    If more information is needed on why an update was not found, use -[SPUUpdaterDelegate updaterDidNotFindUpdate:error:] instead.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updaterDidNotFindUpdate:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterDidNotFindUpdate(_ updater: SPUUpdater)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the item in the appcast corresponding to the update that should be installed.

    + +

    Please consider using or migrating to other supported features before adopting this method. +Specifically:

    + +
      +
    • If you want to filter out certain tagged updates (like beta updates), consider -[SPUUpdaterDelegate allowedChannelsForUpdater:] instead.
    • +
    • If you want to treat certain updates as informational-only, consider supplying <sparkle:informationalUpdate> with a set of affected versions users are updating from.
    • +
    + +

    If you’re using special logic or extensions in your appcast, implement this to use your own logic for finding a valid update, if any, in the given appcast.

    + +

    Do not base your logic by filtering out items with a minimum or maximum OS version or minimum autoupdate version +because Sparkle already has logic for determining whether or not those items should be filtered out.

    + +

    Also do not return a non-top level item from the appcast such as a delta item. Delta items will be ignored. +Sparkle picks the delta item from your selection if the appropriate one is available.

    + +

    This method will not be invoked with an appcast that has zero items. Pick the best item from the appcast. +If an item is available that has the same version as the application or bundle to update, do not pick an item that is worse than that version.

    + +

    This method may be called multiple times for different selections and filters. This method should be efficient.

    + +

    Return +[SUAppcastItem emptyAppcastItem] if no appcast item is valid.

    + +

    Return nil if you don’t want to be delegated this task and want to let Sparkle handle picking the best valid update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable SUAppcastItem *)
    +    bestValidUpdateInAppcast:(nonnull SUAppcast *)appcast
    +                  forUpdater:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func bestValidUpdate(in appcast: SUAppcast, for updater: SPUUpdater) -> SUAppcastItem?
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + appcast + + +
    +

    The appcast that was downloaded from the remote server.

    +
    +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    The best valid appcast item.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether or not the updater should proceed with the new chosen update from the appcast.

    + +

    By default, the updater will always proceed with the best selected update found in an appcast. Override this to override this behavior.

    + +

    If you return NO and populate the error, the user is not shown this updateItem nor is the update downloaded or installed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +    shouldProceedWithUpdate:(nonnull SUAppcastItem *)updateItem
    +                updateCheck:(SPUUpdateCheck)updateCheck
    +                      error:(NSError *_Nullable *_Nullable)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, shouldProceedWithUpdate updateItem: SUAppcastItem, updateCheck: SPUUpdateCheck) throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + updateItem + + +
    +

    The selected update item to proceed with.

    +
    +
    + + updateCheck + + +
    +

    The type of update check that would be performed if proceeded.

    +
    +
    + + error + + +
    +

    An error object that must be populated by the delegate if the updater should not proceed with the update.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater should proceed with updateItem, otherwise NO if the updater should not proceed with the update with an error populated.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when an update is skipped by the user.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    userDidSkipThisVersion:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, userDidSkipThisVersion item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that the user skipped.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether the release notes (if available) should be downloaded after an update is found and shown.

    + +

    This is specifically for the <releaseNotesLink> element in the appcast item.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +    shouldDownloadReleaseNotesForUpdate:(nonnull SUAppcastItem *)updateItem;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, shouldDownloadReleaseNotesForUpdate updateItem: SUAppcastItem) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + updateItem + + +
    +

    The update item to download and show release notes from.

    +
    +
    +
    +
    +

    Return Value

    +

    YES to download and show the release notes if available, otherwise NO. The default behavior is YES.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately before downloading the specified update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    willDownloadUpdate:(nonnull SUAppcastItem *)item
    +           withRequest:(nonnull NSMutableURLRequest *)request;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willDownloadUpdate item: SUAppcastItem, with request: NSMutableURLRequest)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be downloaded.

    +
    +
    + + request + + +
    +

    The mutable URL request that will be used to download the update.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately after succesfull download of the specified update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didDownloadUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didDownloadUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The SUUpdater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that has been downloaded.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after the specified update failed to download.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    failedToDownloadUpdate:(nonnull SUAppcastItem *)item
    +                     error:(nonnull NSError *)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, failedToDownloadUpdate item: SUAppcastItem, error: Error)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that failed to download.

    +
    +
    + + error + + +
    +

    The error generated by the failed download.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when the user cancels an update while it is being downloaded.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)userDidCancelDownload:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func userDidCancelDownload(_ updater: SPUUpdater)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately before extracting the specified downloaded update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    willExtractUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willExtractUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The SUUpdater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be extracted.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately after extracting the specified downloaded update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didExtractUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didExtractUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The SUUpdater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that has been extracted.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately before installing the specified update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    willInstallUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willInstallUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be installed.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether the relaunch should be delayed in order to perform other tasks.

    + +

    This is not called if the user didn’t relaunch on the previous update, +in that case it will immediately restart.

    + +

    This may also not be called if the application is not going to relaunch after it terminates.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +    shouldPostponeRelaunchForUpdate:(nonnull SUAppcastItem *)item
    +                 untilInvokingBlock:(nonnull void (^)(void))installHandler;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, shouldPostponeRelaunchForUpdate item: SUAppcastItem, untilInvokingBlock installHandler: @escaping () -> Void) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be installed.

    +
    +
    + + installHandler + + +
    +

    The install handler that must be completed before continuing with the relaunch.

    +
    +
    +
    +
    +

    Return Value

    +

    YES to delay the relaunch until installHandler is invoked.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether the application should be relaunched at all.

    + +

    Some apps cannot be relaunched under certain circumstances. +This method can be used to explicitly prevent a relaunch.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updaterShouldRelaunchApplication:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterShouldRelaunchApplication(_ updater: SPUUpdater) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater should be relaunched, otherwise NO if it shouldn’t.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately before relaunching.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updaterWillRelaunchApplication:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterWillRelaunchApplication(_ updater: SPUUpdater)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an object that compares version numbers to determine their arithmetic relation to each other.

    + +

    This method allows you to provide a custom version comparator. +If you don’t implement this method or return nil, +the standard version comparator will be used.

    + +

    Note that the standard version comparator may be used during installation for preventing a downgrade, +even if you provide a custom comparator here.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable id<SUVersionComparison>)versionComparatorForUpdater:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    The custom version comparator or nil if you don’t want to be delegated this task.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when a background update will be scheduled after a delay.

    + +

    Automatic update checks need to be enabled for this to trigger.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    willScheduleUpdateCheckAfterDelay:(NSTimeInterval)delay;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willScheduleUpdateCheckAfterDelay delay: TimeInterval)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + delay + + +
    +

    The delay in seconds until the next scheduled update will occur.

    +
    +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when no update checks will be scheduled in the future.

    + +

    This may later change if automatic update checks become enabled.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updaterWillNotScheduleUpdateCheck:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterWillNotScheduleUpdateCheck(_ updater: SPUUpdater)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the decryption password (if any) which is used to extract the update archive DMG.

    + +

    Return nil if no password should be used.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable NSString *)decryptionPasswordForUpdater:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func decryptionPassword(for updater: SPUUpdater) -> String?
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    The password used for decrypting the archive, or nil if no password should be used.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when an update is scheduled to be silently installed on quit after downloading the update automatically.

    + +

    If the updater is given responsibility, it can later remind the user an update is available if they have not terminated the application for a long time.

    + +

    Also if the updater is given responsibility and the update item is marked critical, the new update will be presented to the user immediately after.

    + +

    Even if the immediateInstallHandler is not invoked, the installer will attempt to install the update on termination.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +       willInstallUpdateOnQuit:(nonnull SUAppcastItem *)item
    +    immediateInstallationBlock:(nonnull void (^)(void))immediateInstallHandler;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willInstallUpdateOnQuit item: SUAppcastItem, immediateInstallationBlock immediateInstallHandler: @escaping () -> Void) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be installed.

    +
    +
    + + immediateInstallHandler + + +
    +

    The install handler to immediately install the update. No UI interaction will be shown and the application will be relaunched after installation.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the delegate will handle installing the update or NO if the updater should be given responsibility.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after the update driver aborts due to an error.

    + +

    The update driver runs when checking for updates. This delegate method is called an error occurs during this process.

    + +

    Some special possible values of error.code are:

    + +
      +
    • SUNoUpdateError: No new update was found.
    • +
    • SUInstallationCanceledError: The user canceled installing the update when requested for authorization.

    • +
    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didAbortWithError:(nonnull NSError *)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didAbortWithError error: Error)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + error + + +
    +

    The error that caused the update driver to abort.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after the update driver finishes.

    + +

    The update driver runs when checking for updates. This delegate method is called when that check is finished.

    + +

    An update may be scheduled to be installed during the update cycle, or no updates may be found, or an available update may be dismissed or skipped (which is the same as no error).

    + +

    If the error is nil, no error has occurred.

    + +

    Some special possible values of error.code are:

    + +
      +
    • SUNoUpdateError: No new update was found.
    • +
    • SUInstallationCanceledError: The user canceled installing the update when requested for authorization.

    • +
    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didFinishUpdateCycleForUpdateCheck:(SPUUpdateCheck)updateCheck
    +                                 error:(nullable NSError *)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didFinishUpdateCycleFor updateCheck: SPUUpdateCheck, error: Error?)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + updateCheck + + +
    +

    The type of update check was performed.

    +
    +
    + + error + + +
    +

    The error that caused the update driver to abort. This is nil if the update driver finished normally and there is no error.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Please use -[SPUUpdaterDelegate updater:mayPerformUpdateCheck:error:] instead.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updaterMayCheckForUpdates:(SPUUpdater *)updater __deprecated_msg("Please use -[SPUUpdaterDelegate updater:mayPerformUpdateCheck:error:] instead.");
    + +
    +
    +

    Swift

    +
    optional func updaterMayCheck(forUpdates updater: SPUUpdater) -> Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Protocols/SPUUserDriver.html b/documentation/api-reference/Protocols/SPUUserDriver.html new file mode 100644 index 0000000..c80c5d6 --- /dev/null +++ b/documentation/api-reference/Protocols/SPUUserDriver.html @@ -0,0 +1,1368 @@ + + + + SPUUserDriver Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUserDriver

+
+
+

Objective-C

+
@protocol SPUUserDriver <NSObject>
+ +
+
+

Swift

+
protocol SPUUserDriver : NSObjectProtocol
+ +
+
+

The API in Sparkle for controlling the user interaction.

+ +

This protocol is used for implementing a user interface for the Sparkle updater. Sparkle’s internal drivers tell +an object that implements this protocol what actions to take and show to the user.

+ +

Every method in this protocol can be assumed to be called from the main thread.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Show an updater permission request to the user

    + +

    Ask the user for their permission regarding update checks. + This is typically only called once per app installation.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)
    +    showUpdatePermissionRequest:(nonnull SPUUpdatePermissionRequest *)request
    +                          reply:(nonnull void (^)(
    +                                    SUUpdatePermissionResponse *_Nonnull))reply;
    + +
    +
    +

    Swift

    +
    func show(_ request: SPUUpdatePermissionRequest) async -> SUUpdatePermissionResponse
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + request + + +
    +

    The update permission request.

    +
    +
    + + reply + + +
    +

    A reply with a update permission response.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user initating an update check

    + +

    Respond to the user initiating an update check. Sparkle uses this to show the user a window with an indeterminate progress bar.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUserInitiatedUpdateCheckWithCancellation:
    +    (nonnull void (^)(void))cancellation;
    + +
    +
    +

    Swift

    +
    func showUserInitiatedUpdateCheck(cancellation: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + cancellation + + +
    +

    Invoke this cancellation block to cancel the update check before the update check is completed.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user a new update is found.

    + +

    Let the user know a new update is found and ask them what they want to do. + Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.

    + +

    state.userInitiated indicates if the update was initiated by the user or if it was automatically scheduled in the background.

    + +

    Additionally, these properties on the appcastItem are of importance:

    + +

    appcastItem.informationOnlyUpdate indicates if the update is only informational and should not be downloaded. You can direct the user to the infoURL property of the appcastItem in their web browser. Sometimes information only updates are used as a fallback in case a bad update is shipped, so you’ll want to support this case.

    + +

    appcastItem.majorUpgrade indicates if the update is a major or paid upgrade.

    + +

    appcastItem.criticalUpdate indicates if the update is a critical update.

    + +

    A reply of SPUUserUpdateChoiceDismiss dismisses the update for the time being. The user may be reminded of the update at a later point. + If the state.stage is SPUUserUpdateStateDownloaded, the downloaded update is kept after dismissing until the next time an update is shown to the user. + If the state.stage is SPUUserUpdateStateInstalling, the installing update is also preserved after dismissing. In this state however, the update will also still be installed after the application is terminated.

    + +

    A reply of SPUUserUpdateChoiceSkip skips this particular version and won’t notify the user again, unless they initiate an update check themselves. + If appcastItem.majorUpgrade is YES, the major update and any future minor updates to that major release are skipped. + If the state.stage is SPUUpdateStateInstalling, the installation is also canceled when the update is skipped.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateFoundWithAppcastItem:(nonnull SUAppcastItem *)appcastItem
    +                                 state:(nonnull SPUUserUpdateState *)state
    +                                 reply:(nonnull void (^)(SPUUserUpdateChoice))
    +                                           reply;
    + +
    +
    +

    Swift

    +
    func showUpdateFound(with appcastItem: SUAppcastItem, state: SPUUserUpdateState) async -> SPUUserUpdateChoice
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + appcastItem + + +
    +

    The Appcast Item containing information that reflects the new update.

    +
    +
    + + state + + +
    +

    The current state of the user update. +The state.stage values are: +SPUUpdateStateNotDownloaded - Update has not been downloaded yet. +SPUUpdateStateDownloaded - Update has already been downloaded but not started installing yet. +SPUUpdateStateInstalling - Update has been downloaded and already started installing.

    +
    +
    + + reply + + +
    +

    A reply of SPUUserUpdateChoiceInstall begins or resumes downloading or installing the update. +If the state.stage is SPUUserUpdateStateInstalling, this may send a quit event to the application and relaunch it immediately (in this state, this behaves as a fast “install and Relaunch”). Do not use this reply if appcastItem.informationOnlyUpdate is YES.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user the release notes for the new update

    + +

    Display the release notes to the user. This will be called after showing the new update. + This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. + That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateReleaseNotesWithDownloadData:
    +    (nonnull SPUDownloadData *)downloadData;
    + +
    +
    +

    Swift

    +
    func showUpdateReleaseNotes(with downloadData: SPUDownloadData)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + downloadData + + +
    +

    The data for the release notes that was downloaded from the new update’s appcast.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the new update’s release notes could not be downloaded

    + +

    This will be called after showing the new update. + This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. + That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateReleaseNotesFailedToDownloadWithError:
    +    (nonnull NSError *)error;
    + +
    +
    +

    Swift

    +
    func showUpdateReleaseNotesFailedToDownloadWithError(_ error: Error)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + error + + +
    +

    The error associated with why the new update’s release notes could not be downloaded.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user a new update was not found

    + +

    Let the user know a new update was not found after they tried initiating an update check. + Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.

    + +

    The userInfo dictionary is also populated with two keys:

    + +

    SPULatestAppcastItemFoundKey: if available, this may provide the latest SUAppcastItem that was found.

    + +

    SPUNoUpdateFoundReasonKey: if available, this will provide the SUNoUpdateFoundReason. For example the reason could be because + the latest version in the feed requires a newer OS version or could be because the user is already on the latest version.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateNotFoundWithError:(nonnull NSError *)error
    +                    acknowledgement:(nonnull void (^)(void))acknowledgement;
    + +
    +
    +

    Swift

    +
    func showUpdateNotFoundWithError(_ error: Error, acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + error + + +
    +

    The error associated with why a new update was not found. +There are various reasons a new update is unavailable and can’t be installed. +This error object is populated with recovery and suggestion strings suitable to be shown in an alert.

    +
    +
    + + acknowledgement + + +
    +

    Acknowledge to the updater that no update found error was shown.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user an update error occurred

    + +

    Let the user know that the updater failed with an error. This will not be invoked without the user having been + aware that an update was in progress.

    + +

    Before this point, any of the non-error user driver methods may have been invoked.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdaterError:(nonnull NSError *)error
    +         acknowledgement:(nonnull void (^)(void))acknowledgement;
    + +
    +
    +

    Swift

    +
    func showUpdaterError(_ error: Error, acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + error + + +
    +

    The error associated with what update error occurred.

    +
    +
    + + acknowledgement + + +
    +

    Acknowledge to the updater that the error was shown.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that downloading the new update initiated

    + +

    Let the user know that downloading the new update started.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showDownloadInitiatedWithCancellation:
    +    (nonnull void (^)(void))cancellation;
    + +
    +
    +

    Swift

    +
    func showDownloadInitiated(cancellation: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + cancellation + + +
    +

    Invoke this cancellation block to cancel the download at any point before -showDownloadDidStartExtractingUpdate is invoked.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user the content length of the new update that will be downloaded

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showDownloadDidReceiveExpectedContentLength:
    +    (uint64_t)expectedContentLength;
    + +
    +
    +

    Swift

    +
    func showDownloadDidReceiveExpectedContentLength(_ expectedContentLength: UInt64)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + expectedContentLength + + +
    +

    The expected content length of the new update being downloaded. +An implementor should be able to handle if this value is invalid (more or less than actual content length downloaded). +Additionally, this method may be called more than once for the same download in rare scenarios.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update download received more data

    + +

    This may be an appropriate time to advance a visible progress indicator of the download

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showDownloadDidReceiveDataOfLength:(uint64_t)length;
    + +
    +
    +

    Swift

    +
    func showDownloadDidReceiveData(ofLength length: UInt64)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + length + + +
    +

    The length of the data that was just downloaded

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update finished downloading and started extracting

    + +

    Sparkle uses this to show an indeterminate progress bar.

    + +

    Note that an update can resume at this point after having been downloaded before, + so this may be called without any of the download callbacks being invoked prior.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showDownloadDidStartExtractingUpdate;
    + +
    +
    +

    Swift

    +
    func showDownloadDidStartExtractingUpdate()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update is extracting with progress

    + +

    Let the user know how far along the update extraction is.

    + +

    Before this point, -showDownloadDidStartExtractingUpdate is called.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showExtractionReceivedProgress:(double)progress;
    + +
    +
    +

    Swift

    +
    func showExtractionReceivedProgress(_ progress: Double)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + progress + + +
    +

    The progress of the extraction from a 0.0 to 1.0 scale

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -showInstallingUpdate + +
    +
    +
    +
    +
    +
    +

    Show the user that the update is installing

    + +

    Let the user know that the update is currently installing. Sparkle uses this to show an indeterminate progress bar.

    + +

    Before this point, -showExtractionReceivedProgress: may be called.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showInstallingUpdate;
    + +
    +
    +

    Swift

    +
    func showInstallingUpdate()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update is ready to install & relaunch

    + +

    Let the user know that the update is ready to install and relaunch, and ask them whether they want to proceed. + Note if the target application has already terminated, this method may not be invoked.

    + +

    A reply of SPUUserUpdateChoiceDismiss dismisses the update installation for the time being. Note the update may still be installed automatically after the application terminates.

    + +

    A reply of SPUUserUpdateChoiceSkip cancels the current update that has begun installing and dismisses the update. In this circumstance, the update is canceled but this update version is not skipped in the future.

    + +

    Before this point, -showInstallingUpdate will be called.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showReadyToInstallAndRelaunch:
    +    (nonnull void (^)(SPUUserUpdateChoice))reply;
    + +
    +
    +

    Swift

    +
    func showReadyToInstallAndRelaunch() async -> SPUUserUpdateChoice
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + reply + + +
    +

    A reply of SPUUserUpdateChoiceInstall installs the update the new update immediately. The application is relaunched only if it is still running by the time this reply is invoked. If the application terminates on its own, Sparkle will attempt to automatically install the update.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show or dismiss progress while a termination signal is being sent to the application from Sparkle’s installer

    + +

    Terminating and relaunching the application (if requested to be relaunched) may happen quickly, + or it may take some time to perform the final installation, or the termination signal can be canceled or delayed by the application or user.

    + +

    It is up to the implementor whether or not to decide to continue showing installation progress + or dismissing UI that won’t remain obscuring other parts of the user interface.

    + +

    This will not be invoked if the application that is being updated is already terminated.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showSendingTerminationSignal;
    + +
    +
    +

    Swift

    +
    func showSendingTerminationSignal()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update installation finished

    + +

    Let the user know that the update finished installing.

    + +

    This will only be invoked if the updater process is still alive, which is typically not the case if + the updater’s lifetime is tied to the application it is updating. This implementation must not try to reference + the old bundle prior to the installation, which will no longer be around.

    + +

    Before this point, -showSendingTerminationSignal or -showReadyToInstallAndRelaunch: may be called.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateInstalledAndRelaunched:(BOOL)relaunched
    +                         acknowledgement:
    +                             (nonnull void (^)(void))acknowledgement;
    + +
    +
    +

    Swift

    +
    func showUpdateInstalledAndRelaunched(_ relaunched: Bool, acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + relaunched + + +
    +

    Indicates if the update was relaunched.

    +
    +
    + + acknowledgement + + +
    +

    Acknowledge to the updater that the finished installation was shown.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -showUpdateInFocus + +
    +
    +
    +
    +
    +
    +

    Show the user the current presented update or its progress in utmost focus

    + +

    The user wishes to check for updates while the user is being shown update progress. + Bring whatever is on screen to frontmost focus (permission request, update information, downloading or extraction status, choice to install update, etc).

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateInFocus;
    + +
    +
    +

    Swift

    +
    func showUpdateInFocus()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Dismiss the current update installation

    + +

    Stop and tear down everything. + Dismiss all update windows, alerts, progress, etc from the user. + Basically, stop everything that could have been started. Sparkle may invoke this when aborting or finishing an update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)dismissUpdateInstallation;
    + +
    +
    +

    Swift

    +
    func dismissUpdateInstallation()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Implement -showUpdateNotFoundWithError:acknowledgement: instead

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateNotFoundWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateNotFoundWithError:acknowledgement: instead");
    + +
    +
    +

    Swift

    +
    optional func showUpdateNotFound(acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Implement -showUpdateInstalledAndRelaunched:acknowledgement: instead

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateInstallationDidFinishWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateInstalledAndRelaunched:acknowledgement: instead");
    + +
    +
    +

    Swift

    +
    optional func showUpdateInstallationDidFinish(acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)dismissUserInitiatedUpdateCheck __deprecated_msg("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.");
    + +
    +
    +

    Swift

    +
    optional func dismissUserInitiatedUpdateCheck()
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Protocols/SUUpdaterDelegate.html b/documentation/api-reference/Protocols/SUUpdaterDelegate.html new file mode 100644 index 0000000..5306e96 --- /dev/null +++ b/documentation/api-reference/Protocols/SUUpdaterDelegate.html @@ -0,0 +1,1220 @@ + + + + SUUpdaterDelegate Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUUpdaterDelegate

+
+

Deprecated

+

Deprecated in Sparkle 2. See SPUUpdaterDelegate instead

+ +
+
+
+

Objective-C

+
@protocol SUUpdaterDelegate <NSObject>
+ +
+
+

Swift

+
protocol SUUpdaterDelegate : NSObjectProtocol
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Protocols/SUVersionComparison.html b/documentation/api-reference/Protocols/SUVersionComparison.html new file mode 100644 index 0000000..be424f7 --- /dev/null +++ b/documentation/api-reference/Protocols/SUVersionComparison.html @@ -0,0 +1,270 @@ + + + + SUVersionComparison Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUVersionComparison

+
+
+

Objective-C

+
@protocol SUVersionComparison
+ +
+
+

Swift

+
protocol SUVersionComparison
+ +
+
+

Provides version comparison facilities for Sparkle.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    An abstract method to compare two version strings.

    + +

    Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, +and NSOrderedSame if they are equivalent.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (NSComparisonResult)compareVersion:(nonnull NSString *)versionA
    +                           toVersion:(nonnull NSString *)versionB;
    + +
    +
    +

    Swift

    +
    func compareVersion(_ versionA: String, toVersion versionB: String) -> ComparisonResult
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/Protocols/SUVersionDisplay.html b/documentation/api-reference/Protocols/SUVersionDisplay.html new file mode 100644 index 0000000..e608885 --- /dev/null +++ b/documentation/api-reference/Protocols/SUVersionDisplay.html @@ -0,0 +1,270 @@ + + + + SUVersionDisplay Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUVersionDisplay

+
+
+

Objective-C

+
@protocol SUVersionDisplay
+ +
+
+

Swift

+
protocol SUVersionDisplay
+ +
+
+

Applies special display formatting to version numbers.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Formats two version strings.

    + +

    Both versions are provided so that important distinguishing information +can be displayed while also leaving out unnecessary/confusing parts.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)formatVersion:(NSString *_Nonnull *_Nonnull)inOutVersionA
    +           andVersion:(NSString *_Nonnull *_Nonnull)inOutVersionB;
    + +
    +
    +

    Swift

    +
    func formatVersion(_ inOutVersionA: AutoreleasingUnsafeMutablePointer<NSString>, andVersion inOutVersionB: AutoreleasingUnsafeMutablePointer<NSString>)
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/_app_kit_prevention_8h_source.html b/documentation/api-reference/_app_kit_prevention_8h_source.html new file mode 100644 index 0000000..a6ec97f --- /dev/null +++ b/documentation/api-reference/_app_kit_prevention_8h_source.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: Sparkle/AppKitPrevention.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AppKitPrevention.h
+
+
+
1 //
+
2 // AppKitPrevention.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 1/17/17.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 // #include (not #import) this header to prevent AppKit from being imported
+
10 // Note this should be your LAST #include in your implementation file
+
11 
+
12 // If this error is triggered, you can have Xcode indicate to you which source file including this header caused the issue
+
13 
+
14 #ifdef _APPKITDEFINES_H
+
15 #error This is a core or daemon-safe module and should NOT import AppKit
+
16 #endif
+
+ + + + diff --git a/documentation/api-reference/_installer_progress_app_controller_8h_source.html b/documentation/api-reference/_installer_progress_app_controller_8h_source.html new file mode 100644 index 0000000..84c80f2 --- /dev/null +++ b/documentation/api-reference/_installer_progress_app_controller_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/InstallerProgressAppController.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
InstallerProgressAppController.h
+
+
+
1 //
+
2 // InstallerProgressAppController.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/10/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Cocoa/Cocoa.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+ +
14 
+
15 @interface InstallerProgressAppController : NSObject <NSApplicationDelegate>
+
16 
+
17 - (instancetype)initWithApplication:(NSApplication *)application arguments:(NSArray<NSString *> *)arguments delegate:(id<InstallerProgressDelegate>)delegate;
+
18 
+
19 - (void)run;
+
20 
+
21 - (void)cleanupAndExitWithStatus:(int)status error:(NSError * _Nullable)error __attribute__((noreturn));
+
22 
+
23 @end
+
24 
+
25 NS_ASSUME_NONNULL_END
+
Definition: InstallerProgressAppController.h:15
+
Definition: InstallerProgressDelegate.h:15
+
+ + + + diff --git a/documentation/api-reference/_installer_progress_delegate_8h_source.html b/documentation/api-reference/_installer_progress_delegate_8h_source.html new file mode 100644 index 0000000..365ab95 --- /dev/null +++ b/documentation/api-reference/_installer_progress_delegate_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/InstallerProgressDelegate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
InstallerProgressDelegate.h
+
+
+
1 //
+
2 // InstallerProgressDelegate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/10/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUHost;
+
14 
+
15 @protocol InstallerProgressDelegate <NSObject>
+
16 
+
17 - (void)installerProgressShouldDisplayWithHost:(SUHost *)host;
+
18 - (void)installerProgressShouldStop;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
Definition: InstallerProgressDelegate.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_appcast_item_state_8h_source.html b/documentation/api-reference/_s_p_u_appcast_item_state_8h_source.html new file mode 100644 index 0000000..75af479 --- /dev/null +++ b/documentation/api-reference/_s_p_u_appcast_item_state_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SPUAppcastItemState.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUAppcastItemState.h
+
+
+
1 //
+
2 // SPUAppcastItemState.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/31/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 // Appcast Item state that contains properties that depends on a host
+
14 @interface SPUAppcastItemState : NSObject
+
15 
+
16 - (instancetype)init NS_UNAVAILABLE;
+
17 
+
18 - (instancetype)initWithMajorUpgrade:(BOOL)majorUpgrade criticalUpdate:(BOOL)criticalUpdate informationalUpdate:(BOOL)informationalUpdate minimumOperatingSystemVersionIsOK:(BOOL)minimumOperatingSystemVersionIsOK maximumOperatingSystemVersionIsOK:(BOOL)maximumOperatingSystemVersionIsOK;
+
19 
+
20 @property (nonatomic, readonly) BOOL majorUpgrade;
+
21 @property (nonatomic, readonly) BOOL criticalUpdate;
+
22 @property (nonatomic, readonly) BOOL informationalUpdate;
+
23 @property (nonatomic, readonly) BOOL minimumOperatingSystemVersionIsOK;
+
24 @property (nonatomic, readonly) BOOL maximumOperatingSystemVersionIsOK;
+
25 
+
26 @end
+
27 
+
28 NS_ASSUME_NONNULL_END
+
Definition: SPUAppcastItemState.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_appcast_item_state_resolver_09_private_8h_source.html b/documentation/api-reference/_s_p_u_appcast_item_state_resolver_09_private_8h_source.html new file mode 100644 index 0000000..69d586d --- /dev/null +++ b/documentation/api-reference/_s_p_u_appcast_item_state_resolver_09_private_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +Sparkle: Sparkle/SPUAppcastItemStateResolver+Private.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUAppcastItemStateResolver+Private.h
+
+
+
1 //
+
2 // SPUAppcastItemStateResolver+Private.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 6/20/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPUAppcastItemStateResolver_Private_h
+
10 #define SPUAppcastItemStateResolver_Private_h
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @interface SPUAppcastItemStateResolver ()
+
15 
+
16 - (SPUAppcastItemState *)resolveStateWithInformationalUpdateVersions:(NSSet<NSString *> * _Nullable)informationalUpdateVersions minimumOperatingSystemVersion:(NSString * _Nullable)minimumOperatingSystemVersion maximumOperatingSystemVersion:(NSString * _Nullable)maximumOperatingSystemVersion minimumAutoupdateVersion:(NSString * _Nullable)minimumAutoupdateVersion criticalUpdateDictionary:(NSDictionary * _Nullable)criticalUpdateDictionary;
+
17 
+
18 + (BOOL)isMinimumAutoupdateVersionOK:(NSString * _Nullable)minimumAutoupdateVersion hostVersion:(NSString *)hostVersion versionComparator:(id<SUVersionComparison>)versionComparator;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
23 
+
24 #endif /* SPUAppcastItemStateResolver_Private_h */
+
Definition: SPUAppcastItemState.h:15
+
Private exposed class used to resolve Appcast Item properties that rely on external factors such as a...
Definition: SPUAppcastItemStateResolver.h:30
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_appcast_item_state_resolver_8h_source.html b/documentation/api-reference/_s_p_u_appcast_item_state_resolver_8h_source.html new file mode 100644 index 0000000..2e77ab0 --- /dev/null +++ b/documentation/api-reference/_s_p_u_appcast_item_state_resolver_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +Sparkle: Sparkle/SPUAppcastItemStateResolver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUAppcastItemStateResolver.h
+
+
+
1 //
+
2 // SPUAppcastItemStateResolver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/31/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 
+
18 #import <Sparkle/SUExport.h>
+
19 
+
20 NS_ASSUME_NONNULL_BEGIN
+
21 
+ +
23 @protocol SUVersionComparison;
+
24 
+
29 SU_EXPORT @interface SPUAppcastItemStateResolver : NSObject
+
30 
+
31 - (instancetype)init NS_UNAVAILABLE;
+
32 
+
33 - (instancetype)initWithHostVersion:(NSString *)hostVersion applicationVersionComparator:(id<SUVersionComparison>)applicationVersionComparator standardVersionComparator:(SUStandardVersionComparator *)standardVersionComparator;
+
34 
+
35 @end
+
36 
+
37 NS_ASSUME_NONNULL_END
+
Definition: SPUAppcastItemState.h:15
+
Private exposed class used to resolve Appcast Item properties that rely on external factors such as a...
Definition: SPUAppcastItemStateResolver.h:30
+
Sparkle's default version comparator.
Definition: SUStandardVersionComparator.h:42
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_automatic_update_driver_8h_source.html b/documentation/api-reference/_s_p_u_automatic_update_driver_8h_source.html new file mode 100644 index 0000000..ceb1fe7 --- /dev/null +++ b/documentation/api-reference/_s_p_u_automatic_update_driver_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +Sparkle: Sparkle/SPUAutomaticUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUAutomaticUpdateDriver.h
+
+
+
1 //
+
2 // SPUAutomaticUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @class SUHost;
+ +
16 
+ +
18 
+
19 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater userDriver:(id <SPUUserDriver>)userDriver updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
Definition: SPUAutomaticUpdateDriver.h:17
+
Definition: SUHost.h:15
+
Definition: SPUUpdateDriver.h:20
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_basic_update_driver_8h_source.html b/documentation/api-reference/_s_p_u_basic_update_driver_8h_source.html new file mode 100644 index 0000000..fc239f8 --- /dev/null +++ b/documentation/api-reference/_s_p_u_basic_update_driver_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +Sparkle: Sparkle/SPUBasicUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUBasicUpdateDriver.h
+
+
+
1 //
+
2 // SPUBasicUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @class SUHost, SUAppcastItem;
+
15 @protocol SPUUpdaterDelegate;
+
16 
+
17 @protocol SPUBasicUpdateDriverDelegate <NSObject>
+
18 
+
19 - (void)basicDriverDidFindUpdateWithAppcastItem:(SUAppcastItem *)appcastItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryAppcastItem systemDomain:(NSNumber * _Nullable)systemDomain;
+
20 
+
21 - (void)basicDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
22 
+
23 @optional
+
24 
+
25 - (void)basicDriverDidFinishLoadingAppcast;
+
26 
+
27 @end
+
28 
+
29 @interface SPUBasicUpdateDriver : NSObject
+
30 
+
31 - (instancetype)initWithHost:(SUHost *)host updater:(id)updater updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate delegate:(id <SPUBasicUpdateDriverDelegate>)delegate;
+
32 
+
33 - (void)prepareCheckForUpdatesWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
34 
+
35 - (void)checkForUpdatesAtAppcastURL:(NSURL *)appcastURL withUserAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background;
+
36 
+
37 - (void)resumeInstallingUpdateWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
38 
+
39 - (void)resumeUpdate:(id<SPUResumableUpdate>)resumableUpdate completion:(SPUUpdateDriverCompletion)completionBlock;
+
40 
+
41 - (void)abortUpdateAndShowNextUpdateImmediately:(BOOL)shouldSignalShowingUpdate resumableUpdate:(id<SPUResumableUpdate> _Nullable)resumableUpdate error:(nullable NSError *)error;
+
42 
+
43 @end
+
44 
+
45 NS_ASSUME_NONNULL_END
+
Definition: SPUBasicUpdateDriver.h:30
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Definition: SPUBasicUpdateDriver.h:17
+
Definition: SPUResumableUpdate.h:15
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_core_based_update_driver_8h_source.html b/documentation/api-reference/_s_p_u_core_based_update_driver_8h_source.html new file mode 100644 index 0000000..b34173e --- /dev/null +++ b/documentation/api-reference/_s_p_u_core_based_update_driver_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +Sparkle: Sparkle/SPUCoreBasedUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUCoreBasedUpdateDriver.h
+
+
+
1 //
+
2 // SPUCoreBasedUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 #import "SPUUserUpdateState.h"
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 @class SUHost, SUAppcastItem;
+
16 @protocol SPUUpdaterDelegate;
+
17 
+ +
19 
+
20 - (void)basicDriverDidFindUpdateWithAppcastItem:(SUAppcastItem *)updateItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryAppcastItem;
+
21 
+
22 - (void)installerDidFinishPreparationAndWillInstallImmediately:(BOOL)willInstallImmediately silently:(BOOL)willInstallSilently;
+
23 
+
24 - (void)coreDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
25 
+
26 - (void)basicDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
27 
+
28 @optional
+
29 
+
30 - (void)basicDriverDidFinishLoadingAppcast;
+
31 
+
32 - (void)downloadDriverWillBeginDownload;
+
33 
+
34 - (void)downloadDriverDidReceiveExpectedContentLength:(uint64_t)expectedContentLength;
+
35 
+
36 - (void)downloadDriverDidReceiveDataOfLength:(uint64_t)length;
+
37 
+
38 - (void)coreDriverDidStartExtractingUpdate;
+
39 
+
40 - (void)installerDidStartInstalling;
+
41 
+
42 - (void)installerDidExtractUpdateWithProgress:(double)progress;
+
43 
+
44 - (void)installerIsSendingAppTerminationSignal;
+
45 
+
46 - (void)installerDidFinishInstallationAndRelaunched:(BOOL)relaunched acknowledgement:(void(^)(void))acknowledgement;
+
47 
+
48 @end
+
49 
+
50 @interface SPUCoreBasedUpdateDriver : NSObject
+
51 
+
52 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate delegate:(id<SPUCoreBasedUpdateDriverDelegate>)delegate;
+
53 
+
54 - (void)prepareCheckForUpdatesWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
55 
+
56 - (void)preflightForUpdatePermissionPreventingInstallerInteraction:(BOOL)preventsInstallerInteraction reply:(void (^)(NSError * _Nullable))reply;
+
57 
+
58 - (void)checkForUpdatesAtAppcastURL:(NSURL *)appcastURL withUserAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background requiresSilentInstall:(BOOL)silentInstall;
+
59 
+
60 - (void)resumeInstallingUpdateWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
61 
+
62 - (void)resumeUpdate:(id<SPUResumableUpdate>)resumableUpdate completion:(SPUUpdateDriverCompletion)completionBlock;
+
63 
+
64 - (void)downloadUpdateFromAppcastItem:(SUAppcastItem *)updateItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryUpdateItem inBackground:(BOOL)background;
+
65 
+
66 - (void)deferInformationalUpdate:(SUAppcastItem *)updateItem secondaryUpdate:(SUAppcastItem * _Nullable)secondaryUpdateItem;
+
67 
+
68 - (void)extractDownloadedUpdate;
+
69 
+
70 - (void)clearDownloadedUpdate;
+
71 
+
72 - (void)finishInstallationWithResponse:(SPUUserUpdateChoice)installUpdateStatus displayingUserInterface:(BOOL)displayingUserInterface;
+
73 
+
74 - (void)abortUpdateAndShowNextUpdateImmediately:(BOOL)shouldShowUpdateImmediately error:(nullable NSError *)error;
+
75 
+
76 @end
+
77 
+
78 NS_ASSUME_NONNULL_END
+
Definition: SPUCoreBasedUpdateDriver.h:51
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Definition: SPUCoreBasedUpdateDriver.h:18
+
Definition: SPUResumableUpdate.h:15
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_download_data_8h_source.html b/documentation/api-reference/_s_p_u_download_data_8h_source.html new file mode 100644 index 0000000..442d71a --- /dev/null +++ b/documentation/api-reference/_s_p_u_download_data_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: Sparkle/SPUDownloadData.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUDownloadData.h
+
+
+
1 //
+
2 // SPUDownloadData.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 8/10/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 
+
18 #ifdef BUILDING_SPARKLE_DOWNLOADER_SERVICE
+
19 // Ignore incorrect warning
+
20 #pragma clang diagnostic push
+
21 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
22 #import "SUExport.h"
+
23 #pragma clang diagnostic pop
+
24 #else
+
25 #import <Sparkle/SUExport.h>
+
26 #endif
+
27 
+
28 NS_ASSUME_NONNULL_BEGIN
+
29 
+
33 SU_EXPORT @interface SPUDownloadData : NSObject <NSSecureCoding>
+
34 
+
35 - (instancetype)initWithData:(NSData *)data URL:(NSURL *)URL textEncodingName:(NSString * _Nullable)textEncodingName MIMEType:(NSString * _Nullable)MIMEType;
+
36 
+
40 @property (nonatomic, readonly) NSData *data;
+
41 
+
47 @property (nonatomic, readonly, copy) NSURL *URL;
+
48 
+
52 @property (nonatomic, readonly, nullable, copy) NSString *textEncodingName;
+
53 
+
57 @property (nonatomic, readonly, nullable, copy) NSString *MIMEType;
+
58 
+
59 @end
+
60 
+
61 NS_ASSUME_NONNULL_END
+
A class for containing downloaded data along with some information about it.
Definition: SPUDownloadData.h:33
+
NSString * MIMEType
The MIME type if available.
Definition: SPUDownloadData.h:57
+
NSURL * URL
The URL that was fetched from.
Definition: SPUDownloadData.h:47
+
NSString * textEncodingName
The IANA charset encoding name if available.
Definition: SPUDownloadData.h:52
+
NSData * data
The raw data that was downloaded.
Definition: SPUDownloadData.h:40
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_download_driver_8h_source.html b/documentation/api-reference/_s_p_u_download_driver_8h_source.html new file mode 100644 index 0000000..36c408f --- /dev/null +++ b/documentation/api-reference/_s_p_u_download_driver_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +Sparkle: Sparkle/SPUDownloadDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUDownloadDriver.h
+
+
+
1 //
+
2 // SPUDownloadDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/15/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+ +
14 
+
15 @protocol SPUDownloadDriverDelegate <NSObject>
+
16 
+
17 - (void)downloadDriverDidFailToDownloadFileWithError:(NSError *)error;
+
18 
+
19 @optional
+
20 
+
21 - (void)downloadDriverWillBeginDownload;
+
22 
+
23 // For persitent update downloads
+
24 - (void)downloadDriverDidDownloadUpdate:(SPUDownloadedUpdate *)downloadedUpdate;
+
25 
+
26 // For temporary downloads
+
27 - (void)downloadDriverDidDownloadData:(SPUDownloadData *)downloadData;
+
28 
+
29 // Only for persistent downloads
+
30 - (void)downloadDriverDidReceiveExpectedContentLength:(uint64_t)expectedContentLength;
+
31 
+
32 // Only for persistent downloads
+
33 - (void)downloadDriverDidReceiveDataOfLength:(uint64_t)length;
+
34 
+
35 @end
+
36 
+
37 @interface SPUDownloadDriver : NSObject
+
38 
+
39 - (instancetype)initWithRequestURL:(NSURL *)requestURL host:(SUHost *)host userAgent:(NSString * _Nullable)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background delegate:(id<SPUDownloadDriverDelegate>)delegate;
+
40 
+
41 - (instancetype)initWithUpdateItem:(SUAppcastItem *)updateItem secondaryUpdateItem:(SUAppcastItem * _Nullable)secondaryUpdateItem host:(SUHost *)host userAgent:(NSString * _Nullable)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background delegate:(id<SPUDownloadDriverDelegate>)delegate;
+
42 
+
43 - (instancetype)initWithHost:(SUHost *)host;
+
44 
+
45 - (void)downloadFile;
+
46 
+
47 - (void)removeDownloadedUpdate:(SPUDownloadedUpdate *)downloadedUpdate;
+
48 
+
49 @property (nonatomic, readonly) NSMutableURLRequest *request;
+
50 @property (nonatomic, readonly) BOOL inBackground;
+
51 
+
52 - (void)cleanup:(void (^)(void))completionHandler;
+
53 
+
54 @end
+
55 
+
56 NS_ASSUME_NONNULL_END
+
A class for containing downloaded data along with some information about it.
Definition: SPUDownloadData.h:33
+
Definition: SPUDownloadDriver.h:38
+
Definition: SPUDownloadedUpdate.h:14
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Definition: SPUDownloadDriver.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_downloaded_update_8h_source.html b/documentation/api-reference/_s_p_u_downloaded_update_8h_source.html new file mode 100644 index 0000000..5c716ce --- /dev/null +++ b/documentation/api-reference/_s_p_u_downloaded_update_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SPUDownloadedUpdate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUDownloadedUpdate.h
+
+
+
1 //
+
2 // SPUDownloadedUpdate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 1/8/17.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUResumableUpdate.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @interface SPUDownloadedUpdate : NSObject <SPUResumableUpdate>
+
15 
+
16 - (instancetype)initWithAppcastItem:(SUAppcastItem *)updateItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryItem downloadName:(NSString *)downloadName temporaryDirectory:(NSString *)temporaryDirectory;
+
17 
+
18 @property (nonatomic, copy, readonly) NSString *downloadName;
+
19 @property (nonatomic, copy, readonly) NSString *temporaryDirectory;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
Definition: SPUDownloadedUpdate.h:14
+
Definition: SUAppcastItem.h:36
+
Definition: SPUResumableUpdate.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_informational_update_8h_source.html b/documentation/api-reference/_s_p_u_informational_update_8h_source.html new file mode 100644 index 0000000..4737b99 --- /dev/null +++ b/documentation/api-reference/_s_p_u_informational_update_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +Sparkle: Sparkle/SPUInformationalUpdate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUInformationalUpdate.h
+
+
+
1 //
+
2 // SPUInformationalUpdate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 1/8/17.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUResumableUpdate.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+ +
15 
+
16 - (instancetype)initWithAppcastItem:(SUAppcastItem *)updateItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryUpdateItem;
+
17 
+
18 @end
+
19 
+
20 NS_ASSUME_NONNULL_END
+
Definition: SPUInformationalUpdate.h:14
+
Definition: SUAppcastItem.h:36
+
Definition: SPUResumableUpdate.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_installation_type_8h_source.html b/documentation/api-reference/_s_p_u_installation_type_8h_source.html new file mode 100644 index 0000000..358d236 --- /dev/null +++ b/documentation/api-reference/_s_p_u_installation_type_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: Sparkle/SPUInstallationType.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUInstallationType.h
+
+
+
1 //
+
2 // SPUInstallationType.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/24/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPUInstallationType_h
+
10 #define SPUInstallationType_h
+
11 
+
12 #define SPUInstallationTypeApplication @"application" // the default installation type for ordinary application updates
+
13 #define SPUInstallationTypeGuidedPackage @"package" // the preferred installation type for package installations
+
14 #define SPUInstallationTypeInteractivePackage @"interactive-package" // the deprecated installation type; use guided package instead
+
15 
+
16 #define SPUInstallationTypesArray (@[SPUInstallationTypeApplication, SPUInstallationTypeGuidedPackage, SPUInstallationTypeInteractivePackage])
+
17 #define SPUValidInstallationType(x) ((x != nil) && [SPUInstallationTypesArray containsObject:(NSString * _Nonnull)x])
+
18 
+
19 #endif /* SPUInstallationType_h */
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_installer_agent_protocol_8h_source.html b/documentation/api-reference/_s_p_u_installer_agent_protocol_8h_source.html new file mode 100644 index 0000000..266ab86 --- /dev/null +++ b/documentation/api-reference/_s_p_u_installer_agent_protocol_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/SPUInstallerAgentProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUInstallerAgentProtocol.h
+
+
+
1 //
+
2 // SPUInstallerAgentProtocol.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+ +
14 
+
15 - (void)registerApplicationBundlePath:(NSString *)applicationBundlePath reply:(void (^)(NSNumber * _Nullable processIdentifier))reply;
+
16 
+
17 - (void)registerInstallationInfoData:(NSData *)installationInfoData;
+
18 
+
19 - (void)sendTerminationSignal;
+
20 
+
21 - (void)showProgress;
+
22 
+
23 - (void)stopProgress;
+
24 
+
25 - (void)relaunchApplication;
+
26 
+
27 @end
+
28 
+
29 NS_ASSUME_NONNULL_END
+
Definition: SPUInstallerAgentProtocol.h:13
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_installer_driver_8h_source.html b/documentation/api-reference/_s_p_u_installer_driver_8h_source.html new file mode 100644 index 0000000..9ce510a --- /dev/null +++ b/documentation/api-reference/_s_p_u_installer_driver_8h_source.html @@ -0,0 +1,136 @@ + + + + + + + +Sparkle: Sparkle/SPUInstallerDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUInstallerDriver.h
+
+
+
1 //
+
2 // SPUInstallerDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @protocol SPUUpdaterDelegate;
+ +
15 
+
16 @protocol SPUInstallerDriverDelegate <NSObject>
+
17 
+
18 - (void)installerDidStartInstalling;
+
19 - (void)installerDidStartExtracting;
+
20 - (void)installerDidExtractUpdateWithProgress:(double)progress;
+
21 - (void)installerDidFinishPreparationAndWillInstallImmediately:(BOOL)willInstallImmediately silently:(BOOL)willInstallSilently;
+
22 - (void)installerIsSendingAppTerminationSignal;
+
23 - (void)installerWillFinishInstallationAndRelaunch:(BOOL)relaunch;
+
24 - (void)installerDidFinishInstallationAndRelaunched:(BOOL)relaunch acknowledgement:(void(^)(void))acknowledgement;
+
25 
+
26 - (void)installerIsRequestingAbortInstallWithError:(nullable NSError *)error;
+
27 - (void)installerDidFailToApplyDeltaUpdate;
+
28 
+
29 @end
+
30 
+
31 @interface SPUInstallerDriver : NSObject
+
32 
+
33 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater updaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate delegate:(nullable id<SPUInstallerDriverDelegate>)delegate;
+
34 
+
35 - (void)resumeInstallingUpdateWithUpdateItem:(SUAppcastItem *)updateItem systemDomain:(BOOL)systemDomain;
+
36 
+
37 - (void)checkIfApplicationInstallationRequiresAuthorizationWithReply:(void (^)(BOOL requiresAuthorization))reply;
+
38 
+
39 - (void)extractDownloadedUpdate:(SPUDownloadedUpdate *)downloadedUpdate silently:(BOOL)silently preventsInstallerInteraction:(BOOL)preventsInstallerInteraction completion:(void (^)(NSError * _Nullable))completionHandler;
+
40 
+
41 - (void)installWithToolAndRelaunch:(BOOL)relaunch displayingUserInterface:(BOOL)showUI;
+
42 
+
43 - (void)cancelUpdate;
+
44 
+
45 - (void)abortInstall;
+
46 
+
47 @end
+
48 
+
49 NS_ASSUME_NONNULL_END
+
Definition: SPUDownloadedUpdate.h:14
+
Definition: SPUInstallerDriver.h:32
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Definition: SPUInstallerDriver.h:16
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_local_cache_directory_8h_source.html b/documentation/api-reference/_s_p_u_local_cache_directory_8h_source.html new file mode 100644 index 0000000..17818ef --- /dev/null +++ b/documentation/api-reference/_s_p_u_local_cache_directory_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: Sparkle/SPULocalCacheDirectory.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPULocalCacheDirectory.h
+
+
+
1 //
+
2 // SULocalCacheDirectory.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 6/23/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @interface SPULocalCacheDirectory : NSObject
+
14 
+
15 // Returns a path to a suitable cache directory to create specifically for Sparkle
+
16 // Intermediate directories to this path may not exist yet
+
17 // This path may depend on the type of running process,
+
18 // such that sandboxed vs non-sandboxed processes could yield different paths
+
19 // The caller should create a subdirectory from the path that is returned here so they don't have files that
+
20 // conflict with other callers. Once that subdirectory name is decided, the caller can remove old items inside it (using +removeOldItemsInDirectory:)
+
21 // and then create a unique temporary directory inside it (using +createUniqueDirectoryInDirectory:)
+
22 + (NSString *)cachePathForBundleIdentifier:(NSString *)bundleIdentifier;
+
23 
+
24 // Remove old files inside a directory
+
25 // A caller may want to invoke this on a directory they own rather than remove and re-create an entire directory
+
26 // This does nothing if the supplied directory does not exist yet
+
27 + (void)removeOldItemsInDirectory:(NSString *)directory;
+
28 
+
29 // Create a unique directory inside a parent directory
+
30 // The parent directory doesn't have to exist yet. If it doesn't exist, intermediate directories will be created.
+
31 + (NSString * _Nullable)createUniqueDirectoryInDirectory:(NSString *)directory;
+
32 
+
33 @end
+
34 
+
35 NS_ASSUME_NONNULL_END
+
Definition: SPULocalCacheDirectory.h:14
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_probe_install_status_8h_source.html b/documentation/api-reference/_s_p_u_probe_install_status_8h_source.html new file mode 100644 index 0000000..1ae7661 --- /dev/null +++ b/documentation/api-reference/_s_p_u_probe_install_status_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SPUProbeInstallStatus.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUProbeInstallStatus.h
+
+
+
1 //
+
2 // SPUProbeInstallStatus.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/20/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SPUInstallationInfo;
+
14 
+
15 @interface SPUProbeInstallStatus : NSObject
+
16 
+
17 + (void)probeInstallerInProgressForHostBundleIdentifier:(NSString *)hostBundleIdentifier completion:(void (^)(BOOL))completionHandler;
+
18 
+
19 // completionHandler may not be sent on main queue
+
20 // additionally, it may be possible that the installer is in progress but we get a nil installation info back
+
21 + (void)probeInstallerUpdateItemForHostBundleIdentifier:(NSString *)hostBundleIdentifier completion:(void (^)(SPUInstallationInfo * _Nullable))completionHandler;
+
22 
+
23 @end
+
24 
+
25 NS_ASSUME_NONNULL_END
+
Definition: SPUProbeInstallStatus.h:16
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_probing_update_driver_8h_source.html b/documentation/api-reference/_s_p_u_probing_update_driver_8h_source.html new file mode 100644 index 0000000..56d9aa1 --- /dev/null +++ b/documentation/api-reference/_s_p_u_probing_update_driver_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +Sparkle: Sparkle/SPUProbingUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUProbingUpdateDriver.h
+
+
+
1 //
+
2 // SPUProbingUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @class SUHost;
+
15 @protocol SPUUpdaterDelegate;
+
16 
+
17 @interface SPUProbingUpdateDriver : NSObject <SPUUpdateDriver>
+
18 
+
19 - (instancetype)initWithHost:(SUHost *)host updater:(id)updater updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
Definition: SPUProbingUpdateDriver.h:17
+
Definition: SUHost.h:15
+
Definition: SPUUpdateDriver.h:20
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_resumable_update_8h_source.html b/documentation/api-reference/_s_p_u_resumable_update_8h_source.html new file mode 100644 index 0000000..4c1c26a --- /dev/null +++ b/documentation/api-reference/_s_p_u_resumable_update_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SPUResumableUpdate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUResumableUpdate.h
+
+
+
1 //
+
2 // SPUResumableUpdate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUAppcastItem;
+
14 
+
15 @protocol SPUResumableUpdate <NSObject>
+
16 
+
17 @property (nonatomic, readonly) SUAppcastItem *updateItem;
+
18 @property (nonatomic, readonly, nullable) SUAppcastItem *secondaryUpdateItem;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
Definition: SUAppcastItem.h:36
+
Definition: SPUResumableUpdate.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_scheduled_update_driver_8h_source.html b/documentation/api-reference/_s_p_u_scheduled_update_driver_8h_source.html new file mode 100644 index 0000000..a849ea5 --- /dev/null +++ b/documentation/api-reference/_s_p_u_scheduled_update_driver_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SPUScheduledUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUScheduledUpdateDriver.h
+
+
+
1 //
+
2 // SPUScheduledUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/15/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 #import "SPUUIBasedUpdateDriver.h"
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 @class SUHost;
+ +
17 
+ +
19 
+
20 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater userDriver:(id <SPUUserDriver>)userDriver updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate;
+
21 
+
22 @end
+
23 
+
24 NS_ASSUME_NONNULL_END
+
Definition: SPUScheduledUpdateDriver.h:18
+
Definition: SUHost.h:15
+
Definition: SPUUpdateDriver.h:20
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_secure_coding_8h_source.html b/documentation/api-reference/_s_p_u_secure_coding_8h_source.html new file mode 100644 index 0000000..9f23f01 --- /dev/null +++ b/documentation/api-reference/_s_p_u_secure_coding_8h_source.html @@ -0,0 +1,101 @@ + + + + + + + +Sparkle: Sparkle/SPUSecureCoding.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUSecureCoding.h
+
+
+
1 //
+
2 // SPUSecureCoding.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/24/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 // If we are using XPC without using XPC Services, our custom classes will not be (de)serialized automatically,
+
12 // hence needing functions to archive/unarchive NSSecureCoding objects.
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 NSData * _Nullable SPUArchiveRootObjectSecurely(id<NSSecureCoding> rootObject);
+
17 
+
18 id<NSSecureCoding> _Nullable SPUUnarchiveRootObjectSecurely(NSData *data, Class klass);
+
19 
+
20 NS_ASSUME_NONNULL_END
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_skipped_update_8h_source.html b/documentation/api-reference/_s_p_u_skipped_update_8h_source.html new file mode 100644 index 0000000..5662d51 --- /dev/null +++ b/documentation/api-reference/_s_p_u_skipped_update_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: Sparkle/SPUSkippedUpdate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUSkippedUpdate.h
+
+
+
1 //
+
2 // SPUSkippedUpdate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/8/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUHost, SUAppcastItem;
+
14 
+
15 /*
+
16  A skipped update tracks an optional minor version and an optional major version the user may skip.
+
17  The minor and major versions are independent versions, so the user can choose to skip at most two separate versions.
+
18  The intent is when the user is faced with a major upgrade, they can skip a major version.
+
19  Otherwise they can choose to skip a minor version.
+
20  */
+
21 @interface SPUSkippedUpdate : NSObject
+
22 
+
23 + (nullable SPUSkippedUpdate *)skippedUpdateForHost:(SUHost *)host;
+
24 
+
25 + (void)clearSkippedUpdateForHost:(SUHost *)host;
+
26 
+
27 + (void)skipUpdate:(SUAppcastItem *)updateItem host:(SUHost *)host;
+
28 
+
29 // At least one of minorVersion or majorVersion should be non-nil
+
30 - (instancetype)initWithMinorVersion:(nullable NSString *)minorVersion majorVersion:(nullable NSString *)majorVersion;
+
31 
+
32 // At least one of these version properties will be non-nil
+
33 @property (nonatomic, readonly, nullable) NSString *minorVersion;
+
34 @property (nonatomic, readonly, nullable) NSString *majorVersion;
+
35 
+
36 @end
+
37 
+
38 NS_ASSUME_NONNULL_END
+
Definition: SPUSkippedUpdate.h:22
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_standard_updater_controller_8h_source.html b/documentation/api-reference/_s_p_u_standard_updater_controller_8h_source.html new file mode 100644 index 0000000..bfa5cb4 --- /dev/null +++ b/documentation/api-reference/_s_p_u_standard_updater_controller_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +Sparkle: Sparkle/SPUStandardUpdaterController.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUStandardUpdaterController.h
+
+
+
1 //
+
2 // SPUStandardUpdaterController.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/28/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 NS_ASSUME_NONNULL_BEGIN
+
20 
+
21 @class SPUUpdater;
+ +
23 @class NSMenuItem;
+ +
25 
+
39 SU_EXPORT @interface SPUStandardUpdaterController : NSObject
+
40 
+
46 @property (nonatomic, weak, nullable) IBOutlet id<SPUUpdaterDelegate> updaterDelegate;
+
47 
+
53 @property (nonatomic, weak, nullable) IBOutlet id<SPUStandardUserDriverDelegate> userDriverDelegate;
+
54 
+
60 @property (nonatomic, readonly) SPUUpdater *updater;
+
61 
+
65 @property (nonatomic, readonly) SPUStandardUserDriver *userDriver;
+
66 
+
74 - (instancetype)init NS_UNAVAILABLE;
+
75 
+
81 - (instancetype)initWithUpdaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate userDriverDelegate:(nullable id<SPUStandardUserDriverDelegate>)userDriverDelegate;
+
82 
+
89 - (instancetype)initWithStartingUpdater:(BOOL)startUpdater updaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate userDriverDelegate:(nullable id<SPUStandardUserDriverDelegate>)userDriverDelegate;
+
90 
+
100 - (void)startUpdater;
+
101 
+
116 - (IBAction)checkForUpdates:(nullable id)sender;
+
117 
+
118 @end
+
119 
+
120 NS_ASSUME_NONNULL_END
+
A controller class that instantiates a SPUUpdater and allows binding UI to it.
Definition: SPUStandardUpdaterController.h:40
+
void startUpdater()
Starts the updater if it has not already been started.
+
SPUStandardUserDriver * userDriver
Accessible property for the updater's user driver.
Definition: SPUStandardUpdaterController.h:65
+
instancetype NS_UNAVAILABLE()
Create a new SPUStandardUpdaterController from a nib.
+
IBOutlet id< SPUStandardUserDriverDelegate > userDriverDelegate
Interface builder outlet for the user driver's delegate.
Definition: SPUStandardUpdaterController.h:53
+
IBOutlet id< SPUUpdaterDelegate > updaterDelegate
Interface builder outlet for the updater's delegate.
Definition: SPUStandardUpdaterController.h:46
+
SPUUpdater * updater
Accessible property for the updater.
Definition: SPUStandardUpdaterController.h:60
+
Sparkle's standard built-in user driver for updater interactions.
Definition: SPUStandardUserDriver.h:27
+
The main API in Sparkle for controlling the update mechanism.
Definition: SPUUpdater.h:33
+
A protocol for Sparkle's standard user driver's delegate.
Definition: SPUStandardUserDriverDelegate.h:26
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_standard_user_driver_8h_source.html b/documentation/api-reference/_s_p_u_standard_user_driver_8h_source.html new file mode 100644 index 0000000..7e1601f --- /dev/null +++ b/documentation/api-reference/_s_p_u_standard_user_driver_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: Sparkle/SPUStandardUserDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUStandardUserDriver.h
+
+
+
1 //
+
2 // SPUStandardUserDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/14/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SPUUserDriver.h>
+
18 #import <Sparkle/SUExport.h>
+
19 
+
20 NS_ASSUME_NONNULL_BEGIN
+
21 
+ +
23 
+
27 SU_EXPORT @interface SPUStandardUserDriver : NSObject <SPUUserDriver>
+
28 
+
35 - (instancetype)initWithHostBundle:(NSBundle *)hostBundle delegate:(nullable id<SPUStandardUserDriverDelegate>)delegate;
+
36 
+
40 - (instancetype)init NS_UNAVAILABLE;
+
41 
+
42 @end
+
43 
+
44 NS_ASSUME_NONNULL_END
+
Sparkle's standard built-in user driver for updater interactions.
Definition: SPUStandardUserDriver.h:27
+
instancetype NS_UNAVAILABLE()
Use initWithHostBundle:delegate: instead.
+
A protocol for Sparkle's standard user driver's delegate.
Definition: SPUStandardUserDriverDelegate.h:26
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_standard_user_driver_delegate_8h_source.html b/documentation/api-reference/_s_p_u_standard_user_driver_delegate_8h_source.html new file mode 100644 index 0000000..f5e4957 --- /dev/null +++ b/documentation/api-reference/_s_p_u_standard_user_driver_delegate_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: Sparkle/SPUStandardUserDriverDelegate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUStandardUserDriverDelegate.h
+
+
+
1 //
+
2 // SPUStandardUserDriverDelegate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/3/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 @protocol SUVersionDisplay;
+
20 
+
26 SU_EXPORT @protocol SPUStandardUserDriverDelegate <NSObject>
+
27 
+
28 @optional
+
29 
+ +
35 
+ +
41 
+ +
48 
+
49 @end
+
A protocol for Sparkle's standard user driver's delegate.
Definition: SPUStandardUserDriverDelegate.h:26
+
void standardUserDriverDidShowModalAlert()
Called after showing a modal alert window, to give the opportunity to hide attached windows that may ...
+
void standardUserDriverWillShowModalAlert()
Called before showing a modal alert window, to give the opportunity to hide attached windows that may...
+
_Nullable id< SUVersionDisplay > standardUserDriverRequestsVersionDisplayer()
Returns an object that formats version numbers for display to the user.
+
Applies special display formatting to version numbers.
Definition: SUVersionDisplayProtocol.h:22
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_u_i_based_update_driver_8h_source.html b/documentation/api-reference/_s_p_u_u_i_based_update_driver_8h_source.html new file mode 100644 index 0000000..3b4a185 --- /dev/null +++ b/documentation/api-reference/_s_p_u_u_i_based_update_driver_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +Sparkle: Sparkle/SPUUIBasedUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUIBasedUpdateDriver.h
+
+
+
1 //
+
2 // SPUUIBasedUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @protocol SPUUIBasedUpdateDriverDelegate <NSObject>
+
15 
+
16 - (void)basicDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
17 - (void)coreDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
18 - (void)uiDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
19 
+
20 @optional
+
21 
+
22 - (void)uiDriverDidShowUpdate;
+
23 - (void)basicDriverDidFinishLoadingAppcast;
+
24 
+
25 @end
+
26 
+
27 @class SUHost;
+ +
29 
+
30 @interface SPUUIBasedUpdateDriver : NSObject
+
31 
+
32 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater userDriver:(id <SPUUserDriver>)userDriver userInitiated:(BOOL)userInitiated updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate delegate:(id<SPUUIBasedUpdateDriverDelegate>)delegate;
+
33 
+
34 - (void)prepareCheckForUpdatesWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
35 
+
36 - (void)preflightForUpdatePermissionPreventingInstallerInteraction:(BOOL)preventsInstallerInteraction reply:(void (^)(NSError * _Nullable))reply;
+
37 
+
38 - (void)checkForUpdatesAtAppcastURL:(NSURL *)appcastURL withUserAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background;
+
39 
+
40 - (void)resumeInstallingUpdateWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
41 
+
42 - (void)resumeUpdate:(id<SPUResumableUpdate>)resumableUpdate completion:(SPUUpdateDriverCompletion)completionBlock;
+
43 
+
44 - (void)abortUpdateWithError:(nullable NSError *)error;
+
45 
+
46 @end
+
47 
+
48 NS_ASSUME_NONNULL_END
+
Definition: SPUUIBasedUpdateDriver.h:31
+
Definition: SUHost.h:15
+
Definition: SPUResumableUpdate.h:15
+
Definition: SPUUIBasedUpdateDriver.h:14
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_u_r_l_request_8h_source.html b/documentation/api-reference/_s_p_u_u_r_l_request_8h_source.html new file mode 100644 index 0000000..b49fd11 --- /dev/null +++ b/documentation/api-reference/_s_p_u_u_r_l_request_8h_source.html @@ -0,0 +1,113 @@ + + + + + + + +Sparkle: Sparkle/SPUURLRequest.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUURLRequest.h
+
+
+
1 //
+
2 // SPUURLRequest.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/19/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 // A class that wraps NSURLRequest and implements NSSecureCoding
+
14 // This class exists because NSURLRequest did not support NSSecureCoding in macOS 10.8
+
15 // I have not verified if NSURLRequest in 10.9 implements NSSecureCoding or not
+
16 @interface SPUURLRequest : NSObject <NSSecureCoding>
+
17 
+
18 // Creates a new URL request
+
19 // Only these properties are currently tracked:
+
20 // * URL
+
21 // * Cache policy
+
22 // * Timeout interval
+
23 // * HTTP header fields
+
24 // * networkServiceType
+
25 + (instancetype)URLRequestWithRequest:(NSURLRequest *)request;
+
26 
+
27 @property (nonatomic, readonly) NSURLRequest *request;
+
28 
+
29 @end
+
30 
+
31 NS_ASSUME_NONNULL_END
+
Definition: SPUURLRequest.h:16
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_update_driver_8h_source.html b/documentation/api-reference/_s_p_u_update_driver_8h_source.html new file mode 100644 index 0000000..92fca2b --- /dev/null +++ b/documentation/api-reference/_s_p_u_update_driver_8h_source.html @@ -0,0 +1,121 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdateDriver.h
+
+
+
1 //
+
2 // SPUUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/15/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 NS_ASSUME_NONNULL_BEGIN
+
10 
+
11 @protocol SPUResumableUpdate;
+
12 
+
13 typedef void (^SPUUpdateDriverCompletion)(BOOL shouldShowUpdateImmediately, id<SPUResumableUpdate> _Nullable resumableUpdate);
+
14 
+
15 // This protocol describes an update driver that drives updates
+
16 // An update driver may have multiple levels of other controller components (eg: basic update driver, core based update driver, ui based update driver, appcast driver, etc)
+
17 // The update driver and the components the driver has communicates via parameter passing and delegation..
+
18 // The old Sparkle architecture communicated via subclassing and method overriding, but this lead to bugs due to high coupling, and complexity of not being aware of methods being executed.
+
19 // The newer architecture is still complex but should be more reliable to maintain and extend.
+
20 @protocol SPUUpdateDriver <NSObject>
+
21 
+
22 - (void)checkForUpdatesAtAppcastURL:(NSURL *)appcastURL withUserAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders preventingInstallerInteraction:(BOOL)preventsInstallerInteraction completion:(SPUUpdateDriverCompletion)completionBlock;
+
23 
+
24 - (void)resumeInstallingUpdateWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
25 
+
26 - (void)resumeUpdate:(id<SPUResumableUpdate>)resumableUpdate completion:(SPUUpdateDriverCompletion)completionBlock;
+
27 
+
28 @property (nonatomic, readonly) BOOL showingUpdate;
+
29 
+
30 // A likely implementation of -abortUpdate is invoking -abortUpdateWithError: by passing nil
+
31 - (void)abortUpdate;
+
32 
+
33 // This should be invoked on the update driver to finish the update driver's work
+
34 - (void)abortUpdateWithError:(NSError * _Nullable)error;
+
35 
+
36 @end
+
37 
+
38 NS_ASSUME_NONNULL_END
+
Definition: SPUResumableUpdate.h:15
+
Definition: SPUUpdateDriver.h:20
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_update_permission_request_8h_source.html b/documentation/api-reference/_s_p_u_update_permission_request_8h_source.html new file mode 100644 index 0000000..3e1a739 --- /dev/null +++ b/documentation/api-reference/_s_p_u_update_permission_request_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdatePermissionRequest.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdatePermissionRequest.h
+
+
+
1 //
+
2 // SPUUpdatePermissionRequest.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 8/14/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 NS_ASSUME_NONNULL_BEGIN
+
20 
+
24 SU_EXPORT @interface SPUUpdatePermissionRequest : NSObject<NSSecureCoding>
+
25 
+
31 - (instancetype)initWithSystemProfile:(NSArray<NSDictionary<NSString *, NSString *> *> *)systemProfile;
+
32 
+
36 @property (nonatomic, readonly) NSArray<NSDictionary<NSString *, NSString *> *> *systemProfile;
+
37 
+
38 @end
+
39 
+
40 NS_ASSUME_NONNULL_END
+
This class represents information needed to make a permission request for checking updates.
Definition: SPUUpdatePermissionRequest.h:24
+
NSArray< NSDictionary< NSString *, NSString * > * > * systemProfile
A read-only property for the user's system profile.
Definition: SPUUpdatePermissionRequest.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_updater_8h_source.html b/documentation/api-reference/_s_p_u_updater_8h_source.html new file mode 100644 index 0000000..cf10582 --- /dev/null +++ b/documentation/api-reference/_s_p_u_updater_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdater.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdater.h
+
+
+
1 //
+
2 // SPUUpdater.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 1/4/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 #import <Sparkle/SPUUserDriver.h>
+
19 
+
20 NS_ASSUME_NONNULL_BEGIN
+
21 
+
22 @class SUAppcastItem, SUAppcast;
+
23 
+
24 @protocol SPUUpdaterDelegate;
+
25 
+
32 SU_EXPORT @interface SPUUpdater : NSObject
+
33 
+
49 - (instancetype)initWithHostBundle:(NSBundle *)hostBundle applicationBundle:(NSBundle *)applicationBundle userDriver:(id <SPUUserDriver>)userDriver delegate:(id<SPUUpdaterDelegate> _Nullable)delegate;
+
50 
+
56 - (instancetype)init NS_UNAVAILABLE;
+
57 
+
79 - (BOOL)startUpdater:(NSError * __autoreleasing *)error;
+
80 
+
94 - (void)checkForUpdates;
+
95 
+ +
107 
+ +
120 
+
130 @property (nonatomic, readonly) BOOL canCheckForUpdates;
+
131 
+
145 @property (nonatomic, readonly) BOOL sessionInProgress;
+
146 
+
154 @property (nonatomic) BOOL automaticallyChecksForUpdates;
+
155 
+
163 @property (nonatomic) NSTimeInterval updateCheckInterval;
+
164 
+
173 @property (nonatomic) BOOL automaticallyDownloadsUpdates;
+
174 
+
185 @property (nonatomic, readonly, nullable) NSURL *feedURL;
+
186 
+
200 - (void)setFeedURL:(NSURL * _Nullable)feedURL;
+
201 
+
205 @property (nonatomic, readonly) NSBundle *hostBundle;
+
206 
+
210 @property (nonatomic, readonly) NSBundle *sparkleBundle;
+
211 
+
217 @property (nonatomic, copy) NSString *userAgentString;
+
218 
+
224 #if __has_feature(objc_generics)
+
225 @property (nonatomic, copy, nullable) NSDictionary<NSString *, NSString *> *httpHeaders;
+
226 #else
+
227 @property (nonatomic, copy, nullable) NSDictionary *httpHeaders;
+
228 #endif
+
229 
+
235 @property (nonatomic) BOOL sendsSystemProfile;
+
236 
+
242 @property (nonatomic, readonly, copy, nullable) NSDate *lastUpdateCheckDate;
+
243 
+
251 - (void)resetUpdateCycle;
+
252 
+
253 
+
257 @property (nonatomic, readonly, copy) NSArray<NSDictionary<NSString *, NSString *> *> *systemProfileArray;
+
258 
+
259 @end
+
260 
+
261 NS_ASSUME_NONNULL_END
+
The main API in Sparkle for controlling the update mechanism.
Definition: SPUUpdater.h:33
+
NSTimeInterval updateCheckInterval
A property indicating the current automatic update check interval.
Definition: SPUUpdater.h:163
+
NSDate * lastUpdateCheckDate
Returns the date of last update check.
Definition: SPUUpdater.h:242
+
void checkForUpdatesInBackground()
Checks for updates, but does not display any UI unless an update is found.
+
NSDictionary * httpHeaders
The HTTP headers used when checking for updates.
Definition: SPUUpdater.h:227
+
BOOL sendsSystemProfile
A property indicating whether or not the user's system profile information is sent when checking for ...
Definition: SPUUpdater.h:235
+
NSString * userAgentString
The user agent used when checking for updates.
Definition: SPUUpdater.h:217
+
void checkForUpdates()
Checks for updates, and displays progress while doing so if needed.
+
NSArray< NSDictionary< NSString *, NSString * > * > * systemProfileArray
The system profile information that is sent when checking for updates.
Definition: SPUUpdater.h:257
+
BOOL automaticallyChecksForUpdates
A property indicating whether or not to check for updates automatically.
Definition: SPUUpdater.h:154
+
NSBundle * sparkleBundle
The bundle this class (SPUUpdater) is loaded into.
Definition: SPUUpdater.h:210
+
BOOL automaticallyDownloadsUpdates
A property indicating whether or not updates can be automatically downloaded in the background.
Definition: SPUUpdater.h:173
+
BOOL canCheckForUpdates
A property indicating whether or not updates can be checked by the user.
Definition: SPUUpdater.h:130
+
instancetype NS_UNAVAILABLE()
Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standa...
+
void checkForUpdateInformation()
Begins a "probing" check for updates which will not actually offer to update to that version.
+
NSBundle * hostBundle
The host bundle that is being updated.
Definition: SPUUpdater.h:205
+
BOOL sessionInProgress
A property indicating whether or not an update session is in progress.
Definition: SPUUpdater.h:145
+
void resetUpdateCycle()
Appropriately schedules or cancels the update checking timer according to the preferences for time in...
+
NSURL * feedURL
The URL of the appcast used to download update information.
Definition: SPUUpdater.h:185
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_updater_cycle_8h_source.html b/documentation/api-reference/_s_p_u_updater_cycle_8h_source.html new file mode 100644 index 0000000..dc0d451 --- /dev/null +++ b/documentation/api-reference/_s_p_u_updater_cycle_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdaterCycle.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdaterCycle.h
+
+
+
1 //
+
2 // SPUUpdaterCycle.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 6/11/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @protocol SPUUpdaterCycleDelegate <NSObject>
+
14 
+
15 - (void)resetUpdateCycle;
+
16 
+
17 @end
+
18 
+
19 // This notifies the updater for (re-)starting and canceling update cycles
+
20 // This class is used so that an updater instance isn't kept alive by a pending update cycle
+
21 @interface SPUUpdaterCycle : NSObject
+
22 
+
23 // This delegate is weakly referenced
+
24 - (instancetype)initWithDelegate:(id<SPUUpdaterCycleDelegate>)delegate;
+
25 
+
26 - (void)resetUpdateCycleAfterDelay;
+
27 
+
28 - (void)cancelNextUpdateCycle;
+
29 
+
30 @end
+
31 
+
32 NS_ASSUME_NONNULL_END
+
Definition: SPUUpdaterCycle.h:22
+
Definition: SPUUpdaterCycle.h:13
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_updater_delegate_8h_source.html b/documentation/api-reference/_s_p_u_updater_delegate_8h_source.html new file mode 100644 index 0000000..793b9cf --- /dev/null +++ b/documentation/api-reference/_s_p_u_updater_delegate_8h_source.html @@ -0,0 +1,225 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdaterDelegate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdaterDelegate.h
+
+
+
1 //
+
2 // SPUUpdaterDelegate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 8/12/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 @protocol SUVersionComparison;
+ +
21 
+
22 NS_ASSUME_NONNULL_BEGIN
+
23 
+
24 // -----------------------------------------------------------------------------
+
25 // SUUpdater Notifications for events that might be interesting to more than just the delegate
+
26 // The updater will be the notification object
+
27 // -----------------------------------------------------------------------------
+
28 SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;
+
29 SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;
+
30 SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;
+
31 SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;
+
32 #define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;
+
33 #define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;
+
34 
+
35 // Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo
+
36 SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;
+
37 // Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo
+
38 SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;
+
39 
+
40 // -----------------------------------------------------------------------------
+
41 // System Profile Keys
+
42 // -----------------------------------------------------------------------------
+
43 
+
44 SU_EXPORT extern NSString *const SUSystemProfilerApplicationNameKey;
+
45 SU_EXPORT extern NSString *const SUSystemProfilerApplicationVersionKey;
+
46 SU_EXPORT extern NSString *const SUSystemProfilerCPU64bitKey;
+
47 SU_EXPORT extern NSString *const SUSystemProfilerCPUCountKey;
+
48 SU_EXPORT extern NSString *const SUSystemProfilerCPUFrequencyKey;
+
49 SU_EXPORT extern NSString *const SUSystemProfilerCPUTypeKey;
+
50 SU_EXPORT extern NSString *const SUSystemProfilerCPUSubtypeKey;
+
51 SU_EXPORT extern NSString *const SUSystemProfilerHardwareModelKey;
+
52 SU_EXPORT extern NSString *const SUSystemProfilerMemoryKey;
+
53 SU_EXPORT extern NSString *const SUSystemProfilerOperatingSystemVersionKey;
+
54 SU_EXPORT extern NSString *const SUSystemProfilerPreferredLanguageKey;
+
55 
+
56 // -----------------------------------------------------------------------------
+
57 // SPUUpdater Delegate:
+
58 // -----------------------------------------------------------------------------
+
59 
+
60 typedef NS_ENUM(NSInteger, SPUUpdateCheck)
+
61 {
+
62  SPUUpdateCheckUserInitiated = 0,
+
63  SPUUpdateCheckBackgroundScheduled = 1
+
64 };
+
65 
+
69 @protocol SPUUpdaterDelegate <NSObject>
+
70 @optional
+
71 
+
81 - (void)updater:(SPUUpdater *)updater willScheduleUpdateCheckAfterDelay:(NSTimeInterval)delay;
+
82 
+
90 - (void)updaterWillIdleSchedulingUpdates:(SPUUpdater *)updater;
+
91 
+
100 - (BOOL)updaterMayCheckForUpdates:(SPUUpdater *)updater;
+
101 
+
112 #if __has_feature(objc_generics)
+
113 - (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+
114 #else
+
115 - (NSArray *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+
116 #endif
+
117 
+
127 #if __has_feature(objc_generics)
+
128 - (NSArray<NSString *> *)allowedSystemProfileKeysForUpdater:(SPUUpdater *)updater;
+
129 #else
+
130 - (NSArray *)allowedSystemProfileKeysForUpdater:(SPUUpdater *)updater;
+
131 #endif
+
132 
+
142 - (nullable NSString *)feedURLStringForUpdater:(SPUUpdater *)updater;
+
143 
+
151 - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SPUUpdater *)updater;
+
152 
+
161 - (void)updater:(SPUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
+
162 
+
185 - (NSSet<NSString *> *)allowedChannelsForUpdater:(SPUUpdater *)updater;
+
186 
+
215 - (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SPUUpdater *)updater;
+
216 
+
223 - (void)updater:(SPUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;
+
224 
+
237 - (void)updaterDidNotFindUpdate:(SPUUpdater *)updater error:(NSError *)error;
+
238 
+
244 - (void)updaterDidNotFindUpdate:(SPUUpdater *)updater;
+
245 
+
252 - (void)updater:(SPUUpdater *)updater userDidSkipThisVersion:(SUAppcastItem *)item;
+
253 
+
263 - (BOOL)updaterShouldDownloadReleaseNotes:(SPUUpdater *)updater;
+
264 
+
272 - (void)updater:(SPUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request;
+
273 
+
280 - (void)updater:(SPUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item;
+
281 
+
289 - (void)updater:(SPUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error;
+
290 
+
296 - (void)userDidCancelDownload:(SPUUpdater *)updater;
+
297 
+
304 - (void)updater:(SPUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item;
+
305 
+
312 - (void)updater:(SPUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item;
+
313 
+
320 - (void)updater:(SPUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;
+
321 
+
336 - (BOOL)updater:(SPUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvokingBlock:(void (^)(void))installHandler;
+
337 
+
347 - (BOOL)updaterShouldRelaunchApplication:(SPUUpdater *)updater;
+
348 
+
354 - (void)updaterWillRelaunchApplication:(SPUUpdater *)updater;
+
355 
+
370 - (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SPUUpdater *)updater;
+
371 
+
389 - (BOOL)updater:(SPUUpdater *)updater shouldAllowInstallerInteractionForUpdateCheck:(SPUUpdateCheck)updateCheck;
+
390 
+
399 - (nullable NSString *)decryptionPasswordForUpdater:(SPUUpdater *)updater;
+
400 
+
413 - (BOOL)updater:(SPUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))immediateInstallHandler;
+
414 
+
421 - (void)updater:(SPUUpdater *)updater didAbortWithError:(NSError *)error;
+
422 
+
423 @end
+
424 
+
425 NS_ASSUME_NONNULL_END
+
The main API in Sparkle for controlling the update mechanism.
Definition: SPUUpdater.h:33
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_updater_settings_8h_source.html b/documentation/api-reference/_s_p_u_updater_settings_8h_source.html new file mode 100644 index 0000000..2a13e77 --- /dev/null +++ b/documentation/api-reference/_s_p_u_updater_settings_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdaterSettings.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdaterSettings.h
+
+
+
1 //
+
2 // SPUUpdaterSettings.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/27/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 NS_ASSUME_NONNULL_BEGIN
+
20 
+
27 SU_EXPORT @interface SPUUpdaterSettings : NSObject
+
28 
+
29 - (instancetype)initWithHostBundle:(NSBundle *)hostBundle;
+
30 
+
34 @property (readonly, nonatomic) BOOL automaticallyChecksForUpdates;
+
35 
+
39 @property (readonly, nonatomic) NSTimeInterval updateCheckInterval;
+
40 
+
44 @property (readonly, nonatomic) BOOL allowsAutomaticUpdates;
+
45 
+
52 @property (readonly, nonatomic) BOOL automaticallyDownloadsUpdates;
+
53 
+
57 @property (readonly, nonatomic) BOOL sendsSystemProfile;
+
58 
+
59 @end
+
60 
+
61 NS_ASSUME_NONNULL_END
+
This class can be used for reading certain updater settings.
Definition: SPUUpdaterSettings.h:28
+
BOOL automaticallyChecksForUpdates
Indicates whether or not automatic update checks are enabled.
Definition: SPUUpdaterSettings.h:34
+
BOOL sendsSystemProfile
Indicates whether or not anonymous system profile information is sent when checking for updates.
Definition: SPUUpdaterSettings.h:57
+
BOOL allowsAutomaticUpdates
Indicates whether or not automatically downloading updates is allowed to be turned on by the user.
Definition: SPUUpdaterSettings.h:44
+
BOOL automaticallyDownloadsUpdates
Indicates whether or not automatically downloading updates is enabled by the user or developer.
Definition: SPUUpdaterSettings.h:52
+
NSTimeInterval updateCheckInterval
The regular update check interval.
Definition: SPUUpdaterSettings.h:39
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_updater_timer_8h_source.html b/documentation/api-reference/_s_p_u_updater_timer_8h_source.html new file mode 100644 index 0000000..befd956 --- /dev/null +++ b/documentation/api-reference/_s_p_u_updater_timer_8h_source.html @@ -0,0 +1,114 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdaterTimer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdaterTimer.h
+
+
+
1 //
+
2 // SPUUpdaterTimer.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 8/12/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @protocol SPUUpdaterTimerDelegate <NSObject>
+
14 
+
15 - (void)updaterTimerDidFire;
+
16 
+
17 @end
+
18 
+
19 // This notifies the updater for scheduled update checks
+
20 // This class is used so that an updater instance isn't kept alive by a scheduled update check
+
21 @interface SPUUpdaterTimer : NSObject
+
22 
+
23 - (instancetype)initWithDelegate:(id<SPUUpdaterTimerDelegate>)delegate;
+
24 
+
25 - (void)startAndFireAfterDelay:(NSTimeInterval)delay;
+
26 
+
27 - (void)invalidate;
+
28 
+
29 @end
+
30 
+
31 NS_ASSUME_NONNULL_END
+
Definition: SPUUpdaterTimer.h:22
+
Definition: SPUUpdaterTimer.h:13
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_user_driver_8h_source.html b/documentation/api-reference/_s_p_u_user_driver_8h_source.html new file mode 100644 index 0000000..24b4e38 --- /dev/null +++ b/documentation/api-reference/_s_p_u_user_driver_8h_source.html @@ -0,0 +1,173 @@ + + + + + + + +Sparkle: Sparkle/SPUUserDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUserDriver.h
+
+
+
1 //
+
2 // SPUUserDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/14/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 
+
18 #import <Sparkle/SPUUserUpdateState.h>
+
19 #import <Sparkle/SUExport.h>
+
20 
+
21 NS_ASSUME_NONNULL_BEGIN
+
22 
+ +
24 
+
33 SU_EXPORT @protocol SPUUserDriver <NSObject>
+
34 
+
44 - (void)showUpdatePermissionRequest:(SPUUpdatePermissionRequest *)request reply:(void (^)(SUUpdatePermissionResponse *))reply;
+
45 
+
53 - (void)showUserInitiatedUpdateCheckWithCancellation:(void (^)(void))cancellation;
+
54 
+
88 - (void)showUpdateFoundWithAppcastItem:(SUAppcastItem *)appcastItem state:(SPUUserUpdateState *)state reply:(void (^)(SPUUserUpdateChoice))reply;
+
89 
+
99 - (void)showUpdateReleaseNotesWithDownloadData:(SPUDownloadData *)downloadData;
+
100 
+
110 - (void)showUpdateReleaseNotesFailedToDownloadWithError:(NSError *)error;
+
111 
+
129 - (void)showUpdateNotFoundWithError:(NSError *)error acknowledgement:(void (^)(void))acknowledgement;
+
130 
+
142 - (void)showUpdaterError:(NSError *)error acknowledgement:(void (^)(void))acknowledgement;
+
143 
+
151 - (void)showDownloadInitiatedWithCancellation:(void (^)(void))cancellation;
+
152 
+
160 - (void)showDownloadDidReceiveExpectedContentLength:(uint64_t)expectedContentLength;
+
161 
+
168 - (void)showDownloadDidReceiveDataOfLength:(uint64_t)length;
+
169 
+ +
179 
+
189 - (void)showExtractionReceivedProgress:(double)progress;
+
190 
+
198 - (void)showInstallingUpdate;
+
199 
+
215 - (void)showReadyToInstallAndRelaunch:(void (^)(SPUUserUpdateChoice))reply;
+
216 
+ +
229 
+
244 - (void)showUpdateInstalledAndRelaunched:(BOOL)relaunched acknowledgement:(void (^)(void))acknowledgement;
+
245 
+
252 - (void)showUpdateInFocus;
+
253 
+ +
262 
+
263 /*
+
264  * Below are deprecated methods that have been replaced by better alternatives.
+
265  * The deprecated methods will be used if the alternatives have not been implemented yet.
+
266  * In the future support for using these deprecated methods may be removed however.
+
267  */
+
268 @optional
+
269 
+
270 // Clients should move to non-deprecated methods
+
271 // Deprecated methods are only (temporarily) kept around for compatibility reasons
+
272 
+
273 - (void)showUpdateNotFoundWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateNotFoundWithError:acknowledgement: instead");
+
274 
+
275 - (void)showUpdateInstallationDidFinishWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateInstalledAndRelaunched:acknowledgement: instead");
+
276 
+
277 - (void)dismissUserInitiatedUpdateCheck __deprecated_msg("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.");;
+
278 
+
279 @end
+
280 
+
281 NS_ASSUME_NONNULL_END
+
A class for containing downloaded data along with some information about it.
Definition: SPUDownloadData.h:33
+
This class represents information needed to make a permission request for checking updates.
Definition: SPUUpdatePermissionRequest.h:24
+
Definition: SPUUserUpdateState.h:38
+
Definition: SUAppcastItem.h:36
+
This class represents a response for permission to check updates.
Definition: SUUpdatePermissionResponse.h:22
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
void showDownloadDidStartExtractingUpdate()
Show the user that the update finished downloading and started extracting.
+
void showSendingTerminationSignal()
Show or dismiss progress while a termination signal is being sent to the application from Sparkle's i...
+
void dismissUpdateInstallation()
Dismiss the current update installation.
+
void showInstallingUpdate()
Show the user that the update is installing.
+
void showUpdateInFocus()
Show the user the current presented update or its progress in utmost focus.
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_user_initiated_update_driver_8h_source.html b/documentation/api-reference/_s_p_u_user_initiated_update_driver_8h_source.html new file mode 100644 index 0000000..81a43d9 --- /dev/null +++ b/documentation/api-reference/_s_p_u_user_initiated_update_driver_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +Sparkle: Sparkle/SPUUserInitiatedUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUserInitiatedUpdateDriver.h
+
+
+
1 //
+
2 // SPUUserInitiatedUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @class SUHost;
+ +
16 
+ +
18 
+
19 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater userDriver:(id <SPUUserDriver>)userDriver updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
Definition: SPUUserInitiatedUpdateDriver.h:17
+
Definition: SUHost.h:15
+
Definition: SPUUpdateDriver.h:20
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_user_update_state_09_private_8h_source.html b/documentation/api-reference/_s_p_u_user_update_state_09_private_8h_source.html new file mode 100644 index 0000000..3f2120d --- /dev/null +++ b/documentation/api-reference/_s_p_u_user_update_state_09_private_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: Sparkle/SPUUserUpdateState+Private.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUserUpdateState+Private.h
+
+
+
1 //
+
2 // SPUUserUpdateState+Private.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/9/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPUUserUpdateState_Private_h
+
10 #define SPUUserUpdateState_Private_h
+
11 
+
12 #import "SPUUserUpdateState.h"
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+ +
17 
+
18 - (instancetype)initWithStage:(SPUUserUpdateStage)stage userInitiated:(BOOL)userInitiated;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
23 
+
24 #endif /* SPUUserUpdateState_Private_h */
+
Definition: SPUUserUpdateState+Private.h:16
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_user_update_state_8h_source.html b/documentation/api-reference/_s_p_u_user_update_state_8h_source.html new file mode 100644 index 0000000..83695ab --- /dev/null +++ b/documentation/api-reference/_s_p_u_user_update_state_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: Sparkle/SPUUserUpdateState.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUserUpdateState.h
+
+
+
1 //
+
2 // SPUUserUpdateState.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/29/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPUUserUpdateState_h
+
10 #define SPUUserUpdateState_h
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #import <Sparkle/SUExport.h>
+
22 
+
23 NS_ASSUME_NONNULL_BEGIN
+
24 
+
25 typedef NS_ENUM(NSInteger, SPUUserUpdateChoice) {
+
26  SPUUserUpdateChoiceSkip,
+
27  SPUUserUpdateChoiceInstall,
+
28  SPUUserUpdateChoiceDismiss,
+
29 };
+
30 
+
31 typedef NS_ENUM(NSInteger, SPUUserUpdateStage) {
+
32  SPUUserUpdateStageNotDownloaded,
+
33  SPUUserUpdateStageDownloaded,
+
34  SPUUserUpdateStageInstalling
+
35 };
+
36 
+
37 SU_EXPORT @interface SPUUserUpdateState : NSObject
+
38 
+
39 - (instancetype)init NS_UNAVAILABLE;
+
40 
+
41 @property (nonatomic, readonly) SPUUserUpdateStage stage;
+
42 @property (nonatomic, readonly) BOOL userInitiated;
+
43 
+
44 @end
+
45 
+
46 NS_ASSUME_NONNULL_END
+
47 
+
48 #endif /* SPUUserUpdateState_h */
+
Definition: SPUUserUpdateState.h:38
+
+ + + + diff --git a/documentation/api-reference/_s_p_u_x_p_c_service_info_8h_source.html b/documentation/api-reference/_s_p_u_x_p_c_service_info_8h_source.html new file mode 100644 index 0000000..93e252e --- /dev/null +++ b/documentation/api-reference/_s_p_u_x_p_c_service_info_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: Sparkle/SPUXPCServiceInfo.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUXPCServiceInfo.h
+
+
+
1 //
+
2 // SPUXPCServiceInfo.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 BOOL SPUXPCServiceExists(NSString *bundleName);
+
14 
+
15 BOOL SPUXPCValidateServiceIfBundleExists(NSString *bundleName, NSBundle *sparkleBundle, NSError * __autoreleasing *error);
+
16 
+
17 NSBundle * _Nullable SPUXPCServiceBundle(NSString *bundleName);
+
18 
+
19 NS_ASSUME_NONNULL_END
+
+ + + + diff --git a/documentation/api-reference/_s_u_appcast_09_private_8h_source.html b/documentation/api-reference/_s_u_appcast_09_private_8h_source.html new file mode 100644 index 0000000..4817919 --- /dev/null +++ b/documentation/api-reference/_s_u_appcast_09_private_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: Sparkle/SUAppcast+Private.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcast+Private.h
+
+
+
1 //
+
2 // SUAppcast+Private.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/30/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 
+
18 NS_ASSUME_NONNULL_BEGIN
+
19 
+ +
21 
+ +
23 
+
24 - (nullable instancetype)initWithXMLData:(NSData *)xmlData relativeToURL:(NSURL * _Nullable)relativeURL stateResolver:(SPUAppcastItemStateResolver *)stateResolver error:(NSError * __autoreleasing *)error;
+
25 
+
26 - (SUAppcast *)copyByFilteringItems:(BOOL (^)(SUAppcastItem *))filterBlock;
+
27 
+
28 @end
+
29 
+
30 NS_ASSUME_NONNULL_END
+
Definition: SUAppcast+Private.h:22
+
Private exposed class used to resolve Appcast Item properties that rely on external factors such as a...
Definition: SPUAppcastItemStateResolver.h:30
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_u_appcast_8h_source.html b/documentation/api-reference/_s_u_appcast_8h_source.html new file mode 100644 index 0000000..9f2238c --- /dev/null +++ b/documentation/api-reference/_s_u_appcast_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +Sparkle: Sparkle/SUAppcast.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcast.h
+
+
+
1 //
+
2 // SUAppcast.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/12/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUAPPCAST_H
+
10 #define SUAPPCAST_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 #import <Sparkle/SUExport.h>
+
21 
+
22 NS_ASSUME_NONNULL_BEGIN
+
23 
+
24 @class SUAppcastItem;
+
25 SU_EXPORT @interface SUAppcast : NSObject
+
26 
+
27 @property (readonly, copy) NSArray<SUAppcastItem *> *items;
+
28 
+
29 @end
+
30 
+
31 NS_ASSUME_NONNULL_END
+
32 
+
33 #endif
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_u_appcast_driver_8h_source.html b/documentation/api-reference/_s_u_appcast_driver_8h_source.html new file mode 100644 index 0000000..d269f85 --- /dev/null +++ b/documentation/api-reference/_s_u_appcast_driver_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: Sparkle/SUAppcastDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcastDriver.h
+
+
+
1 //
+
2 // SUAppcastDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+ +
14 @protocol SPUUpdaterDelegate;
+
15 
+
16 @protocol SUAppcastDriverDelegate <NSObject>
+
17 
+
18 - (void)didFailToFetchAppcastWithError:(NSError *)error;
+
19 - (void)didFinishLoadingAppcast:(SUAppcast *)appcast;
+
20 - (void)didFindValidUpdateWithAppcastItem:(SUAppcastItem *)appcastItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryAppcastItem;
+
21 - (void)didNotFindUpdateWithLatestAppcastItem:(nullable SUAppcastItem *)latestAppcastItem hostToLatestAppcastItemComparisonResult:(NSComparisonResult)hostToLatestAppcastItemComparisonResult background:(BOOL)background;
+
22 
+
23 @end
+
24 
+
25 @interface SUAppcastDriver : NSObject
+
26 
+
27 - (instancetype)initWithHost:(SUHost *)host updater:(id)updater updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate delegate:(nullable id <SUAppcastDriverDelegate>)delegate;
+
28 
+
29 - (void)loadAppcastFromURL:(NSURL *)appcastURL userAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background;
+
30 
+
31 - (void)cleanup:(void (^)(void))completionHandler;
+
32 
+
33 @end
+
34 
+
35 NS_ASSUME_NONNULL_END
+
Definition: SUAppcastDriver.h:26
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
Definition: SUAppcastDriver.h:16
+
+ + + + diff --git a/documentation/api-reference/_s_u_appcast_item_09_private_8h_source.html b/documentation/api-reference/_s_u_appcast_item_09_private_8h_source.html new file mode 100644 index 0000000..155b2d0 --- /dev/null +++ b/documentation/api-reference/_s_u_appcast_item_09_private_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: Sparkle/SUAppcastItem+Private.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcastItem+Private.h
+
+
+
1 //
+
2 // SUAppcastItem+Private.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/30/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUAppcastItem_Private_h
+
10 #define SUAppcastItem_Private_h
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 NS_ASSUME_NONNULL_BEGIN
+
22 
+
23 // Available in SPUAppcastItemStateResolver.h (a private exposed header)
+ +
25 
+
26 @interface SUAppcastItem (Private) <NSSecureCoding>
+
27 
+
34 - (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL stateResolver:(SPUAppcastItemStateResolver *)stateResolver failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error;
+
35 
+
36 @end
+
37 
+
38 NS_ASSUME_NONNULL_END
+
39 
+
40 #endif /* SUAppcastItem_Private_h */
+
Definition: SUAppcastItem+Private.h:26
+
Private exposed class used to resolve Appcast Item properties that rely on external factors such as a...
Definition: SPUAppcastItemStateResolver.h:30
+
+ + + + diff --git a/documentation/api-reference/_s_u_appcast_item_8h_source.html b/documentation/api-reference/_s_u_appcast_item_8h_source.html new file mode 100644 index 0000000..c31ce5d --- /dev/null +++ b/documentation/api-reference/_s_u_appcast_item_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +Sparkle: Sparkle/SUAppcastItem.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcastItem.h
+
+
+
1 //
+
2 // SUAppcastItem.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/12/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUAPPCASTITEM_H
+
10 #define SUAPPCASTITEM_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #ifdef BUILDING_SPARKLE_TESTS
+
22 // Ignore incorrect warning
+
23 #pragma clang diagnostic push
+
24 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
25 #import "SUExport.h"
+
26 #pragma clang diagnostic pop
+
27 #else
+
28 #import <Sparkle/SUExport.h>
+
29 #endif
+
30 
+
31 @class SUSignatures;
+
32 @class SPUAppcastItemState;
+
33 
+
34 NS_ASSUME_NONNULL_BEGIN
+
35 
+
36 SU_EXPORT @interface SUAppcastItem : NSObject<NSSecureCoding>
+
37 @property (copy, readonly, nullable) NSString *title;
+
38 @property (copy, readonly, nullable) NSString *dateString;
+
39 @property (copy, readonly, nullable) NSDate *date;
+
40 @property (copy, readonly, nullable) NSString *itemDescription;
+
41 @property (strong, readonly, nullable) NSURL *releaseNotesURL;
+
42 @property (strong, readonly, nullable) SUSignatures *signatures;
+
43 @property (copy, readonly, nullable) NSString *minimumSystemVersion;
+
44 @property (copy, readonly, nullable) NSString *maximumSystemVersion;
+
45 @property (strong, readonly, nullable) NSURL *fileURL;
+
46 @property (nonatomic, readonly) uint64_t contentLength;
+
47 @property (copy, readonly) NSString *versionString;
+
48 @property (copy, readonly, nullable) NSString *osString;
+
49 @property (copy, readonly, nullable) NSString *displayVersionString;
+
50 @property (copy, readonly, nullable) NSDictionary *deltaUpdates;
+
51 @property (strong, readonly, nullable) NSURL *infoURL;
+
52 @property (copy, readonly, nullable) NSNumber* phasedRolloutInterval;
+
53 @property (nonatomic, copy, readonly) NSString *installationType;
+
54 @property (copy, readonly, nullable) NSString *minimumAutoupdateVersion;
+
55 @property (nonatomic, readonly, nullable) NSString *channel;
+
56 
+
57 @property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate;
+
58 @property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate;
+
59 @property (getter=isMajorUpgrade, readonly) BOOL majorUpgrade;
+
60 @property (getter=isMacOsUpdate, readonly) BOOL macOsUpdate;
+
61 @property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate;
+
62 
+
63 @property (nonatomic, readonly) BOOL minimumOperatingSystemVersionIsOK;
+
64 @property (nonatomic, readonly) BOOL maximumOperatingSystemVersionIsOK;
+
65 
+
66 // Returns the dictionary representing the appcast item; this might be useful later for extensions.
+
67 @property (readonly, copy) NSDictionary *propertiesDictionary;
+
68 
+
69 - (instancetype)init NS_UNAVAILABLE;
+
70 
+
71 + (instancetype)emptyAppcastItem;
+
72 
+
73 // Deprecated initializers
+
74 - (nullable instancetype)initWithDictionary:(NSDictionary *)dict __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
+
75 - (nullable instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
+
76 - (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
+
77 
+
78 @end
+
79 
+
80 NS_ASSUME_NONNULL_END
+
81 
+
82 #endif
+
Definition: SPUAppcastItemState.h:15
+
Definition: SUAppcastItem.h:36
+
Definition: SUSignatures.h:31
+
+ + + + diff --git a/documentation/api-reference/_s_u_application_info_8h_source.html b/documentation/api-reference/_s_u_application_info_8h_source.html new file mode 100644 index 0000000..38fe751 --- /dev/null +++ b/documentation/api-reference/_s_u_application_info_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SUApplicationInfo.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUApplicationInfo.h
+
+
+
1 //
+
2 // SUApplicationInfo.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/28/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS || !BUILDING_SPARKLE
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 @class SUHost, NSImage, NSApplication;
+
16 
+
17 @interface SUApplicationInfo : NSObject
+
18 
+
19 + (BOOL)isBackgroundApplication:(NSApplication *)application;
+
20 
+
21 + (NSImage *)bestIconForHost:(SUHost *)host;
+
22 
+
23 @end
+
24 
+
25 NS_ASSUME_NONNULL_END
+
26 
+
27 #endif
+
Definition: SUApplicationInfo.h:18
+
Definition: SUHost.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_u_bundle_icon_8h_source.html b/documentation/api-reference/_s_u_bundle_icon_8h_source.html new file mode 100644 index 0000000..bae2c59 --- /dev/null +++ b/documentation/api-reference/_s_u_bundle_icon_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +Sparkle: Sparkle/SUBundleIcon.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUBundleIcon.h
+
+
+
1 //
+
2 // SUBundleIcon.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/24/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUHost;
+
14 
+
15 @interface SUBundleIcon : NSObject
+
16 
+
17 + (NSURL * _Nullable)iconURLForHost:(SUHost *)host;
+
18 
+
19 @end
+
20 
+
21 NS_ASSUME_NONNULL_END
+
Definition: SUBundleIcon.h:16
+
Definition: SUHost.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_u_constants_8h_source.html b/documentation/api-reference/_s_u_constants_8h_source.html new file mode 100644 index 0000000..b7b58fe --- /dev/null +++ b/documentation/api-reference/_s_u_constants_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +Sparkle: Sparkle/SUConstants.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUConstants.h
+
+
+
1 //
+
2 // SUConstants.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/16/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 
+
10 #ifndef SUCONSTANTS_H
+
11 #define SUCONSTANTS_H
+
12 
+
13 #import <Foundation/Foundation.h>
+
14 
+
15 // -----------------------------------------------------------------------------
+
16 // Misc:
+
17 // -----------------------------------------------------------------------------
+
18 
+
19 extern const NSTimeInterval SUDefaultUpdatePermissionPromptInterval;
+
20 extern const NSTimeInterval SUMinimumUpdateCheckInterval;
+
21 extern const NSTimeInterval SUDefaultUpdateCheckInterval;
+
22 extern const uint64_t SULeewayUpdateCheckInterval;
+
23 extern const NSTimeInterval SUImpatientUpdateCheckInterval;
+
24 
+
25 extern NSString *const SUBundleIdentifier;
+
26 
+
27 extern NSString *const SUAppcastAttributeValueMacOS;
+
28 
+
29 // -----------------------------------------------------------------------------
+
30 // Notifications:
+
31 // -----------------------------------------------------------------------------
+
32 
+
33 extern NSString *const SUTechnicalErrorInformationKey;
+
34 
+
35 // -----------------------------------------------------------------------------
+
36 // PList keys::
+
37 // -----------------------------------------------------------------------------
+
38 
+
39 extern NSString *const SUFeedURLKey;
+
40 extern NSString *const SUHasLaunchedBeforeKey;
+
41 extern NSString *const SURelaunchHostBundleKey;
+
42 extern NSString *const SUShowReleaseNotesKey;
+
43 extern NSString *const SUSkippedMinorVersionKey;
+
44 extern NSString *const SUSkippedMajorVersionKey;
+
45 extern NSString *const SUScheduledCheckIntervalKey;
+
46 extern NSString *const SULastCheckTimeKey;
+
47 extern NSString *const SUExpectsDSASignatureKey;
+
48 extern NSString *const SUExpectsEDSignatureKey;
+
49 extern NSString *const SUPublicDSAKeyKey;
+
50 extern NSString *const SUPublicDSAKeyFileKey;
+
51 extern NSString *const SUPublicEDKeyKey;
+
52 extern NSString *const SUAutomaticallyUpdateKey;
+
53 extern NSString *const SUAllowsAutomaticUpdatesKey;
+
54 extern NSString *const SUEnableAutomaticChecksKey;
+
55 extern NSString *const SUEnableSystemProfilingKey;
+
56 extern NSString *const SUSendProfileInfoKey;
+
57 extern NSString *const SUUpdateGroupIdentifierKey;
+
58 extern NSString *const SULastProfileSubmitDateKey;
+
59 extern NSString *const SUPromptUserOnFirstLaunchKey;
+
60 extern NSString *const SUDefaultsDomainKey;
+
61 extern NSString *const SUEnableJavaScriptKey;
+
62 extern NSString *const SUFixedHTMLDisplaySizeKey __attribute__((deprecated("This key is obsolete and has no effect.")));
+
63 extern NSString *const SUAppendVersionNumberKey __attribute__((deprecated("This key is obsolete. See SPARKLE_APPEND_VERSION_NUMBER.")));
+
64 extern NSString *const SUEnableAutomatedDowngradesKey __attribute__((deprecated("This key is obsolete. See SPARKLE_AUTOMATED_DOWNGRADES.")));
+
65 extern NSString *const SUNormalizeInstalledApplicationNameKey __attribute__((deprecated("This key is obsolete. SPARKLE_NORMALIZE_INSTALLED_APPLICATION_NAME.")));
+
66 extern NSString *const SURelaunchToolNameKey __attribute__((deprecated("This key is obsolete. SPARKLE_RELAUNCH_TOOL_NAME.")));
+
67 
+
68 // -----------------------------------------------------------------------------
+
69 // Appcast keys::
+
70 // -----------------------------------------------------------------------------
+
71 
+
72 extern NSString *const SUAppcastAttributeDeltaFrom;
+
73 extern NSString *const SUAppcastAttributeDSASignature;
+
74 extern NSString *const SUAppcastAttributeEDSignature;
+
75 extern NSString *const SUAppcastAttributeShortVersionString;
+
76 extern NSString *const SUAppcastAttributeVersion;
+
77 extern NSString *const SUAppcastAttributeOsType;
+
78 extern NSString *const SUAppcastAttributeInstallationType;
+
79 
+
80 extern NSString *const SUAppcastElementVersion;
+
81 extern NSString *const SUAppcastElementShortVersionString;
+
82 extern NSString *const SUAppcastElementCriticalUpdate;
+
83 extern NSString *const SUAppcastElementDeltas;
+
84 extern NSString *const SUAppcastElementMinimumAutoupdateVersion;
+
85 extern NSString *const SUAppcastElementMinimumSystemVersion;
+
86 extern NSString *const SUAppcastElementMaximumSystemVersion;
+
87 extern NSString *const SUAppcastElementReleaseNotesLink;
+
88 extern NSString *const SUAppcastElementTags;
+
89 extern NSString *const SUAppcastElementPhasedRolloutInterval;
+
90 extern NSString *const SUAppcastElementInformationalUpdate;
+
91 extern NSString *const SUAppcastElementChannel;
+
92 
+
93 extern NSString *const SURSSAttributeURL;
+
94 extern NSString *const SURSSAttributeLength;
+
95 
+
96 extern NSString *const SURSSElementDescription;
+
97 extern NSString *const SURSSElementEnclosure;
+
98 extern NSString *const SURSSElementLink;
+
99 extern NSString *const SURSSElementPubDate;
+
100 extern NSString *const SURSSElementTitle;
+
101 
+
102 extern NSString *const SUXMLLanguage;
+
103 
+
104 #endif
+
+ + + + diff --git a/documentation/api-reference/_s_u_errors_8h_source.html b/documentation/api-reference/_s_u_errors_8h_source.html new file mode 100644 index 0000000..c957dab --- /dev/null +++ b/documentation/api-reference/_s_u_errors_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +Sparkle: Sparkle/SUErrors.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUErrors.h
+
+
+
1 //
+
2 // SUErrors.h
+
3 // Sparkle
+
4 //
+
5 // Created by C.W. Betts on 10/13/14.
+
6 // Copyright (c) 2014 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUERRORS_H
+
10 #define SUERRORS_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #if defined(BUILDING_SPARKLE_TOOL) || defined(BUILDING_SPARKLE_TESTS)
+
22 // Ignore incorrect warning
+
23 #pragma clang diagnostic push
+
24 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
25 #import "SUExport.h"
+
26 #pragma clang diagnostic pop
+
27 #else
+
28 #import <Sparkle/SUExport.h>
+
29 #endif
+
30 
+
34 SU_EXPORT extern NSString *const SUSparkleErrorDomain;
+
35 
+
36 typedef NS_ENUM(OSStatus, SUError) {
+
37  // Configuration phase errors
+
38  SUNoPublicDSAFoundError = 0001,
+
39  SUInsufficientSigningError = 0002,
+
40  SUInsecureFeedURLError = 0003,
+
41  SUInvalidFeedURLError = 0004,
+
42  SUInvalidUpdaterError = 0005,
+
43  SUInvalidHostBundleIdentifierError = 0006,
+
44  SUInvalidHostVersionError = 0007,
+
45 
+
46  // Appcast phase errors.
+
47  SUAppcastParseError = 1000,
+
48  SUNoUpdateError = 1001,
+
49  SUAppcastError = 1002,
+
50  SURunningFromDiskImageError = 1003,
+
51  SUResumeAppcastError = 1004,
+
52  SURunningTranslocated = 1005,
+
53  SUWebKitTerminationError = 1006,
+
54 
+
55  // Download phase errors.
+
56  SUTemporaryDirectoryError = 2000,
+
57  SUDownloadError = 2001,
+
58 
+
59  // Extraction phase errors.
+
60  SUUnarchivingError = 3000,
+
61  SUSignatureError = 3001,
+
62  SUValidationError = 3002,
+
63 
+
64  // Installation phase errors.
+
65  SUFileCopyFailure = 4000,
+
66  SUAuthenticationFailure = 4001,
+
67  SUMissingUpdateError = 4002,
+
68  SUMissingInstallerToolError = 4003,
+
69  SURelaunchError = 4004,
+
70  SUInstallationError = 4005,
+
71  SUDowngradeError = 4006,
+
72  SUInstallationCanceledError = 4007,
+
73  SUInstallationAuthorizeLaterError = 4008,
+
74  SUNotAllowedInteractionError = 4009,
+
75  SUAgentInvalidationError = 4010,
+
76 
+
77  // API misuse errors.
+
78  SUIncorrectAPIUsageError = 5000
+
79 };
+
80 
+
81 typedef NS_ENUM(OSStatus, SPUNoUpdateFoundReason) {
+
82  SPUNoUpdateFoundReasonUnknown,
+
83  SPUNoUpdateFoundReasonOnLatestVersion,
+
84  SPUNoUpdateFoundReasonOnNewerThanLatestVersion,
+
85  SPUNoUpdateFoundReasonSystemIsTooOld,
+
86  SPUNoUpdateFoundReasonSystemIsTooNew
+
87 };
+
88 
+
89 SU_EXPORT extern NSString *const SPUNoUpdateFoundReasonKey;
+
90 SU_EXPORT extern NSString *const SPULatestAppcastItemFoundKey;
+
91 SU_EXPORT extern NSString *const SPUNoUpdateFoundUserInitiatedKey;
+
92 
+
93 #endif
+
+ + + + diff --git a/documentation/api-reference/_s_u_export_8h_source.html b/documentation/api-reference/_s_u_export_8h_source.html new file mode 100644 index 0000000..df93771 --- /dev/null +++ b/documentation/api-reference/_s_u_export_8h_source.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: Sparkle/SUExport.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUExport.h
+
+
+
1 //
+
2 // SUExport.h
+
3 // Sparkle
+
4 //
+
5 // Created by Jake Petroules on 2014-08-23.
+
6 // Copyright (c) 2014 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUEXPORT_H
+
10 #define SUEXPORT_H
+
11 
+
12 #ifdef BUILDING_SPARKLE
+
13 #define SU_EXPORT __attribute__((visibility("default")))
+
14 #else
+
15 #define SU_EXPORT
+
16 #endif
+
17 
+
18 #endif
+
+ + + + diff --git a/documentation/api-reference/_s_u_file_manager_8h_source.html b/documentation/api-reference/_s_u_file_manager_8h_source.html new file mode 100644 index 0000000..60a6557 --- /dev/null +++ b/documentation/api-reference/_s_u_file_manager_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: Sparkle/SUFileManager.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUFileManager.h
+
+
+
1 //
+
2 // SUFileManager.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/18/15.
+
6 // Copyright (c) 2015 zgcoder. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SUExport.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
19 @interface SUFileManager : NSObject
+
20 
+
26 - (instancetype)init;
+
27 
+
38 - (NSURL * _Nullable)makeTemporaryDirectoryWithPreferredName:(NSString *)preferredName appropriateForDirectoryURL:(NSURL *)appropriateURL error:(NSError * __autoreleasing *)error;
+
39 
+
48 - (BOOL)makeDirectoryAtURL:(NSURL *)targetURL error:(NSError **)error;
+
49 
+
60 - (BOOL)moveItemAtURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL error:(NSError **)error;
+
61 
+
73 - (BOOL)replaceItemAtURL:(NSURL *)originalItemURL withItemAtURL:(NSURL *)newItemURL error:(NSError **)error __OSX_AVAILABLE(10.13);
+
74 
+
84 - (BOOL)copyItemAtURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL error:(NSError **)error;
+
85 
+
94 - (BOOL)removeItemAtURL:(NSURL *)url error:(NSError **)error;
+
95 
+
110 - (BOOL)changeOwnerAndGroupOfItemAtRootURL:(NSURL *)targetURL toMatchURL:(NSURL *)matchURL error:(NSError **)error;
+
111 
+
123 - (BOOL)updateModificationAndAccessTimeOfItemAtURL:(NSURL *)targetURL error:(NSError **)error;
+
124 
+
137 - (BOOL)updateAccessTimeOfItemAtRootURL:(NSURL *)targetURL error:(NSError * __autoreleasing *)error;
+
138 
+
155 - (BOOL)releaseItemFromQuarantineAtRootURL:(NSURL *)rootURL error:(NSError **)error;
+
156 
+
157 @end
+
158 
+
159 NS_ASSUME_NONNULL_END
+
Definition: SUFileManager.h:20
+
instancetype init()
Definition: SUFileManager.m:56
+
+ + + + diff --git a/documentation/api-reference/_s_u_host_8h_source.html b/documentation/api-reference/_s_u_host_8h_source.html new file mode 100644 index 0000000..573ca1b --- /dev/null +++ b/documentation/api-reference/_s_u_host_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +Sparkle: Sparkle/SUHost.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUHost.h
+
+
+
1 //
+
2 // SUHost.h
+
3 // Sparkle
+
4 //
+
5 // Copyright 2008 Andy Matuschak. All rights reserved.
+
6 //
+
7 
+
8 #import <Foundation/Foundation.h>
+
9 
+
10 NS_ASSUME_NONNULL_BEGIN
+
11 
+
12 @class SUPublicKeys;
+
13 
+
14 @interface SUHost : NSObject
+
15 
+
16 @property (strong, readonly) NSBundle *bundle;
+
17 
+
18 - (instancetype)initWithBundle:(NSBundle *)aBundle;
+
19 
+
20 @property (readonly, copy) NSString *bundlePath;
+
21 @property (readonly, copy) NSString *name;
+
22 @property (readonly, copy) NSString *version;
+
23 @property (readonly, nonatomic) BOOL validVersion;
+
24 @property (readonly, copy) NSString *displayVersion;
+
25 @property (readonly) SUPublicKeys *publicKeys;
+
26 
+
27 @property (getter=isRunningOnReadOnlyVolume, readonly) BOOL runningOnReadOnlyVolume;
+
28 @property (getter=isRunningTranslocated, readonly) BOOL runningTranslocated;
+
29 @property (readonly, nonatomic, copy, nullable) NSString *publicDSAKeyFileKey;
+
30 
+
31 - (nullable id)objectForInfoDictionaryKey:(NSString *)key;
+
32 - (BOOL)boolForInfoDictionaryKey:(NSString *)key;
+
33 - (nullable id)objectForUserDefaultsKey:(NSString *)defaultName;
+
34 - (void)setObject:(nullable id)value forUserDefaultsKey:(NSString *)defaultName;
+
35 - (BOOL)boolForUserDefaultsKey:(NSString *)defaultName;
+
36 - (void)setBool:(BOOL)value forUserDefaultsKey:(NSString *)defaultName;
+
37 - (nullable id)objectForKey:(NSString *)key;
+
38 - (BOOL)boolForKey:(NSString *)key;
+
39 @end
+
40 
+
41 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
Definition: SUSignatures.h:44
+
+ + + + diff --git a/documentation/api-reference/_s_u_installer_agent_initiation_protocol_8h_source.html b/documentation/api-reference/_s_u_installer_agent_initiation_protocol_8h_source.html new file mode 100644 index 0000000..6e894f8 --- /dev/null +++ b/documentation/api-reference/_s_u_installer_agent_initiation_protocol_8h_source.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/SUInstallerAgentInitiationProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUInstallerAgentInitiationProtocol.h
+
+
+
1 //
+
2 // SUInstallerAgentInitiationProtocol.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+ +
12 
+
13 - (void)connectionDidInitiateWithReply:(void (^)(void))acknowledgement;
+
14 
+
15 - (void)connectionWillInvalidateWithError:(NSError *)error;
+
16 
+
17 @end
+
Definition: SUInstallerAgentInitiationProtocol.h:11
+
+ + + + diff --git a/documentation/api-reference/_s_u_installer_protocol_8h_source.html b/documentation/api-reference/_s_u_installer_protocol_8h_source.html new file mode 100644 index 0000000..03f78b9 --- /dev/null +++ b/documentation/api-reference/_s_u_installer_protocol_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +Sparkle: Sparkle/SUInstallerProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUInstallerProtocol.h
+
+
+
1 //
+
2 // SUInstallerProtocol.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/26/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @protocol SUInstallerProtocol <NSObject>
+
14 
+
15 // Any installation work can be done prior to user application being terminated and relaunched
+
16 // Currently this is invoked after the user application is terminated, but this may change in the future.
+
17 // No UI should occur during this stage (i.e, do not show package installer apps, etc..)
+
18 // Should be able to be called from non-main thread
+
19 - (BOOL)performInitialInstallation:(NSError **)error;
+
20 
+
21 // Any installation work after the user application has been terminated. This is where the final installation work can be done.
+
22 // After this stage is done, the user application may be relaunched.
+
23 // Should be able to be called from non-main thread
+
24 - (BOOL)performFinalInstallationProgressBlock:(nullable void(^)(double))cb error:(NSError **)error;
+
25 
+
26 // Indicates whether or not this installer can install the update silently in the background, without hindering the user
+
27 // Should be thread safe
+
28 - (BOOL)canInstallSilently;
+
29 
+
30 // The destination and installation path of the bundle being updated
+
31 // Should be thread safe
+
32 - (NSString *)installationPath;
+
33 
+
34 @end
+
35 
+
36 NS_ASSUME_NONNULL_END
+
Definition: SUInstallerProtocol.h:13
+
+ + + + diff --git a/documentation/api-reference/_s_u_legacy_web_view_8h_source.html b/documentation/api-reference/_s_u_legacy_web_view_8h_source.html new file mode 100644 index 0000000..a607621 --- /dev/null +++ b/documentation/api-reference/_s_u_legacy_web_view_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SULegacyWebView.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SULegacyWebView.h
+
+
+
1 //
+
2 // SULegacyWebView.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/30/20.
+
6 // Copyright © 2020 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 #import "SUWebView.h"
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 @interface SULegacyWebView : NSObject <SUWebView>
+
17 
+
18 - (instancetype)initWithColorStyleSheetLocation:(NSURL *)colorStyleSheetLocation fontFamily:(NSString *)fontFamily fontPointSize:(int)fontPointSize javaScriptEnabled:(BOOL)javaScriptEnabled;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
23 
+
24 #endif
+
+ + + + diff --git a/documentation/api-reference/_s_u_localizations_8h_source.html b/documentation/api-reference/_s_u_localizations_8h_source.html new file mode 100644 index 0000000..a168384 --- /dev/null +++ b/documentation/api-reference/_s_u_localizations_8h_source.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: Sparkle/SULocalizations.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SULocalizations.h
+
+
+
1 //
+
2 // SULocalizations.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/28/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SULocalizations_h
+
10 #define SULocalizations_h
+
11 
+
12 #import "SUConstants.h"
+
13 
+
14 #define SULocalizedString(key, comment) NSLocalizedStringFromTableInBundle(key, @"Sparkle", (NSBundle * _Nonnull)([NSBundle bundleWithIdentifier:SUBundleIdentifier] ? [NSBundle bundleWithIdentifier:SUBundleIdentifier] : [NSBundle mainBundle]), comment)
+
15 
+
16 #endif /* SULocalizations_h */
+
+ + + + diff --git a/documentation/api-reference/_s_u_log_09_n_s_error_8h_source.html b/documentation/api-reference/_s_u_log_09_n_s_error_8h_source.html new file mode 100644 index 0000000..70b735d --- /dev/null +++ b/documentation/api-reference/_s_u_log_09_n_s_error_8h_source.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: Sparkle/SULog+NSError.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SULog+NSError.h
+
+
+
1 //
+
2 // SULog+NSError.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/19/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SULog_NSError_h
+
10 #define SULog_NSError_h
+
11 
+
12 #import <Foundation/Foundation.h>
+
13 
+
14 void SULogError(NSError *error);
+
15 
+
16 #endif /* SULog_NSError_h */
+
+ + + + diff --git a/documentation/api-reference/_s_u_log_8h_source.html b/documentation/api-reference/_s_u_log_8h_source.html new file mode 100644 index 0000000..af48715 --- /dev/null +++ b/documentation/api-reference/_s_u_log_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SULog.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SULog.h
+
+
+
1 //
+
2 // SULog.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SULOG_H
+
10 #define SULOG_H
+
11 
+
12 #include <Foundation/Foundation.h>
+
13 
+
14 typedef NS_ENUM(uint8_t, SULogLevel) {
+
15  // This level is for information that *might* result a failure
+
16  // For now until other levels are added, this may serve as a level for other information as well
+
17  SULogLevelDefault,
+
18  // This level is for errors that occurred
+
19  SULogLevelError
+
20 };
+
21 
+
22 // Logging utlity function that is thread-safe
+
23 // On 10.12 or later this uses os_log
+
24 // Otherwise on older systems this uses ASL
+
25 // For debugging command line tools, you may have to use Console.app or log(1) to view log messages
+
26 // Try to keep log messages as compact/short as possible
+
27 void SULog(SULogLevel level, NSString *format, ...) NS_FORMAT_FUNCTION(2, 3);
+
28 
+
29 #endif
+
+ + + + diff --git a/documentation/api-reference/_s_u_normalization_8h_source.html b/documentation/api-reference/_s_u_normalization_8h_source.html new file mode 100644 index 0000000..4975425 --- /dev/null +++ b/documentation/api-reference/_s_u_normalization_8h_source.html @@ -0,0 +1,98 @@ + + + + + + + +Sparkle: Sparkle/SUNormalization.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUNormalization.h
+
+
+
1 //
+
2 // SUNormalization.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/26/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SUHost.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 NSString *SUNormalizedInstallationPath(SUHost *host);
+
15 
+
16 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
+ + + + diff --git a/documentation/api-reference/_s_u_operating_system_8h_source.html b/documentation/api-reference/_s_u_operating_system_8h_source.html new file mode 100644 index 0000000..ad826a6 --- /dev/null +++ b/documentation/api-reference/_s_u_operating_system_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SUOperatingSystem.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUOperatingSystem.h
+
+
+
1 //
+
2 // SUOperatingSystem.h
+
3 // Sparkle
+
4 //
+
5 // Copyright © 2015 Sparkle Project. All rights reserved.
+
6 //
+
7 
+
8 #import <Foundation/Foundation.h>
+
9 
+
10 #if __MAC_OS_X_VERSION_MAX_ALLOWED < 101000
+
11 typedef struct {
+
12  NSInteger majorVersion;
+
13  NSInteger minorVersion;
+
14  NSInteger patchVersion;
+ +
16 #endif
+
17 
+
18 @interface SUOperatingSystem : NSObject
+
19 
+
20 + (NSOperatingSystemVersion)operatingSystemVersion;
+
21 + (BOOL)isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version;
+
22 + (NSString *)systemVersionString;
+
23 
+
24 @end
+
Definition: SUOperatingSystem.h:19
+
Definition: SUOperatingSystem.h:11
+
+ + + + diff --git a/documentation/api-reference/_s_u_phased_update_group_info_8h_source.html b/documentation/api-reference/_s_u_phased_update_group_info_8h_source.html new file mode 100644 index 0000000..15ddc0b --- /dev/null +++ b/documentation/api-reference/_s_u_phased_update_group_info_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SUPhasedUpdateGroupInfo.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUPhasedUpdateGroupInfo.h
+
+
+
1 //
+
2 // SUPhasedUpdateGroupInfo.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 01/24/21.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUHost;
+
14 
+
15 @interface SUPhasedUpdateGroupInfo : NSObject
+
16 
+
17 + (NSUInteger)updateGroupForHost:(SUHost*)host;
+
18 + (NSNumber*)setNewUpdateGroupIdentifierForHost:(SUHost*)host;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
Definition: SUPhasedUpdateGroupInfo.h:16
+
+ + + + diff --git a/documentation/api-reference/_s_u_signatures_8h_source.html b/documentation/api-reference/_s_u_signatures_8h_source.html new file mode 100644 index 0000000..f9c6533 --- /dev/null +++ b/documentation/api-reference/_s_u_signatures_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +Sparkle: Sparkle/SUSignatures.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUSignatures.h
+
+
+
1 //
+
2 // SUSignatures.h
+
3 // Sparkle
+
4 //
+
5 // Created by Kornel on 15/09/2018.
+
6 // Copyright © 2018 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 #if __MAC_OS_X_VERSION_MAX_ALLOWED < 1090
+ +
13 - (id)initWithBase64Encoding:(NSString *)base64String;
+
14 @end
+
15 #endif
+
16 
+
17 NS_ASSUME_NONNULL_BEGIN
+
18 
+
19 typedef NS_ENUM(uint8_t, SUSigningInputStatus) {
+
21  SUSigningInputStatusAbsent = 0,
+
22 
+
24  SUSigningInputStatusInvalid,
+
25 
+
27  SUSigningInputStatusPresent,
+
28  SUSigningInputStatusLastValidCase = SUSigningInputStatusPresent
+
29 };
+
30 
+
31 @interface SUSignatures : NSObject <NSSecureCoding> {
+
32  unsigned char ed25519_signature[64];
+
33 }
+
34 @property (strong, readonly, nullable) NSData *dsaSignature;
+
35 @property (readonly) SUSigningInputStatus dsaSignatureStatus;
+
36 
+
37 @property (readonly, nullable, nonatomic) const unsigned char *ed25519Signature;
+
38 @property (readonly) SUSigningInputStatus ed25519SignatureStatus;
+
39 
+
40 - (instancetype)initWithDsa:(NSString * _Nullable)dsa ed:(NSString * _Nullable)ed;
+
41 @end
+
42 
+
43 
+
44 @interface SUPublicKeys : NSObject {
+
45  unsigned char ed25519_public_key[32];
+
46 }
+
47 @property (strong, readonly, nullable) NSString *dsaPubKey;
+
48 @property (readonly) SUSigningInputStatus dsaPubKeyStatus;
+
49 
+
50 @property (readonly, nullable, nonatomic) const unsigned char *ed25519PubKey;
+
51 @property (readonly) SUSigningInputStatus ed25519PubKeyStatus;
+
52 
+
54 @property (readonly) BOOL hasAnyKeys;
+
55 
+
56 - (instancetype)initWithDsa:(NSString * _Nullable)dsa ed:(NSString * _Nullable)ed;
+
57 
+
58 @end
+
59 
+
60 NS_ASSUME_NONNULL_END
+
Definition: SUSignatures.h:12
+
Definition: SUSignatures.h:44
+
Definition: SUSignatures.h:31
+
+ + + + diff --git a/documentation/api-reference/_s_u_standard_version_comparator_8h_source.html b/documentation/api-reference/_s_u_standard_version_comparator_8h_source.html new file mode 100644 index 0000000..8a78815 --- /dev/null +++ b/documentation/api-reference/_s_u_standard_version_comparator_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: Sparkle/SUStandardVersionComparator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUStandardVersionComparator.h
+
+
+
1 //
+
2 // SUStandardVersionComparator.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 12/21/07.
+
6 // Copyright 2007 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUSTANDARDVERSIONCOMPARATOR_H
+
10 #define SUSTANDARDVERSIONCOMPARATOR_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #ifdef BUILDING_SPARKLE_TOOL
+
22 // Ignore incorrect warning
+
23 #pragma clang diagnostic push
+
24 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
25 #import "SUExport.h"
+
26 #import "SUVersionComparisonProtocol.h"
+
27 #pragma clang diagnostic pop
+
28 #else
+
29 #import <Sparkle/SUExport.h>
+
30 #import <Sparkle/SUVersionComparisonProtocol.h>
+
31 #endif
+
32 
+
33 NS_ASSUME_NONNULL_BEGIN
+
34 
+
42 SU_EXPORT @interface SUStandardVersionComparator : NSObject <SUVersionComparison>
+
43 
+
47 - (instancetype)init;
+
48 
+ +
55 
+
61 - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
+
62 @end
+
63 
+
64 NS_ASSUME_NONNULL_END
+
65 #endif
+
Sparkle's default version comparator.
Definition: SUStandardVersionComparator.h:42
+
SUStandardVersionComparator * defaultComparator()
Returns a singleton instance of the comparator.
Definition: SUStandardVersionComparator.m:22
+
instancetype init()
Initializes a new instance of the standard version comparator.
Definition: SUStandardVersionComparator.m:17
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_u_status_controller_8h_source.html b/documentation/api-reference/_s_u_status_controller_8h_source.html new file mode 100644 index 0000000..01f96e8 --- /dev/null +++ b/documentation/api-reference/_s_u_status_controller_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: Sparkle/SUStatusController.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUStatusController.h
+
+
+
1 //
+
2 // SUStatusController.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/14/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS || !BUILDING_SPARKLE
+
10 
+
11 #ifndef SUSTATUSCONTROLLER_H
+
12 #define SUSTATUSCONTROLLER_H
+
13 
+
14 #import <Cocoa/Cocoa.h>
+
15 
+
16 @class SUHost;
+
17 @interface SUStatusController : NSWindowController
+
18 @property (weak) IBOutlet NSButton *actionButton;
+
19 @property (weak) IBOutlet NSProgressIndicator *progressBar;
+
20 @property (weak) IBOutlet NSTextField *statusTextField;
+
21 
+
22 @property (copy) NSString *statusText;
+
23 @property double progressValue;
+
24 @property (nonatomic) double maxProgressValue;
+
25 @property (getter=isButtonEnabled) BOOL buttonEnabled;
+
26 
+
27 - (instancetype)initWithHost:(SUHost *)host;
+
28 
+
29 // Pass 0 for the max progress value to get an indeterminate progress bar.
+
30 // Pass nil for the status text to not show it.
+
31 - (void)beginActionWithTitle:(NSString *)title maxProgressValue:(double)maxProgressValue statusText:(NSString *)statusText;
+
32 
+
33 // If isDefault is YES, the button's key equivalent will be \r.
+
34 - (void)setButtonTitle:(NSString *)buttonTitle target:(id)target action:(SEL)action isDefault:(BOOL)isDefault;
+
35 
+
36 @end
+
37 
+
38 #endif
+
39 
+
40 #endif
+
Definition: SUHost.h:15
+
Definition: SUStatusController.h:18
+
+ + + + diff --git a/documentation/api-reference/_s_u_system_profiler_8h_source.html b/documentation/api-reference/_s_u_system_profiler_8h_source.html new file mode 100644 index 0000000..c3969b5 --- /dev/null +++ b/documentation/api-reference/_s_u_system_profiler_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SUSystemProfiler.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUSystemProfiler.h
+
+
+
1 //
+
2 // SUSystemProfiler.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 12/22/07.
+
6 // Copyright 2007 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUSYSTEMPROFILER_H
+
10 #define SUSYSTEMPROFILER_H
+
11 
+
12 #import <Foundation/Foundation.h>
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 @class SUHost;
+
17 @interface SUSystemProfiler : NSObject
+
18 
+
19 + (NSArray<NSDictionary<NSString *, NSString *> *> *)systemProfileArrayForHost:(SUHost *)host;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
24 #endif
+
Definition: SUHost.h:15
+
Definition: SUSystemProfiler.h:18
+
+ + + + diff --git a/documentation/api-reference/_s_u_touch_bar_button_group_8h_source.html b/documentation/api-reference/_s_u_touch_bar_button_group_8h_source.html new file mode 100644 index 0000000..9ef0b84 --- /dev/null +++ b/documentation/api-reference/_s_u_touch_bar_button_group_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SUTouchBarButtonGroup.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUTouchBarButtonGroup.h
+
+
+
1 //
+
2 // SUTouchBarButtonGroup.h
+
3 // Sparkle
+
4 //
+
5 // Created by Yuxin Wang on 05/01/2017.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS || !BUILDING_SPARKLE
+
10 
+
11 #import <Cocoa/Cocoa.h>
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 @interface SUTouchBarButtonGroup : NSViewController
+
16 
+
17 @property (nonatomic, readonly, copy) NSArray<NSButton *> *buttons;
+
18 
+
19 - (instancetype)initByReferencingButtons:(NSArray<NSButton *> *)buttons;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
24 
+
25 #endif
+
Definition: SUTouchBarButtonGroup.h:16
+
+ + + + diff --git a/documentation/api-reference/_s_u_touch_bar_forward_declarations_8h_source.html b/documentation/api-reference/_s_u_touch_bar_forward_declarations_8h_source.html new file mode 100644 index 0000000..66c698b --- /dev/null +++ b/documentation/api-reference/_s_u_touch_bar_forward_declarations_8h_source.html @@ -0,0 +1,176 @@ + + + + + + + +Sparkle: Sparkle/SUTouchBarForwardDeclarations.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUTouchBarForwardDeclarations.h
+
+
+
1 //
+
2 // SUTouchBarForwardDeclarations.h
+
3 // Sparkle
+
4 //
+
5 // Created by Yuxin Wang on 18/01/2017.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 // Once Sparkle no longer supports OSX 10.12.0, this file can be deleted.
+
12 
+
13 #import <Foundation/Foundation.h>
+
14 
+
15 #if __MAC_OS_X_VERSION_MAX_ALLOWED < 101201
+
16 
+
17 NS_ASSUME_NONNULL_BEGIN
+
18 
+
19 @class NSTouchBar;
+
20 @class NSTouchBarItem;
+
21 @class NSCustomTouchBarItem;
+
22 
+
23 typedef NSString * NSTouchBarItemIdentifier;
+
24 typedef NSString * NSTouchBarCustomizationIdentifier;
+
25 
+
26 @protocol NSTouchBarDelegate;
+
27 
+
28 NS_CLASS_AVAILABLE_MAC(10_12_2)
+
29 @interface NSTouchBar : NSObject <NSCoding>
+
30 
+
31 - (instancetype)init NS_DESIGNATED_INITIALIZER;
+
32 - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
+
33 
+
34 @property (copy, nullable) NSTouchBarCustomizationIdentifier customizationIdentifier;
+
35 @property (copy) NSArray<NSTouchBarItemIdentifier> *customizationAllowedItemIdentifiers;
+
36 @property (copy) NSArray<NSTouchBarItemIdentifier> *customizationRequiredItemIdentifiers;
+
37 @property (copy) NSArray<NSTouchBarItemIdentifier> *defaultItemIdentifiers;
+
38 @property (copy, readonly) NSArray<NSTouchBarItemIdentifier> *itemIdentifiers;
+
39 @property (copy, nullable) NSTouchBarItemIdentifier principalItemIdentifier;
+
40 @property (copy, nullable) NSTouchBarItemIdentifier escapeKeyReplacementItemIdentifier;
+
41 @property (copy) NSSet<NSTouchBarItem *> *templateItems;
+
42 @property (nullable, weak) id <NSTouchBarDelegate> delegate;
+
43 - (nullable __kindof NSTouchBarItem *)itemForIdentifier:(NSTouchBarItemIdentifier)identifier;
+
44 @property (readonly, getter=isVisible) BOOL visible;
+
45 
+
46 @end
+
47 
+
48 @protocol NSTouchBarDelegate<NSObject>
+
49 @optional
+
50 - (nullable NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar
+
51  makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier;
+
52 @end
+
53 
+
54 typedef float NSTouchBarItemPriority;
+
55 
+
56 NS_CLASS_AVAILABLE_MAC(10_12_2)
+
57 @interface NSTouchBarItem : NSObject <NSCoding>
+
58 
+
59 - (instancetype)initWithIdentifier:(NSTouchBarItemIdentifier)identifier NS_DESIGNATED_INITIALIZER;
+
60 - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
+
61 - (instancetype)init NS_UNAVAILABLE;
+
62 
+
63 @property (readonly, copy) NSTouchBarItemIdentifier identifier;
+
64 @property NSTouchBarItemPriority visibilityPriority;
+
65 @property (readonly, nullable) NSView *view;
+
66 @property (readonly, nullable) NSViewController *viewController;
+
67 @property (readonly, copy) NSString *customizationLabel;
+
68 @property (readonly, getter=isVisible) BOOL visible;
+
69 
+
70 @end
+
71 
+
72 NS_CLASS_AVAILABLE_MAC(10_12_2)
+
73 @interface NSCustomTouchBarItem : NSTouchBarItem
+
74 
+
75 @property (readwrite, strong) __kindof NSView *view;
+
76 @property (readwrite, strong, nullable) __kindof NSViewController *viewController;
+
77 @property (readwrite, copy, null_resettable) NSString *customizationLabel;
+
78 
+
79 @end
+
80 
+
81 NS_ASSUME_NONNULL_END
+
82 
+
83 #else
+
84 
+
85 // When compiling against the 10.12.1 SDK or later, just provide forward
+
86 // declarations to suppress the partial availability warnings.
+
87 
+
88 @class NSTouchBar;
+
89 @protocol NSTouchBarDelegate;
+
90 @class NSTouchBarItem;
+
91 @class NSCustomTouchBarItem;
+
92 
+
93 #endif
+
94 
+
95 #endif
+
+ + + + diff --git a/documentation/api-reference/_s_u_update_alert_8h_source.html b/documentation/api-reference/_s_u_update_alert_8h_source.html new file mode 100644 index 0000000..2349b22 --- /dev/null +++ b/documentation/api-reference/_s_u_update_alert_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +Sparkle: Sparkle/SUUpdateAlert.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdateAlert.h
+
+
+
1 //
+
2 // SUUpdateAlert.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/12/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #ifndef SUUPDATEALERT_H
+
12 #define SUUPDATEALERT_H
+
13 
+
14 #import <Cocoa/Cocoa.h>
+
15 #import "SUVersionDisplayProtocol.h"
+
16 #import "SPUUserUpdateState.h"
+
17 
+
18 @protocol SUUpdateAlertDelegate;
+
19 
+ +
21 @interface SUUpdateAlert : NSWindowController
+
22 
+
23 @property (nonatomic, weak, readonly) id <SUVersionDisplay> versionDisplayer;
+
24 
+
25 - (instancetype)initWithAppcastItem:(SUAppcastItem *)item state:(SPUUserUpdateState *)state host:(SUHost *)aHost versionDisplayer:(id <SUVersionDisplay>)aVersionDisplayer completionBlock:(void (^)(SPUUserUpdateChoice))block;
+
26 
+
27 - (void)showUpdateReleaseNotesWithDownloadData:(SPUDownloadData *)downloadData;
+
28 - (void)showReleaseNotesFailedToDownload;
+
29 
+
30 - (IBAction)installUpdate:sender;
+
31 - (IBAction)skipThisVersion:sender;
+
32 - (IBAction)remindMeLater:sender;
+
33 
+
34 - (void)setInstallButtonFocus:(BOOL)focus;
+
35 
+
36 @end
+
37 
+
38 #endif
+
39 
+
40 #endif
+
A class for containing downloaded data along with some information about it.
Definition: SPUDownloadData.h:33
+
Definition: SPUUserUpdateState.h:38
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Applies special display formatting to version numbers.
Definition: SUVersionDisplayProtocol.h:22
+
+ + + + diff --git a/documentation/api-reference/_s_u_update_permission_prompt_8h_source.html b/documentation/api-reference/_s_u_update_permission_prompt_8h_source.html new file mode 100644 index 0000000..4e530a0 --- /dev/null +++ b/documentation/api-reference/_s_u_update_permission_prompt_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SUUpdatePermissionPrompt.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdatePermissionPrompt.h
+
+
+
1 //
+
2 // SUUpdatePermissionPrompt.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 1/24/08.
+
6 // Copyright 2008 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #ifndef SUUPDATEPERMISSIONPROMPT_H
+
12 #define SUUPDATEPERMISSIONPROMPT_H
+
13 
+
14 #import <Cocoa/Cocoa.h>
+
15 
+ +
17 
+
18 @interface SUUpdatePermissionPrompt : NSWindowController
+
19 
+
20 - (instancetype)initPromptWithHost:(SUHost *)theHost request:(SPUUpdatePermissionRequest *)request reply:(void (^)(SUUpdatePermissionResponse *))reply;
+
21 
+
22 @end
+
23 
+
24 #endif
+
25 
+
26 #endif
+
This class represents information needed to make a permission request for checking updates.
Definition: SPUUpdatePermissionRequest.h:24
+
Definition: SUHost.h:15
+
This class represents a response for permission to check updates.
Definition: SUUpdatePermissionResponse.h:22
+
+ + + + diff --git a/documentation/api-reference/_s_u_update_permission_response_8h_source.html b/documentation/api-reference/_s_u_update_permission_response_8h_source.html new file mode 100644 index 0000000..c836c4b --- /dev/null +++ b/documentation/api-reference/_s_u_update_permission_response_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +Sparkle: Sparkle/SUUpdatePermissionResponse.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdatePermissionResponse.h
+
+
+
1 //
+
2 // SUUpdatePermissionResponse.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/8/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
22 SU_EXPORT @interface SUUpdatePermissionResponse : NSObject<NSSecureCoding>
+
23 
+
30 - (instancetype)initWithAutomaticUpdateChecks:(BOOL)automaticUpdateChecks sendSystemProfile:(BOOL)sendSystemProfile;
+
31 
+
32 /*
+
33  Use -initWithAutomaticUpdateChecks:sendSystemProfile: instead.
+
34  */
+
35 - (instancetype)init NS_UNAVAILABLE;
+
36 
+
40 @property (nonatomic, readonly) BOOL automaticUpdateChecks;
+
41 
+
45 @property (nonatomic, readonly) BOOL sendSystemProfile;
+
46 
+
47 @end
+
This class represents a response for permission to check updates.
Definition: SUUpdatePermissionResponse.h:22
+
BOOL automaticUpdateChecks
A read-only property indicating whether automatic update checks are allowed or not.
Definition: SUUpdatePermissionResponse.h:40
+
BOOL sendSystemProfile
A read-only property indicating if system profile should be sent or not.
Definition: SUUpdatePermissionResponse.h:45
+
+ + + + diff --git a/documentation/api-reference/_s_u_update_validator_8h_source.html b/documentation/api-reference/_s_u_update_validator_8h_source.html new file mode 100644 index 0000000..d7c66b6 --- /dev/null +++ b/documentation/api-reference/_s_u_update_validator_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +Sparkle: Sparkle/SUUpdateValidator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdateValidator.h
+
+
+
1 //
+
2 // SUUpdateValidator.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/3/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 @class SUHost;
+
12 @class SUSignatures;
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 @interface SUUpdateValidator : NSObject
+
17 
+
18 - (instancetype)initWithDownloadPath:(NSString *)downloadPath signatures:(SUSignatures *)signatures host:(SUHost *)host;
+
19 
+
20 // This is "pre" validation, before the archive has been extracted
+
21 - (BOOL)validateDownloadPathWithError:(NSError **)error;
+
22 
+
23 // This is "post" validation, after an archive has been extracted
+
24 - (BOOL)validateWithUpdateDirectory:(NSString *)updateDirectory error:(NSError **)error;
+
25 
+
26 @end
+
27 
+
28 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
Definition: SUSignatures.h:31
+
Definition: SUUpdateValidator.h:17
+
+ + + + diff --git a/documentation/api-reference/_s_u_updater_8h_source.html b/documentation/api-reference/_s_u_updater_8h_source.html new file mode 100644 index 0000000..ffb9439 --- /dev/null +++ b/documentation/api-reference/_s_u_updater_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +Sparkle: Sparkle/SUUpdater.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdater.h
+
+
+
1 //
+
2 // SUUpdater.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 1/4/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUUPDATER_H
+
10 #define SUUPDATER_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 #import <Sparkle/SUExport.h>
+
21 #import <Sparkle/SUVersionComparisonProtocol.h>
+
22 #import <Sparkle/SUVersionDisplayProtocol.h>
+
23 #import <Sparkle/SUUpdaterDelegate.h>
+
24 
+
25 @class SUAppcastItem, SUAppcast, NSMenuItem;
+
26 
+
27 @protocol SUUpdaterDelegate;
+
28 
+
37 __deprecated_msg("Deprecated in Sparkle 2. Use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.")
+
38 SU_EXPORT @interface SUUpdater : NSObject
+
39 
+
40 @property (unsafe_unretained, nonatomic) IBOutlet id<SUUpdaterDelegate> delegate;
+
41 
+
47 + (SUUpdater *)sharedUpdater;
+
48 
+
53 + (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
+
54 
+
60 - (instancetype)initForBundle:(NSBundle *)bundle;
+
61 
+
72 - (IBAction)checkForUpdates:(id)sender;
+
73 
+
77 - (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
+
78 
+
92 - (void)checkForUpdatesInBackground;
+
93 
+
101 @property (nonatomic) BOOL automaticallyChecksForUpdates;
+
102 
+
111 @property (nonatomic) BOOL automaticallyDownloadsUpdates;
+
112 
+
120 @property (nonatomic) NSTimeInterval updateCheckInterval;
+
121 
+
133 - (void)checkForUpdateInformation;
+
134 
+
144 @property (nonatomic, copy) NSURL *feedURL;
+
145 
+
149 @property (readonly, nonatomic) NSBundle *hostBundle;
+
150 
+
154 @property (nonatomic, readonly) NSBundle *sparkleBundle;
+
155 
+
161 @property (nonatomic, copy) NSString *userAgentString;
+
162 
+
168 @property (copy) NSDictionary<NSString *, NSString *> *httpHeaders;
+
169 
+
175 @property (nonatomic) BOOL sendsSystemProfile;
+
176 
+
180 @property (nonatomic, copy) NSString *decryptionPassword;
+
181 
+
187 @property (nonatomic, readonly, copy) NSDate *lastUpdateCheckDate;
+
188 
+
196 - (void)resetUpdateCycle;
+
197 
+
204 @property (nonatomic, readonly) BOOL updateInProgress;
+
205 
+
206 @end
+
207 
+
208 #endif
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_u_updater_delegate_8h_source.html b/documentation/api-reference/_s_u_updater_delegate_8h_source.html new file mode 100644 index 0000000..ca569da --- /dev/null +++ b/documentation/api-reference/_s_u_updater_delegate_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +Sparkle: Sparkle/SUUpdaterDelegate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdaterDelegate.h
+
+
+
1 //
+
2 // SUUpdaterDelegate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/12/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+ +
20 @class SUUpdater, SUAppcast, SUAppcastItem;
+
21 
+
22 NS_ASSUME_NONNULL_BEGIN
+
23 
+
24 // -----------------------------------------------------------------------------
+
25 // SUUpdater Notifications for events that might be interesting to more than just the delegate
+
26 // The updater will be the notification object
+
27 // -----------------------------------------------------------------------------
+
28 SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;
+
29 SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;
+
30 SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;
+
31 SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;
+
32 #define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;
+
33 #define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;
+
34 
+
35 // Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo
+
36 SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;
+
37 // Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo
+
38 SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;
+
39 
+
40 // -----------------------------------------------------------------------------
+
41 // SUUpdater Delegate:
+
42 // -----------------------------------------------------------------------------
+
43 
+
47 __deprecated_msg("Deprecated in Sparkle 2. See SPUUpdaterDelegate instead")
+
48 @protocol SUUpdaterDelegate <NSObject>
+
49 @optional
+
50 
+
58 - (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater;
+
59 
+
70 - (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+
71 
+
82 - (nullable NSString *)feedURLStringForUpdater:(SUUpdater *)updater;
+
83 
+
91 - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater;
+
92 
+
101 - (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
+
102 
+
113 - (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater;
+
114 
+
121 - (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;
+
122 
+
128 - (void)updaterDidNotFindUpdate:(SUUpdater *)updater;
+
129 
+
137 - (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request;
+
138 
+
145 - (void)updater:(SUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item;
+
146 
+
154 - (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error;
+
155 
+
161 - (void)userDidCancelDownload:(SUUpdater *)updater;
+
162 
+
169 - (void)updater:(SUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item;
+
170 
+
177 - (void)updater:(SUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item;
+
178 
+
185 - (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;
+
186 
+
193 - (void)updater:(SUUpdater *)updater userDidSkipThisVersion:(SUAppcastItem *)item;
+
194 
+
209 - (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation;
+
210 
+
224 - (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item;
+
225 
+
234 - (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;
+
235 
+
241 - (void)updaterWillRelaunchApplication:(SUUpdater *)updater;
+
242 
+
248 - (void)updaterDidRelaunchApplication:(SUUpdater *)updater;
+
249 
+
263 - (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater;
+
264 
+
272 - (nullable id <SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater;
+
273 
+
283 - (nullable NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;
+
284 
+
291 - (void)updaterWillShowModalAlert:(SUUpdater *)updater;
+
292 
+
299 - (void)updaterDidShowModalAlert:(SUUpdater *)updater;
+
300 
+
311 - (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation;
+
312 
+
322 - (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))installationBlock;
+
323 
+
332 - (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item __deprecated;
+
333 
+
340 - (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error;
+
341 
+
342 @end
+
343 
+
344 NS_ASSUME_NONNULL_END
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
Applies special display formatting to version numbers.
Definition: SUVersionDisplayProtocol.h:22
+
+ + + + diff --git a/documentation/api-reference/_s_u_version_comparison_protocol_8h_source.html b/documentation/api-reference/_s_u_version_comparison_protocol_8h_source.html new file mode 100644 index 0000000..bb04655 --- /dev/null +++ b/documentation/api-reference/_s_u_version_comparison_protocol_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: Sparkle/SUVersionComparisonProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUVersionComparisonProtocol.h
+
+
+
1 //
+
2 // SUVersionComparisonProtocol.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 12/21/07.
+
6 // Copyright 2007 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUVERSIONCOMPARISONPROTOCOL_H
+
10 #define SUVERSIONCOMPARISONPROTOCOL_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #ifdef BUILDING_SPARKLE_TOOL
+
22 // Ignore incorrect warning
+
23 #pragma clang diagnostic push
+
24 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
25 #import "SUExport.h"
+
26 #pragma clang diagnostic pop
+
27 #else
+
28 #import <Sparkle/SUExport.h>
+
29 #endif
+
30 
+
31 NS_ASSUME_NONNULL_BEGIN
+
32 
+ +
37 
+
44 - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!
+
45 
+
46 @end
+
47 
+
48 NS_ASSUME_NONNULL_END
+
49 #endif
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/_s_u_version_display_protocol_8h_source.html b/documentation/api-reference/_s_u_version_display_protocol_8h_source.html new file mode 100644 index 0000000..d363b15 --- /dev/null +++ b/documentation/api-reference/_s_u_version_display_protocol_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SUVersionDisplayProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUVersionDisplayProtocol.h
+
+
+
1 //
+
2 // SUVersionDisplayProtocol.h
+
3 // EyeTV
+
4 //
+
5 // Created by Uli Kusterer on 08.12.09.
+
6 // Copyright 2009 Elgato Systems GmbH. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
22 SU_EXPORT @protocol SUVersionDisplay
+
23 
+
30 - (void)formatVersion:(NSString *_Nonnull*_Nonnull)inOutVersionA andVersion:(NSString *_Nonnull*_Nonnull)inOutVersionB;
+
31 
+
32 @end
+
Applies special display formatting to version numbers.
Definition: SUVersionDisplayProtocol.h:22
+
+ + + + diff --git a/documentation/api-reference/_s_u_w_k_web_view_8h_source.html b/documentation/api-reference/_s_u_w_k_web_view_8h_source.html new file mode 100644 index 0000000..29c0b2a --- /dev/null +++ b/documentation/api-reference/_s_u_w_k_web_view_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SUWKWebView.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUWKWebView.h
+
+
+
1 //
+
2 // SUWKWebView.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/30/20.
+
6 // Copyright © 2020 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 #import "SUWebView.h"
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 @interface SUWKWebView : NSObject <SUWebView>
+
17 
+
18 - (instancetype)initWithColorStyleSheetLocation:(NSURL *)colorStyleSheetLocation fontFamily:(NSString *)fontFamily fontPointSize:(int)fontPointSize javaScriptEnabled:(BOOL)javaScriptEnabled;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
23 
+
24 #endif
+
+ + + + diff --git a/documentation/api-reference/_s_u_web_view_8h_source.html b/documentation/api-reference/_s_u_web_view_8h_source.html new file mode 100644 index 0000000..111a574 --- /dev/null +++ b/documentation/api-reference/_s_u_web_view_8h_source.html @@ -0,0 +1,114 @@ + + + + + + + +Sparkle: Sparkle/SUWebView.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUWebView.h
+
+
+
1 //
+
2 // SUWebView.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/30/20.
+
6 // Copyright © 2020 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 
+
13 @class NSView;
+
14 
+
15 NS_ASSUME_NONNULL_BEGIN
+
16 
+
17 @protocol SUWebView <NSObject>
+
18 
+
19 @property (nonatomic, readonly) NSView *view;
+
20 
+
21 - (void)loadHTMLString:(NSString *)htmlString baseURL:(NSURL * _Nullable)baseURL completionHandler:(void (^)(NSError * _Nullable))completionHandler;
+
22 
+
23 - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL completionHandler:(void (^)(NSError * _Nullable))completionHandler;
+
24 
+
25 - (void)stopLoading;
+
26 
+
27 - (void)setDrawsBackground:(BOOL)drawsBackground;
+
28 
+
29 @end
+
30 
+
31 NS_ASSUME_NONNULL_END
+
32 
+
33 #endif
+
+ + + + diff --git a/documentation/api-reference/_s_u_web_view_common_8h_source.html b/documentation/api-reference/_s_u_web_view_common_8h_source.html new file mode 100644 index 0000000..1f888dd --- /dev/null +++ b/documentation/api-reference/_s_u_web_view_common_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: Sparkle/SUWebViewCommon.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUWebViewCommon.h
+
+
+
1 //
+
2 // SUWebViewCommon.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/31/20.
+
6 // Copyright © 2020 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 BOOL SUWebViewIsSafeURL(NSURL *url, BOOL *isAboutBlankURL);
+
16 
+
17 NS_ASSUME_NONNULL_END
+
18 
+
19 #endif
+
+ + + + diff --git a/documentation/api-reference/_show_installer_progress_8h_source.html b/documentation/api-reference/_show_installer_progress_8h_source.html new file mode 100644 index 0000000..fbf3846 --- /dev/null +++ b/documentation/api-reference/_show_installer_progress_8h_source.html @@ -0,0 +1,101 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/ShowInstallerProgress.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ShowInstallerProgress.h
+
+
+
1 //
+
2 // ShowInstallerProgress.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/10/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "InstallerProgressDelegate.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+ +
15 
+
16 @end
+
17 
+
18 NS_ASSUME_NONNULL_END
+
Definition: ShowInstallerProgress.h:14
+
Definition: InstallerProgressDelegate.h:15
+
+ + + + diff --git a/documentation/api-reference/_sparkle_8h_source.html b/documentation/api-reference/_sparkle_8h_source.html new file mode 100644 index 0000000..2f8df6f --- /dev/null +++ b/documentation/api-reference/_sparkle_8h_source.html @@ -0,0 +1,120 @@ + + + + + + + +Sparkle: Sparkle/Sparkle.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Sparkle.h
+
+
+
1 //
+
2 // Sparkle.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07)
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPARKLE_H
+
10 #define SPARKLE_H
+
11 
+
12 // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless
+
13 // there are name-space collisions) so we can list all of them to start with:
+
14 
+
15 #import <Sparkle/SUExport.h>
+
16 #import <Sparkle/SUAppcast.h>
+
17 #import <Sparkle/SUAppcastItem.h>
+
18 #import <Sparkle/SUStandardVersionComparator.h>
+
19 #import <Sparkle/SPUUpdater.h>
+
20 #import <Sparkle/SPUUpdaterDelegate.h>
+
21 #import <Sparkle/SPUUpdaterSettings.h>
+
22 #import <Sparkle/SUVersionComparisonProtocol.h>
+
23 #import <Sparkle/SUVersionDisplayProtocol.h>
+
24 #import <Sparkle/SUErrors.h>
+
25 #import <Sparkle/SPUUpdatePermissionRequest.h>
+
26 #import <Sparkle/SUUpdatePermissionResponse.h>
+
27 #import <Sparkle/SPUUserDriver.h>
+
28 #import <Sparkle/SPUDownloadData.h>
+
29 
+
30 // UI bits
+
31 #import <Sparkle/SPUStandardUpdaterController.h>
+
32 #import <Sparkle/SPUStandardUserDriver.h>
+
33 #import <Sparkle/SPUStandardUserDriverDelegate.h>
+
34 
+
35 // Deprecated bits
+
36 #import <Sparkle/SUUpdater.h>
+
37 #import <Sparkle/SUUpdaterDelegate.h>
+
38 
+
39 #endif
+
+ + + + diff --git a/documentation/api-reference/_termination_listener_8h_source.html b/documentation/api-reference/_termination_listener_8h_source.html new file mode 100644 index 0000000..f21a972 --- /dev/null +++ b/documentation/api-reference/_termination_listener_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: Sparkle/Autoupdate/TerminationListener.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TerminationListener.h
+
+
+
1 //
+
2 // TerminationListener.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/7/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @interface TerminationListener : NSObject
+
14 
+
15 - (instancetype)initWithProcessIdentifier:(NSNumber * _Nullable)processIdentifier;
+
16 
+
17 @property (nonatomic, readonly) BOOL terminated;
+
18 
+
19 // If the process identifier provided was nil, then the completion block will invoke immediately with a YES success
+
20 - (void)startListeningWithCompletion:(void (^)(BOOL success))completionBlock;
+
21 
+
22 @end
+
23 
+
24 NS_ASSUME_NONNULL_END
+
Definition: TerminationListener.h:14
+
+ + + + diff --git a/documentation/api-reference/annotated.html b/documentation/api-reference/annotated.html new file mode 100644 index 0000000..8444960 --- /dev/null +++ b/documentation/api-reference/annotated.html @@ -0,0 +1,180 @@ + + + + + + + +Sparkle: Class List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CInstallerProgressAppController
 CInstallerProgressAppController()
 C<InstallerProgressDelegate>
 CNSButton(SierraSDK)
 CNSData(SUSignatureVerifier)
 CNSObject(PrivateDelegateMethods)
 CNSOperatingSystemVersion
 CNSProcessInfo()
 CShowInstallerProgress
 CShowInstallerProgress()
 CSPUAppcastItemState
 CSPUAppcastItemState()
 CSPUAppcastItemStateResolverPrivate exposed class used to resolve Appcast Item properties that rely on external factors such as a host
 CSPUAutomaticUpdateDriver
 CSPUAutomaticUpdateDriver()
 CSPUBasicUpdateDriver
 CSPUBasicUpdateDriver()
 C<SPUBasicUpdateDriverDelegate>
 CSPUCoreBasedUpdateDriver
 CSPUCoreBasedUpdateDriver()
 C<SPUCoreBasedUpdateDriverDelegate>
 CSPUDownloadDataA class for containing downloaded data along with some information about it
 CSPUDownloadDriver
 CSPUDownloadDriver()
 C<SPUDownloadDriverDelegate>
 CSPUDownloadedUpdate
 CSPUInformationalUpdate
 C<SPUInstallerAgentProtocol>
 CSPUInstallerDriver
 CSPUInstallerDriver()
 C<SPUInstallerDriverDelegate>
 CSPULocalCacheDirectory
 CSPUProbeInstallStatus
 CSPUProbingUpdateDriver
 CSPUProbingUpdateDriver()
 CSPUReleaseNotesDriver
 C<SPUResumableUpdate>
 CSPUScheduledUpdateDriver
 CSPUScheduledUpdateDriver()
 CSPUSkippedUpdate
 CSPUStandardUpdaterControllerA controller class that instantiates a SPUUpdater and allows binding UI to it
 CSPUStandardUserDriverSparkle's standard built-in user driver for updater interactions
 C<SPUStandardUserDriverDelegate>A protocol for Sparkle's standard user driver's delegate
 CSPUUIBasedUpdateDriver
 CSPUUIBasedUpdateDriver()
 C<SPUUIBasedUpdateDriverDelegate>
 C<SPUUpdateDriver>
 CSPUUpdatePermissionRequestThis class represents information needed to make a permission request for checking updates
 CSPUUpdaterThe main API in Sparkle for controlling the update mechanism
 CSPUUpdater()
 CSPUUpdaterCycle
 CSPUUpdaterCycle()
 C<SPUUpdaterCycleDelegate>
 C<SPUUpdaterDelegate>Provides methods to control the behavior of an SPUUpdater object
 CSPUUpdaterSettingsThis class can be used for reading certain updater settings
 CSPUUpdaterSettings()
 CSPUUpdaterTimer
 CSPUUpdaterTimer()
 C<SPUUpdaterTimerDelegate>
 CSPUURLRequest
 CSPUURLRequest()
 C<SPUUserDriver>The API in Sparkle for controlling the user interaction
 CSPUUserInitiatedUpdateDriver
 CSPUUserInitiatedUpdateDriver()
 CSPUUserUpdateState
 CSPUUserUpdateState()
 CSPUUserUpdateState(Private)
 CSUAppcast
 CSUAppcast()
 CSUAppcast(Private)
 CSUAppcastDriver
 CSUAppcastDriver()
 C<SUAppcastDriverDelegate>
 CSUAppcastItem
 CSUAppcastItem()
 CSUAppcastItem(Private)
 CSUApplicationInfo
 CSUBundleIcon
 CSUFileManager
 CSUHost
 CSUHost()
 C<SUInstallerAgentInitiationProtocol>
 C<SUInstallerProtocol>
 CSUOperatingSystem
 CSUPhasedUpdateGroupInfo
 CSUPublicKeys
 CSUSignatures
 CSUStandardVersionComparatorSparkle's default version comparator
 CSUStatusController
 CSUStatusController()
 CSUSystemProfiler
 CSUTouchBarButtonGroup
 CSUUpdatePermissionResponseThis class represents a response for permission to check updates
 CSUUpdateValidator
 CSUUpdateValidator()
 C<SUVersionComparison>Provides version comparison facilities for Sparkle
 C<SUVersionDisplay>Applies special display formatting to version numbers
 CTerminationListener
 CTerminationListener()
+
+
+ + + + diff --git a/documentation/api-reference/badge.svg b/documentation/api-reference/badge.svg new file mode 100644 index 0000000..dbb00ab --- /dev/null +++ b/documentation/api-reference/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 58% + + + 58% + + + diff --git a/documentation/api-reference/bc_s.png b/documentation/api-reference/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/documentation/api-reference/bdwn.png b/documentation/api-reference/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
InstallerProgressAppController() Member List
+
+
+ +

This is the complete list of members for InstallerProgressAppController(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
application (defined in InstallerProgressAppController())InstallerProgressAppController()
applicationBundle (defined in InstallerProgressAppController())InstallerProgressAppController()
applicationInitiallyAlive (defined in InstallerProgressAppController())InstallerProgressAppController()
connected (defined in InstallerProgressAppController())InstallerProgressAppController()
connection (defined in InstallerProgressAppController())InstallerProgressAppController()
delegate (defined in InstallerProgressAppController())InstallerProgressAppController()
normalizedPath (defined in InstallerProgressAppController())InstallerProgressAppController()
oldHost (defined in InstallerProgressAppController())InstallerProgressAppController()
oldHostBundlePath (defined in InstallerProgressAppController())InstallerProgressAppController()
registerApplicationBundlePath:reply: (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
registerInstallationInfoData: (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
relaunchApplication (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
repliedToRegistration (defined in InstallerProgressAppController())InstallerProgressAppController()
sendTerminationSignal (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
shouldRelaunchHostBundle (defined in InstallerProgressAppController())InstallerProgressAppController()
showProgress (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
statusInfo (defined in InstallerProgressAppController())InstallerProgressAppController()
stopProgress (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
submittedLauncherJob (defined in InstallerProgressAppController())InstallerProgressAppController()
systemDomain (defined in InstallerProgressAppController())InstallerProgressAppController()
willTerminate (defined in InstallerProgressAppController())InstallerProgressAppController()
+ + + + diff --git a/documentation/api-reference/category_installer_progress_app_controller_07_08.html b/documentation/api-reference/category_installer_progress_app_controller_07_08.html new file mode 100644 index 0000000..2ba0ce6 --- /dev/null +++ b/documentation/api-reference/category_installer_progress_app_controller_07_08.html @@ -0,0 +1,163 @@ + + + + + + + +Sparkle: InstallerProgressAppController() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
InstallerProgressAppController() Category Reference
+
+
+
+Inheritance diagram for InstallerProgressAppController():
+
+
+ + +<SPUInstallerAgentProtocol> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+NSApplication * application
 
+id< InstallerProgressDelegatedelegate
 
+NSXPCConnection * connection
 
+BOOL connected
 
+BOOL repliedToRegistration
 
+SUHostoldHost
 
+BOOL shouldRelaunchHostBundle
 
+NSString * oldHostBundlePath
 
+BOOL systemDomain
 
+StatusInfo * statusInfo
 
+BOOL submittedLauncherJob
 
+BOOL willTerminate
 
+BOOL applicationInitiallyAlive
 
+NSBundle * applicationBundle
 
+NSString * normalizedPath
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUInstallerAgentProtocol>
+(void) - registerApplicationBundlePath:reply:
 
+(void) - registerInstallationInfoData:
 
+(void) - sendTerminationSignal
 
+(void) - showProgress
 
+(void) - stopProgress
 
+(void) - relaunchApplication
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/InstallerProgress/InstallerProgressAppController.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_installer_progress_app_controller_07_08.png b/documentation/api-reference/category_installer_progress_app_controller_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..6e60bc71b3de3ca733f9d4cc4118802ee29a7a7d GIT binary patch literal 1238 zcmeAS@N?(olHy`uVBq!ia0y~yVC)0312~w0q~*+{r9es|z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opH=uLkw<{0{Q_SHuMfMM|3stj_JeC=T~@7{yJ~j);ft;He{Fh{eJV`+?0c2d z+@$BXBv&3;_vM7lf$Fe%Pp)!(X^1Rf~0F$Sk+n7s}a>b6m9Rv)RA-e4|g{ z6xa82WqoIyT6Xu*3h8>W`;)w_Eq=@=d|Q68B$g3`&kfze7E}w@h zRxV#v6|%oKdE0JRm$->*-&h3A4hgmXTUEAXld{sMyuB^XpvMKF(jz9L*z)0ORsk?Eoet-Iuz45L92fP7?#B!p7QOyzW8=3$>^NhB z>uD~(!;e|A3uPGEp14~!NLunS0FxR6Fr_g76B@&eiH{i!lz|G}`j`*&$go2c?221| z{W8Y^R)gv6TnJHu+RzkOtP*hgk;gd4Eq=cgx(!yUeP0*7`h6*?wCy(k1I^xap4hej z^9^>ME0VGAbdoqHvAe2gvEf|N<3bxG=0@+n^Xb%Oy?w4*k9@dyM)u-9qpP(s%T$-& zEI&IbsjogxHh2F6{|6i!c5z(MKDy-QrJt(2k~4no+`9i?_}{L3Hbqr>sov(_(*ID4+IR_5+K-VM8cU0!(9e#w)gtF*&5+UT?uZ7DnMI(N49 zJLT)kwtZV_@A-bCvFH(-rS=!4U%%i!*TeiERJQQzGKqCv;s-3hEW7$8o$WwGA9F(d z`zT*6RR-g|s}EhNFUA%x>W2lLIO261&cBv-v7619ERu5+SO_tAy85}Sb4q9e09qeT AjsO4v literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_n_s_button_07_sierra_s_d_k_08-members.html b/documentation/api-reference/category_n_s_button_07_sierra_s_d_k_08-members.html new file mode 100644 index 0000000..5351e69 --- /dev/null +++ b/documentation/api-reference/category_n_s_button_07_sierra_s_d_k_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
NSButton(SierraSDK) Member List
+
+
+ +

This is the complete list of members for NSButton(SierraSDK), including all inherited members.

+ + +
buttonWithTitle:target:action: (defined in NSButton(SierraSDK))NSButton(SierraSDK)static
+ + + + diff --git a/documentation/api-reference/category_n_s_button_07_sierra_s_d_k_08.html b/documentation/api-reference/category_n_s_button_07_sierra_s_d_k_08.html new file mode 100644 index 0000000..9f75d2a --- /dev/null +++ b/documentation/api-reference/category_n_s_button_07_sierra_s_d_k_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: NSButton(SierraSDK) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
NSButton(SierraSDK) Category Reference
+
+
+ + + + +

+Class Methods

+(instancetype) + buttonWithTitle:target:action:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUTouchBarButtonGroup.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_n_s_data_07_s_u_signature_verifier_08-members.html b/documentation/api-reference/category_n_s_data_07_s_u_signature_verifier_08-members.html new file mode 100644 index 0000000..1894749 --- /dev/null +++ b/documentation/api-reference/category_n_s_data_07_s_u_signature_verifier_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
NSData(SUSignatureVerifier) Member List
+
+
+ +

This is the complete list of members for NSData(SUSignatureVerifier), including all inherited members.

+ + +
initWithBase64Encoding: (defined in NSData(SUSignatureVerifier))NSData(SUSignatureVerifier)
+ + + + diff --git a/documentation/api-reference/category_n_s_data_07_s_u_signature_verifier_08.html b/documentation/api-reference/category_n_s_data_07_s_u_signature_verifier_08.html new file mode 100644 index 0000000..e47ab47 --- /dev/null +++ b/documentation/api-reference/category_n_s_data_07_s_u_signature_verifier_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: NSData(SUSignatureVerifier) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
NSData(SUSignatureVerifier) Category Reference
+
+
+ + + + +

+Instance Methods

+(id) - initWithBase64Encoding:
 
+
The documentation for this category was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/category_n_s_object_07_private_delegate_methods_08-members.html b/documentation/api-reference/category_n_s_object_07_private_delegate_methods_08-members.html new file mode 100644 index 0000000..5babf20 --- /dev/null +++ b/documentation/api-reference/category_n_s_object_07_private_delegate_methods_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
NSObject(PrivateDelegateMethods) Member List
+
+
+ +

This is the complete list of members for NSObject(PrivateDelegateMethods), including all inherited members.

+ + +
_pathToRelaunchForUpdater: (defined in NSObject(PrivateDelegateMethods))NSObject(PrivateDelegateMethods)
+ + + + diff --git a/documentation/api-reference/category_n_s_object_07_private_delegate_methods_08.html b/documentation/api-reference/category_n_s_object_07_private_delegate_methods_08.html new file mode 100644 index 0000000..6abcd13 --- /dev/null +++ b/documentation/api-reference/category_n_s_object_07_private_delegate_methods_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: NSObject(PrivateDelegateMethods) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
NSObject(PrivateDelegateMethods) Category Reference
+
+
+ + + + +

+Instance Methods

+(nullable NSString *) - _pathToRelaunchForUpdater:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUInstallerDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_n_s_process_info_07_08-members.html b/documentation/api-reference/category_n_s_process_info_07_08-members.html new file mode 100644 index 0000000..c1e1f3a --- /dev/null +++ b/documentation/api-reference/category_n_s_process_info_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
NSProcessInfo() Member List
+
+
+ +

This is the complete list of members for NSProcessInfo(), including all inherited members.

+ + +
operatingSystemVersion (defined in NSProcessInfo())NSProcessInfo()
+ + + + diff --git a/documentation/api-reference/category_n_s_process_info_07_08.html b/documentation/api-reference/category_n_s_process_info_07_08.html new file mode 100644 index 0000000..ded3af7 --- /dev/null +++ b/documentation/api-reference/category_n_s_process_info_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: NSProcessInfo() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
NSProcessInfo() Category Reference
+
+
+ + + + +

+Instance Methods

+(NSOperatingSystemVersion- operatingSystemVersion
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUOperatingSystem.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_appcast_item_state_07_08.html b/documentation/api-reference/category_s_p_u_appcast_item_state_07_08.html new file mode 100644 index 0000000..f27c629 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_appcast_item_state_07_08.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: SPUAppcastItemState() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUAppcastItemState() Category Reference
+
+
+
+Inheritance diagram for SPUAppcastItemState():
+
+
+ +
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUAppcastItemState.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_appcast_item_state_07_08.png b/documentation/api-reference/category_s_p_u_appcast_item_state_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6ae896ccc069227ba27a28a5a69c1ee2d8e70f GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^JwP15!3-q-Jj#s#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;iA7AzVfB$x0 zjvEP9E7QW7%O)0ObFuaHdd3+VN4w5YS-X%|*>k2@k4oySgLC$-zaKtT{%w-#%e`*r zpWnAGUT&c75P2lhvugd3&v_!3&&Wh(z7E+wZH0E}^y=5IY))JGzqV3Y8O-*1R#4(8 zrmI%R(oRjOkb7G%xz{ICRhr-6U&EBCKgmpUDy+3OUYq8md}~Lm=PT1)J+kFl&sKl;$*)-w-m9v&@z(qM zYM#GNN3p5x>#4IgzWn~wzbx;dWgriPH3Pll!eGCE{eV^!=d+Iy9cijF)K6QPcprRo zn`J`wVTP1j1`IRJcpR4TGEd0F&8-(ab|yzOks&(+sz&Ne;Mu1|vdq`d=iXU<|0e^> zPt$hQ{)HUHx%Y1KPcm=i%>HJu&i;@}z}2Uj=U$xiI2SS7a`yU*mvn?<-EK`N_DWor z!)p+#`a!JTfbE~=x~I0+uJH*cUHHiJY1Ydp*I#_HIq<`9{z7Ym*i%_pO_XJ*}9))cYo z>iuOEW)II R&cGDJ;OXk;vd$@?2>`PICZYfU literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_s_p_u_automatic_update_driver_07_08-members.html b/documentation/api-reference/category_s_p_u_automatic_update_driver_07_08-members.html new file mode 100644 index 0000000..e7f60d1 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_automatic_update_driver_07_08-members.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUAutomaticUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUAutomaticUpdateDriver(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
basicDriverDidFinishLoadingAppcast (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
coreDriver (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
coreDriverDidStartExtractingUpdate (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverDidReceiveDataOfLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidExtractUpdateWithProgress: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidStartInstalling (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerIsSendingAppTerminationSignal (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
updateItem (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
updater (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
updaterDelegate (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
userDriver (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
willInstallSilently (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_automatic_update_driver_07_08.html b/documentation/api-reference/category_s_p_u_automatic_update_driver_07_08.html new file mode 100644 index 0000000..2faec71 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_automatic_update_driver_07_08.html @@ -0,0 +1,157 @@ + + + + + + + +Sparkle: SPUAutomaticUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUAutomaticUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUAutomaticUpdateDriver():
+
+
+ + +<SPUCoreBasedUpdateDriverDelegate> + +
+ + + + + + + + + + + + + + +

+Properties

+id updater
 
+id< SPUUserDriveruserDriver
 
+id updaterDelegate
 
+SPUCoreBasedUpdateDrivercoreDriver
 
+SUAppcastItemupdateItem
 
+BOOL willInstallSilently
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUCoreBasedUpdateDriverDelegate>
+(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:
 
+(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
 
+(void) - coreDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
+(void) - coreDriverDidStartExtractingUpdate
 
+(void) - installerDidStartInstalling
 
+(void) - installerDidExtractUpdateWithProgress:
 
+(void) - installerIsSendingAppTerminationSignal
 
+(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUAutomaticUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_automatic_update_driver_07_08.png b/documentation/api-reference/category_s_p_u_automatic_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..eacdfd1988340243c31e7e08d572e62527a5c48b GIT binary patch literal 1125 zcmeAS@N?(olHy`uVBq!ia0vp^?|`_2gBeI(pQ|1Yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0zj(ShhEy=VoqJd4kphn!f8nt`|E1S^ zY3^UUOWR8N(V2A33oXu0J5*Z)t_eDZmWo=gTeT__O!yw_J@)?p_e~P<+m1ckUTj}( zJGoH!reB14NT~GR>pMDiDo+~j`t6C&8}=XdeVsLbG3)mG9UVPi z*xm_yFSh*OSKTtV%>3Kk>eoCT&YIHOrl0b;DgFG({!o)Q1M^zyyCE3clJQ~3Sd!<%mlH=nv3vi@g^`=q1F zcOL%HVs4vlx+!Xd>YZ<2_$Ti=+&d@L=sjmpkL=@j#a`aLF}r_CmVfzrBJ1FFx9vx( zrS7KrZT((4rRt8A-PxOK3#6Z)HQ&4b)GLKuD?f8=PtG!W*PLEnAX!o!Q~iJT=G%96 zpRLY&<7#yMSW$-g{m|385xKm*vAs*bz0;l}R_v!$ocZ;Ml91rc73$@yI!^3=*~#p^ zBQ&h5!aF-|3i(&)?SA&UN599QvpEhFp(YlV|b%ySp*QJ{Gwie`X z(f+8{_Ij%1fps$C2UZb}6LvXqB+3dhgiVCT@732k`gd&;{dBzj<@#*}Iq%FSv3H;U zt>1m^+1op1hO7@<^dB$#y7m0EBbs^n?ecSfGsGa$JZjh + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUBasicUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUBasicUpdateDriver(), including all inherited members.

+ + + + + + + + + + + + +
aborted (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
appcastDriver (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
completionBlock (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
delegate (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
didFailToFetchAppcastWithError: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
didFindValidUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
didFinishLoadingAppcast: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
didNotFindUpdateWithLatestAppcastItem:hostToLatestAppcastItemComparisonResult:background: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
host (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
updater (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
updaterDelegate (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_basic_update_driver_07_08.html b/documentation/api-reference/category_s_p_u_basic_update_driver_07_08.html new file mode 100644 index 0000000..75ac33c --- /dev/null +++ b/documentation/api-reference/category_s_p_u_basic_update_driver_07_08.html @@ -0,0 +1,133 @@ + + + + + + + +Sparkle: SPUBasicUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUBasicUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUBasicUpdateDriver():
+
+
+ + +<SUAppcastDriverDelegate> + +
+ + + + + + + + + + + + + + + + +

+Properties

+id< SPUBasicUpdateDriverDelegatedelegate
 
+SUAppcastDriverappcastDriver
 
+SPUUpdateDriverCompletion completionBlock
 
+SUHosthost
 
+id updater
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+BOOL aborted
 
+ + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SUAppcastDriverDelegate>
+(void) - didFailToFetchAppcastWithError:
 
+(void) - didFinishLoadingAppcast:
 
+(void) - didFindValidUpdateWithAppcastItem:secondaryAppcastItem:
 
+(void) - didNotFindUpdateWithLatestAppcastItem:hostToLatestAppcastItemComparisonResult:background:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUBasicUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_basic_update_driver_07_08.png b/documentation/api-reference/category_s_p_u_basic_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e41dc43e915a7011d8b60f909426c60c48c018 GIT binary patch literal 1008 zcmeAS@N?(olHy`uVBq!ia0vp^>wvg}gBeJAsw;d4QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;k|JHS( zE_O%qR-etAX)Y`8*zr)p>DP1tCkc0!(5rz@cC1GzaX zJN;@TxBE0t+2UJby`y?tOzc;wyePd%A~P=>?Ond!uKIezdw26kVeadM?=B1ZQ&dv? zE^O{9qngln`vS^$PkqStI{(k=+G~3sugcnI_vWt6u2rk%Pky{=Rn*DC(9pFekJ|(e z88B_Qz?>k{+xokL=cu*VJ0EMI_X#`VBpKd3*}(wx1cSDvUc*!w@dI9c+zG13SvO32 z%oK65kZ}!)bopQ3%O<_bYJwAio>x)=>Jt>ymMu8^CwkUad3P6=xC=Sk_slu_TmPEb z^LM)+>*gIgv*Tgty;r(|6Zb{U{=H-BW#00``g@Y-+63+dXrt?tVNor||nht8!^k-^t9p?+)&{ zqM26|(<`3Cx&7?Fp6EGymGfq;Y0KWxH~Cde*xtLlY%YL<*k^64m<9%~>hsu53yz1n1?VZv2`JwfXSEo-^w2ayH``y;9*6(8zKQA#l zQaUe;O>kncsI;0=(o*?9^}=~GpDHQI)`phwSL-VUy-bY}oVb7b1NV&SKF?sBF z*@Rb_f!mhh*u{t){l^3LBtJa2MfoFN+v}-}2mJ7bEPB9SkLOVAQD!=z0gIYnJ6=oP z={lArlK)cjM7W$s+VjafMM{q~KC;p)>Dv8x?iL2wyyU#~t&v{-|?`@zm;B=Y-c59_y%iTVZ(XsjYRE{j + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUCoreBasedUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUCoreBasedUpdateDriver(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
basicDriver (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
basicDriverDidFinishLoadingAppcast (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
delegate (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
downloadDriver (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
downloadDriverDidDownloadData: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidDownloadUpdate: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidFailToDownloadFileWithError: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveDataOfLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadedUpdateForRemoval (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
host (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
httpHeaders (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
installerDidExtractUpdateWithProgress: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidFailToApplyDeltaUpdate (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidStartExtracting (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidStartInstalling (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDriver (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
installerIsRequestingAbortInstallWithError: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerIsSendingAppTerminationSignal (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerWillFinishInstallationAndRelaunch: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
preventsInstallerInteraction (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
resumableUpdate (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
resumingInstallingUpdate (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
secondaryUpdateItem (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
silentInstall (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
updateItem (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
updater (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
updaterDelegate (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
userAgent (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_core_based_update_driver_07_08.html b/documentation/api-reference/category_s_p_u_core_based_update_driver_07_08.html new file mode 100644 index 0000000..3246a0d --- /dev/null +++ b/documentation/api-reference/category_s_p_u_core_based_update_driver_07_08.html @@ -0,0 +1,206 @@ + + + + + + + +Sparkle: SPUCoreBasedUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUCoreBasedUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUCoreBasedUpdateDriver():
+
+
+ + +<SPUBasicUpdateDriverDelegate> +<SPUDownloadDriverDelegate> +<SPUInstallerDriverDelegate> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+SPUBasicUpdateDriverbasicDriver
 
+SPUDownloadDriverdownloadDriver
 
+SPUInstallerDriverinstallerDriver
 
+id< SPUCoreBasedUpdateDriverDelegatedelegate
 
+SUAppcastItemupdateItem
 
+SUAppcastItemsecondaryUpdateItem
 
+id< SPUResumableUpdateresumableUpdate
 
+SPUDownloadedUpdatedownloadedUpdateForRemoval
 
+SUHosthost
 
+BOOL resumingInstallingUpdate
 
+BOOL silentInstall
 
+BOOL preventsInstallerInteraction
 
+id updater
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+NSString * userAgent
 
+NSDictionary * httpHeaders
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUBasicUpdateDriverDelegate>
+(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain:
 
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverDidFinishLoadingAppcast
 
- Instance Methods inherited from <SPUDownloadDriverDelegate>
+(void) - downloadDriverDidFailToDownloadFileWithError:
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidDownloadUpdate:
 
+(void) - downloadDriverDidDownloadData:
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
- Instance Methods inherited from <SPUInstallerDriverDelegate>
+(void) - installerDidStartInstalling
 
+(void) - installerDidStartExtracting
 
+(void) - installerDidExtractUpdateWithProgress:
 
+(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
 
+(void) - installerIsSendingAppTerminationSignal
 
+(void) - installerWillFinishInstallationAndRelaunch:
 
+(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
 
+(void) - installerIsRequestingAbortInstallWithError:
 
+(void) - installerDidFailToApplyDeltaUpdate
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUCoreBasedUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_core_based_update_driver_07_08.png b/documentation/api-reference/category_s_p_u_core_based_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..822312c6bef3751b4bcb5fdeb7227f7e485fdb07 GIT binary patch literal 2035 zcmbVNc~nzp7JqC8g;b^uL=*^Ca6wrP44`00P$$tD``uaMg{x++K%WSy=X}?Qz zbFsgzq%YoWaWa@k>7}vF%y8Oy}WkgiwA&;e! zU~N3n^8^Hjx;(St6pp=9;;yf*7>^c6&NeZo`8ewQN@`?Qg%3++9PRhdQq!gw>WT2y z-I9ne!R}W%-u37uu(sI$!!R#|Pm#&i@eLL`i6In`gJ6FAbvpCzBCf}bOy5qFo%C(l zEwLz(KDysx>#~3IvG_(+cgUS7`;s2Ohdzz)n=`1!c0iLS+M+kO>_PL~l5q8z&rfTYKTxaIH4F zqF#G^1amyhr*)cD_X(Poaz3ZM=)JG*cFz49z2Sgb`71yT) z16tpc7N376zzCMo8&71 zIPQ!1&;gGt!aJ@j5c8;*_>Hx}tu~^`N}Ek;>Qyo1~a(Nmk<}IqkL2ncgBL(F7tu!XXx^G$UYvuLoqdY_lKtaCoUJF}r#ZY7|A9C^?;n*62HG<*t&+hHQw^CzXtVJ66I&4cKLM_E!+9xdjc-aPm0J6fnWcHS~b35IeP#VGxlun>8Rps=rl3U;woR;5I55 zhzHuX{$Js4;*B{D=mF`y_s&BD;+y}H3ENXOw#u;P4A+WBfICl@v^wQrJv^In_!;dh zr|ota#yG6^bHfh$&ku*sB=?JfN#&Oyfn1{t`#uO79OfD0R77jh5nL4JNlfaQK+7RA zc=N{QfX6Pvf-7`M^eXY-;>aVVS`B_}0i7u}xT$cNWw!5%*Jek~51=BMnys+8v4>$h zU|3+V=Y^kBPF`{K+(doVQaY>s1%D64P`-DACQr0lDmU)ok)ajioGHG`URWST_$p-w z!Ak|-J~WGzghJg)c-#51TP|Go(?B#j{}A+@@&*S#k#oEPs@{W?3quYZ+DW~*#iYeb z_>s8M;*_h2OS8t3CXIA58Wygw{j7wm + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUDownloadDriver() Member List
+
+
+ +

This is the complete list of members for SPUDownloadDriver(), including all inherited members.

+ + + + + + + + + + + + +
cleaningUp (defined in SPUDownloadDriver())SPUDownloadDriver()
connection (defined in SPUDownloadDriver())SPUDownloadDriver()
delegate (defined in SPUDownloadDriver())SPUDownloadDriver()
downloader (defined in SPUDownloadDriver())SPUDownloadDriver()
downloadName (defined in SPUDownloadDriver())SPUDownloadDriver()
expectedContentLength (defined in SPUDownloadDriver())SPUDownloadDriver()
host (defined in SPUDownloadDriver())SPUDownloadDriver()
retrievedDownloadResult (defined in SPUDownloadDriver())SPUDownloadDriver()
secondaryUpdateItem (defined in SPUDownloadDriver())SPUDownloadDriver()
temporaryDirectory (defined in SPUDownloadDriver())SPUDownloadDriver()
updateItem (defined in SPUDownloadDriver())SPUDownloadDriver()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_download_driver_07_08.html b/documentation/api-reference/category_s_p_u_download_driver_07_08.html new file mode 100644 index 0000000..b4f717f --- /dev/null +++ b/documentation/api-reference/category_s_p_u_download_driver_07_08.html @@ -0,0 +1,126 @@ + + + + + + + +Sparkle: SPUDownloadDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUDownloadDriver() Category Reference
+
+
+
+Inheritance diagram for SPUDownloadDriver():
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+id< SPUDownloaderProtocol > downloader
 
+NSXPCConnection * connection
 
+SUAppcastItemupdateItem
 
+SUAppcastItemsecondaryUpdateItem
 
+SUHosthost
 
+NSString * temporaryDirectory
 
+NSString * downloadName
 
+id< SPUDownloadDriverDelegatedelegate
 
+BOOL retrievedDownloadResult
 
+uint64_t expectedContentLength
 
+BOOL cleaningUp
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUDownloadDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_download_driver_07_08.png b/documentation/api-reference/category_s_p_u_download_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c0e08d498a3e852290896833bfcc9d45b4591e GIT binary patch literal 692 zcmeAS@N?(olHy`uVBq!ia0vp^D}XqFgBeKf3OV-)NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~IeWS|hEy=VoqN0JwE~ap^tes`|M&YR zN%KfdG`sp`hUVm)X3maQy(gl^npsE?f9WqI&l(AOy#>JesW@Y=lgZ%H_ zw_0{u@qFChY=Y&nF`X!WM{H-{EzoI%X&hy;1>+1X8{5$1qx}#Q0`s=JiWpxz` z+|L|ez^VWJ+eYDkIje+Yb9YScj$@qe_&LGeefR7yJ@L;%iyU7seSU4`D~8<7duB7m zGvDo>Q5)1^dHY20xwySsR_qpebZoKd4UR7-tj=4zPBz~B(dp{$TUn3pJb58-Ma8me z_Ttp5|8?AFS6|r~-ffg;uDiPK{*qO{R`=FjmH%qFs><_MebwPY{tH@dlS;1o+F1Ro z-xvNuHFE*0mgmH%1(QTps;`)NlZA=nI&%WsS*BkVK2BELFD4iBUCML_zsh_htC7it zSo|u#dDhIc3Oo<~MJ-?e8qP5BljC+TYrWRoNB=zDGuW2a?_TrSob|;?*0TwI+!rQu z|4NHBS%(5G9w}dt%3+Cm z9;5%o`NE+(n-z?GZI)5G?`Hq1dvW^Cn>(vrcg6+3U-L_L^DcMkCCARBTXKDv{p&>) z(~n$V=3gh{H4e<(;=ri16^OsGm>SP^_|LFJKmOOglsQL$NsPhM)z4*}Q$iB}u(m>k literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_s_p_u_installer_driver_07_08-members.html b/documentation/api-reference/category_s_p_u_installer_driver_07_08-members.html new file mode 100644 index 0000000..3cdd4ae --- /dev/null +++ b/documentation/api-reference/category_s_p_u_installer_driver_07_08-members.html @@ -0,0 +1,98 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUInstallerDriver() Member List
+
+
+ +

This is the complete list of members for SPUInstallerDriver(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
aborted (defined in SPUInstallerDriver())SPUInstallerDriver()
applicationBundle (defined in SPUInstallerDriver())SPUInstallerDriver()
currentStage (defined in SPUInstallerDriver())SPUInstallerDriver()
delegate (defined in SPUInstallerDriver())SPUInstallerDriver()
downloadName (defined in SPUInstallerDriver())SPUInstallerDriver()
extractionAttempts (defined in SPUInstallerDriver())SPUInstallerDriver()
host (defined in SPUInstallerDriver())SPUInstallerDriver()
installerConnection (defined in SPUInstallerDriver())SPUInstallerDriver()
installerError (defined in SPUInstallerDriver())SPUInstallerDriver()
postponedOnce (defined in SPUInstallerDriver())SPUInstallerDriver()
relaunch (defined in SPUInstallerDriver())SPUInstallerDriver()
sparkleBundle (defined in SPUInstallerDriver())SPUInstallerDriver()
startedInstalling (defined in SPUInstallerDriver())SPUInstallerDriver()
systemDomain (defined in SPUInstallerDriver())SPUInstallerDriver()
temporaryDirectory (defined in SPUInstallerDriver())SPUInstallerDriver()
updateItem (defined in SPUInstallerDriver())SPUInstallerDriver()
updater (defined in SPUInstallerDriver())SPUInstallerDriver()
updaterDelegate (defined in SPUInstallerDriver())SPUInstallerDriver()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_installer_driver_07_08.html b/documentation/api-reference/category_s_p_u_installer_driver_07_08.html new file mode 100644 index 0000000..2cfa3ad --- /dev/null +++ b/documentation/api-reference/category_s_p_u_installer_driver_07_08.html @@ -0,0 +1,147 @@ + + + + + + + +Sparkle: SPUInstallerDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUInstallerDriver() Category Reference
+
+
+
+Inheritance diagram for SPUInstallerDriver():
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+SUHosthost
 
+NSBundle * applicationBundle
 
+NSBundle * sparkleBundle
 
+id< SPUInstallerDriverDelegatedelegate
 
+SPUInstallerMessageType currentStage
 
+BOOL startedInstalling
 
+id< SUInstallerConnectionProtocol > installerConnection
 
+NSUInteger extractionAttempts
 
+BOOL postponedOnce
 
+id updater
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+BOOL relaunch
 
+BOOL systemDomain
 
+SUAppcastItemupdateItem
 
+NSString * downloadName
 
+NSString * temporaryDirectory
 
+BOOL aborted
 
+NSError * installerError
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUInstallerDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_installer_driver_07_08.png b/documentation/api-reference/category_s_p_u_installer_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..b04c858c39e0d8f910831bdbcc2a5c0911221c9b GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^w}3c+gBeJAyqFyhq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0Dm`5sLn;{G&b>RSS%If@|D7*;{!8bt zR$$y>U$#AV#+iZ;l_NC*k95=0in%5)krd6CWHO7%camFhdzrTG_S>K4ysNumU%Gmd zn)fB)SIgyh*zh?`%KrLWY^_t3sILE{CC0aA?|S~3cZ<};b=uq4-QU#qa?-_1v*LPf z$~K)adwQ_?%jM1YKb@1bRQDD5`c@)WHtx6F*(J+PhD324uRJH_U2^rX*@d5zR&Keq z;@_czF5)@u+xF(1pEY}5>;1()U9*+1)i5OxJ*2y zd>hp~7iZ>~7;n~O{a_i(@a)Q-jOnMhhDxhUcZgP|kdRe$icJt9fi6dhR*hcHgrrrh5DHx08A=x!v8j`&Y#AX>s@J z(m%6qnWJ8v!RC8dL)Ue_bD8aarhCucyqd44?4Ev>b%*QK#ktArt}n8ky@g@#y;T$R zBCEEv>cGksUevmB|( UPcD_|1tv@ePgg&ebxsLQ0Q^E)=l}o! literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_s_p_u_probing_update_driver_07_08-members.html b/documentation/api-reference/category_s_p_u_probing_update_driver_07_08-members.html new file mode 100644 index 0000000..b24a2f1 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_probing_update_driver_07_08-members.html @@ -0,0 +1,85 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUProbingUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUProbingUpdateDriver(), including all inherited members.

+ + + + + + +
basicDriver (defined in SPUProbingUpdateDriver())SPUProbingUpdateDriver()
basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
basicDriverDidFinishLoadingAppcast (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
resumableUpdate (defined in SPUProbingUpdateDriver())SPUProbingUpdateDriver()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_probing_update_driver_07_08.html b/documentation/api-reference/category_s_p_u_probing_update_driver_07_08.html new file mode 100644 index 0000000..0f50462 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_probing_update_driver_07_08.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: SPUProbingUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUProbingUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUProbingUpdateDriver():
+
+
+ + +<SPUBasicUpdateDriverDelegate> + +
+ + + + + + +

+Properties

+SPUBasicUpdateDriverbasicDriver
 
+id< SPUResumableUpdateresumableUpdate
 
+ + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUBasicUpdateDriverDelegate>
+(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain:
 
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUProbingUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_probing_update_driver_07_08.png b/documentation/api-reference/category_s_p_u_probing_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..c39bacdd5cc518963484045b29f9f978750016e8 GIT binary patch literal 1061 zcmeAS@N?(olHy`uVBq!ia0vp^=YY6_gBeK9IH1xFq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0w|KfZhEy=Vo%?#zY6TuQ@xo=5|IO`k zS$B49+r6oJ)69}zm7OzE1Uu?E6Z z()9*@r)rc}=!b+#&phTiQ+@qTweRkoT325edbx&#?p@btasJ6RrzK0L6^5PYh?;v$ zkoU0W^vGK#zNJLuj#l}AOXPnC?d+AFX9=Ff_Ja4b>f|^V6r3v|k+rIFhQ&N)M+gb2 zyw>jBQ06qZ>a34sy79g{*12ce_IbQ#S#G^=RYJK@Rb2NSVZYtK`@~}NMBhJH)BHK- zO~Io_TI%|bzubFQsrxB^b@0;q4KGgpv_87>`SzREqJDyFgMU1FJMX$*>7KzbMBnZ-K` z^0u$6cy?&#&2g+aW{NXb3)oeJ>vE2l|?HXKE5hk zb5C>aYww=|&Z_f2?#)f;D&bWZ{Vt(?ym$KE)y&!F^1U~Ih`e#yL;q84=!4IDH?vxM zY?#@kv{!h}yB|h24)OUV+ZG)PEnW9;jqs%9Y3;(n+UcLP{AT~Nm{V1SJ#)Cyvc8 + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUScheduledUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUScheduledUpdateDriver(), including all inherited members.

+ + + + + + + + +
basicDriverDidFinishLoadingAppcast (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
showedUpdate (defined in SPUScheduledUpdateDriver())SPUScheduledUpdateDriver()
uiDriver (defined in SPUScheduledUpdateDriver())SPUScheduledUpdateDriver()
uiDriverDidShowUpdate (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
uiDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
+ + + + diff --git a/documentation/api-reference/category_s_p_u_scheduled_update_driver_07_08.html b/documentation/api-reference/category_s_p_u_scheduled_update_driver_07_08.html new file mode 100644 index 0000000..c8eaec5 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_scheduled_update_driver_07_08.html @@ -0,0 +1,121 @@ + + + + + + + +Sparkle: SPUScheduledUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUScheduledUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUScheduledUpdateDriver():
+
+
+ + +<SPUUIBasedUpdateDriverDelegate> + +
+ + + + + + +

+Properties

+SPUUIBasedUpdateDriveruiDriver
 
+BOOL showedUpdate
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUUIBasedUpdateDriverDelegate>
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - coreDriverIsRequestingAbortUpdateWithError:
 
+(void) - uiDriverIsRequestingAbortUpdateWithError:
 
+(void) - uiDriverDidShowUpdate
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUScheduledUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_scheduled_update_driver_07_08.png b/documentation/api-reference/category_s_p_u_scheduled_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..398addf937ad55028083af000607a8de3c47813c GIT binary patch literal 1083 zcmeAS@N?(olHy`uVBq!ia0vp^cY(NrgBeJMM9Sp=DTx4|5ZC|z{{xvX-h3_XKQsZz z0^y+>~y=)HnH%(u9AiEdtX-9Yae4E$6OUy+#>_uf40Xl)XzhRano9?%wY;VdboT#i1p1w>q# ztJfkBCVGIslsO{I`|{m9?Z>*lUhrPy{BxpY%gJ+)t5Kz$^94iT%>;1 z_?s`c`E=CP_xhKB%IVkcs>dg7`upxjtYqc(uwzyqHC}P=+M#N{w0q|!!`wTERQKoC z7r1m8=e%t#oscJGs+_j#@DKgx>*gidzOCCPylY{7=>3PcdKQUkbgr}AIaxO9-I>L= z1S|c@e~8@E_1?W@X5N?AfmfK8uZ?vzUj904+d4=8@bz`Y@3eL){Zw$Czq-q6MXb?3 z>$}^Z>*cq;Te+#O{N1egv7cjZ^z(j@=*x(e?_Qd*`*z+c`&GKJ?`BRtza)KHV0wJ9 z;Ka*co<*xEeVThu#lR;#*HCa`+_dcLxh{eey{=#C?D(^Ej-ShsWnki62{6P~b3JI^ z#i+A->C3$BQ$J2yw)?Pd&vvu9-+dTX7g;gPCLT9z7IES@-NmqB#T>o^%Ru4_# zZ&v%iujoAQF0kO&`DwrI{(aeD_}x!4KGh?RLEm(_w{fLuoTqtn)?vn;FN}A!PwhBV zJ>jpf)FgkYsNZ(ez>&};vA3g~rF)zHi=d~wXNi7$USs5usi78d`?dVuPkKeBtEa9l z-m^V6wdUO<+v(d*+t0}l{+|Sn0b|*QIQcJU7X1m`kz?<*lSG*`^3DfaO<<@A1@bAKVSL1$~~&%-xXsBGO);G3Z^8tla-ci6KU1Ir9vyytsym|N8hIWLe5K_=2#l h-2%my4J-aJ$FOeL_uu}&4q#4a@O1TaS?83{1OOx)4VVA` literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08-members.html b/documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08-members.html new file mode 100644 index 0000000..695e386 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08-members.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUIBasedUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUUIBasedUpdateDriver(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
basicDriverDidFinishLoadingAppcast (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
coreDriver (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
coreDriverDidStartExtractingUpdate (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
delegate (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
downloadDriverDidReceiveDataOfLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
host (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
httpHeaders (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
installerDidExtractUpdateWithProgress: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidStartInstalling (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerIsSendingAppTerminationSignal (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
preventsInstallerInteraction (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
releaseNotesDriver (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
resumingDownloadedUpdate (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
resumingInstallingUpdate (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
updater (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
updaterDelegate (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
userAgent (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
userDriver (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
userInitiated (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08.html b/documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08.html new file mode 100644 index 0000000..1092d38 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08.html @@ -0,0 +1,178 @@ + + + + + + + +Sparkle: SPUUIBasedUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUIBasedUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUUIBasedUpdateDriver():
+
+
+ + +<SPUCoreBasedUpdateDriverDelegate> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+SPUCoreBasedUpdateDrivercoreDriver
 
+SUHosthost
 
+id updater
 
+BOOL userInitiated
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+id< SPUUIBasedUpdateDriverDelegatedelegate
 
+id< SPUUserDriveruserDriver
 
+SPUReleaseNotesDriverreleaseNotesDriver
 
+BOOL resumingInstallingUpdate
 
+BOOL resumingDownloadedUpdate
 
+BOOL preventsInstallerInteraction
 
+NSDictionary * httpHeaders
 
+NSString * userAgent
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUCoreBasedUpdateDriverDelegate>
+(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:
 
+(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
 
+(void) - coreDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
+(void) - coreDriverDidStartExtractingUpdate
 
+(void) - installerDidStartInstalling
 
+(void) - installerDidExtractUpdateWithProgress:
 
+(void) - installerIsSendingAppTerminationSignal
 
+(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUIBasedUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08.png b/documentation/api-reference/category_s_p_u_u_i_based_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..7535928807e1598c99675443c7aae5cd3b32f635 GIT binary patch literal 1103 zcmeAS@N?(olHy`uVBq!ia0vp^?|`_2gBeI(pQ|1Yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0?|Hg7hEy=Vo%>d3kqwWV|KXmU|E=q; z2K~}JweG?0%sG`TPM%e>O#XUvD4tPnTJ=h&C?+&?HJGrHG`Fh%V}C2DCL;gZj@Tc? z&x?)nlx}mpmJYq@_TMB=$vd#f@BMnA(o^3bPwH|A{rcNV@Vn(t-H9uw80W>blxnUz zU3p~r!)d8=%yK8+WqcR*HvQ}?nL8$TJ%U0$37D6y-&H=Bxu&j6Iq&Kwwwt+8U+t&e z-BZ4L_A2Aqw|2|V*?st2jneC%J65gwy~}LR<5jETmUS=wZ?k*Vs_Q2ULqpe|0uitJ zq@6e}b372=#dv1%&Vu~yD=VHK+I#uj5o^hHUHaYrub=kV`k9uG^Nu~d_qK5JskcwW+gI0hcr5KMbakoIJT5A@Q42(@vVONo=d=makJdbf&l!4m zZs%&<+gb2_i}6Rlw%2nd53G|BKd_2;{Gg;&;E;_H!x^RHtQ)j|cvbR_^Y^xyeSUuY z zpjU5gq0hhQ=A*mc?!HtkDfmEGR`;2I;q{%V$*aC5dDPvnn_#FEpRK>2E$=+jY zyLaB)Et)6z=YQMp?bYVu-rq|c4X0OctI&IM`(ABK*ra8~&o9QN_bvNX@czKIb2TUL zvHs}VC-~z|GslDMqL_x{TYk0;-+w9U9k>ch%2hIN6k80s|1sBX+ZX)D$Abr$`x!i4 L{an^LB{Ts558xre literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_s_p_u_u_r_l_request_07_08-members.html b/documentation/api-reference/category_s_p_u_u_r_l_request_07_08-members.html new file mode 100644 index 0000000..60d54b3 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_u_r_l_request_07_08-members.html @@ -0,0 +1,85 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUURLRequest() Member List
+
+
+ +

This is the complete list of members for SPUURLRequest(), including all inherited members.

+ + + + + + +
cachePolicy (defined in SPUURLRequest())SPUURLRequest()
httpHeaderFields (defined in SPUURLRequest())SPUURLRequest()
networkServiceType (defined in SPUURLRequest())SPUURLRequest()
timeoutInterval (defined in SPUURLRequest())SPUURLRequest()
url (defined in SPUURLRequest())SPUURLRequest()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_u_r_l_request_07_08.html b/documentation/api-reference/category_s_p_u_u_r_l_request_07_08.html new file mode 100644 index 0000000..2224129 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_u_r_l_request_07_08.html @@ -0,0 +1,102 @@ + + + + + + + +Sparkle: SPUURLRequest() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUURLRequest() Category Reference
+
+
+ + + + + + + + + + + + +

+Properties

+NSURL * url
 
+NSURLRequestCachePolicy cachePolicy
 
+NSTimeInterval timeoutInterval
 
+NSDictionary< NSString *, NSString * > * httpHeaderFields
 
+NSURLRequestNetworkServiceType networkServiceType
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUURLRequest.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_updater_07_08-members.html b/documentation/api-reference/category_s_p_u_updater_07_08-members.html new file mode 100644 index 0000000..8a22fc1 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_updater_07_08-members.html @@ -0,0 +1,98 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdater() Member List
+
+
+ +

This is the complete list of members for SPUUpdater(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
applicationBundle (defined in SPUUpdater())SPUUpdater()
delegate (defined in SPUUpdater())SPUUpdater()
driver (defined in SPUUpdater())SPUUpdater()
host (defined in SPUUpdater())SPUUpdater()
loggedATSWarning (defined in SPUUpdater())SPUUpdater()
loggedNoSecureKeyWarning (defined in SPUUpdater())SPUUpdater()
parameterizedFeedURL (defined in SPUUpdater())SPUUpdater()
resetUpdateCycle (defined in <SPUUpdaterCycleDelegate>)<SPUUpdaterCycleDelegate>
resumableUpdate (defined in SPUUpdater())SPUUpdater()
sessionInProgress (defined in SPUUpdater())SPUUpdater()
showingPermissionRequest (defined in SPUUpdater())SPUUpdater()
startedUpdater (defined in SPUUpdater())SPUUpdater()
updateLastCheckedDate (defined in SPUUpdater())SPUUpdater()
updaterCycle (defined in SPUUpdater())SPUUpdater()
updaterSettings (defined in SPUUpdater())SPUUpdater()
updaterTimer (defined in SPUUpdater())SPUUpdater()
updaterTimerDidFire (defined in <SPUUpdaterTimerDelegate>)<SPUUpdaterTimerDelegate>
userDriver (defined in SPUUpdater())SPUUpdater()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_updater_07_08.html b/documentation/api-reference/category_s_p_u_updater_07_08.html new file mode 100644 index 0000000..61e6b32 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_updater_07_08.html @@ -0,0 +1,156 @@ + + + + + + + +Sparkle: SPUUpdater() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdater() Category Reference
+
+
+
+Inheritance diagram for SPUUpdater():
+
+
+ + +<SPUUpdaterCycleDelegate> +<SPUUpdaterTimerDelegate> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+NSURL * parameterizedFeedURL
 
+id< SPUUserDriveruserDriver
 
+id< SPUUpdaterDelegatedelegate
 
+id< SPUUpdateDriverdriver
 
+SUHosthost
 
+NSBundle * applicationBundle
 
+SPUUpdaterSettingsupdaterSettings
 
+SPUUpdaterCycleupdaterCycle
 
+SPUUpdaterTimerupdaterTimer
 
+BOOL startedUpdater
 
+id< SPUResumableUpdateresumableUpdate
 
+BOOL sessionInProgress
 
+BOOL showingPermissionRequest
 
+NSDate * updateLastCheckedDate
 
+BOOL loggedATSWarning
 
+BOOL loggedNoSecureKeyWarning
 
+ + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUUpdaterCycleDelegate>
+(void) - resetUpdateCycle
 
- Instance Methods inherited from <SPUUpdaterTimerDelegate>
+(void) - updaterTimerDidFire
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUpdater.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_updater_07_08.png b/documentation/api-reference/category_s_p_u_updater_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..3d64188cd2614e6ce3f53158ea508166acdf21de GIT binary patch literal 1399 zcmb_ce^AnA9R3>lW18mLET^Wjgl0=v8kC8drHQ$;Gt)D5G=ET;3Ra4RF0!)BHVI^@ ztyq?}Md<|=njzF`B~p%EjQd7_ic#tp%>0%7+_(L)Zg*{e?Y(=S_j&G~`+V-Xd+x2? zk{IXi>f;IkfO|YKCK&)63SfT11p(uv4#|Tb?=4@Z#M+p6i_>(Y@4P z`kgGldqMts)23jYqmJ|zd(p z75joN*1ps$3vKq5C!rq?{K}lF?lPYuEit>v`#frqnMShD$1_cSg!%Q{4gRr4V_XL{ z_d#5g#x`y#4jO7$jWTL;%Fd2Z(UT~?*vq<0w|Al5i-ISlE~sTsQT1-Qhp?vWEwj}X z_1T}cqK&K0A5?`m&bC98jZu*V(>+CzAe2C+TgJS>0eK&$ToHex*>1u`tTlll6|VI& z4Yv=sQHC!MeuXk;$op>4Xj=V<4a+tdyB|%-Q7Ux>N1sd5RQv$VkFig_qSC}H$!UY} z8`R%n-{q%)!Oc$=9E0kT^FLtJQW3k@(@hEZb@PN7f}5%u3<#`vh7jg=iC(hYJ*)6U zMqrR{pi7UF%X+>;C9~jvmOC~oOR~1M`-#HB_MAw**^s`02!ki9ki76{?%4)MBuFMl zFVDSf)>6y-0%lrr()T^TYP=^qX>YP!El;QEY*o+%7_fQlTP}JHyBtaPf5n72(q2>S zY%Cw!V_PYk9UA4YIx<5lePgN}BUlO2%S)dR;N07@A71;OV4w*hHpqKAn{CT?W~cFw zhj%RQh~hqet#~suC`i0ta&7#>Jt&@aVW%>W#1UOln=`tf-WfUujT`m1(#&UzzN?mo zr*x`6r;D_~nnq}ppLT;Qf*lv3S-u#D;BziNIFZD zDd2MaNCIq6cg`o_jkj5mmoP0)_D8BokjQ$ixEJHQ`OK96S`Gyo-X_i)#DR;*++Ivg z5{e|nhpBdGG_rytt9WC(1xOXlmV7Ofl}?N}a5>iLQAI*`16WB~Mvr^lCtdrhw6}97 zSz)Iv2HV);5S0w-@;g&Vp57Luk}Y@X!H2o6=RcCcg$NS_8u?wVquZO9>XIzw0w7?( z={K|?_Dli8yGTeb6fVl*J7jk_7b!~Va+Gi2yh0`rO~kMBgzI%Q7cmzJzE=uWhCh}8 zgHiQ(pzvQT|205z3a+;+BXxJk?SJmL$7P>09{OdV*w57SK%rUGcVMMsS*;jN$ILLH z%z*yIwoB0FVe3yKyT?aAS`O4D;3b$Uul}DQ`EzROLxZ91@f?QIa>sq|zDMUL^_rdh z8azN5cg{=emAHY{rNe2b$8|)!#A8_}Hc#10Y{h~=L|L#|(HH`gVCBf*!CPGHL}=(U zsUpa?->0-BT{e%QCgQhP;7vYSR^)OVKzUE#_K=9?y6toN_gN5z0H2Z7<4O17UlNFq LO^j(>zoYU`THdNc literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_s_p_u_updater_cycle_07_08-members.html b/documentation/api-reference/category_s_p_u_updater_cycle_07_08-members.html new file mode 100644 index 0000000..0f16752 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_updater_cycle_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterCycle() Member List
+
+
+ +

This is the complete list of members for SPUUpdaterCycle(), including all inherited members.

+ + +
delegate (defined in SPUUpdaterCycle())SPUUpdaterCycle()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_updater_cycle_07_08.html b/documentation/api-reference/category_s_p_u_updater_cycle_07_08.html new file mode 100644 index 0000000..2c28441 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_updater_cycle_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: SPUUpdaterCycle() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterCycle() Category Reference
+
+
+ + + + +

+Properties

+id< SPUUpdaterCycleDelegatedelegate
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUpdaterCycle.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_updater_settings_07_08-members.html b/documentation/api-reference/category_s_p_u_updater_settings_07_08-members.html new file mode 100644 index 0000000..7a61ffe --- /dev/null +++ b/documentation/api-reference/category_s_p_u_updater_settings_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterSettings() Member List
+
+
+ +

This is the complete list of members for SPUUpdaterSettings(), including all inherited members.

+ + +
host (defined in SPUUpdaterSettings())SPUUpdaterSettings()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_updater_settings_07_08.html b/documentation/api-reference/category_s_p_u_updater_settings_07_08.html new file mode 100644 index 0000000..b9a1352 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_updater_settings_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: SPUUpdaterSettings() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterSettings() Category Reference
+
+
+ + + + +

+Properties

+SUHosthost
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUpdaterSettings.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_updater_timer_07_08-members.html b/documentation/api-reference/category_s_p_u_updater_timer_07_08-members.html new file mode 100644 index 0000000..5d444ad --- /dev/null +++ b/documentation/api-reference/category_s_p_u_updater_timer_07_08-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterTimer() Member List
+
+
+ +

This is the complete list of members for SPUUpdaterTimer(), including all inherited members.

+ + + +
delegate (defined in SPUUpdaterTimer())SPUUpdaterTimer()
source (defined in SPUUpdaterTimer())SPUUpdaterTimer()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_updater_timer_07_08.html b/documentation/api-reference/category_s_p_u_updater_timer_07_08.html new file mode 100644 index 0000000..ef1add8 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_updater_timer_07_08.html @@ -0,0 +1,93 @@ + + + + + + + +Sparkle: SPUUpdaterTimer() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterTimer() Category Reference
+
+
+ + + + + + +

+Properties

+id< SPUUpdaterTimerDelegatedelegate
 
+dispatch_source_t source
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUpdaterTimer.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08-members.html b/documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08-members.html new file mode 100644 index 0000000..6ec21c0 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08-members.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUserInitiatedUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUUserInitiatedUpdateDriver(), including all inherited members.

+ + + + + + + + + + + +
aborted (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
basicDriverDidFinishLoadingAppcast (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
showingUpdate (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
showingUserInitiatedProgress (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
uiDriver (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
uiDriverDidShowUpdate (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
uiDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
userDriver (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
+ + + + diff --git a/documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08.html b/documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08.html new file mode 100644 index 0000000..633fc42 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: SPUUserInitiatedUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUserInitiatedUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUUserInitiatedUpdateDriver():
+
+
+ + +<SPUUIBasedUpdateDriverDelegate> + +
+ + + + + + + + + + + + +

+Properties

+SPUUIBasedUpdateDriveruiDriver
 
+id< SPUUserDriveruserDriver
 
+BOOL showingUserInitiatedProgress
 
+BOOL showingUpdate
 
+BOOL aborted
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUUIBasedUpdateDriverDelegate>
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - coreDriverIsRequestingAbortUpdateWithError:
 
+(void) - uiDriverIsRequestingAbortUpdateWithError:
 
+(void) - uiDriverDidShowUpdate
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUserInitiatedUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08.png b/documentation/api-reference/category_s_p_u_user_initiated_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..b851d4e0917c5373b34be8ad92330e5d3d6190af GIT binary patch literal 1092 zcmeAS@N?(olHy`uVBq!ia0vp^cY(NrgBeJMM9Sp=DTx4|5ZC|z{{xvX-h3_XKQsZz z0^u?vdJ&>>T)n~ZeeuIz54gP*^+C_vv;Vy z(wto*6w7wA;Z5(VELHy!Nfqn+#%0x06pPK?PoI+%di8OM&E4d+(X)zT-<5EG_R7;c z&MfB}el5kWAoQJ8N%Tv(Gvzw5ad$U;SfsPN#C!3^+-DK{E*EXTF!SA|ld)G_{=dKT z_W8LxGv>YgdFSt=>g#W3sxO%9wtSV84PcEy_(D`6u*Ttn% zF0Enuv1lE`<*ck-uS?VRtbCbQApH2Oueh!7fz?fX2bL3$A85qtO+UTmk&==TFc@5p z0D}QYNbM^59j)L0I{948XJx^O^SH9DZ{L&jubp4IC4J)V&!(~M%N9zrR`$MQ_qUyW z{^hYL(R)gRKj+Iyye=x+c(eXm!s)x;;$BwHG@Wc#aQ?OMuB|Hd-rJAeQZIferuO^u zuhz4dcO9zQH{)%Kbk$wK@?E)~rWU79&zOF9U75r6t>!=9zVkhw-8kvxtI5_YE^IQ| zp0oZ$@~*SXHmr+$wf64Is{HSJ#4JkR@tmEp?q=ld=4t2N)d6|2f_sD)_NMMBE1Iqz zzx?-?J8zd>=sEKy{rS3I_d*{h)oC~UPW^oC%SKbt((>qKZ``*oyIs9(qvV$}mtMcf z)>A5)QTJn7XGhI4c_xcx#;R&cmrfPGo8=@TXlOOv&*h1}Xo-@N9hfLxygNp3dL-)y z*I347SFe;@e|@GR`10KcYR6{J)~ix$2xpaT@FyN02=vlin(4|kBgB#YK`;oPe<`P% zp1YF&@Kg18#x>tg9zD~uHukvZd8^~^DmBHqE?f=XHS3w^u7?jqcL|2P)#SQ-;~4S(VzGWd6x!A982JSJ-Cn+Q z^4(9JrBCbU>!-21TA%py;m*|GQSGMIx1z&eE{S;Cur51(9ruEZJJQ7>--oB2ytg=7 zPJe0I<;&+?vtu`xEZXOoUVP=P*44{=bJvr1+&)v;`anHKEdZWo= zeyzow3aO3^oN(^(>E?}0( u(v53~s`q9uSO!bK@8r)<37Qr1pJ8V9hFj}8g;Ic7p25@A&t;ucLK6V + + + + + + +Sparkle: SPUUserUpdateState() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUserUpdateState() Category Reference
+
+
+
+Inheritance diagram for SPUUserUpdateState():
+
+
+ +
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUserUpdateState.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_p_u_user_update_state_07_08.png b/documentation/api-reference/category_s_p_u_user_update_state_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..f0bb0f2e35c7c2cf03b4691b24b7c245b9b1ede7 GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^oj@GG!3-p&PA`)IQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;z6*_=|S%USL1azsc;C6h5%$g>E9dp*x>eOzVo^|f8^q>}abK3mp4 zzR7uVXLVNqh~N0UdcDEvliKpCC!U4`O_@CH?&+Y%GauO;&vKj;V|(&p{lq29*KcIf zajrUYI^fyKS?wj)FK$sOjlJ~DwEMmIBq?5xRT-kS#~-O&Ul-o`>e3w56Py{EXFjoc zo;Et`sr7F~@p8+JZNGHXm-@ds=H4$qDe9}<-$T=DKVAL4MD|trnOf6=kKgJ(zwx+K ze@#l|-^HI7=bWjN{vEI5xz1O~bKO!8C8aQd1IMcvbQY$1$n}Q?OjE3E(rMbnchb(9 zVXYZwL-u5b9R#S?+b6oX=qNHJ0E2|#x*B7F=%n!9%NBnznls&oX$RXhqt(}5H>`b| z`Nrec-2alDtgkdqpYhD=5c>PGZvF8tcQe)f$!~YXe60Q1b$Rj=o4Zfc&Kg}y)x7rT z;*V(&X{#?smA}cIFLEx*_sXRB=nZ%FIA2o94w*Zv*r}*$4(pCzhPS0}PgtTK-F`RX zxJn#j`RrT!TrXYO_ie}f$(kp(SiRkNey8r@xpRMYzI!vrTTWs9m2H*t8ET^Evq;QK zYS@42y@F)zTgJMO*(?XPdNRZuFIQ7aV*JaPp6vgA@~qFQz{JAf>FVdQ&MBb@03jtR AJOBUy literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_s_p_u_user_update_state_07_private_08-members.html b/documentation/api-reference/category_s_p_u_user_update_state_07_private_08-members.html new file mode 100644 index 0000000..4b1fd0d --- /dev/null +++ b/documentation/api-reference/category_s_p_u_user_update_state_07_private_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUserUpdateState(Private) Member List
+
+
+ +

This is the complete list of members for SPUUserUpdateState(Private), including all inherited members.

+ + +
initWithStage:userInitiated: (defined in SPUUserUpdateState(Private))SPUUserUpdateState(Private)
+ + + + diff --git a/documentation/api-reference/category_s_p_u_user_update_state_07_private_08.html b/documentation/api-reference/category_s_p_u_user_update_state_07_private_08.html new file mode 100644 index 0000000..625e2c7 --- /dev/null +++ b/documentation/api-reference/category_s_p_u_user_update_state_07_private_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: SPUUserUpdateState(Private) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUserUpdateState(Private) Category Reference
+
+
+ + + + +

+Instance Methods

+(instancetype) - initWithStage:userInitiated:
 
+
The documentation for this category was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_07_08-members.html b/documentation/api-reference/category_s_u_appcast_07_08-members.html new file mode 100644 index 0000000..2e50181 --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcast() Member List
+
+
+ +

This is the complete list of members for SUAppcast(), including all inherited members.

+ + +
items (defined in SUAppcast())SUAppcast()
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_07_08.html b/documentation/api-reference/category_s_u_appcast_07_08.html new file mode 100644 index 0000000..57b58aa --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: SUAppcast() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcast() Category Reference
+
+
+ + + + +

+Properties

+NSArray< SUAppcastItem * > * items
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUAppcast.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_07_private_08-members.html b/documentation/api-reference/category_s_u_appcast_07_private_08-members.html new file mode 100644 index 0000000..6ddffee --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_07_private_08-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcast(Private) Member List
+
+
+ +

This is the complete list of members for SUAppcast(Private), including all inherited members.

+ + + +
copyByFilteringItems: (defined in SUAppcast(Private))SUAppcast(Private)
initWithXMLData:relativeToURL:stateResolver:error: (defined in SUAppcast(Private))SUAppcast(Private)
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_07_private_08.html b/documentation/api-reference/category_s_u_appcast_07_private_08.html new file mode 100644 index 0000000..981065e --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_07_private_08.html @@ -0,0 +1,93 @@ + + + + + + + +Sparkle: SUAppcast(Private) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcast(Private) Category Reference
+
+
+ + + + + + +

+Instance Methods

+(nullable instancetype) - initWithXMLData:relativeToURL:stateResolver:error:
 
+(SUAppcast *) - copyByFilteringItems:
 
+
The documentation for this category was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_driver_07_08-members.html b/documentation/api-reference/category_s_u_appcast_driver_07_08-members.html new file mode 100644 index 0000000..6fdc4ff --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_driver_07_08-members.html @@ -0,0 +1,91 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcastDriver() Member List
+
+
+ +

This is the complete list of members for SUAppcastDriver(), including all inherited members.

+ + + + + + + + + + + + +
delegate (defined in SUAppcastDriver())SUAppcastDriver()
downloadDriver (defined in SUAppcastDriver())SUAppcastDriver()
downloadDriverDidDownloadData: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidDownloadUpdate: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidFailToDownloadFileWithError: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveDataOfLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
host (defined in SUAppcastDriver())SUAppcastDriver()
updater (defined in SUAppcastDriver())SUAppcastDriver()
updaterDelegate (defined in SUAppcastDriver())SUAppcastDriver()
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_driver_07_08.html b/documentation/api-reference/category_s_u_appcast_driver_07_08.html new file mode 100644 index 0000000..ab273e0 --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_driver_07_08.html @@ -0,0 +1,133 @@ + + + + + + + +Sparkle: SUAppcastDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcastDriver() Category Reference
+
+
+
+Inheritance diagram for SUAppcastDriver():
+
+
+ + +<SPUDownloadDriverDelegate> + +
+ + + + + + + + + + + + +

+Properties

+SUHosthost
 
+id updater
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+id< SUAppcastDriverDelegatedelegate
 
+SPUDownloadDriverdownloadDriver
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUDownloadDriverDelegate>
+(void) - downloadDriverDidFailToDownloadFileWithError:
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidDownloadUpdate:
 
+(void) - downloadDriverDidDownloadData:
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUAppcastDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_driver_07_08.png b/documentation/api-reference/category_s_u_appcast_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8166332d2568c5a3d721fd3e263e3e78cabbd5 GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SPgBeJ+af+A#DTx4|5ZC|z{{xvX-h3_XKQsZz z0^3kP61PbKg!{t-#~JU%0IDzxlpg zQN@mR)vIS4O}=Y+G{~+<|F0~llj@fIZpBW*!}J>-wl4z_2T~*wSAfM1Oh^B5652qbC+wys(TI`D^^v3ooT}g zbaetl-cv>cqs81da?R2`dLMe~bDAHrJ`!R2pvuBv!^z0t@5FFmvH-&e6?|Naq*=={ zQ)alh98+a+aRF)*6!bS^diis^$oo&R;rqHfzP$Li?d5g(g|gN8^YUu7H?Zvq?&|n* zL-fbOc-!ZtOw~&7&wsyts(W(W|JT!h+OBiG{QhrzmEPKCQNfwVRy~Wc|Hd-yj-}X% zjcfdiV>#D~+%##wl9_rtB-Xt7#;>G6mTRZ}$-VHqBwcekuk~xZziZNk;xUy zC=WEBdXDqVt7@jopR2?}j>YYsrf!|G_5Sotv5e9mCN`XX8OJ5d74mrY#@ox^%6x0x zUi~0Iq4NY^d-Z{mcl=weul=;WaEICYyHjaRPVnwIPM=lM&aQ2cTqe1@o=f-n(TkcY zN}p=~6m-^XZ#c;+I8ir#AJgm}K|#Zsdalk68386GC17&s=ur1>%$&8Xk#WaV_5&w? z!Cb+UXRzyl@xP6{ZQ>ol90#To3Sp%1f6y@{NJ>)Zz>XG%26aV-2PgGe@7?})Rl9!9 zyMH<6@=~F!2ijI~9`OI;r@$V^;`iNrFGJahw+!b#$TOv}PWyL0DQ@P^zqw?xpYC8u#p5?ZBDnImwhM_)6o|v%b4yep@%k=O^uEms+*xEQj`n%(&w9 z4QHS2(f`f#(>*x%@LQgu_ykwT;@zBc?lG(V{ + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcastItem() Member List
+
+
+ +

This is the complete list of members for SUAppcastItem(), including all inherited members.

+ + + + +
hasCriticalInformation (defined in SUAppcastItem())SUAppcastItem()
informationalUpdateVersions (defined in SUAppcastItem())SUAppcastItem()
state (defined in SUAppcastItem())SUAppcastItem()
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_item_07_08.html b/documentation/api-reference/category_s_u_appcast_item_07_08.html new file mode 100644 index 0000000..9400d88 --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_item_07_08.html @@ -0,0 +1,96 @@ + + + + + + + +Sparkle: SUAppcastItem() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcastItem() Category Reference
+
+
+ + + + + + + + +

+Properties

+SPUAppcastItemStatestate
 
+BOOL hasCriticalInformation
 
+NSSet< NSString * > * informationalUpdateVersions
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUAppcastItem.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_item_07_private_08-members.html b/documentation/api-reference/category_s_u_appcast_item_07_private_08-members.html new file mode 100644 index 0000000..deee458 --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_item_07_private_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcastItem(Private) Member List
+
+
+ +

This is the complete list of members for SUAppcastItem(Private), including all inherited members.

+ + +
initWithDictionary:relativeToURL:stateResolver:failureReason:SUAppcastItem(Private)
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_item_07_private_08.html b/documentation/api-reference/category_s_u_appcast_item_07_private_08.html new file mode 100644 index 0000000..eeb3938 --- /dev/null +++ b/documentation/api-reference/category_s_u_appcast_item_07_private_08.html @@ -0,0 +1,142 @@ + + + + + + + +Sparkle: SUAppcastItem(Private) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcastItem(Private) Category Reference
+
+
+
+Inheritance diagram for SUAppcastItem(Private):
+
+
+ +
+ + + + + +

+Instance Methods

(nullable instancetype) - initWithDictionary:relativeToURL:stateResolver:failureReason:
 Initializes with data from a dictionary provided by the RSS class and state resolver. More...
 
+

Method Documentation

+ +

◆ initWithDictionary:relativeToURL:stateResolver:failureReason:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- (nullable instancetype) initWithDictionary: (NSDictionary *) dict
relativeToURL:(NSURL *_Nullable) appcastURL
stateResolver:(SPUAppcastItemStateResolver *) stateResolver
failureReason:(NSString *_Nullable __autoreleasing *_Nullable) error 
+
+ +

Initializes with data from a dictionary provided by the RSS class and state resolver.

+

This initializer method is intended to be marked "private" and discouraged from public usage. This method is available however. Talk to us to describe your use case and if you need to construct appcast items yourself.

+ +

Extends class SUAppcastItem.

+ +
+
+
The documentation for this category was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/category_s_u_appcast_item_07_private_08.png b/documentation/api-reference/category_s_u_appcast_item_07_private_08.png new file mode 100644 index 0000000000000000000000000000000000000000..669748273ac41ee91e981d97db1178c171c1cb26 GIT binary patch literal 675 zcmeAS@N?(olHy`uVBq!ia0vp^6M#5?gBeI3Ea0&NQW60^A+G=b{|7Q(y!l$%e+Z-k zj1L?*z}k679?0b=3GxeO04f53tEWPY7#Nt0JY5_^Dj46+y`A?)fyZ@veA@s2^7CVM zNOsKjvejBO;f6C?&*lxhl}FFys3uO@(q}e7#r2lMB$1brFXZg&&)?cVFIeAmquc4n z?{{xyyudqA#&oaB(OD7u&N+)L)V8`BZn%c=wBng(r7Jf3)b;I?oUp{PctLR_qnDr8 z{eo+Hx*vD0{C_#;-KEQ4t_m+Oi|kzJ`f0tX=Ug?1-tB3^#!CcO?Afzq?b+*dr_1!o z9Xq>+VU|LxpjWG*_PgU8JClA-Zj%ci*@_&up{WzvrSh${P zU->DOm-gA33iXkmS-0N1X#8M%yM8ak{h6)`#+zGNJ}CcUShM76gWde29bwE?71xxa z_%h}jHAF~rC|qJ=>e$lApp>i7;DMX_Hx_8n)E34yi+NcDGMO1&Ryl;X&S(Dl-1Jpq zxjDo7!?mBRzgwIWS-=z27{~rz^2AT(7oqB2F)|an17=y7NA4~@zHYbtdXFa;vmb6a zcv{0=EqHr|&rJ4J+WE&#`PLa{L>ujWZywIn*qrs^^P}t)!Iw*a9$3M9cx#mNy?+0% z%mLz$mYs56VDnP)-9@<#*PJ{v$^yiB9cs_rKHKkbwb}7@n&524pHoa-|1iDyZ7RaF zb5Tc7SkYa#4^baVP6?&0d+_Z*4QI%?w68zDEqk|)wc+}&V~alCU_SF@dBeT+QueY8 p+8IDk-Ev@ + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUHost() Member List
+
+
+ +

This is the complete list of members for SUHost(), including all inherited members.

+ + + + + + +
bundle (defined in SUHost())SUHost()
defaultsDomain (defined in SUHost())SUHost()
isMainBundle (defined in SUHost())SUHost()
publicDSAKey (defined in SUHost())SUHost()
usesStandardUserDefaults (defined in SUHost())SUHost()
+ + + + diff --git a/documentation/api-reference/category_s_u_host_07_08.html b/documentation/api-reference/category_s_u_host_07_08.html new file mode 100644 index 0000000..7cc9fce --- /dev/null +++ b/documentation/api-reference/category_s_u_host_07_08.html @@ -0,0 +1,102 @@ + + + + + + + +Sparkle: SUHost() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUHost() Category Reference
+
+
+ + + + + + + + + + + + +

+Properties

+NSBundle * bundle
 
+BOOL isMainBundle
 
+NSString * defaultsDomain
 
+BOOL usesStandardUserDefaults
 
+NSString * publicDSAKey
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUHost.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_u_status_controller_07_08-members.html b/documentation/api-reference/category_s_u_status_controller_07_08-members.html new file mode 100644 index 0000000..f41f218 --- /dev/null +++ b/documentation/api-reference/category_s_u_status_controller_07_08-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUStatusController() Member List
+
+
+ +

This is the complete list of members for SUStatusController(), including all inherited members.

+ + + + + +
buttonTitle (defined in SUStatusController())SUStatusController()protected
host (defined in SUStatusController())SUStatusController()
title (defined in SUStatusController())SUStatusController()
touchBarButton (defined in SUStatusController())SUStatusController()
+ + + + diff --git a/documentation/api-reference/category_s_u_status_controller_07_08.html b/documentation/api-reference/category_s_u_status_controller_07_08.html new file mode 100644 index 0000000..ad4cb83 --- /dev/null +++ b/documentation/api-reference/category_s_u_status_controller_07_08.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: SUStatusController() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUStatusController() Category Reference
+
+
+
+Inheritance diagram for SUStatusController():
+
+
+ +
+ + + + + + + + + + +

+Properties

+NSString * title
 
+NSString * buttonTitle
 
+SUHosthost
 
+NSButton * touchBarButton
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUStatusController.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_s_u_status_controller_07_08.png b/documentation/api-reference/category_s_u_status_controller_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..8428f6b3dce0acf17b64305adf81b749d7bf76ab GIT binary patch literal 667 zcmeAS@N?(olHy`uVBq!ia0vp^Q-C;tgBeJkn7zgYNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~X?eOhhEy=VoqPMzYy%#)aPy15_ZQY5 zV86++XiMg!GLysX+a|o-s&i0RNoh4_U}&s2=h9VDflez|xtTc2?tQy2^kCtA=~b&X zcisFvBR4#{{H^+my}K`NQM|rzO+erEoZrSPl)bL)X30OEtF<@H6M_@2}+71mW! zr&i7}dMuW;rk8V-NKfufC#i2ChYR|yFq*1Xv1EBzNv~Y(_$^|O$JaShQhZlt2y72n z_IbAD)B5GhUP*gBpAvj~@w!Xx_e1Un?%RHK`Kn)%wvnGd2Q2#)5^7tk7&N_pZT;)^ zHLHG=s!myz<+9qTvqML%!TcrThFM`PRW@Qvq6A;HXWFh(UAXBNLz0(9Lx&KT!lD+Y z4vmEjO1QZ%>f40`BYimzL_yUkiD&6Iyp7#?vrdwgC%lmHjA>-uE_M0zDg2>{cb4;C z{n1!w+y2QSe?i&~TZw03&gREAeA)fp&iSiWVZQe9g;_plKiE*!oy%rsI<$cE)u$`#SLfez@BdqQc)jDyO_hwV)GqoTH&@Lz2s-xl zZb0yvb0+z=`+i-VIdAWWzH0$2cfU?~AAa?Fl^^4u+Pxn<8GiIkYw7x*#;|V{)PJ|^ eT9lNsUy66X4A~aO6QT}GNerH@elF{r5}E)|12X>r literal 0 HcmV?d00001 diff --git a/documentation/api-reference/category_s_u_update_validator_07_08-members.html b/documentation/api-reference/category_s_u_update_validator_07_08-members.html new file mode 100644 index 0000000..0dace5c --- /dev/null +++ b/documentation/api-reference/category_s_u_update_validator_07_08-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUUpdateValidator() Member List
+
+
+ +

This is the complete list of members for SUUpdateValidator(), including all inherited members.

+ + + + + +
downloadPath (defined in SUUpdateValidator())SUUpdateValidator()
host (defined in SUUpdateValidator())SUUpdateValidator()
prevalidatedSignature (defined in SUUpdateValidator())SUUpdateValidator()
signatures (defined in SUUpdateValidator())SUUpdateValidator()
+ + + + diff --git a/documentation/api-reference/category_s_u_update_validator_07_08.html b/documentation/api-reference/category_s_u_update_validator_07_08.html new file mode 100644 index 0000000..ced5b5d --- /dev/null +++ b/documentation/api-reference/category_s_u_update_validator_07_08.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: SUUpdateValidator() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUUpdateValidator() Category Reference
+
+
+ + + + + + + + + + +

+Properties

+SUHosthost
 
+BOOL prevalidatedSignature
 
+SUSignaturessignatures
 
+NSString * downloadPath
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUUpdateValidator.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_show_installer_progress_07_08-members.html b/documentation/api-reference/category_show_installer_progress_07_08-members.html new file mode 100644 index 0000000..42cca1e --- /dev/null +++ b/documentation/api-reference/category_show_installer_progress_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
ShowInstallerProgress() Member List
+
+
+ +

This is the complete list of members for ShowInstallerProgress(), including all inherited members.

+ + +
statusController (defined in ShowInstallerProgress())ShowInstallerProgress()
+ + + + diff --git a/documentation/api-reference/category_show_installer_progress_07_08.html b/documentation/api-reference/category_show_installer_progress_07_08.html new file mode 100644 index 0000000..803990b --- /dev/null +++ b/documentation/api-reference/category_show_installer_progress_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: ShowInstallerProgress() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
ShowInstallerProgress() Category Reference
+
+
+ + + + +

+Properties

+SUStatusControllerstatusController
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/InstallerProgress/ShowInstallerProgress.m
  • +
+
+ + + + diff --git a/documentation/api-reference/category_termination_listener_07_08-members.html b/documentation/api-reference/category_termination_listener_07_08-members.html new file mode 100644 index 0000000..fbfb9c7 --- /dev/null +++ b/documentation/api-reference/category_termination_listener_07_08-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TerminationListener() Member List
+
+
+ +

This is the complete list of members for TerminationListener(), including all inherited members.

+ + + + +
completionBlock (defined in TerminationListener())TerminationListener()
processIdentifier (defined in TerminationListener())TerminationListener()
watchedTermination (defined in TerminationListener())TerminationListener()
+ + + + diff --git a/documentation/api-reference/category_termination_listener_07_08.html b/documentation/api-reference/category_termination_listener_07_08.html new file mode 100644 index 0000000..18533d4 --- /dev/null +++ b/documentation/api-reference/category_termination_listener_07_08.html @@ -0,0 +1,96 @@ + + + + + + + +Sparkle: TerminationListener() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
TerminationListener() Category Reference
+
+
+ + + + + + + + +

+Properties

+NSNumber * processIdentifier
 
+BOOL watchedTermination
 
+void(^ completionBlock )(BOOL)
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/Autoupdate/TerminationListener.m
  • +
+
+ + + + diff --git a/documentation/api-reference/classes.html b/documentation/api-reference/classes.html new file mode 100644 index 0000000..a871d2a --- /dev/null +++ b/documentation/api-reference/classes.html @@ -0,0 +1,670 @@ + + + + Classes Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

Classes

+

The following classes are available globally.

+ +
+
+
+
    +
  • +
    + + + + SPUDownloadData + +
    +
    +
    +
    +
    +
    +

    A class for containing downloaded data along with some information about it.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUDownloadData : NSObject <NSSecureCoding>
    + +
    +
    +

    Swift

    +
    class SPUDownloadData : NSObject, NSSecureCoding
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A controller class that instantiates a SPUUpdater and allows binding UI to its updater settings.

    + +

    This class can be instantiated in a nib or created programatically using -initWithUpdaterDelegate:userDriverDelegate: or -initWithStartingUpdater:updaterDelegate:userDriverDelegate:.

    + +

    The controller’s updater targets the application’s main bundle and uses Sparkle’s standard user interface. +Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programatically too.

    + +

    The controller creates an SPUUpdater instance using a SPUStandardUserDriver and allows hooking up the check for updates action and handling menu item validation. +It also allows hooking up the updater’s and user driver’s delegates.

    + +

    If you need more control over what bundle you want to update, or you want to provide a custom user interface (via SPUUserDriver), please use SPUUpdater directly instead.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUStandardUpdaterController : NSObject
    + +
    +
    +

    Swift

    +
    class SPUStandardUpdaterController : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUStandardUserDriver + +
    +
    +
    +
    +
    +
    +

    Sparkle’s standard built-in user driver for updater interactions

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUStandardUserDriver : NSObject <SPUUserDriver>
    + +
    +
    +

    Swift

    +
    class SPUStandardUserDriver : NSObject, SPUUserDriver
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This class represents information needed to make a permission request for checking updates.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUUpdatePermissionRequest : NSObject <NSSecureCoding>
    + +
    +
    +

    Swift

    +
    class SPUUpdatePermissionRequest : NSObject, NSSecureCoding
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUpdater + +
    +
    +
    +
    +
    +
    +

    The main API in Sparkle for controlling the update mechanism.

    + +

    This class is used to configure the update parameters as well as manually and automatically schedule and control checks for updates.

    + +

    For convenience, you can create a standard or nib instantiable updater by using SPUStandardUpdaterController.

    + +

    Prefer to set initial properties in your bundle’s Info.plist as described in Customizing Sparkle.

    + +

    Otherwise only if you need dynamic behavior (eg. for user preferences) should you set properties on the updater such as:

    + +
      +
    • automaticallyChecksForUpdates
    • +
    • updateCheckInterval
    • +
    • automaticallyDownloadsUpdates
    • +
    • feedURL
    • +
    + +

    Please view the documentation on each of these properties for more detail if you are to configure them dynamically.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUUpdater : NSObject
    + +
    +
    +

    Swift

    +
    class SPUUpdater : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUpdaterSettings + +
    +
    +
    +
    +
    +
    +

    This class can be used for reading certain updater settings.

    + +

    It retrieves the settings by first looking into the host’s user defaults. +If the setting is not found in there, then the host’s Info.plist file is looked at.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUUpdaterSettings : NSObject
    + +
    +
    +

    Swift

    +
    class SPUUpdaterSettings : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUserUpdateState + +
    +
    +
    +
    +
    +
    +

    This represents the user’s current update state.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUUserUpdateState : NSObject
    + +
    +
    +

    Swift

    +
    class SPUUserUpdateState : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUAppcast + +
    +
    +
    +
    +
    +
    +

    The appcast representing a collection of SUAppcastItem items in the feed.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SUAppcast : NSObject
    + +
    +
    +

    Swift

    +
    class SUAppcast : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUAppcastItem + +
    +
    +
    +
    +
    +
    +

    The appcast item describing an update in the application’s appcast feed.

    + +

    An appcast item represents a single update item in the SUAppcast contained within the <item> element.

    + +

    Every appcast item must have a versionString, and either a fileURL or an infoURL. +All the remaining properties describing an update to the application are optional.

    + +

    Extended documentation and examples on using appcast item features are available at: +https://sparkle-project.org/documentation/publishing/

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SUAppcastItem : NSObject <NSSecureCoding>
    + +
    +
    +

    Swift

    +
    class SUAppcastItem : NSObject, NSSecureCoding
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Sparkle’s default version comparator.

    + +

    This comparator is adapted from MacPAD, by Kevin Ballard. +It’s “dumb” in that it does essentially string comparison, +in components split by character type.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SUStandardVersionComparator : NSObject <SUVersionComparison>
    + +
    +
    +

    Swift

    +
    class SUStandardVersionComparator : NSObject, SUVersionComparison
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This class represents a response for permission to check updates.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SUUpdatePermissionResponse : NSObject <NSSecureCoding>
    + +
    +
    +

    Swift

    +
    class SUUpdatePermissionResponse : NSObject, NSSecureCoding
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUUpdater + +
    +
    +
    +
    +
    +
    +

    Deprecated

    +

    Deprecated in Sparkle 2. Use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.

    + +
    +
    +

    The legacy API in Sparkle for controlling the update mechanism.

    + +

    This class is now deprecated and acts as a thin wrapper around SPUUpdater and SPUStandardUserDriver.

    + +

    If you are migrating to Sparkle 2, use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    
    +@interface SUUpdater : NSObject
    + +
    +
    +

    Swift

    +
    class SUUpdater : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/closed.png b/documentation/api-reference/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/documentation/api-reference/css/highlight.css b/documentation/api-reference/css/highlight.css new file mode 100644 index 0000000..d0db0e1 --- /dev/null +++ b/documentation/api-reference/css/highlight.css @@ -0,0 +1,200 @@ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight { + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + color: #000000; + font-weight: bold; } + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + color: #000000; + font-weight: bold; } + .highlight .kd { + color: #000000; + font-weight: bold; } + .highlight .kp { + color: #000000; + font-weight: bold; } + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } diff --git a/documentation/api-reference/css/jazzy.css b/documentation/api-reference/css/jazzy.css new file mode 100644 index 0000000..b1d61a4 --- /dev/null +++ b/documentation/api-reference/css/jazzy.css @@ -0,0 +1,412 @@ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #fff; + font-family: -apple-system, Helvetica, freesans, Arial, sans-serif; + font-size: 16px; + line-height: 1.6; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; + min-height: 100vh; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 400; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +@media screen and (max-width: 767px) { + h1 { + font-size: 1.75em; } + h2 { + font-size: 1.4em; } } + +pre, code { + font-family: "SF Mono", Menlo, monospace; + font-size: 0.95em; + color: #777; + word-wrap: normal; } + +pre { + line-height: 1.6; } + +a { + color: #0088cc; + text-decoration: none; } + a code { + color: inherit; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 87px; } + +.footnote-def { + scroll-margin-top: 87px; } + +.content-wrapper { + margin: 0 auto; + width: calc(100% - 32px); + max-width: 980px; } + +.wrapper { + display: flex; + flex-direction: column; + min-height: inherit; + overflow: auto; } + +.article-wrapper > *, +.nav-wrapper > *, +.footer-wrapper > * { + margin: 0 auto; + width: calc(100% - 32px); + max-width: 980px; } + +.article-wrapper { + flex: 1; + background-color: #fff; } + +.nav-wrapper { + background-color: #fafafa; } + +.footer-wrapper { + background-color: #f2f2f2; } + +header { + line-height: 48px; + background-color: #2C2C2C; + position: fixed; + width: 100%; + z-index: 3; } + header img { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs-container { + background-color: #2C2C2C; + position: fixed; + z-index: 2; + width: 100%; } + +#breadcrumbs { + color: rgba(255, 255, 255, 0.6); + height: 29px; + padding-bottom: 10px; + width: 100%; + margin-top: 48px; + white-space: nowrap; + overflow-x: scroll; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + #breadcrumbs a { + color: white; } + +@media screen and (max-width: 767px) { + #breadcrumbs { + color: white; } } + +.nav-groups { + list-style-type: none; + padding-left: 0; } + +.nav-group-name { + font-size: 1.5rem; + font-weight: 500; + padding: 20px 0; } + .nav-group-name:not(:last-child) { + border-bottom: 1px solid #e2e2e2; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + column-count: 2; + list-style: none; + padding: 0; + margin-top: 5px; } + +.nav-group-task { + font-size: 1.1rem; + font-weight: 400; } + .nav-group-task a { + color: #888; } + +@media screen and (max-width: 767px) { + .nav-group-tasks { + column-count: 1; } } + +.main-content { + overflow: hidden; + padding-bottom: 60px; + margin-top: 87px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.5; } + .main-content section { + max-width: 750px; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 87px; + margin: -87px 0 0; } + .main-content .section-name p { + margin-bottom: inherit; + line-height: inherit; } + .main-content .section-name code { + color: inherit; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + font-size: 1.5rem; + font-weight: 500; + margin: 0; } + +.task-group-section { + margin-top: 10px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + .task-group > ul { + padding-left: 0; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 87px; + margin: -87px 0 0; } + +.section-name-container { + position: relative; + display: inline-block; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 87px; + margin: -87px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 55px; + transition: all 300ms; } + .item .discouraged { + text-decoration: line-through; } + .item .token-open { + margin-left: 45px; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + position: relative; + background: #f9f9f9; + width: 100%; + padding: 10px 25px; + border: 1px solid #e2e2e2; + border-radius: 8px; + box-sizing: border-box; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 12px; + font-weight: 600; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + padding: 25px 0; + box-sizing: border-box; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs { + display: none; } + +html.dash .main-content { + width: calc(100% - 32px); + max-width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } + +@media screen and (max-width: 767px) { + .no-mobile { + display: none; } } diff --git a/documentation/api-reference/dir_3429d7ca3cc00bc309a2ec9474a0a508.html b/documentation/api-reference/dir_3429d7ca3cc00bc309a2ec9474a0a508.html new file mode 100644 index 0000000..d761f11 --- /dev/null +++ b/documentation/api-reference/dir_3429d7ca3cc00bc309a2ec9474a0a508.html @@ -0,0 +1,85 @@ + + + + + + + +Sparkle: Sparkle Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Sparkle Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/documentation/api-reference/dir_9735f67ecdf0c41f32abd6fc1aab85b9.html b/documentation/api-reference/dir_9735f67ecdf0c41f32abd6fc1aab85b9.html new file mode 100644 index 0000000..a5e3a1f --- /dev/null +++ b/documentation/api-reference/dir_9735f67ecdf0c41f32abd6fc1aab85b9.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Sparkle/Autoupdate Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Autoupdate Directory Reference
+
+
+
+ + + + diff --git a/documentation/api-reference/dir_e955798b210d66193b03eac1f9f3f1d5.html b/documentation/api-reference/dir_e955798b210d66193b03eac1f9f3f1d5.html new file mode 100644 index 0000000..132c842 --- /dev/null +++ b/documentation/api-reference/dir_e955798b210d66193b03eac1f9f3f1d5.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
InstallerProgress Directory Reference
+
+
+
+ + + + diff --git a/documentation/api-reference/doc.png b/documentation/api-reference/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Info.plist b/documentation/api-reference/docsets/Sparkle.docset/Contents/Info.plist new file mode 100644 index 0000000..fbc6050 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleIdentifier + com.jazzy.sparkle + CFBundleName + Sparkle + DocSetPlatformFamily + sparkle + isDashDocset + + dashIndexFilePath + index.html + isJavaScriptEnabled + + DashDocSetFamily + dashtoc + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUDownloadData.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUDownloadData.html new file mode 100644 index 0000000..bdf3473 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUDownloadData.html @@ -0,0 +1,364 @@ + + + + SPUDownloadData Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUDownloadData

+
+
+

Objective-C

+
@interface SPUDownloadData : NSObject <NSSecureCoding>
+ +
+
+

Swift

+
class SPUDownloadData : NSObject, NSSecureCoding
+ +
+
+

A class for containing downloaded data along with some information about it.

+ +
+
+
+
    +
  • +
    + + + + data + +
    +
    +
    +
    +
    +
    +

    The raw data that was downloaded.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSData *_Nonnull data;
    + +
    +
    +

    Swift

    +
    var data: Data { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + URL + +
    +
    +
    +
    +
    +
    +

    The URL that was fetched from.

    + +

    This may be different from the URL in the request if there were redirects involved.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly) NSURL *_Nonnull URL;
    + +
    +
    +

    Swift

    +
    var url: URL { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + textEncodingName + +
    +
    +
    +
    +
    +
    +

    The IANA charset encoding name if available. Eg: “utf-8”

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly, nullable) NSString *textEncodingName;
    + +
    +
    +

    Swift

    +
    var textEncodingName: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + MIMEType + +
    +
    +
    +
    +
    +
    +

    The MIME type if available. Eg: “text/plain”

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly, nullable) NSString *MIMEType;
    + +
    +
    +

    Swift

    +
    var mimeType: String? { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUStandardUpdaterController.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUStandardUpdaterController.html new file mode 100644 index 0000000..7f3d5ee --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUStandardUpdaterController.html @@ -0,0 +1,549 @@ + + + + SPUStandardUpdaterController Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUStandardUpdaterController

+
+
+

Objective-C

+
@interface SPUStandardUpdaterController : NSObject
+ +
+
+

Swift

+
class SPUStandardUpdaterController : NSObject
+ +
+
+

A controller class that instantiates a SPUUpdater and allows binding UI to its updater settings.

+ +

This class can be instantiated in a nib or created programatically using -initWithUpdaterDelegate:userDriverDelegate: or -initWithStartingUpdater:updaterDelegate:userDriverDelegate:.

+ +

The controller’s updater targets the application’s main bundle and uses Sparkle’s standard user interface. +Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programatically too.

+ +

The controller creates an SPUUpdater instance using a SPUStandardUserDriver and allows hooking up the check for updates action and handling menu item validation. +It also allows hooking up the updater’s and user driver’s delegates.

+ +

If you need more control over what bundle you want to update, or you want to provide a custom user interface (via SPUUserDriver), please use SPUUpdater directly instead.

+ +
+
+
+
    +
  • +
    + + + + updaterDelegate + +
    +
    +
    +
    +
    +
    +

    Interface builder outlet for the updater’s delegate.

    + +

    This property should only be set using Interface Builder by creating a connection using the outlet.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, weak, nullable) id<SPUUpdaterDelegate> updaterDelegate;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userDriverDelegate + +
    +
    +
    +
    +
    +
    +

    Interface builder outlet for the user driver’s delegate.

    + +

    This property should only be set using Interface Builder by creating a connection using the outlet.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, weak, nullable) id<SPUStandardUserDriverDelegate> userDriverDelegate;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updater + +
    +
    +
    +
    +
    +
    +

    Accessible property for the updater. Some properties on the updater can be binded via KVO

    + +

    When instantiated from a nib, don’t perform update checks before the application has finished launching in a MainMenu nib (i.e applicationDidFinishLaunching:) or before the corresponding window/view controller has been loaded (i.e, windowDidLoad or viewDidLoad). The updater is not guaranteed to be started yet before these points.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) SPUUpdater *_Nonnull updater;
    + +
    +
    +

    Swift

    +
    var updater: SPUUpdater { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userDriver + +
    +
    +
    +
    +
    +
    +

    Accessible property for the updater’s user driver.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) SPUStandardUserDriver *_Nonnull userDriver;
    + +
    +
    +

    Swift

    +
    var userDriver: SPUStandardUserDriver { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Create a new SPUStandardUpdaterController from a nib.

    + +

    You cannot call this initializer directly. You must instantiate a SPUStandardUpdaterController inside of a nib (typically the MainMenu nib) to use it.

    + +

    To create a SPUStandardUpdaterController programatically, use -initWithUpdaterDelegate:userDriverDelegate: or -initWithStartingUpdater:updaterDelegate:userDriverDelegate: instead.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)init;
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create a new SPUStandardUpdaterController programmatically.

    + +

    The updater is started automatically. See -startUpdater for more information.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)
    +    initWithUpdaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate
    +         userDriverDelegate:
    +             (nullable id<SPUStandardUserDriverDelegate>)userDriverDelegate;
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Create a new SPUStandardUpdaterController programmatically allowing you to specify whether or not to start the updater immediately.

    + +

    You can specify whether or not you want to start the updater immediately. +If you do not start the updater, you must invoke -startUpdater at a later time to start it.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)
    +    initWithStartingUpdater:(BOOL)startUpdater
    +            updaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate
    +         userDriverDelegate:
    +             (nullable id<SPUStandardUserDriverDelegate>)userDriverDelegate;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -startUpdater + +
    +
    +
    +
    +
    +
    +

    Starts the updater if it has not already been started.

    + +

    You should only call this method yourself if you opted out of starting the updater on initialization. +Hence, do not call this yourself if you are instantiating this controller from a nib.

    + +

    This invokes -[SPUUpdater startUpdater:]. If the application is misconfigured with Sparkle, an error is logged and an alert is shown to the user (after a few seconds) to contact the developer. +If you want more control over this behavior, you can create your own SPUUpdater instead of using SPUStandardUpdaterController.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)startUpdater;
    + +
    +
    +

    Swift

    +
    func startUpdater()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -checkForUpdates: + +
    +
    +
    +
    +
    +
    +

    Explicitly checks for updates and displays a progress dialog while doing so.

    + +

    This method is meant for a main menu item. +Connect any NSMenuItem to this action in Interface Builder or programmatically, +and Sparkle will check for updates and report back its findings verbosely when it is invoked.

    + +

    When the target/action of the menu item is set to this controller and this method, +this controller also handles enabling/disabling the menu item by checking +-[SPUUpdater canCheckForUpdates]

    + +

    This action checks updates by invoking -[SPUUpdater checkForUpdates]

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdates:(nullable id)sender;
    + +
    +
    +

    Swift

    +
    @IBAction func checkForUpdates(_ sender: Any?)
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUStandardUserDriver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUStandardUserDriver.html new file mode 100644 index 0000000..3b7de4b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUStandardUserDriver.html @@ -0,0 +1,325 @@ + + + + SPUStandardUserDriver Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUStandardUserDriver

+
+
+

Objective-C

+
@interface SPUStandardUserDriver : NSObject <SPUUserDriver>
+ +
+
+

Swift

+
class SPUStandardUserDriver : NSObject, SPUUserDriver
+ +
+
+

Sparkle’s standard built-in user driver for updater interactions

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a Sparkle’s standard user driver for user update interactions

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)
    +    initWithHostBundle:(nonnull NSBundle *)hostBundle
    +              delegate:(nullable id<SPUStandardUserDriverDelegate>)delegate;
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + hostBundle + + +
    +

    The target bundle of the host that is being updated.

    +
    +
    + + delegate + + +
    +

    The optional delegate to this user driver.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Use initWithHostBundle:delegate: instead.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)init;
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdatePermissionRequest.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdatePermissionRequest.html new file mode 100644 index 0000000..de7af8a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdatePermissionRequest.html @@ -0,0 +1,318 @@ + + + + SPUUpdatePermissionRequest Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdatePermissionRequest

+
+
+

Objective-C

+
@interface SPUUpdatePermissionRequest : NSObject <NSSecureCoding>
+ +
+
+

Swift

+
class SPUUpdatePermissionRequest : NSObject, NSSecureCoding
+ +
+
+

This class represents information needed to make a permission request for checking updates.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a new update permission request instance.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)initWithSystemProfile:
    +    (nonnull NSArray<NSDictionary<NSString *, NSString *> *> *)systemProfile;
    + +
    +
    +

    Swift

    +
    init(systemProfile: [[String : String]])
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + systemProfile + + +
    +

    The system profile information.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + systemProfile + +
    +
    +
    +
    +
    +
    +

    A read-only property for the user’s system profile.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSArray<NSDictionary<NSString *, NSString *> *> *_Nonnull systemProfile;
    + +
    +
    +

    Swift

    +
    var systemProfile: [[String : String]] { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdater.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdater.html new file mode 100644 index 0000000..d672f91 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdater.html @@ -0,0 +1,1055 @@ + + + + SPUUpdater Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdater

+
+
+

Objective-C

+
@interface SPUUpdater : NSObject
+ +
+
+

Swift

+
class SPUUpdater : NSObject
+ +
+
+

The main API in Sparkle for controlling the update mechanism.

+ +

This class is used to configure the update parameters as well as manually and automatically schedule and control checks for updates.

+ +

For convenience, you can create a standard or nib instantiable updater by using SPUStandardUpdaterController.

+ +

Prefer to set initial properties in your bundle’s Info.plist as described in Customizing Sparkle.

+ +

Otherwise only if you need dynamic behavior (eg. for user preferences) should you set properties on the updater such as:

+ +
    +
  • automaticallyChecksForUpdates
  • +
  • updateCheckInterval
  • +
  • automaticallyDownloadsUpdates
  • +
  • feedURL
  • +
+ +

Please view the documentation on each of these properties for more detail if you are to configure them dynamically.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a new SPUUpdater instance

    + +

    This creates an updater, but to start it and schedule update checks -startUpdater: needs to be invoked first.

    + +

    Related: See SPUStandardUpdaterController which wraps a SPUUpdater instance and is suitable for instantiating inside of nib files.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)initWithHostBundle:(nonnull NSBundle *)hostBundle
    +                         applicationBundle:(nonnull NSBundle *)applicationBundle
    +                                userDriver:(nonnull id<SPUUserDriver>)userDriver
    +                                  delegate:
    +                                      (nullable id<SPUUpdaterDelegate>)delegate;
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + hostBundle + + +
    +

    The bundle that should be targetted for updating.

    +
    +
    + + applicationBundle + + +
    +

    The application bundle that should be waited for termination and relaunched (unless overridden). Usually this can be the same as hostBundle. This may differ when updating a plug-in or other non-application bundle.

    +
    +
    + + userDriver + + +
    +

    The user driver that Sparkle uses for user update interaction.

    +
    +
    + + delegate + + +
    +

    The delegate for SPUUpdater.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standard adapter instead.

    + +

    If you want to drop an updater into a nib, use SPUStandardUpdaterController.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)init;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -startUpdater: + +
    +
    +
    +
    +
    +
    +

    Starts the updater.

    + +

    This method first checks if Sparkle is configured properly. A valid feed URL should be set before this method is invoked.

    + +

    If the configuration is valid, an update cycle is started in the next main runloop cycle. +During this cycle, a permission prompt may be brought up (if needed) for checking if the user wants automatic update checking. +Otherwise if automatic update checks are enabled, a scheduled update alert may be brought up if enough time has elapsed since the last check. +See automaticallyChecksForUpdates for more information.

    + +

    After starting the updater and before the next runloop cycle, one of -checkForUpdates, -checkForUpdatesInBackground, or -checkForUpdateInformation can be invoked. +This may be useful if you want to check for updates immediately or without showing a potential permission prompt.

    + +

    If the updater cannot be started (i.e, due to a configuration issue in the application), you may want to fall back appropriately. +For example, the standard updater controller (SPUStandardUpdaterController) alerts the user that the app is misconfigured and to contact the developer.

    + +

    This must be called on the main thread.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)startUpdater:(NSError *_Nullable *_Nullable)error;
    + +
    +
    +

    Swift

    +
    func start() throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + error + + +
    +

    The error that is populated if this method fails. Pass NULL if not interested in the error information.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater started otherwise NO with a populated error

    +
    +
    +
    +
  • +
  • +
    + + + + -checkForUpdates + +
    +
    +
    +
    +
    +
    +

    Checks for updates, and displays progress while doing so if needed.

    + +

    This is meant for users initiating a new update check or checking the current update progress.

    + +

    If an update hasn’t started, the user may be shown that a new check for updates is occurring. +If an update has already been downloaded or begun installing from a previous session, the user may be presented to install that update. +If the user is already being presented with an update, that update will be shown to the user in active focus.

    + +

    This will find updates that the user has previously opted into skipping.

    + +

    See canCheckForUpdates property which can determine when this method may be invoked.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdates;
    + +
    +
    +

    Swift

    +
    func checkForUpdates()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Checks for updates, but does not display any UI unless an update is found.

    + +

    This is meant for programmatically initating a check for updates. +That is, it will display no UI unless it finds an update, in which case it proceeds as usual. +This will not find updates that the user has opted into skipping.

    + +

    Note if there is no resumable update found, and automated updating is turned on, +the update will be downloaded in the background without disrupting the user.

    + +

    This method does not do anything if there is a sessionInProgress.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdatesInBackground;
    + +
    +
    +

    Swift

    +
    func checkForUpdatesInBackground()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Begins a “probing” check for updates which will not actually offer to +update to that version.

    + +

    However, the delegate methods +-[SPUUpdaterDelegate updater:didFindValidUpdate:] and +-[SPUUpdaterDelegate updaterDidNotFindUpdate:] will be called, +so you can use that information in your UI.

    + +

    -[SPUUpdaterDelegate updater:didFinishUpdateCycleForUpdateCheck:error:] will be called when +this probing check is completed.

    + +

    Updates that have been skipped by the user will not be found.

    + +

    This method does not do anything if there is a sessionInProgress.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdateInformation;
    + +
    +
    +

    Swift

    +
    func checkForUpdateInformation()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + canCheckForUpdates + +
    +
    +
    +
    +
    +
    +

    A property indicating whether or not updates can be checked by the user.

    + +

    An update check can be made by the user when an update session isn’t in progress, or when an update or its progress is being shown to the user.

    + +

    This property is suitable to use for menu item validation for seeing if -checkForUpdates can be invoked.

    + +

    Note this property does not reflect whether or not an update session is in progress. Please see sessionInProgress property instead.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL canCheckForUpdates;
    + +
    +
    +

    Swift

    +
    var canCheckForUpdates: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sessionInProgress + +
    +
    +
    +
    +
    +
    +

    A property indicating whether or not an update session is in progress.

    + +

    An update session is in progress when the appcast is being downloaded, an update is being downloaded, +an update is being shown, update permission is being requested, or the installer is being started.

    + +

    An active session is when Sparkle’s fired scheduler is running.

    + +

    Note an update session may not be running even though Sparkle’s installer (ran as a separate process) may be running, +or even though the update has been downloaded but the installation has been deferred. In both of these cases, a new update session +may be activated with the update resumed at a later point (automatically or manually).

    + +

    See also:

    + + + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL sessionInProgress;
    + +
    +
    +

    Swift

    +
    var sessionInProgress: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A property indicating whether or not to check for updates automatically.

    + +

    By default, Sparkle asks users on second launch for permission if they want automatic update checks enabled +and sets this property based on their response. If SUEnableAutomaticChecks is set in the Info.plist, +this permission request is not performed however.

    + +

    Setting this property will persist in the host bundle’s user defaults.

    + +

    The update schedule cycle will be reset in a short delay after the property’s new value is set. +This is to allow reverting this property without kicking off a schedule change immediately

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL automaticallyChecksForUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyChecksForUpdates: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateCheckInterval + +
    +
    +
    +
    +
    +
    +

    A property indicating the current automatic update check interval in seconds.

    + +

    Setting this property will persist in the host bundle’s user defaults. +For this reason, only set this property if you need dynamic behavior (eg user preferences). +Otherwise prefer to set SUScheduledCheckInterval directly in your Info.plist.

    + +

    The update schedule cycle will be reset in a short delay after the property’s new value is set. +This is to allow reverting this property without kicking off a schedule change immediately

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) NSTimeInterval updateCheckInterval;
    + +
    +
    +

    Swift

    +
    var updateCheckInterval: TimeInterval { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A property indicating whether or not updates can be automatically downloaded in the background.

    + +

    By default, updates are not automatically downloaded.

    + +

    Note that the developer can disallow automatic downloading of updates from being enabled. +In this case, this property will return NO regardless of how this property is set.

    + +

    Setting this property will persist in the host bundle’s user defaults. +For this reason, only set this property if you need dynamic behavior (eg user preferences). +Otherwise prefer to set SUAutomaticallyUpdate directly in your Info.plist.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL automaticallyDownloadsUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyDownloadsUpdates: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + feedURL + +
    +
    +
    +
    +
    +
    +

    The URL of the appcast used to download update information.

    + +

    If the updater’s delegate implements -[SPUUpdaterDelegate feedURLStringForUpdater:], this will return that feed URL. +Otherwise if the feed URL has been set before, the feed URL returned will be retrieved from the host bundle’s user defaults. +Otherwise the feed URL in the host bundle’s Info.plist will be returned. +If no feed URL can be retrieved, returns nil.

    + +

    This property must be called on the main thread; calls from background threads will return nil.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly, nullable) NSURL *feedURL;
    + +
    +
    +

    Swift

    +
    var feedURL: URL? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hostBundle + +
    +
    +
    +
    +
    +
    +

    The host bundle that is being updated.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSBundle *_Nonnull hostBundle;
    + +
    +
    +

    Swift

    +
    var hostBundle: Bundle { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userAgentString + +
    +
    +
    +
    +
    +
    +

    The user agent used when checking for updates.

    + +

    By default the user agent string returned is in the format: +$(BundleDisplayName)/$(BundleDisplayVersion) Sparkle/$(SparkleDisplayVersion)

    + +

    BundleDisplayVersion is derived from the application Info.plist’s CFBundleShortVersionString.

    + +

    This default implementation can be overrided.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy) NSString *_Nonnull userAgentString;
    + +
    +
    +

    Swift

    +
    var userAgentString: String { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + httpHeaders + +
    +
    +
    +
    +
    +
    +

    The HTTP headers used when checking for updates, downloading release notes, and downloading updates.

    + +

    The keys of this dictionary are HTTP header fields and values are corresponding values.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, nullable) NSDictionary<NSString *, NSString *> *httpHeaders;
    + +
    +
    +

    Swift

    +
    var httpHeaders: [String : String]? { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sendsSystemProfile + +
    +
    +
    +
    +
    +
    +

    A property indicating whether or not the user’s system profile information is sent when checking for updates.

    + +

    Setting this property will persist in the host bundle’s user defaults.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL sendsSystemProfile;
    + +
    +
    +

    Swift

    +
    var sendsSystemProfile: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lastUpdateCheckDate + +
    +
    +
    +
    +
    +
    +

    The date of the last update check or nil if no check has been performed yet.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly, nullable) NSDate *lastUpdateCheckDate;
    + +
    +
    +

    Swift

    +
    var lastUpdateCheckDate: Date? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -resetUpdateCycle + +
    +
    +
    +
    +
    +
    +

    Appropriately schedules or cancels the update checking timer according to the preferences for time interval and automatic checks.

    + +

    This call does not change the date of the next check, but only the internal timer.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)resetUpdateCycle;
    + +
    +
    +

    Swift

    +
    func resetUpdateCycle()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + systemProfileArray + +
    +
    +
    +
    +
    +
    +

    The system profile information that is sent when checking for updates.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly) NSArray<NSDictionary<NSString *, NSString *> *> *_Nonnull systemProfileArray;
    + +
    +
    +

    Swift

    +
    var systemProfileArray: [[String : String]] { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdaterSettings.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdaterSettings.html new file mode 100644 index 0000000..5488c33 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUpdaterSettings.html @@ -0,0 +1,432 @@ + + + + SPUUpdaterSettings Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdaterSettings

+
+
+

Objective-C

+
@interface SPUUpdaterSettings : NSObject
+ +
+
+

Swift

+
class SPUUpdaterSettings : NSObject
+ +
+
+

This class can be used for reading certain updater settings.

+ +

It retrieves the settings by first looking into the host’s user defaults. +If the setting is not found in there, then the host’s Info.plist file is looked at.

+ +
+
+
+
    +
  • +
    + + + + -initWithHostBundle: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)initWithHostBundle:(NSBundle *)hostBundle;
    + +
    +
    +

    Swift

    +
    init(hostBundle: Bundle)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not automatic update checks are enabled.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL automaticallyChecksForUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyChecksForUpdates: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateCheckInterval + +
    +
    +
    +
    +
    +
    +

    The regular update check interval.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSTimeInterval updateCheckInterval;
    + +
    +
    +

    Swift

    +
    var updateCheckInterval: TimeInterval { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not automatically downloading updates is allowed to be turned on by the user.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL allowsAutomaticUpdates;
    + +
    +
    +

    Swift

    +
    var allowsAutomaticUpdates: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not automatically downloading updates is enabled by the user or developer.

    + +

    Note this does not indicate whether or not automatic downloading of updates is allowable. + See -allowsAutomaticUpdates property for that.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL automaticallyDownloadsUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyDownloadsUpdates: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sendsSystemProfile + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not anonymous system profile information is sent when checking for updates.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL sendsSystemProfile;
    + +
    +
    +

    Swift

    +
    var sendsSystemProfile: Bool { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUserUpdateState.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUserUpdateState.html new file mode 100644 index 0000000..44f3f52 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SPUUserUpdateState.html @@ -0,0 +1,331 @@ + + + + SPUUserUpdateState Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUserUpdateState

+
+
+

Objective-C

+
@interface SPUUserUpdateState : NSObject
+ +
+
+

Swift

+
class SPUUserUpdateState : NSObject
+ +
+
+

This represents the user’s current update state.

+ +
+
+
+
    +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)init NS_UNAVAILABLE;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + stage + +
    +
    +
    +
    +
    +
    +

    The current update stage.

    + +

    This stage indicates if data has been already downloaded or not, or if an update is currently being installed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) SPUUserUpdateStage stage;
    + +
    +
    +

    Swift

    +
    var stage: SPUUserUpdateStage { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userInitiated + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update check was initiated by the user.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL userInitiated;
    + +
    +
    +

    Swift

    +
    var userInitiated: Bool { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUAppcast.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUAppcast.html new file mode 100644 index 0000000..8a04165 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUAppcast.html @@ -0,0 +1,299 @@ + + + + SUAppcast Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUAppcast

+
+
+

Objective-C

+
@interface SUAppcast : NSObject
+ +
+
+

Swift

+
class SUAppcast : NSObject
+ +
+
+

The appcast representing a collection of SUAppcastItem items in the feed.

+ +
+
+
+
    +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)init NS_UNAVAILABLE;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + items + +
    +
    +
    +
    +
    +
    +

    The collection of update items.

    + +

    These SUAppcastItem items are in the same order as specified in the appcast XML feed and are thus not sorted by version.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly) NSArray<SUAppcastItem *> *_Nonnull items;
    + +
    +
    +

    Swift

    +
    var items: [SUAppcastItem] { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUAppcastItem.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUAppcastItem.html new file mode 100644 index 0000000..cefb2fa --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUAppcastItem.html @@ -0,0 +1,1406 @@ + + + + SUAppcastItem Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUAppcastItem

+
+
+

Objective-C

+
@interface SUAppcastItem : NSObject <NSSecureCoding>
+ +
+
+

Swift

+
class SUAppcastItem : NSObject, NSSecureCoding
+ +
+
+

The appcast item describing an update in the application’s appcast feed.

+ +

An appcast item represents a single update item in the SUAppcast contained within the <item> element.

+ +

Every appcast item must have a versionString, and either a fileURL or an infoURL. +All the remaining properties describing an update to the application are optional.

+ +

Extended documentation and examples on using appcast item features are available at: +https://sparkle-project.org/documentation/publishing/

+ +
+
+
+
    +
  • +
    + + + + versionString + +
    +
    +
    +
    +
    +
    +

    The version of the update item.

    + +

    Sparkle uses this property to compare update items and determine the best available update item in the SUAppcast.

    + +

    This corresponds to the application update’s CFBundleVersion

    + +

    This is extracted from the <sparkle:version> element, or the sparkle:version attribute from the <enclosure> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly) NSString *_Nonnull versionString;
    + +
    +
    +

    Swift

    +
    var versionString: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + displayVersionString + +
    +
    +
    +
    +
    +
    +

    The human-readable display version of the update item if provided.

    + +

    This is the version string shown to the user when they are notified of a new update.

    + +

    This corresponds to the application update’s CFBundleShortVersionString

    + +

    This is extracted from the <sparkle:shortVersionString> element, or the sparkle:shortVersionString attribute from the <enclosure> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *displayVersionString;
    + +
    +
    +

    Swift

    +
    var displayVersionString: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + fileURL + +
    +
    +
    +
    +
    +
    +

    The file URL to the update item if provided.

    + +

    This download contains the actual update Sparkle will attempt to install. +In cases where a download cannot be provided, an infoURL must be provided instead.

    + +

    A file URL should have an accompanying contentLength provided.

    + +

    This is extracted from the url attribute in the <enclosure> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, nullable) NSURL *fileURL;
    + +
    +
    +

    Swift

    +
    var fileURL: URL? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + contentLength + +
    +
    +
    +
    +
    +
    +

    The content length of the download in bytes.

    + +

    This property is used as a fallback when the server doesn’t report the content length of the download. +In that case, it is used to report progress of the downloading update to the user.

    + +

    A warning is outputted if this property is not equal the server’s expected content length (if provided).

    + +

    This is extracted from the length attribute in the <enclosure> element. +It should be specified if a fileURL is provided.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) uint64_t contentLength;
    + +
    +
    +

    Swift

    +
    var contentLength: UInt64 { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + infoURL + +
    +
    +
    +
    +
    +
    +

    The info URL to the update item if provided.

    + +

    This informational link is used to direct the user to learn more about an update they cannot download/install directly from within the application. +The link should point to the product’s web page.

    + +

    The informational link will be used if informationOnlyUpdate is YES

    + +

    This is extracted from the <link> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, nullable) NSURL *infoURL;
    + +
    +
    +

    Swift

    +
    var infoURL: URL? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + informationOnlyUpdate + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update item is only informational and has no download.

    + +

    If infoURL is not present, this is NO

    + +

    If fileURL is not present, this is YES

    + +

    Otherwise this is determined based on the contents extracted from the <sparkle:informationalUpdate> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isInformationOnlyUpdate) BOOL informationOnlyUpdate;
    + +
    +
    +

    Swift

    +
    var isInformationOnlyUpdate: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + title + +
    +
    +
    +
    +
    +
    +

    The title of the appcast item if provided.

    + +

    This is extracted from the <title> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *title;
    + +
    +
    +

    Swift

    +
    var title: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + dateString + +
    +
    +
    +
    +
    +
    +

    The date string of the appcast item if provided.

    + +

    The date property is constructed from this property and expects this string to comply with the following date format: +E, dd MMM yyyy HH:mm:ss Z

    + +

    This is extracted from the <pubDate> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *dateString;
    + +
    +
    +

    Swift

    +
    var dateString: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + date + +
    +
    +
    +
    +
    +
    +

    The date constructed from the dateString property if provided.

    + +

    Sparkle by itself only uses this property for phased group rollouts specified via phasedRolloutInterval, but clients may query this property too.

    + +

    This date is constructed using the en_US locale.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSDate *date;
    + +
    +
    +

    Swift

    +
    var date: Date? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + releaseNotesURL + +
    +
    +
    +
    +
    +
    +

    The release notes URL of the appcast item if provided.

    + +

    This external link points to an HTML file that Sparkle downloads and renders to show the user a new or old update item’s changelog.

    + +

    An alternative to using an external release notes link is providing an embedded itemDescription.

    + +

    This is extracted from the <sparkle:releaseNotesLink> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, nullable) NSURL *releaseNotesURL;
    + +
    +
    +

    Swift

    +
    var releaseNotesURL: URL? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + itemDescription + +
    +
    +
    +
    +
    +
    +

    The description of the appcast item if provided.

    + +

    A description may be provided for inline/embedded release notes for new updates using <![CDATA[...]]> +This is an alternative to providing a releaseNotesURL.

    + +

    This is extracted from the <description> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *itemDescription;
    + +
    +
    +

    Swift

    +
    var itemDescription: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + minimumSystemVersion + +
    +
    +
    +
    +
    +
    +

    The required minimum system operating version string for this update if provided.

    + +

    This version string should contain three period-separated components.

    + +

    Example: 10.12.0

    + +

    Use minimumOperatingSystemVersionIsOK property to test if the current running system passes this requirement.

    + +

    This is extracted from the <sparkle:minimumSystemVersion> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *minimumSystemVersion;
    + +
    +
    +

    Swift

    +
    var minimumSystemVersion: String? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not the current running system passes the minimumSystemVersion requirement.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL minimumOperatingSystemVersionIsOK;
    + +
    +
    +

    Swift

    +
    var minimumOperatingSystemVersionIsOK: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + maximumSystemVersion + +
    +
    +
    +
    +
    +
    +

    The required maximum system operating version string for this update if provided.

    + +

    A maximum system operating version requirement should only be made in unusual scenarios.

    + +

    This version string should contain three period-separated components.

    + +

    Example: 10.13.0

    + +

    Use maximumOperatingSystemVersionIsOK property to test if the current running system passes this requirement.

    + +

    This is extracted from the <sparkle:maximumSystemVersion> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *maximumSystemVersion;
    + +
    +
    +

    Swift

    +
    var maximumSystemVersion: String? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Indicates whether or not the current running system passes the maximumSystemVersion requirement.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL maximumOperatingSystemVersionIsOK;
    + +
    +
    +

    Swift

    +
    var maximumOperatingSystemVersionIsOK: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + channel + +
    +
    +
    +
    +
    +
    +

    The channel the update item is on if provided.

    + +

    An update item may specify a custom channel name (such as beta) that can only be found by updaters that filter for that channel. +If no channel is provided, the update item is assumed to be on the default channel.

    + +

    This is extracted from the <sparkle:channel> element. +Old applications must be using Sparkle 2 or later to interpret the channel element and to ignore unmatched channels.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly, nullable) NSString *channel;
    + +
    +
    +

    Swift

    +
    var channel: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + installationType + +
    +
    +
    +
    +
    +
    +

    The installation type of the update at fileURL

    + +

    This may be:

    + +
      +
    • application - indicates this is a regular application update.
    • +
    • package - indicates this is a guided package installer update.
    • +
    • interactive-package - indicates this is an interactive package installer update (deprecated; use “package” instead)
    • +
    + +

    This is extracted from the sparkle:installationType attribute in the <enclosure> element.

    + +

    If no installation type is provided in the enclosure, the installation type is inferred from the fileURL file extension instead.

    + +

    If the file extension is pkg or mpkg, the installation type is package otherwise it is application

    + +

    Hence, the installation type in the enclosure element only needs to be specified for package based updates distributed inside of a zip or other archive format.

    + +

    Old applications must be using Sparkle 1.26 or later to support downloading bare package updates (pkg or mpkg) that are not additionally archived inside of a zip or other archive format.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly) NSString *_Nonnull installationType;
    + +
    +
    +

    Swift

    +
    var installationType: String { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + phasedRolloutInterval + +
    +
    +
    +
    +
    +
    +

    The phased rollout interval of the update item in seconds if provided.

    + +

    This is the interval between when different groups of users are notified of a new update.

    + +

    For this property to be used by Sparkle, the published date on the update item must be present as well.

    + +

    After each interval after the update item’s date, a new group of users become eligible for being notified of the new update.

    + +

    This is extracted from the <sparkle:phasedRolloutInterval> element.

    + +

    Old applications must be using Sparkle 1.25 or later to support phased rollout intervals, otherwise they may assume updates are immediately available.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSNumber *phasedRolloutInterval;
    + +
    +
    +

    Swift

    +
    @NSCopying var phasedRolloutInterval: NSNumber? { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The minimum bundle version string this update requires for automatically downloading and installing updates if provided.

    + +

    If an application’s bundle version meets this version requirement, it can install the new update item in the background automatically.

    + +

    Otherwise if the requirement is not met, the user is always prompted to install the update. In this case, the update is assumed to be a majorUpgrade.

    + +

    If the update is a majorUpgrade and the update is skipped by the user, other future update alerts with the same minimumAutoupdateVersion will also be skipped.

    + +

    This version string corresponds to the application’s CFBundleVersion

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *minimumAutoupdateVersion;
    + +
    +
    +

    Swift

    +
    var minimumAutoupdateVersion: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + majorUpgrade + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update item is a major upgrade.

    + +

    An update is a major upgrade if the application’s bundle version doesn’t meet the minimumAutoupdateVersion requirement.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isMajorUpgrade) BOOL majorUpgrade;
    + +
    +
    +

    Swift

    +
    var isMajorUpgrade: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + criticalUpdate + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update item is critical.

    + +

    Critical updates are shown to the user more promptly. Sparkle’s standard user interface also does not allow them to be skipped.

    + +

    This is determined and extracted from a top-level <sparkle:criticalUpdate> element or a sparkle:criticalUpdate element inside of a sparkle:tags element.

    + +

    Old applications must be using Sparkle 2 or later to support the top-level <sparkle:criticalUpdate> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isCriticalUpdate) BOOL criticalUpdate;
    + +
    +
    +

    Swift

    +
    var isCriticalUpdate: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + osString + +
    +
    +
    +
    +
    +
    +

    Specifies the operating system the download update is available for if provided.

    + +

    If this property is not provided, then the supported operating system is assumed to be macOS.

    + +

    Known potential values for this string are macos and windows

    + +

    Sparkle on Mac ignores update items that are for other operating systems. +This is only useful for sharing appcasts between Sparkle on Mac and Sparkle on other operating systems.

    + +

    Use macOsUpdate property to test if this update item is for macOS.

    + +

    This is extracted from the sparkle:os attribute in the <enclosure> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSString *osString;
    + +
    +
    +

    Swift

    +
    var osString: String? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + macOsUpdate + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not this update item is for macOS.

    + +

    This is determined from the osString property.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isMacOsUpdate) BOOL macOsUpdate;
    + +
    +
    +

    Swift

    +
    var isMacOsUpdate: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + deltaUpdates + +
    +
    +
    +
    +
    +
    +

    The delta updates for this update item.

    + +

    Sparkle uses these to download and apply a smaller update based on the version the user is updating from.

    + +

    The key is based on the sparkle:version of the update. +The value is an update item that will have deltaUpdate be YES

    + +

    Clients typically should not need to examine the contents of the delta updates.

    + +

    This is extracted from the <sparkle:deltas> element.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly, nullable) NSDictionary<NSString *, SUAppcastItem *> *deltaUpdates;
    + +
    +
    +

    Swift

    +
    var deltaUpdates: [String : SUAppcastItem]? { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + deltaUpdate + +
    +
    +
    +
    +
    +
    +

    Indicates whether or not the update item is a delta update.

    + +

    An update item is a delta update if it is in the deltaUpdates of another update item.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (readonly, getter=isDeltaUpdate) BOOL deltaUpdate;
    + +
    +
    +

    Swift

    +
    var isDeltaUpdate: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + propertiesDictionary + +
    +
    +
    +
    +
    +
    +

    The dictionary representing the entire appcast item.

    + +

    This is useful for querying custom extensions or elements from the appcast item.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy, readonly) NSDictionary *_Nonnull propertiesDictionary;
    + +
    +
    +

    Swift

    +
    var propertiesDictionary: [AnyHashable : Any] { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)init NS_UNAVAILABLE;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +emptyAppcastItem + +
    +
    +
    +
    +
    +
    +

    An empty appcast item.

    + +

    This may be used as a potential return value in -[SPUUpdaterDelegate bestValidUpdateInAppcast:forUpdater:]

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    + (nonnull instancetype)emptyAppcastItem;
    + +
    +
    +

    Swift

    +
    class func empty() -> Self
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -initWithDictionary: + +
    +
    +
    +
    +
    +
    +

    Deprecated

    +

    Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable instancetype)initWithDictionary:(NSDictionary *)dict __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
    + +
    +
    +

    Swift

    +
    init?(dictionary dict: [AnyHashable : Any])
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
    + +
    +
    +

    Swift

    +
    init?(dictionary dict: [AnyHashable : Any], failureReason error: AutoreleasingUnsafeMutablePointer<NSString?>?)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
    + +
    +
    +

    Swift

    +
    init?(dictionary dict: [AnyHashable : Any], relativeTo appcastURL: URL?, failureReason error: AutoreleasingUnsafeMutablePointer<NSString?>?)
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUStandardVersionComparator.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUStandardVersionComparator.html new file mode 100644 index 0000000..5223321 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUStandardVersionComparator.html @@ -0,0 +1,374 @@ + + + + SUStandardVersionComparator Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUStandardVersionComparator

+
+
+

Objective-C

+
@interface SUStandardVersionComparator : NSObject <SUVersionComparison>
+ +
+
+

Swift

+
class SUStandardVersionComparator : NSObject, SUVersionComparison
+ +
+
+

Sparkle’s default version comparator.

+ +

This comparator is adapted from MacPAD, by Kevin Ballard. +It’s “dumb” in that it does essentially string comparison, +in components split by character type.

+ +
+
+
+
    +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Initializes a new instance of the standard version comparator.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull instancetype)init;
    + +
    +
    +

    Swift

    +
    init()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + defaultComparator + +
    +
    +
    +
    +
    +
    +

    A singleton instance of the comparator.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (class, nonatomic, readonly) SUStandardVersionComparator *_Nonnull defaultComparator;
    + +
    +
    +

    Swift

    +
    class var `default`: SUStandardVersionComparator { get }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Compares two version strings through textual analysis.

    + +

    These version strings should be in the format of x, x.y, or x.y.z where each component is a number. +For example, valid version strings include “1.5.3”, “500”, or “4000.1” +These versions that are compared correspond to the CFBundleVersion values of the updates.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (NSComparisonResult)compareVersion:(nonnull NSString *)versionA
    +                           toVersion:(nonnull NSString *)versionB;
    + +
    +
    +

    Swift

    +
    func compareVersion(_ versionA: String, toVersion versionB: String) -> ComparisonResult
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + versionA + + +
    +

    The first version string to compare.

    +
    +
    + + versionB + + +
    +

    The second version string to compare.

    +
    +
    +
    +
    +

    Return Value

    +

    A comparison result between versionA and versionB

    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUUpdatePermissionResponse.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUUpdatePermissionResponse.html new file mode 100644 index 0000000..8ef84bd --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUUpdatePermissionResponse.html @@ -0,0 +1,393 @@ + + + + SUUpdatePermissionResponse Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUUpdatePermissionResponse

+
+
+

Objective-C

+
@interface SUUpdatePermissionResponse : NSObject <NSSecureCoding>
+ +
+
+

Swift

+
class SUUpdatePermissionResponse : NSObject, NSSecureCoding
+ +
+
+

This class represents a response for permission to check updates.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Initializes a new update permission response instance.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)initWithAutomaticUpdateChecks:(BOOL)automaticUpdateChecks
    +                            sendSystemProfile:(BOOL)sendSystemProfile;
    + +
    +
    +

    Swift

    +
    init!(automaticUpdateChecks: Bool, sendSystemProfile: Bool)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + automaticUpdateChecks + + +
    +

    Flag for whether to allow automatic update checks.

    +
    +
    + + sendSystemProfile + + +
    +

    Flag for if system profile information should be sent to the server hosting the appcast.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -init + +
    +
    +
    +
    +
    +
    +

    Unavailable

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)init NS_UNAVAILABLE;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + automaticUpdateChecks + +
    +
    +
    +
    +
    +
    +

    A read-only property indicating whether automatic update checks are allowed or not.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL automaticUpdateChecks;
    + +
    +
    +

    Swift

    +
    var automaticUpdateChecks: Bool { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sendSystemProfile + +
    +
    +
    +
    +
    +
    +

    A read-only property indicating if system profile should be sent or not.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL sendSystemProfile;
    + +
    +
    +

    Swift

    +
    var sendSystemProfile: Bool { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUUpdater.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUUpdater.html new file mode 100644 index 0000000..ad994a1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Classes/SUUpdater.html @@ -0,0 +1,911 @@ + + + + SUUpdater Class Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUUpdater

+
+

Deprecated

+

Deprecated in Sparkle 2. Use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.

+ +
+
+
+

Objective-C

+

+@interface SUUpdater : NSObject
+ +
+
+

Swift

+
class SUUpdater : NSObject
+ +
+
+

The legacy API in Sparkle for controlling the update mechanism.

+ +

This class is now deprecated and acts as a thin wrapper around SPUUpdater and SPUStandardUserDriver.

+ +

If you are migrating to Sparkle 2, use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.

+ +
+
+
+
    +
  • +
    + + + + delegate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) IBOutlet id<SUUpdaterDelegate> delegate
    + +
    +
    +

    Swift

    +
    @IBOutlet unowned(unsafe) var delegate: SUUpdaterDelegate! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +sharedUpdater + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    + (SUUpdater *)sharedUpdater;
    + +
    +
    +

    Swift

    +
    class func shared() -> SUUpdater!
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + +updaterForBundle: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    + (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -initForBundle: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (instancetype)initForBundle:(NSBundle *)bundle;
    + +
    +
    +

    Swift

    +
    init!(for bundle: Bundle!)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -checkForUpdates: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdates:(id)sender;
    + +
    +
    +

    Swift

    +
    @IBAction func checkForUpdates(_ sender: Any!)
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -validateMenuItem: + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
    + +
    +
    +

    Swift

    +
    func validate(_ menuItem: NSMenuItem!) -> Bool
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdatesInBackground;
    + +
    +
    +

    Swift

    +
    func checkForUpdatesInBackground()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL automaticallyChecksForUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyChecksForUpdates: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL automaticallyDownloadsUpdates;
    + +
    +
    +

    Swift

    +
    var automaticallyDownloadsUpdates: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateCheckInterval + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) NSTimeInterval updateCheckInterval;
    + +
    +
    +

    Swift

    +
    var updateCheckInterval: TimeInterval { get set }
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)checkForUpdateInformation;
    + +
    +
    +

    Swift

    +
    func checkForUpdateInformation()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + feedURL + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy) NSURL *feedURL;
    + +
    +
    +

    Swift

    +
    var feedURL: URL! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + hostBundle + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSBundle *hostBundle;
    + +
    +
    +

    Swift

    +
    var hostBundle: Bundle! { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sparkleBundle + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) NSBundle *sparkleBundle;
    + +
    +
    +

    Swift

    +
    var sparkleBundle: Bundle! { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + userAgentString + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy) NSString *userAgentString;
    + +
    +
    +

    Swift

    +
    var userAgentString: String! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + httpHeaders + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (copy) NSDictionary<NSString *, NSString *> *httpHeaders;
    + +
    +
    +

    Swift

    +
    var httpHeaders: [String : String]! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + sendsSystemProfile + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic) BOOL sendsSystemProfile;
    + +
    +
    +

    Swift

    +
    var sendsSystemProfile: Bool { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + decryptionPassword + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy) NSString *decryptionPassword;
    + +
    +
    +

    Swift

    +
    var decryptionPassword: String! { get set }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + lastUpdateCheckDate + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, copy, readonly) NSDate *lastUpdateCheckDate;
    + +
    +
    +

    Swift

    +
    var lastUpdateCheckDate: Date! { get }
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + -resetUpdateCycle + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)resetUpdateCycle;
    + +
    +
    +

    Swift

    +
    func resetUpdateCycle()
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + updateInProgress + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @property (nonatomic, readonly) BOOL updateInProgress;
    + +
    +
    +

    Swift

    +
    var updateInProgress: Bool { get }
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Constants.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Constants.html new file mode 100644 index 0000000..6dc5d7e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Constants.html @@ -0,0 +1,894 @@ + + + + Constants Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

Constants

+

The following constants are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification
    + +
    +
    +

    Swift

    +
    static let SUUpdaterDidFinishLoadingAppCast: NSNotification.Name
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterDidFindValidUpdateNotification
    + +
    +
    +

    Swift

    +
    static let SUUpdaterDidFindValidUpdate: NSNotification.Name
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterDidNotFindUpdateNotification
    + +
    +
    +

    Swift

    +
    static let SUUpdaterDidNotFindUpdate: NSNotification.Name
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterWillRestartNotification
    + +
    +
    +

    Swift

    +
    static let SUUpdaterWillRestart: NSNotification.Name
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterAppcastItemNotificationKey
    + +
    +
    +

    Swift

    +
    let SUUpdaterAppcastItemNotificationKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUUpdaterAppcastNotificationKey
    + +
    +
    +

    Swift

    +
    let SUUpdaterAppcastNotificationKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerApplicationNameKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerApplicationNameKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerApplicationVersionKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerApplicationVersionKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPU64bitKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPU64bitKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPUCountKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPUCountKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPUFrequencyKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPUFrequencyKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPUTypeKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPUTypeKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerCPUSubtypeKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerCPUSubtypeKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerHardwareModelKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerHardwareModelKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerMemoryKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerMemoryKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerOperatingSystemVersionKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerOperatingSystemVersionKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSystemProfilerPreferredLanguageKey
    + +
    +
    +

    Swift

    +
    let SUSystemProfilerPreferredLanguageKey: String
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUSparkleErrorDomain + +
    +
    +
    +
    +
    +
    +

    Error domain used by Sparkle

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SUSparkleErrorDomain
    + +
    +
    +

    Swift

    +
    let SUSparkleErrorDomain: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SPUNoUpdateFoundReasonKey
    + +
    +
    +

    Swift

    +
    let SPUNoUpdateFoundReasonKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SPULatestAppcastItemFoundKey
    + +
    +
    +

    Swift

    +
    let SPULatestAppcastItemFoundKey: String
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    extern NSString *const SPUNoUpdateFoundUserInitiatedKey
    + +
    +
    +

    Swift

    +
    let SPUNoUpdateFoundUserInitiatedKey: String
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums.html new file mode 100644 index 0000000..7bf7e8c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums.html @@ -0,0 +1,427 @@ + + + + Enumerations Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

Enumerations

+

The following enumerations are available globally.

+ +
+
+
+
    +
  • +
    + + + + SPUUpdateCheck + +
    +
    +
    +
    +
    +
    +

    Describes the type of update check being performed.

    + +

    Each update check corresponds to an update check method on SPUUpdater.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SPUUpdateCheck : NSInteger {}
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUserUpdateChoice + +
    +
    +
    +
    +
    +
    +

    A choice made by the user when prompted with a new update.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SPUUserUpdateChoice : NSInteger {}
    + +
    +
    +

    Swift

    +
    enum SPUUserUpdateChoice : Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUserUpdateStage + +
    +
    +
    +
    +
    +
    +

    Describes the current stage an update is undergoing.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SPUUserUpdateStage : NSInteger {}
    + +
    +
    +

    Swift

    +
    enum SPUUserUpdateStage : Int
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    NS_ENUM(OSStatus, SUError) {
    +    // Configuration phase errors
    +    SUNoPublicDSAFoundError = 0001,
    +    SUInsufficientSigningError = 0002,
    +    SUInsecureFeedURLError = 0003,
    +    SUInvalidFeedURLError = 0004,
    +    SUInvalidUpdaterError = 0005,
    +    SUInvalidHostBundleIdentifierError = 0006,
    +    SUInvalidHostVersionError = 0007,
    +    
    +    // Appcast phase errors.
    +    SUAppcastParseError = 1000,
    +    SUNoUpdateError = 1001,
    +    SUAppcastError = 1002,
    +    SURunningFromDiskImageError = 1003,
    +    SUResumeAppcastError = 1004,
    +    SURunningTranslocated = 1005,
    +    SUWebKitTerminationError = 1006,
    +
    +    // Download phase errors.
    +    SUTemporaryDirectoryError = 2000,
    +    SUDownloadError = 2001,
    +
    +    // Extraction phase errors.
    +    SUUnarchivingError = 3000,
    +    SUSignatureError = 3001,
    +    SUValidationError = 3002,
    +    
    +    // Installation phase errors.
    +    SUFileCopyFailure = 4000,
    +    SUAuthenticationFailure = 4001,
    +    SUMissingUpdateError = 4002,
    +    SUMissingInstallerToolError = 4003,
    +    SURelaunchError = 4004,
    +    SUInstallationError = 4005,
    +    SUDowngradeError = 4006,
    +    SUInstallationCanceledError = 4007,
    +    SUInstallationAuthorizeLaterError = 4008,
    +    SUNotValidUpdateError = 4009,
    +    SUAgentInvalidationError = 4010,
    +    
    +    // API misuse errors.
    +    SUIncorrectAPIUsageError = 5000
    +}
    + +
    +
    +

    Swift

    +
    enum SUError : OSStatus
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The reason why a new update is not available.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    enum SPUNoUpdateFoundReason : OSStatus {}
    + +
    +
    +

    Swift

    +
    enum SPUNoUpdateFoundReason : OSStatus
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUNoUpdateFoundReason.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUNoUpdateFoundReason.html new file mode 100644 index 0000000..3794bae --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUNoUpdateFoundReason.html @@ -0,0 +1,394 @@ + + + + SPUNoUpdateFoundReason Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUNoUpdateFoundReason

+
+
+

Objective-C

+
enum SPUNoUpdateFoundReason : OSStatus {}
+ +
+
+

Swift

+
enum SPUNoUpdateFoundReason : OSStatus
+ +
+
+

The reason why a new update is not available.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable for an unknown reason.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonUnknown
    + +
    +
    +

    Swift

    +
    case unknown = 0
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable because the user is on the latest known version in the appcast feed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonOnLatestVersion
    + +
    +
    +

    Swift

    +
    case onLatestVersion = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable because the user is on a version newer than the latest known version in the appcast feed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonOnNewerThanLatestVersion
    + +
    +
    +

    Swift

    +
    case onNewerThanLatestVersion = 2
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable because the user’s operating system version is too old for the update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonSystemIsTooOld
    + +
    +
    +

    Swift

    +
    case systemIsTooOld = 3
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A new update is unavailable because the user’s operating system version is too new for the update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUNoUpdateFoundReasonSystemIsTooNew
    + +
    +
    +

    Swift

    +
    case systemIsTooNew = 4
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUpdateCheck.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUpdateCheck.html new file mode 100644 index 0000000..87c8977 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUpdateCheck.html @@ -0,0 +1,312 @@ + + + + SPUUpdateCheck Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdateCheck

+
+
+ +
enum SPUUpdateCheck : NSInteger {}
+ +
+
+

Describes the type of update check being performed.

+ +

Each update check corresponds to an update check method on SPUUpdater.

+ +
+
+
+ +
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUserUpdateChoice.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUserUpdateChoice.html new file mode 100644 index 0000000..9ab81cc --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUserUpdateChoice.html @@ -0,0 +1,330 @@ + + + + SPUUserUpdateChoice Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUserUpdateChoice

+
+
+

Objective-C

+
enum SPUUserUpdateChoice : NSInteger {}
+ +
+
+

Swift

+
enum SPUUserUpdateChoice : Int
+ +
+
+

A choice made by the user when prompted with a new update.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Dismisses the update and skips being notified of it in the future.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateChoiceSkip
    + +
    +
    +

    Swift

    +
    case skip = 0
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Downloads (if needed) and installs the update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateChoiceInstall
    + +
    +
    +

    Swift

    +
    case install = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Dismisses the update until Sparkle reminds the user of it at a later time.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateChoiceDismiss
    + +
    +
    +

    Swift

    +
    case dismiss = 2
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUserUpdateStage.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUserUpdateStage.html new file mode 100644 index 0000000..e7b72a9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SPUUserUpdateStage.html @@ -0,0 +1,330 @@ + + + + SPUUserUpdateStage Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUserUpdateStage

+
+
+

Objective-C

+
enum SPUUserUpdateStage : NSInteger {}
+ +
+
+

Swift

+
enum SPUUserUpdateStage : Int
+ +
+
+

Describes the current stage an update is undergoing.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    The update has not been downloaded.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateStageNotDownloaded
    + +
    +
    +

    Swift

    +
    case notDownloaded = 0
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The update has already been downloaded but not begun installing.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateStageDownloaded
    + +
    +
    +

    Swift

    +
    case downloaded = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    The update has already been downloaded and began installing in the background.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SPUUserUpdateStageInstalling
    + +
    +
    +

    Swift

    +
    case installing = 2
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SUError.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SUError.html new file mode 100644 index 0000000..75f2bf3 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Enums/SUError.html @@ -0,0 +1,1269 @@ + + + + SUError Enumeration Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUError

+
+
+

Objective-C

+
NS_ENUM(OSStatus, SUError) {
+    // Configuration phase errors
+    SUNoPublicDSAFoundError = 0001,
+    SUInsufficientSigningError = 0002,
+    SUInsecureFeedURLError = 0003,
+    SUInvalidFeedURLError = 0004,
+    SUInvalidUpdaterError = 0005,
+    SUInvalidHostBundleIdentifierError = 0006,
+    SUInvalidHostVersionError = 0007,
+    
+    // Appcast phase errors.
+    SUAppcastParseError = 1000,
+    SUNoUpdateError = 1001,
+    SUAppcastError = 1002,
+    SURunningFromDiskImageError = 1003,
+    SUResumeAppcastError = 1004,
+    SURunningTranslocated = 1005,
+    SUWebKitTerminationError = 1006,
+
+    // Download phase errors.
+    SUTemporaryDirectoryError = 2000,
+    SUDownloadError = 2001,
+
+    // Extraction phase errors.
+    SUUnarchivingError = 3000,
+    SUSignatureError = 3001,
+    SUValidationError = 3002,
+    
+    // Installation phase errors.
+    SUFileCopyFailure = 4000,
+    SUAuthenticationFailure = 4001,
+    SUMissingUpdateError = 4002,
+    SUMissingInstallerToolError = 4003,
+    SURelaunchError = 4004,
+    SUInstallationError = 4005,
+    SUDowngradeError = 4006,
+    SUInstallationCanceledError = 4007,
+    SUInstallationAuthorizeLaterError = 4008,
+    SUNotValidUpdateError = 4009,
+    SUAgentInvalidationError = 4010,
+    
+    // API misuse errors.
+    SUIncorrectAPIUsageError = 5000
+}
+ +
+
+

Swift

+
enum SUError : OSStatus
+ +
+
+

Undocumented

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUNoPublicDSAFoundError = 0001
    + +
    +
    +

    Swift

    +
    case noPublicDSAFoundError = 1
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInsufficientSigningError = 0002
    + +
    +
    +

    Swift

    +
    case insufficientSigningError = 2
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInsecureFeedURLError = 0003
    + +
    +
    +

    Swift

    +
    case insecureFeedURLError = 3
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUInvalidFeedURLError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInvalidFeedURLError = 0004
    + +
    +
    +

    Swift

    +
    case invalidFeedURLError = 4
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUInvalidUpdaterError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInvalidUpdaterError = 0005
    + +
    +
    +

    Swift

    +
    case invalidUpdaterError = 5
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInvalidHostBundleIdentifierError = 0006
    + +
    +
    +

    Swift

    +
    case invalidHostBundleIdentifierError = 6
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInvalidHostVersionError = 0007
    + +
    +
    +

    Swift

    +
    case invalidHostVersionError = 7
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUAppcastParseError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUAppcastParseError = 1000
    + +
    +
    +

    Swift

    +
    case appcastParseError = 1000
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUNoUpdateError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUNoUpdateError = 1001
    + +
    +
    +

    Swift

    +
    case noUpdateError = 1001
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUAppcastError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUAppcastError = 1002
    + +
    +
    +

    Swift

    +
    case appcastError = 1002
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SURunningFromDiskImageError = 1003
    + +
    +
    +

    Swift

    +
    case runningFromDiskImageError = 1003
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUResumeAppcastError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUResumeAppcastError = 1004
    + +
    +
    +

    Swift

    +
    case resumeAppcastError = 1004
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SURunningTranslocated + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SURunningTranslocated = 1005
    + +
    +
    +

    Swift

    +
    case runningTranslocated = 1005
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUWebKitTerminationError = 1006
    + +
    +
    +

    Swift

    +
    case webKitTerminationError = 1006
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUTemporaryDirectoryError = 2000
    + +
    +
    +

    Swift

    +
    case temporaryDirectoryError = 2000
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUDownloadError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUDownloadError = 2001
    + +
    +
    +

    Swift

    +
    case downloadError = 2001
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUUnarchivingError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUUnarchivingError = 3000
    + +
    +
    +

    Swift

    +
    case unarchivingError = 3000
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUSignatureError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUSignatureError = 3001
    + +
    +
    +

    Swift

    +
    case signatureError = 3001
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUValidationError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUValidationError = 3002
    + +
    +
    +

    Swift

    +
    case validationError = 3002
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUFileCopyFailure + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUFileCopyFailure = 4000
    + +
    +
    +

    Swift

    +
    case fileCopyFailure = 4000
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUAuthenticationFailure = 4001
    + +
    +
    +

    Swift

    +
    case authenticationFailure = 4001
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUMissingUpdateError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUMissingUpdateError = 4002
    + +
    +
    +

    Swift

    +
    case missingUpdateError = 4002
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUMissingInstallerToolError = 4003
    + +
    +
    +

    Swift

    +
    case missingInstallerToolError = 4003
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SURelaunchError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SURelaunchError = 4004
    + +
    +
    +

    Swift

    +
    case relaunchError = 4004
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUInstallationError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInstallationError = 4005
    + +
    +
    +

    Swift

    +
    case installationError = 4005
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUDowngradeError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUDowngradeError = 4006
    + +
    +
    +

    Swift

    +
    case downgradeError = 4006
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInstallationCanceledError = 4007
    + +
    +
    +

    Swift

    +
    case installationCanceledError = 4007
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUInstallationAuthorizeLaterError = 4008
    + +
    +
    +

    Swift

    +
    case installationAuthorizeLaterError = 4008
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUNotValidUpdateError + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUNotValidUpdateError = 4009
    + +
    +
    +

    Swift

    +
    case notValidUpdateError = 4009
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUAgentInvalidationError = 4010
    + +
    +
    +

    Swift

    +
    case agentInvalidationError = 4010
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    SUIncorrectAPIUsageError = 5000
    + +
    +
    +

    Swift

    +
    case incorrectAPIUsageError = 5000
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols.html new file mode 100644 index 0000000..27ae1ab --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols.html @@ -0,0 +1,432 @@ + + + + Protocols Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

Protocols

+

The following protocols are available globally.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    A protocol for Sparkle’s standard user driver’s delegate

    + +

    This includes methods related to UI interactions

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SPUStandardUserDriverDelegate <NSObject>
    + +
    +
    +

    Swift

    +
    protocol SPUStandardUserDriverDelegate : NSObjectProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUpdaterDelegate + +
    +
    +
    +
    +
    +
    +

    Provides delegation methods to control the behavior of an SPUUpdater object.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SPUUpdaterDelegate <NSObject>
    + +
    +
    +

    Swift

    +
    protocol SPUUpdaterDelegate : NSObjectProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUserDriver + +
    +
    +
    +
    +
    +
    +

    The API in Sparkle for controlling the user interaction.

    + +

    This protocol is used for implementing a user interface for the Sparkle updater. Sparkle’s internal drivers tell +an object that implements this protocol what actions to take and show to the user.

    + +

    Every method in this protocol can be assumed to be called from the main thread.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SPUUserDriver <NSObject>
    + +
    +
    +

    Swift

    +
    protocol SPUUserDriver : NSObjectProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUUpdaterDelegate + +
    +
    +
    +
    +
    +
    +

    Deprecated

    +

    Deprecated in Sparkle 2. See SPUUpdaterDelegate instead

    + +
    +
    +

    Undocumented

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SUUpdaterDelegate <NSObject>
    + +
    +
    +

    Swift

    +
    protocol SUUpdaterDelegate : NSObjectProtocol
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUVersionComparison + +
    +
    +
    +
    +
    +
    +

    Provides version comparison facilities for Sparkle.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SUVersionComparison
    + +
    +
    +

    Swift

    +
    protocol SUVersionComparison
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUVersionDisplay + +
    +
    +
    +
    +
    +
    +

    Applies special display formatting to version numbers.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @protocol SUVersionDisplay
    + +
    +
    +

    Swift

    +
    protocol SUVersionDisplay
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUStandardUserDriverDelegate.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUStandardUserDriverDelegate.html new file mode 100644 index 0000000..9382d80 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUStandardUserDriverDelegate.html @@ -0,0 +1,330 @@ + + + + SPUStandardUserDriverDelegate Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUStandardUserDriverDelegate

+
+
+

Objective-C

+
@protocol SPUStandardUserDriverDelegate <NSObject>
+ +
+
+

Swift

+
protocol SPUStandardUserDriverDelegate : NSObjectProtocol
+ +
+
+

A protocol for Sparkle’s standard user driver’s delegate

+ +

This includes methods related to UI interactions

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Called before showing a modal alert window, +to give the opportunity to hide attached windows that may get in the way.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)standardUserDriverWillShowModalAlert;
    + +
    +
    +

    Swift

    +
    optional func standardUserDriverWillShowModalAlert()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after showing a modal alert window, +to give the opportunity to hide attached windows that may get in the way.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)standardUserDriverDidShowModalAlert;
    + +
    +
    +

    Swift

    +
    optional func standardUserDriverDidShowModalAlert()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an object that formats version numbers for display to the user. +If you don’t implement this method or return nil, the standard version formatter will be used.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (id<SUVersionDisplay> _Nullable)standardUserDriverRequestsVersionDisplayer;
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUUpdaterDelegate.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUUpdaterDelegate.html new file mode 100644 index 0000000..84ef51c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUUpdaterDelegate.html @@ -0,0 +1,2379 @@ + + + + SPUUpdaterDelegate Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUpdaterDelegate

+
+
+

Objective-C

+
@protocol SPUUpdaterDelegate <NSObject>
+ +
+
+

Swift

+
protocol SPUUpdaterDelegate : NSObjectProtocol
+ +
+
+

Provides delegation methods to control the behavior of an SPUUpdater object.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Returns whether to allow Sparkle to check for updates.

    + +

    For example, this may be used to prevent Sparkle from interrupting a setup assistant. +Alternatively, you may want to consider starting the updater after eg: the setup assistant finishes

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +    mayPerformUpdateCheck:(SPUUpdateCheck)updateCheck
    +                    error:(NSError *_Nullable *_Nullable)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, mayPerform updateCheck: SPUUpdateCheck) throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + updateCheck + + +
    +

    The type of update check that will be performed if the updater is allowed to check for updates.

    +
    +
    + + error + + +
    +

    The (optionally) populated error object if the updater may not perform a new update check.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater is allowed to check for updates, otherwise NO

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the set of Sparkle channels the updater is allowed to find new updates from.

    + +

    An appcast item can specify a channel the update is posted to. Without specifying a channel, the appcast item is posted to the default channel. +For instance:

    +
    <item>
    +   <sparkle:version>2.0 Beta 1</sparkle:version>
    +   <sparkle:channel>beta</sparkle:channel>
    +</item>
    +
    + +

    This example posts an update to the beta channel, so only updaters that are allowed to use the beta channel can find this update.

    + +

    If the <sparkle:channel> element is not present, the update item is posted to the default channel and can be found by any updater.

    + +

    You can pick any name you’d like for the channel. The valid characters for channel names are letters, numbers, dashes, underscores, and periods.

    + +

    Note to use this feature, all app versions that your users may update from in your feed must use a version of Sparkle that supports this feature. +This feature was added in Sparkle 2.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull NSSet<NSString *> *)allowedChannelsForUpdater:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func allowedChannels(for updater: SPUUpdater) -> Set<String>
    + +
    +
    +
    +

    Return Value

    +

    The set of channel names the updater is allowed to find new updates in. An empty set is the default behavior, + which means the updater will only look for updates in the default channel.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns a custom appcast URL used for checking for new updates.

    + +

    Override this to dynamically specify the feed URL.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable NSString *)feedURLStringForUpdater:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func feedURLString(for updater: SPUUpdater) -> String?
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    An appcast feed URL to check for new updates in, or nil for the default behavior and if you don’t want to be delegated this task.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns additional parameters to append to the appcast URL’s query string.

    + +

    This is potentially based on whether or not Sparkle will also be sending along the system profile.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nonnull NSArray<NSDictionary<NSString *, NSString *> *> *)
    +    feedParametersForUpdater:(nonnull SPUUpdater *)updater
    +        sendingSystemProfile:(BOOL)sendingProfile;
    + +
    +
    +

    Swift

    +
    optional func feedParameters(for updater: SPUUpdater, sendingSystemProfile sendingProfile: Bool) -> [[String : String]]
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + sendingProfile + + +
    +

    Whether the system profile will also be sent.

    +
    +
    +
    +
    +

    Return Value

    +

    An array of dictionaries with keys: key, value, displayKey, displayValue, the latter two being specifically for display to the user.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether Sparkle should prompt the user about checking for new updates automatically.

    + +

    Use this to override the default behavior.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterShouldPromptForPermissionToCheck(forUpdates updater: SPUUpdater) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater should prompt for permission to check for new updates automatically, otherwise NO

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an allowed list of system profile keys to be appended to the appcast URL’s query string.

    + +

    By default all keys will be included. This method allows overriding which keys should only be allowed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable NSArray<NSString *> *)allowedSystemProfileKeysForUpdater:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func allowedSystemProfileKeys(for updater: SPUUpdater) -> [String]?
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    An array of system profile keys to include in the appcast URL’s query string. Elements must be one of the SUSystemProfiler*Key constants. Return nil for the default behavior and if you don’t want to be delegated this task.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after Sparkle has downloaded the appcast from the remote server.

    + +

    Implement this if you want to do some special handling with the appcast once it finishes loading.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didFinishLoadingAppcast:(nonnull SUAppcast *)appcast;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didFinishLoading appcast: SUAppcast)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + appcast + + +
    +

    The appcast that was downloaded from the remote server.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when a new valid update is found by the update driver.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didFindValidUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didFindValidUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be installed.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when a valid new update is not found.

    + +

    There are various reasons a new update is unavailable and can’t be installed.

    + +

    The userInfo dictionary on the error is populated with three keys:

    + + + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updaterDidNotFindUpdate:(nonnull SPUUpdater *)updater
    +                          error:(nonnull NSError *)error;
    + +
    +
    +

    Swift

    +
    optional func updaterDidNotFindUpdate(_ updater: SPUUpdater, error: Error)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + error + + +
    +

    An error containing information on why a new valid update was not found

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when a valid new update is not found.

    + +

    If more information is needed on why an update was not found, use -[SPUUpdaterDelegate updaterDidNotFindUpdate:error:] instead.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updaterDidNotFindUpdate:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterDidNotFindUpdate(_ updater: SPUUpdater)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the item in the appcast corresponding to the update that should be installed.

    + +

    Please consider using or migrating to other supported features before adopting this method. +Specifically:

    + +
      +
    • If you want to filter out certain tagged updates (like beta updates), consider -[SPUUpdaterDelegate allowedChannelsForUpdater:] instead.
    • +
    • If you want to treat certain updates as informational-only, consider supplying <sparkle:informationalUpdate> with a set of affected versions users are updating from.
    • +
    + +

    If you’re using special logic or extensions in your appcast, implement this to use your own logic for finding a valid update, if any, in the given appcast.

    + +

    Do not base your logic by filtering out items with a minimum or maximum OS version or minimum autoupdate version +because Sparkle already has logic for determining whether or not those items should be filtered out.

    + +

    Also do not return a non-top level item from the appcast such as a delta item. Delta items will be ignored. +Sparkle picks the delta item from your selection if the appropriate one is available.

    + +

    This method will not be invoked with an appcast that has zero items. Pick the best item from the appcast. +If an item is available that has the same version as the application or bundle to update, do not pick an item that is worse than that version.

    + +

    This method may be called multiple times for different selections and filters. This method should be efficient.

    + +

    Return +[SUAppcastItem emptyAppcastItem] if no appcast item is valid.

    + +

    Return nil if you don’t want to be delegated this task and want to let Sparkle handle picking the best valid update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable SUAppcastItem *)
    +    bestValidUpdateInAppcast:(nonnull SUAppcast *)appcast
    +                  forUpdater:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func bestValidUpdate(in appcast: SUAppcast, for updater: SPUUpdater) -> SUAppcastItem?
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + appcast + + +
    +

    The appcast that was downloaded from the remote server.

    +
    +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    The best valid appcast item.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether or not the updater should proceed with the new chosen update from the appcast.

    + +

    By default, the updater will always proceed with the best selected update found in an appcast. Override this to override this behavior.

    + +

    If you return NO and populate the error, the user is not shown this updateItem nor is the update downloaded or installed.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +    shouldProceedWithUpdate:(nonnull SUAppcastItem *)updateItem
    +                updateCheck:(SPUUpdateCheck)updateCheck
    +                      error:(NSError *_Nullable *_Nullable)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, shouldProceedWithUpdate updateItem: SUAppcastItem, updateCheck: SPUUpdateCheck) throws
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + updateItem + + +
    +

    The selected update item to proceed with.

    +
    +
    + + updateCheck + + +
    +

    The type of update check that would be performed if proceeded.

    +
    +
    + + error + + +
    +

    An error object that must be populated by the delegate if the updater should not proceed with the update.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater should proceed with updateItem, otherwise NO if the updater should not proceed with the update with an error populated.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when an update is skipped by the user.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    userDidSkipThisVersion:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, userDidSkipThisVersion item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that the user skipped.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether the release notes (if available) should be downloaded after an update is found and shown.

    + +

    This is specifically for the <releaseNotesLink> element in the appcast item.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +    shouldDownloadReleaseNotesForUpdate:(nonnull SUAppcastItem *)updateItem;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, shouldDownloadReleaseNotesForUpdate updateItem: SUAppcastItem) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + updateItem + + +
    +

    The update item to download and show release notes from.

    +
    +
    +
    +
    +

    Return Value

    +

    YES to download and show the release notes if available, otherwise NO. The default behavior is YES.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately before downloading the specified update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    willDownloadUpdate:(nonnull SUAppcastItem *)item
    +           withRequest:(nonnull NSMutableURLRequest *)request;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willDownloadUpdate item: SUAppcastItem, with request: NSMutableURLRequest)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be downloaded.

    +
    +
    + + request + + +
    +

    The mutable URL request that will be used to download the update.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately after succesfull download of the specified update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didDownloadUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didDownloadUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The SUUpdater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that has been downloaded.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after the specified update failed to download.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    failedToDownloadUpdate:(nonnull SUAppcastItem *)item
    +                     error:(nonnull NSError *)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, failedToDownloadUpdate item: SUAppcastItem, error: Error)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that failed to download.

    +
    +
    + + error + + +
    +

    The error generated by the failed download.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when the user cancels an update while it is being downloaded.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)userDidCancelDownload:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func userDidCancelDownload(_ updater: SPUUpdater)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately before extracting the specified downloaded update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    willExtractUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willExtractUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The SUUpdater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be extracted.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately after extracting the specified downloaded update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didExtractUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didExtractUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The SUUpdater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that has been extracted.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately before installing the specified update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    willInstallUpdate:(nonnull SUAppcastItem *)item;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willInstallUpdate item: SUAppcastItem)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be installed.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether the relaunch should be delayed in order to perform other tasks.

    + +

    This is not called if the user didn’t relaunch on the previous update, +in that case it will immediately restart.

    + +

    This may also not be called if the application is not going to relaunch after it terminates.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +    shouldPostponeRelaunchForUpdate:(nonnull SUAppcastItem *)item
    +                 untilInvokingBlock:(nonnull void (^)(void))installHandler;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, shouldPostponeRelaunchForUpdate item: SUAppcastItem, untilInvokingBlock installHandler: @escaping () -> Void) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be installed.

    +
    +
    + + installHandler + + +
    +

    The install handler that must be completed before continuing with the relaunch.

    +
    +
    +
    +
    +

    Return Value

    +

    YES to delay the relaunch until installHandler is invoked.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns whether the application should be relaunched at all.

    + +

    Some apps cannot be relaunched under certain circumstances. +This method can be used to explicitly prevent a relaunch.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updaterShouldRelaunchApplication:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterShouldRelaunchApplication(_ updater: SPUUpdater) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the updater should be relaunched, otherwise NO if it shouldn’t.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called immediately before relaunching.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updaterWillRelaunchApplication:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterWillRelaunchApplication(_ updater: SPUUpdater)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns an object that compares version numbers to determine their arithmetic relation to each other.

    + +

    This method allows you to provide a custom version comparator. +If you don’t implement this method or return nil, +the standard version comparator will be used.

    + +

    Note that the standard version comparator may be used during installation for preventing a downgrade, +even if you provide a custom comparator here.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable id<SUVersionComparison>)versionComparatorForUpdater:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    The custom version comparator or nil if you don’t want to be delegated this task.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when a background update will be scheduled after a delay.

    + +

    Automatic update checks need to be enabled for this to trigger.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    willScheduleUpdateCheckAfterDelay:(NSTimeInterval)delay;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willScheduleUpdateCheckAfterDelay delay: TimeInterval)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + delay + + +
    +

    The delay in seconds until the next scheduled update will occur.

    +
    +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when no update checks will be scheduled in the future.

    + +

    This may later change if automatic update checks become enabled.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updaterWillNotScheduleUpdateCheck:(nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func updaterWillNotScheduleUpdateCheck(_ updater: SPUUpdater)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Returns the decryption password (if any) which is used to extract the update archive DMG.

    + +

    Return nil if no password should be used.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (nullable NSString *)decryptionPasswordForUpdater:
    +    (nonnull SPUUpdater *)updater;
    + +
    +
    +

    Swift

    +
    optional func decryptionPassword(for updater: SPUUpdater) -> String?
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    +
    +
    +

    Return Value

    +

    The password used for decrypting the archive, or nil if no password should be used.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called when an update is scheduled to be silently installed on quit after downloading the update automatically.

    + +

    If the updater is given responsibility, it can later remind the user an update is available if they have not terminated the application for a long time.

    + +

    Also if the updater is given responsibility and the update item is marked critical, the new update will be presented to the user immediately after.

    + +

    Even if the immediateInstallHandler is not invoked, the installer will attempt to install the update on termination.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updater:(nonnull SPUUpdater *)updater
    +       willInstallUpdateOnQuit:(nonnull SUAppcastItem *)item
    +    immediateInstallationBlock:(nonnull void (^)(void))immediateInstallHandler;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, willInstallUpdateOnQuit item: SUAppcastItem, immediateInstallationBlock immediateInstallHandler: @escaping () -> Void) -> Bool
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + item + + +
    +

    The appcast item corresponding to the update that is proposed to be installed.

    +
    +
    + + immediateInstallHandler + + +
    +

    The install handler to immediately install the update. No UI interaction will be shown and the application will be relaunched after installation.

    +
    +
    +
    +
    +

    Return Value

    +

    YES if the delegate will handle installing the update or NO if the updater should be given responsibility.

    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after the update driver aborts due to an error.

    + +

    The update driver runs when checking for updates. This delegate method is called an error occurs during this process.

    + +

    Some special possible values of error.code are:

    + +
      +
    • SUNoUpdateError: No new update was found.
    • +
    • SUInstallationCanceledError: The user canceled installing the update when requested for authorization.

    • +
    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didAbortWithError:(nonnull NSError *)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didAbortWithError error: Error)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + error + + +
    +

    The error that caused the update driver to abort.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Called after the update driver finishes.

    + +

    The update driver runs when checking for updates. This delegate method is called when that check is finished.

    + +

    An update may be scheduled to be installed during the update cycle, or no updates may be found, or an available update may be dismissed or skipped (which is the same as no error).

    + +

    If the error is nil, no error has occurred.

    + +

    Some special possible values of error.code are:

    + +
      +
    • SUNoUpdateError: No new update was found.
    • +
    • SUInstallationCanceledError: The user canceled installing the update when requested for authorization.

    • +
    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)updater:(nonnull SPUUpdater *)updater
    +    didFinishUpdateCycleForUpdateCheck:(SPUUpdateCheck)updateCheck
    +                                 error:(nullable NSError *)error;
    + +
    +
    +

    Swift

    +
    optional func updater(_ updater: SPUUpdater, didFinishUpdateCycleFor updateCheck: SPUUpdateCheck, error: Error?)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + updater + + +
    +

    The updater instance.

    +
    +
    + + updateCheck + + +
    +

    The type of update check was performed.

    +
    +
    + + error + + +
    +

    The error that caused the update driver to abort. This is nil if the update driver finished normally and there is no error.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Please use -[SPUUpdaterDelegate updater:mayPerformUpdateCheck:error:] instead.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (BOOL)updaterMayCheckForUpdates:(SPUUpdater *)updater __deprecated_msg("Please use -[SPUUpdaterDelegate updater:mayPerformUpdateCheck:error:] instead.");
    + +
    +
    +

    Swift

    +
    optional func updaterMayCheck(forUpdates updater: SPUUpdater) -> Bool
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUUserDriver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUUserDriver.html new file mode 100644 index 0000000..c80c5d6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SPUUserDriver.html @@ -0,0 +1,1368 @@ + + + + SPUUserDriver Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SPUUserDriver

+
+
+

Objective-C

+
@protocol SPUUserDriver <NSObject>
+ +
+
+

Swift

+
protocol SPUUserDriver : NSObjectProtocol
+ +
+
+

The API in Sparkle for controlling the user interaction.

+ +

This protocol is used for implementing a user interface for the Sparkle updater. Sparkle’s internal drivers tell +an object that implements this protocol what actions to take and show to the user.

+ +

Every method in this protocol can be assumed to be called from the main thread.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Show an updater permission request to the user

    + +

    Ask the user for their permission regarding update checks. + This is typically only called once per app installation.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)
    +    showUpdatePermissionRequest:(nonnull SPUUpdatePermissionRequest *)request
    +                          reply:(nonnull void (^)(
    +                                    SUUpdatePermissionResponse *_Nonnull))reply;
    + +
    +
    +

    Swift

    +
    func show(_ request: SPUUpdatePermissionRequest) async -> SUUpdatePermissionResponse
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + request + + +
    +

    The update permission request.

    +
    +
    + + reply + + +
    +

    A reply with a update permission response.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user initating an update check

    + +

    Respond to the user initiating an update check. Sparkle uses this to show the user a window with an indeterminate progress bar.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUserInitiatedUpdateCheckWithCancellation:
    +    (nonnull void (^)(void))cancellation;
    + +
    +
    +

    Swift

    +
    func showUserInitiatedUpdateCheck(cancellation: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + cancellation + + +
    +

    Invoke this cancellation block to cancel the update check before the update check is completed.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user a new update is found.

    + +

    Let the user know a new update is found and ask them what they want to do. + Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.

    + +

    state.userInitiated indicates if the update was initiated by the user or if it was automatically scheduled in the background.

    + +

    Additionally, these properties on the appcastItem are of importance:

    + +

    appcastItem.informationOnlyUpdate indicates if the update is only informational and should not be downloaded. You can direct the user to the infoURL property of the appcastItem in their web browser. Sometimes information only updates are used as a fallback in case a bad update is shipped, so you’ll want to support this case.

    + +

    appcastItem.majorUpgrade indicates if the update is a major or paid upgrade.

    + +

    appcastItem.criticalUpdate indicates if the update is a critical update.

    + +

    A reply of SPUUserUpdateChoiceDismiss dismisses the update for the time being. The user may be reminded of the update at a later point. + If the state.stage is SPUUserUpdateStateDownloaded, the downloaded update is kept after dismissing until the next time an update is shown to the user. + If the state.stage is SPUUserUpdateStateInstalling, the installing update is also preserved after dismissing. In this state however, the update will also still be installed after the application is terminated.

    + +

    A reply of SPUUserUpdateChoiceSkip skips this particular version and won’t notify the user again, unless they initiate an update check themselves. + If appcastItem.majorUpgrade is YES, the major update and any future minor updates to that major release are skipped. + If the state.stage is SPUUpdateStateInstalling, the installation is also canceled when the update is skipped.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateFoundWithAppcastItem:(nonnull SUAppcastItem *)appcastItem
    +                                 state:(nonnull SPUUserUpdateState *)state
    +                                 reply:(nonnull void (^)(SPUUserUpdateChoice))
    +                                           reply;
    + +
    +
    +

    Swift

    +
    func showUpdateFound(with appcastItem: SUAppcastItem, state: SPUUserUpdateState) async -> SPUUserUpdateChoice
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + +
    + + appcastItem + + +
    +

    The Appcast Item containing information that reflects the new update.

    +
    +
    + + state + + +
    +

    The current state of the user update. +The state.stage values are: +SPUUpdateStateNotDownloaded - Update has not been downloaded yet. +SPUUpdateStateDownloaded - Update has already been downloaded but not started installing yet. +SPUUpdateStateInstalling - Update has been downloaded and already started installing.

    +
    +
    + + reply + + +
    +

    A reply of SPUUserUpdateChoiceInstall begins or resumes downloading or installing the update. +If the state.stage is SPUUserUpdateStateInstalling, this may send a quit event to the application and relaunch it immediately (in this state, this behaves as a fast “install and Relaunch”). Do not use this reply if appcastItem.informationOnlyUpdate is YES.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user the release notes for the new update

    + +

    Display the release notes to the user. This will be called after showing the new update. + This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. + That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateReleaseNotesWithDownloadData:
    +    (nonnull SPUDownloadData *)downloadData;
    + +
    +
    +

    Swift

    +
    func showUpdateReleaseNotes(with downloadData: SPUDownloadData)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + downloadData + + +
    +

    The data for the release notes that was downloaded from the new update’s appcast.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the new update’s release notes could not be downloaded

    + +

    This will be called after showing the new update. + This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. + That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateReleaseNotesFailedToDownloadWithError:
    +    (nonnull NSError *)error;
    + +
    +
    +

    Swift

    +
    func showUpdateReleaseNotesFailedToDownloadWithError(_ error: Error)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + error + + +
    +

    The error associated with why the new update’s release notes could not be downloaded.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user a new update was not found

    + +

    Let the user know a new update was not found after they tried initiating an update check. + Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.

    + +

    The userInfo dictionary is also populated with two keys:

    + +

    SPULatestAppcastItemFoundKey: if available, this may provide the latest SUAppcastItem that was found.

    + +

    SPUNoUpdateFoundReasonKey: if available, this will provide the SUNoUpdateFoundReason. For example the reason could be because + the latest version in the feed requires a newer OS version or could be because the user is already on the latest version.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateNotFoundWithError:(nonnull NSError *)error
    +                    acknowledgement:(nonnull void (^)(void))acknowledgement;
    + +
    +
    +

    Swift

    +
    func showUpdateNotFoundWithError(_ error: Error, acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + error + + +
    +

    The error associated with why a new update was not found. +There are various reasons a new update is unavailable and can’t be installed. +This error object is populated with recovery and suggestion strings suitable to be shown in an alert.

    +
    +
    + + acknowledgement + + +
    +

    Acknowledge to the updater that no update found error was shown.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user an update error occurred

    + +

    Let the user know that the updater failed with an error. This will not be invoked without the user having been + aware that an update was in progress.

    + +

    Before this point, any of the non-error user driver methods may have been invoked.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdaterError:(nonnull NSError *)error
    +         acknowledgement:(nonnull void (^)(void))acknowledgement;
    + +
    +
    +

    Swift

    +
    func showUpdaterError(_ error: Error, acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + error + + +
    +

    The error associated with what update error occurred.

    +
    +
    + + acknowledgement + + +
    +

    Acknowledge to the updater that the error was shown.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that downloading the new update initiated

    + +

    Let the user know that downloading the new update started.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showDownloadInitiatedWithCancellation:
    +    (nonnull void (^)(void))cancellation;
    + +
    +
    +

    Swift

    +
    func showDownloadInitiated(cancellation: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + cancellation + + +
    +

    Invoke this cancellation block to cancel the download at any point before -showDownloadDidStartExtractingUpdate is invoked.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user the content length of the new update that will be downloaded

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showDownloadDidReceiveExpectedContentLength:
    +    (uint64_t)expectedContentLength;
    + +
    +
    +

    Swift

    +
    func showDownloadDidReceiveExpectedContentLength(_ expectedContentLength: UInt64)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + expectedContentLength + + +
    +

    The expected content length of the new update being downloaded. +An implementor should be able to handle if this value is invalid (more or less than actual content length downloaded). +Additionally, this method may be called more than once for the same download in rare scenarios.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update download received more data

    + +

    This may be an appropriate time to advance a visible progress indicator of the download

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showDownloadDidReceiveDataOfLength:(uint64_t)length;
    + +
    +
    +

    Swift

    +
    func showDownloadDidReceiveData(ofLength length: UInt64)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + length + + +
    +

    The length of the data that was just downloaded

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update finished downloading and started extracting

    + +

    Sparkle uses this to show an indeterminate progress bar.

    + +

    Note that an update can resume at this point after having been downloaded before, + so this may be called without any of the download callbacks being invoked prior.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showDownloadDidStartExtractingUpdate;
    + +
    +
    +

    Swift

    +
    func showDownloadDidStartExtractingUpdate()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update is extracting with progress

    + +

    Let the user know how far along the update extraction is.

    + +

    Before this point, -showDownloadDidStartExtractingUpdate is called.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showExtractionReceivedProgress:(double)progress;
    + +
    +
    +

    Swift

    +
    func showExtractionReceivedProgress(_ progress: Double)
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + progress + + +
    +

    The progress of the extraction from a 0.0 to 1.0 scale

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -showInstallingUpdate + +
    +
    +
    +
    +
    +
    +

    Show the user that the update is installing

    + +

    Let the user know that the update is currently installing. Sparkle uses this to show an indeterminate progress bar.

    + +

    Before this point, -showExtractionReceivedProgress: may be called.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showInstallingUpdate;
    + +
    +
    +

    Swift

    +
    func showInstallingUpdate()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update is ready to install & relaunch

    + +

    Let the user know that the update is ready to install and relaunch, and ask them whether they want to proceed. + Note if the target application has already terminated, this method may not be invoked.

    + +

    A reply of SPUUserUpdateChoiceDismiss dismisses the update installation for the time being. Note the update may still be installed automatically after the application terminates.

    + +

    A reply of SPUUserUpdateChoiceSkip cancels the current update that has begun installing and dismisses the update. In this circumstance, the update is canceled but this update version is not skipped in the future.

    + +

    Before this point, -showInstallingUpdate will be called.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showReadyToInstallAndRelaunch:
    +    (nonnull void (^)(SPUUserUpdateChoice))reply;
    + +
    +
    +

    Swift

    +
    func showReadyToInstallAndRelaunch() async -> SPUUserUpdateChoice
    + +
    +
    +
    +

    Parameters

    + + + + + + + +
    + + reply + + +
    +

    A reply of SPUUserUpdateChoiceInstall installs the update the new update immediately. The application is relaunched only if it is still running by the time this reply is invoked. If the application terminates on its own, Sparkle will attempt to automatically install the update.

    +
    +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show or dismiss progress while a termination signal is being sent to the application from Sparkle’s installer

    + +

    Terminating and relaunching the application (if requested to be relaunched) may happen quickly, + or it may take some time to perform the final installation, or the termination signal can be canceled or delayed by the application or user.

    + +

    It is up to the implementor whether or not to decide to continue showing installation progress + or dismissing UI that won’t remain obscuring other parts of the user interface.

    + +

    This will not be invoked if the application that is being updated is already terminated.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showSendingTerminationSignal;
    + +
    +
    +

    Swift

    +
    func showSendingTerminationSignal()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Show the user that the update installation finished

    + +

    Let the user know that the update finished installing.

    + +

    This will only be invoked if the updater process is still alive, which is typically not the case if + the updater’s lifetime is tied to the application it is updating. This implementation must not try to reference + the old bundle prior to the installation, which will no longer be around.

    + +

    Before this point, -showSendingTerminationSignal or -showReadyToInstallAndRelaunch: may be called.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateInstalledAndRelaunched:(BOOL)relaunched
    +                         acknowledgement:
    +                             (nonnull void (^)(void))acknowledgement;
    + +
    +
    +

    Swift

    +
    func showUpdateInstalledAndRelaunched(_ relaunched: Bool, acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +

    Parameters

    + + + + + + + + + + + +
    + + relaunched + + +
    +

    Indicates if the update was relaunched.

    +
    +
    + + acknowledgement + + +
    +

    Acknowledge to the updater that the finished installation was shown.

    +
    +
    +
    +
    +
    +
  • +
  • +
    + + + + -showUpdateInFocus + +
    +
    +
    +
    +
    +
    +

    Show the user the current presented update or its progress in utmost focus

    + +

    The user wishes to check for updates while the user is being shown update progress. + Bring whatever is on screen to frontmost focus (permission request, update information, downloading or extraction status, choice to install update, etc).

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateInFocus;
    + +
    +
    +

    Swift

    +
    func showUpdateInFocus()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Dismiss the current update installation

    + +

    Stop and tear down everything. + Dismiss all update windows, alerts, progress, etc from the user. + Basically, stop everything that could have been started. Sparkle may invoke this when aborting or finishing an update.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)dismissUpdateInstallation;
    + +
    +
    +

    Swift

    +
    func dismissUpdateInstallation()
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Implement -showUpdateNotFoundWithError:acknowledgement: instead

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateNotFoundWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateNotFoundWithError:acknowledgement: instead");
    + +
    +
    +

    Swift

    +
    optional func showUpdateNotFound(acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Implement -showUpdateInstalledAndRelaunched:acknowledgement: instead

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)showUpdateInstallationDidFinishWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateInstalledAndRelaunched:acknowledgement: instead");
    + +
    +
    +

    Swift

    +
    optional func showUpdateInstallationDidFinish(acknowledgement: @escaping () -> Void)
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Deprecated

    +

    Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.

    + +
    +
    +

    Undocumented

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)dismissUserInitiatedUpdateCheck __deprecated_msg("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.");
    + +
    +
    +

    Swift

    +
    optional func dismissUserInitiatedUpdateCheck()
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUUpdaterDelegate.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUUpdaterDelegate.html new file mode 100644 index 0000000..5306e96 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUUpdaterDelegate.html @@ -0,0 +1,1220 @@ + + + + SUUpdaterDelegate Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUUpdaterDelegate

+
+

Deprecated

+

Deprecated in Sparkle 2. See SPUUpdaterDelegate instead

+ +
+
+
+

Objective-C

+
@protocol SUUpdaterDelegate <NSObject>
+ +
+
+

Swift

+
protocol SUUpdaterDelegate : NSObjectProtocol
+ +
+
+

Undocumented

+ +
+
+
+ +
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUVersionComparison.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUVersionComparison.html new file mode 100644 index 0000000..be424f7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUVersionComparison.html @@ -0,0 +1,270 @@ + + + + SUVersionComparison Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUVersionComparison

+
+
+

Objective-C

+
@protocol SUVersionComparison
+ +
+
+

Swift

+
protocol SUVersionComparison
+ +
+
+

Provides version comparison facilities for Sparkle.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    An abstract method to compare two version strings.

    + +

    Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, +and NSOrderedSame if they are equivalent.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (NSComparisonResult)compareVersion:(nonnull NSString *)versionA
    +                           toVersion:(nonnull NSString *)versionB;
    + +
    +
    +

    Swift

    +
    func compareVersion(_ versionA: String, toVersion versionB: String) -> ComparisonResult
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUVersionDisplay.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUVersionDisplay.html new file mode 100644 index 0000000..e608885 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/Protocols/SUVersionDisplay.html @@ -0,0 +1,270 @@ + + + + SUVersionDisplay Protocol Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

SUVersionDisplay

+
+
+

Objective-C

+
@protocol SUVersionDisplay
+ +
+
+

Swift

+
protocol SUVersionDisplay
+ +
+
+

Applies special display formatting to version numbers.

+ +
+
+
+
    +
  • + +
    +
    +
    +
    +
    +

    Formats two version strings.

    + +

    Both versions are provided so that important distinguishing information +can be displayed while also leaving out unnecessary/confusing parts.

    + +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    - (void)formatVersion:(NSString *_Nonnull *_Nonnull)inOutVersionA
    +           andVersion:(NSString *_Nonnull *_Nonnull)inOutVersionB;
    + +
    +
    +

    Swift

    +
    func formatVersion(_ inOutVersionA: AutoreleasingUnsafeMutablePointer<NSString>, andVersion inOutVersionB: AutoreleasingUnsafeMutablePointer<NSString>)
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_app_kit_prevention_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_app_kit_prevention_8h_source.html new file mode 100644 index 0000000..a6ec97f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_app_kit_prevention_8h_source.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: Sparkle/AppKitPrevention.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AppKitPrevention.h
+
+
+
1 //
+
2 // AppKitPrevention.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 1/17/17.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 // #include (not #import) this header to prevent AppKit from being imported
+
10 // Note this should be your LAST #include in your implementation file
+
11 
+
12 // If this error is triggered, you can have Xcode indicate to you which source file including this header caused the issue
+
13 
+
14 #ifdef _APPKITDEFINES_H
+
15 #error This is a core or daemon-safe module and should NOT import AppKit
+
16 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_installer_progress_app_controller_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_installer_progress_app_controller_8h_source.html new file mode 100644 index 0000000..84c80f2 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_installer_progress_app_controller_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/InstallerProgressAppController.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
InstallerProgressAppController.h
+
+
+
1 //
+
2 // InstallerProgressAppController.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/10/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Cocoa/Cocoa.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+ +
14 
+
15 @interface InstallerProgressAppController : NSObject <NSApplicationDelegate>
+
16 
+
17 - (instancetype)initWithApplication:(NSApplication *)application arguments:(NSArray<NSString *> *)arguments delegate:(id<InstallerProgressDelegate>)delegate;
+
18 
+
19 - (void)run;
+
20 
+
21 - (void)cleanupAndExitWithStatus:(int)status error:(NSError * _Nullable)error __attribute__((noreturn));
+
22 
+
23 @end
+
24 
+
25 NS_ASSUME_NONNULL_END
+
Definition: InstallerProgressAppController.h:15
+
Definition: InstallerProgressDelegate.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_installer_progress_delegate_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_installer_progress_delegate_8h_source.html new file mode 100644 index 0000000..365ab95 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_installer_progress_delegate_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/InstallerProgressDelegate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
InstallerProgressDelegate.h
+
+
+
1 //
+
2 // InstallerProgressDelegate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/10/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUHost;
+
14 
+
15 @protocol InstallerProgressDelegate <NSObject>
+
16 
+
17 - (void)installerProgressShouldDisplayWithHost:(SUHost *)host;
+
18 - (void)installerProgressShouldStop;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
Definition: InstallerProgressDelegate.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_8h_source.html new file mode 100644 index 0000000..75af479 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SPUAppcastItemState.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUAppcastItemState.h
+
+
+
1 //
+
2 // SPUAppcastItemState.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/31/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 // Appcast Item state that contains properties that depends on a host
+
14 @interface SPUAppcastItemState : NSObject
+
15 
+
16 - (instancetype)init NS_UNAVAILABLE;
+
17 
+
18 - (instancetype)initWithMajorUpgrade:(BOOL)majorUpgrade criticalUpdate:(BOOL)criticalUpdate informationalUpdate:(BOOL)informationalUpdate minimumOperatingSystemVersionIsOK:(BOOL)minimumOperatingSystemVersionIsOK maximumOperatingSystemVersionIsOK:(BOOL)maximumOperatingSystemVersionIsOK;
+
19 
+
20 @property (nonatomic, readonly) BOOL majorUpgrade;
+
21 @property (nonatomic, readonly) BOOL criticalUpdate;
+
22 @property (nonatomic, readonly) BOOL informationalUpdate;
+
23 @property (nonatomic, readonly) BOOL minimumOperatingSystemVersionIsOK;
+
24 @property (nonatomic, readonly) BOOL maximumOperatingSystemVersionIsOK;
+
25 
+
26 @end
+
27 
+
28 NS_ASSUME_NONNULL_END
+
Definition: SPUAppcastItemState.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_resolver_09_private_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_resolver_09_private_8h_source.html new file mode 100644 index 0000000..69d586d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_resolver_09_private_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +Sparkle: Sparkle/SPUAppcastItemStateResolver+Private.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUAppcastItemStateResolver+Private.h
+
+
+
1 //
+
2 // SPUAppcastItemStateResolver+Private.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 6/20/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPUAppcastItemStateResolver_Private_h
+
10 #define SPUAppcastItemStateResolver_Private_h
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @interface SPUAppcastItemStateResolver ()
+
15 
+
16 - (SPUAppcastItemState *)resolveStateWithInformationalUpdateVersions:(NSSet<NSString *> * _Nullable)informationalUpdateVersions minimumOperatingSystemVersion:(NSString * _Nullable)minimumOperatingSystemVersion maximumOperatingSystemVersion:(NSString * _Nullable)maximumOperatingSystemVersion minimumAutoupdateVersion:(NSString * _Nullable)minimumAutoupdateVersion criticalUpdateDictionary:(NSDictionary * _Nullable)criticalUpdateDictionary;
+
17 
+
18 + (BOOL)isMinimumAutoupdateVersionOK:(NSString * _Nullable)minimumAutoupdateVersion hostVersion:(NSString *)hostVersion versionComparator:(id<SUVersionComparison>)versionComparator;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
23 
+
24 #endif /* SPUAppcastItemStateResolver_Private_h */
+
Definition: SPUAppcastItemState.h:15
+
Private exposed class used to resolve Appcast Item properties that rely on external factors such as a...
Definition: SPUAppcastItemStateResolver.h:30
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_resolver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_resolver_8h_source.html new file mode 100644 index 0000000..2e77ab0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_appcast_item_state_resolver_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +Sparkle: Sparkle/SPUAppcastItemStateResolver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUAppcastItemStateResolver.h
+
+
+
1 //
+
2 // SPUAppcastItemStateResolver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/31/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 
+
18 #import <Sparkle/SUExport.h>
+
19 
+
20 NS_ASSUME_NONNULL_BEGIN
+
21 
+ +
23 @protocol SUVersionComparison;
+
24 
+
29 SU_EXPORT @interface SPUAppcastItemStateResolver : NSObject
+
30 
+
31 - (instancetype)init NS_UNAVAILABLE;
+
32 
+
33 - (instancetype)initWithHostVersion:(NSString *)hostVersion applicationVersionComparator:(id<SUVersionComparison>)applicationVersionComparator standardVersionComparator:(SUStandardVersionComparator *)standardVersionComparator;
+
34 
+
35 @end
+
36 
+
37 NS_ASSUME_NONNULL_END
+
Definition: SPUAppcastItemState.h:15
+
Private exposed class used to resolve Appcast Item properties that rely on external factors such as a...
Definition: SPUAppcastItemStateResolver.h:30
+
Sparkle's default version comparator.
Definition: SUStandardVersionComparator.h:42
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_automatic_update_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_automatic_update_driver_8h_source.html new file mode 100644 index 0000000..ceb1fe7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_automatic_update_driver_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +Sparkle: Sparkle/SPUAutomaticUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUAutomaticUpdateDriver.h
+
+
+
1 //
+
2 // SPUAutomaticUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @class SUHost;
+ +
16 
+ +
18 
+
19 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater userDriver:(id <SPUUserDriver>)userDriver updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
Definition: SPUAutomaticUpdateDriver.h:17
+
Definition: SUHost.h:15
+
Definition: SPUUpdateDriver.h:20
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_basic_update_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_basic_update_driver_8h_source.html new file mode 100644 index 0000000..fc239f8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_basic_update_driver_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +Sparkle: Sparkle/SPUBasicUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUBasicUpdateDriver.h
+
+
+
1 //
+
2 // SPUBasicUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @class SUHost, SUAppcastItem;
+
15 @protocol SPUUpdaterDelegate;
+
16 
+
17 @protocol SPUBasicUpdateDriverDelegate <NSObject>
+
18 
+
19 - (void)basicDriverDidFindUpdateWithAppcastItem:(SUAppcastItem *)appcastItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryAppcastItem systemDomain:(NSNumber * _Nullable)systemDomain;
+
20 
+
21 - (void)basicDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
22 
+
23 @optional
+
24 
+
25 - (void)basicDriverDidFinishLoadingAppcast;
+
26 
+
27 @end
+
28 
+
29 @interface SPUBasicUpdateDriver : NSObject
+
30 
+
31 - (instancetype)initWithHost:(SUHost *)host updater:(id)updater updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate delegate:(id <SPUBasicUpdateDriverDelegate>)delegate;
+
32 
+
33 - (void)prepareCheckForUpdatesWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
34 
+
35 - (void)checkForUpdatesAtAppcastURL:(NSURL *)appcastURL withUserAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background;
+
36 
+
37 - (void)resumeInstallingUpdateWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
38 
+
39 - (void)resumeUpdate:(id<SPUResumableUpdate>)resumableUpdate completion:(SPUUpdateDriverCompletion)completionBlock;
+
40 
+
41 - (void)abortUpdateAndShowNextUpdateImmediately:(BOOL)shouldSignalShowingUpdate resumableUpdate:(id<SPUResumableUpdate> _Nullable)resumableUpdate error:(nullable NSError *)error;
+
42 
+
43 @end
+
44 
+
45 NS_ASSUME_NONNULL_END
+
Definition: SPUBasicUpdateDriver.h:30
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Definition: SPUBasicUpdateDriver.h:17
+
Definition: SPUResumableUpdate.h:15
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_core_based_update_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_core_based_update_driver_8h_source.html new file mode 100644 index 0000000..b34173e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_core_based_update_driver_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +Sparkle: Sparkle/SPUCoreBasedUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUCoreBasedUpdateDriver.h
+
+
+
1 //
+
2 // SPUCoreBasedUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 #import "SPUUserUpdateState.h"
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 @class SUHost, SUAppcastItem;
+
16 @protocol SPUUpdaterDelegate;
+
17 
+ +
19 
+
20 - (void)basicDriverDidFindUpdateWithAppcastItem:(SUAppcastItem *)updateItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryAppcastItem;
+
21 
+
22 - (void)installerDidFinishPreparationAndWillInstallImmediately:(BOOL)willInstallImmediately silently:(BOOL)willInstallSilently;
+
23 
+
24 - (void)coreDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
25 
+
26 - (void)basicDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
27 
+
28 @optional
+
29 
+
30 - (void)basicDriverDidFinishLoadingAppcast;
+
31 
+
32 - (void)downloadDriverWillBeginDownload;
+
33 
+
34 - (void)downloadDriverDidReceiveExpectedContentLength:(uint64_t)expectedContentLength;
+
35 
+
36 - (void)downloadDriverDidReceiveDataOfLength:(uint64_t)length;
+
37 
+
38 - (void)coreDriverDidStartExtractingUpdate;
+
39 
+
40 - (void)installerDidStartInstalling;
+
41 
+
42 - (void)installerDidExtractUpdateWithProgress:(double)progress;
+
43 
+
44 - (void)installerIsSendingAppTerminationSignal;
+
45 
+
46 - (void)installerDidFinishInstallationAndRelaunched:(BOOL)relaunched acknowledgement:(void(^)(void))acknowledgement;
+
47 
+
48 @end
+
49 
+
50 @interface SPUCoreBasedUpdateDriver : NSObject
+
51 
+
52 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate delegate:(id<SPUCoreBasedUpdateDriverDelegate>)delegate;
+
53 
+
54 - (void)prepareCheckForUpdatesWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
55 
+
56 - (void)preflightForUpdatePermissionPreventingInstallerInteraction:(BOOL)preventsInstallerInteraction reply:(void (^)(NSError * _Nullable))reply;
+
57 
+
58 - (void)checkForUpdatesAtAppcastURL:(NSURL *)appcastURL withUserAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background requiresSilentInstall:(BOOL)silentInstall;
+
59 
+
60 - (void)resumeInstallingUpdateWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
61 
+
62 - (void)resumeUpdate:(id<SPUResumableUpdate>)resumableUpdate completion:(SPUUpdateDriverCompletion)completionBlock;
+
63 
+
64 - (void)downloadUpdateFromAppcastItem:(SUAppcastItem *)updateItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryUpdateItem inBackground:(BOOL)background;
+
65 
+
66 - (void)deferInformationalUpdate:(SUAppcastItem *)updateItem secondaryUpdate:(SUAppcastItem * _Nullable)secondaryUpdateItem;
+
67 
+
68 - (void)extractDownloadedUpdate;
+
69 
+
70 - (void)clearDownloadedUpdate;
+
71 
+
72 - (void)finishInstallationWithResponse:(SPUUserUpdateChoice)installUpdateStatus displayingUserInterface:(BOOL)displayingUserInterface;
+
73 
+
74 - (void)abortUpdateAndShowNextUpdateImmediately:(BOOL)shouldShowUpdateImmediately error:(nullable NSError *)error;
+
75 
+
76 @end
+
77 
+
78 NS_ASSUME_NONNULL_END
+
Definition: SPUCoreBasedUpdateDriver.h:51
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Definition: SPUCoreBasedUpdateDriver.h:18
+
Definition: SPUResumableUpdate.h:15
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_download_data_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_download_data_8h_source.html new file mode 100644 index 0000000..442d71a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_download_data_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: Sparkle/SPUDownloadData.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUDownloadData.h
+
+
+
1 //
+
2 // SPUDownloadData.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 8/10/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 
+
18 #ifdef BUILDING_SPARKLE_DOWNLOADER_SERVICE
+
19 // Ignore incorrect warning
+
20 #pragma clang diagnostic push
+
21 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
22 #import "SUExport.h"
+
23 #pragma clang diagnostic pop
+
24 #else
+
25 #import <Sparkle/SUExport.h>
+
26 #endif
+
27 
+
28 NS_ASSUME_NONNULL_BEGIN
+
29 
+
33 SU_EXPORT @interface SPUDownloadData : NSObject <NSSecureCoding>
+
34 
+
35 - (instancetype)initWithData:(NSData *)data URL:(NSURL *)URL textEncodingName:(NSString * _Nullable)textEncodingName MIMEType:(NSString * _Nullable)MIMEType;
+
36 
+
40 @property (nonatomic, readonly) NSData *data;
+
41 
+
47 @property (nonatomic, readonly, copy) NSURL *URL;
+
48 
+
52 @property (nonatomic, readonly, nullable, copy) NSString *textEncodingName;
+
53 
+
57 @property (nonatomic, readonly, nullable, copy) NSString *MIMEType;
+
58 
+
59 @end
+
60 
+
61 NS_ASSUME_NONNULL_END
+
A class for containing downloaded data along with some information about it.
Definition: SPUDownloadData.h:33
+
NSString * MIMEType
The MIME type if available.
Definition: SPUDownloadData.h:57
+
NSURL * URL
The URL that was fetched from.
Definition: SPUDownloadData.h:47
+
NSString * textEncodingName
The IANA charset encoding name if available.
Definition: SPUDownloadData.h:52
+
NSData * data
The raw data that was downloaded.
Definition: SPUDownloadData.h:40
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_download_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_download_driver_8h_source.html new file mode 100644 index 0000000..36c408f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_download_driver_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +Sparkle: Sparkle/SPUDownloadDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUDownloadDriver.h
+
+
+
1 //
+
2 // SPUDownloadDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/15/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+ +
14 
+
15 @protocol SPUDownloadDriverDelegate <NSObject>
+
16 
+
17 - (void)downloadDriverDidFailToDownloadFileWithError:(NSError *)error;
+
18 
+
19 @optional
+
20 
+
21 - (void)downloadDriverWillBeginDownload;
+
22 
+
23 // For persitent update downloads
+
24 - (void)downloadDriverDidDownloadUpdate:(SPUDownloadedUpdate *)downloadedUpdate;
+
25 
+
26 // For temporary downloads
+
27 - (void)downloadDriverDidDownloadData:(SPUDownloadData *)downloadData;
+
28 
+
29 // Only for persistent downloads
+
30 - (void)downloadDriverDidReceiveExpectedContentLength:(uint64_t)expectedContentLength;
+
31 
+
32 // Only for persistent downloads
+
33 - (void)downloadDriverDidReceiveDataOfLength:(uint64_t)length;
+
34 
+
35 @end
+
36 
+
37 @interface SPUDownloadDriver : NSObject
+
38 
+
39 - (instancetype)initWithRequestURL:(NSURL *)requestURL host:(SUHost *)host userAgent:(NSString * _Nullable)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background delegate:(id<SPUDownloadDriverDelegate>)delegate;
+
40 
+
41 - (instancetype)initWithUpdateItem:(SUAppcastItem *)updateItem secondaryUpdateItem:(SUAppcastItem * _Nullable)secondaryUpdateItem host:(SUHost *)host userAgent:(NSString * _Nullable)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background delegate:(id<SPUDownloadDriverDelegate>)delegate;
+
42 
+
43 - (instancetype)initWithHost:(SUHost *)host;
+
44 
+
45 - (void)downloadFile;
+
46 
+
47 - (void)removeDownloadedUpdate:(SPUDownloadedUpdate *)downloadedUpdate;
+
48 
+
49 @property (nonatomic, readonly) NSMutableURLRequest *request;
+
50 @property (nonatomic, readonly) BOOL inBackground;
+
51 
+
52 - (void)cleanup:(void (^)(void))completionHandler;
+
53 
+
54 @end
+
55 
+
56 NS_ASSUME_NONNULL_END
+
A class for containing downloaded data along with some information about it.
Definition: SPUDownloadData.h:33
+
Definition: SPUDownloadDriver.h:38
+
Definition: SPUDownloadedUpdate.h:14
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Definition: SPUDownloadDriver.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_downloaded_update_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_downloaded_update_8h_source.html new file mode 100644 index 0000000..5c716ce --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_downloaded_update_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SPUDownloadedUpdate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUDownloadedUpdate.h
+
+
+
1 //
+
2 // SPUDownloadedUpdate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 1/8/17.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUResumableUpdate.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @interface SPUDownloadedUpdate : NSObject <SPUResumableUpdate>
+
15 
+
16 - (instancetype)initWithAppcastItem:(SUAppcastItem *)updateItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryItem downloadName:(NSString *)downloadName temporaryDirectory:(NSString *)temporaryDirectory;
+
17 
+
18 @property (nonatomic, copy, readonly) NSString *downloadName;
+
19 @property (nonatomic, copy, readonly) NSString *temporaryDirectory;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
Definition: SPUDownloadedUpdate.h:14
+
Definition: SUAppcastItem.h:36
+
Definition: SPUResumableUpdate.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_informational_update_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_informational_update_8h_source.html new file mode 100644 index 0000000..4737b99 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_informational_update_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +Sparkle: Sparkle/SPUInformationalUpdate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUInformationalUpdate.h
+
+
+
1 //
+
2 // SPUInformationalUpdate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 1/8/17.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUResumableUpdate.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+ +
15 
+
16 - (instancetype)initWithAppcastItem:(SUAppcastItem *)updateItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryUpdateItem;
+
17 
+
18 @end
+
19 
+
20 NS_ASSUME_NONNULL_END
+
Definition: SPUInformationalUpdate.h:14
+
Definition: SUAppcastItem.h:36
+
Definition: SPUResumableUpdate.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installation_type_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installation_type_8h_source.html new file mode 100644 index 0000000..358d236 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installation_type_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: Sparkle/SPUInstallationType.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUInstallationType.h
+
+
+
1 //
+
2 // SPUInstallationType.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/24/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPUInstallationType_h
+
10 #define SPUInstallationType_h
+
11 
+
12 #define SPUInstallationTypeApplication @"application" // the default installation type for ordinary application updates
+
13 #define SPUInstallationTypeGuidedPackage @"package" // the preferred installation type for package installations
+
14 #define SPUInstallationTypeInteractivePackage @"interactive-package" // the deprecated installation type; use guided package instead
+
15 
+
16 #define SPUInstallationTypesArray (@[SPUInstallationTypeApplication, SPUInstallationTypeGuidedPackage, SPUInstallationTypeInteractivePackage])
+
17 #define SPUValidInstallationType(x) ((x != nil) && [SPUInstallationTypesArray containsObject:(NSString * _Nonnull)x])
+
18 
+
19 #endif /* SPUInstallationType_h */
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installer_agent_protocol_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installer_agent_protocol_8h_source.html new file mode 100644 index 0000000..266ab86 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installer_agent_protocol_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/SPUInstallerAgentProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUInstallerAgentProtocol.h
+
+
+
1 //
+
2 // SPUInstallerAgentProtocol.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+ +
14 
+
15 - (void)registerApplicationBundlePath:(NSString *)applicationBundlePath reply:(void (^)(NSNumber * _Nullable processIdentifier))reply;
+
16 
+
17 - (void)registerInstallationInfoData:(NSData *)installationInfoData;
+
18 
+
19 - (void)sendTerminationSignal;
+
20 
+
21 - (void)showProgress;
+
22 
+
23 - (void)stopProgress;
+
24 
+
25 - (void)relaunchApplication;
+
26 
+
27 @end
+
28 
+
29 NS_ASSUME_NONNULL_END
+
Definition: SPUInstallerAgentProtocol.h:13
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installer_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installer_driver_8h_source.html new file mode 100644 index 0000000..9ce510a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_installer_driver_8h_source.html @@ -0,0 +1,136 @@ + + + + + + + +Sparkle: Sparkle/SPUInstallerDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUInstallerDriver.h
+
+
+
1 //
+
2 // SPUInstallerDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @protocol SPUUpdaterDelegate;
+ +
15 
+
16 @protocol SPUInstallerDriverDelegate <NSObject>
+
17 
+
18 - (void)installerDidStartInstalling;
+
19 - (void)installerDidStartExtracting;
+
20 - (void)installerDidExtractUpdateWithProgress:(double)progress;
+
21 - (void)installerDidFinishPreparationAndWillInstallImmediately:(BOOL)willInstallImmediately silently:(BOOL)willInstallSilently;
+
22 - (void)installerIsSendingAppTerminationSignal;
+
23 - (void)installerWillFinishInstallationAndRelaunch:(BOOL)relaunch;
+
24 - (void)installerDidFinishInstallationAndRelaunched:(BOOL)relaunch acknowledgement:(void(^)(void))acknowledgement;
+
25 
+
26 - (void)installerIsRequestingAbortInstallWithError:(nullable NSError *)error;
+
27 - (void)installerDidFailToApplyDeltaUpdate;
+
28 
+
29 @end
+
30 
+
31 @interface SPUInstallerDriver : NSObject
+
32 
+
33 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater updaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate delegate:(nullable id<SPUInstallerDriverDelegate>)delegate;
+
34 
+
35 - (void)resumeInstallingUpdateWithUpdateItem:(SUAppcastItem *)updateItem systemDomain:(BOOL)systemDomain;
+
36 
+
37 - (void)checkIfApplicationInstallationRequiresAuthorizationWithReply:(void (^)(BOOL requiresAuthorization))reply;
+
38 
+
39 - (void)extractDownloadedUpdate:(SPUDownloadedUpdate *)downloadedUpdate silently:(BOOL)silently preventsInstallerInteraction:(BOOL)preventsInstallerInteraction completion:(void (^)(NSError * _Nullable))completionHandler;
+
40 
+
41 - (void)installWithToolAndRelaunch:(BOOL)relaunch displayingUserInterface:(BOOL)showUI;
+
42 
+
43 - (void)cancelUpdate;
+
44 
+
45 - (void)abortInstall;
+
46 
+
47 @end
+
48 
+
49 NS_ASSUME_NONNULL_END
+
Definition: SPUDownloadedUpdate.h:14
+
Definition: SPUInstallerDriver.h:32
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Definition: SPUInstallerDriver.h:16
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_local_cache_directory_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_local_cache_directory_8h_source.html new file mode 100644 index 0000000..17818ef --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_local_cache_directory_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: Sparkle/SPULocalCacheDirectory.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPULocalCacheDirectory.h
+
+
+
1 //
+
2 // SULocalCacheDirectory.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 6/23/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @interface SPULocalCacheDirectory : NSObject
+
14 
+
15 // Returns a path to a suitable cache directory to create specifically for Sparkle
+
16 // Intermediate directories to this path may not exist yet
+
17 // This path may depend on the type of running process,
+
18 // such that sandboxed vs non-sandboxed processes could yield different paths
+
19 // The caller should create a subdirectory from the path that is returned here so they don't have files that
+
20 // conflict with other callers. Once that subdirectory name is decided, the caller can remove old items inside it (using +removeOldItemsInDirectory:)
+
21 // and then create a unique temporary directory inside it (using +createUniqueDirectoryInDirectory:)
+
22 + (NSString *)cachePathForBundleIdentifier:(NSString *)bundleIdentifier;
+
23 
+
24 // Remove old files inside a directory
+
25 // A caller may want to invoke this on a directory they own rather than remove and re-create an entire directory
+
26 // This does nothing if the supplied directory does not exist yet
+
27 + (void)removeOldItemsInDirectory:(NSString *)directory;
+
28 
+
29 // Create a unique directory inside a parent directory
+
30 // The parent directory doesn't have to exist yet. If it doesn't exist, intermediate directories will be created.
+
31 + (NSString * _Nullable)createUniqueDirectoryInDirectory:(NSString *)directory;
+
32 
+
33 @end
+
34 
+
35 NS_ASSUME_NONNULL_END
+
Definition: SPULocalCacheDirectory.h:14
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_probe_install_status_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_probe_install_status_8h_source.html new file mode 100644 index 0000000..1ae7661 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_probe_install_status_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SPUProbeInstallStatus.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUProbeInstallStatus.h
+
+
+
1 //
+
2 // SPUProbeInstallStatus.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/20/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SPUInstallationInfo;
+
14 
+
15 @interface SPUProbeInstallStatus : NSObject
+
16 
+
17 + (void)probeInstallerInProgressForHostBundleIdentifier:(NSString *)hostBundleIdentifier completion:(void (^)(BOOL))completionHandler;
+
18 
+
19 // completionHandler may not be sent on main queue
+
20 // additionally, it may be possible that the installer is in progress but we get a nil installation info back
+
21 + (void)probeInstallerUpdateItemForHostBundleIdentifier:(NSString *)hostBundleIdentifier completion:(void (^)(SPUInstallationInfo * _Nullable))completionHandler;
+
22 
+
23 @end
+
24 
+
25 NS_ASSUME_NONNULL_END
+
Definition: SPUProbeInstallStatus.h:16
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_probing_update_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_probing_update_driver_8h_source.html new file mode 100644 index 0000000..56d9aa1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_probing_update_driver_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +Sparkle: Sparkle/SPUProbingUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUProbingUpdateDriver.h
+
+
+
1 //
+
2 // SPUProbingUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @class SUHost;
+
15 @protocol SPUUpdaterDelegate;
+
16 
+
17 @interface SPUProbingUpdateDriver : NSObject <SPUUpdateDriver>
+
18 
+
19 - (instancetype)initWithHost:(SUHost *)host updater:(id)updater updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
Definition: SPUProbingUpdateDriver.h:17
+
Definition: SUHost.h:15
+
Definition: SPUUpdateDriver.h:20
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_resumable_update_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_resumable_update_8h_source.html new file mode 100644 index 0000000..4c1c26a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_resumable_update_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SPUResumableUpdate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUResumableUpdate.h
+
+
+
1 //
+
2 // SPUResumableUpdate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUAppcastItem;
+
14 
+
15 @protocol SPUResumableUpdate <NSObject>
+
16 
+
17 @property (nonatomic, readonly) SUAppcastItem *updateItem;
+
18 @property (nonatomic, readonly, nullable) SUAppcastItem *secondaryUpdateItem;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
Definition: SUAppcastItem.h:36
+
Definition: SPUResumableUpdate.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_scheduled_update_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_scheduled_update_driver_8h_source.html new file mode 100644 index 0000000..a849ea5 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_scheduled_update_driver_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SPUScheduledUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUScheduledUpdateDriver.h
+
+
+
1 //
+
2 // SPUScheduledUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/15/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 #import "SPUUIBasedUpdateDriver.h"
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 @class SUHost;
+ +
17 
+ +
19 
+
20 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater userDriver:(id <SPUUserDriver>)userDriver updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate;
+
21 
+
22 @end
+
23 
+
24 NS_ASSUME_NONNULL_END
+
Definition: SPUScheduledUpdateDriver.h:18
+
Definition: SUHost.h:15
+
Definition: SPUUpdateDriver.h:20
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_secure_coding_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_secure_coding_8h_source.html new file mode 100644 index 0000000..9f23f01 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_secure_coding_8h_source.html @@ -0,0 +1,101 @@ + + + + + + + +Sparkle: Sparkle/SPUSecureCoding.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUSecureCoding.h
+
+
+
1 //
+
2 // SPUSecureCoding.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/24/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 // If we are using XPC without using XPC Services, our custom classes will not be (de)serialized automatically,
+
12 // hence needing functions to archive/unarchive NSSecureCoding objects.
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 NSData * _Nullable SPUArchiveRootObjectSecurely(id<NSSecureCoding> rootObject);
+
17 
+
18 id<NSSecureCoding> _Nullable SPUUnarchiveRootObjectSecurely(NSData *data, Class klass);
+
19 
+
20 NS_ASSUME_NONNULL_END
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_skipped_update_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_skipped_update_8h_source.html new file mode 100644 index 0000000..5662d51 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_skipped_update_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: Sparkle/SPUSkippedUpdate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUSkippedUpdate.h
+
+
+
1 //
+
2 // SPUSkippedUpdate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/8/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUHost, SUAppcastItem;
+
14 
+
15 /*
+
16  A skipped update tracks an optional minor version and an optional major version the user may skip.
+
17  The minor and major versions are independent versions, so the user can choose to skip at most two separate versions.
+
18  The intent is when the user is faced with a major upgrade, they can skip a major version.
+
19  Otherwise they can choose to skip a minor version.
+
20  */
+
21 @interface SPUSkippedUpdate : NSObject
+
22 
+
23 + (nullable SPUSkippedUpdate *)skippedUpdateForHost:(SUHost *)host;
+
24 
+
25 + (void)clearSkippedUpdateForHost:(SUHost *)host;
+
26 
+
27 + (void)skipUpdate:(SUAppcastItem *)updateItem host:(SUHost *)host;
+
28 
+
29 // At least one of minorVersion or majorVersion should be non-nil
+
30 - (instancetype)initWithMinorVersion:(nullable NSString *)minorVersion majorVersion:(nullable NSString *)majorVersion;
+
31 
+
32 // At least one of these version properties will be non-nil
+
33 @property (nonatomic, readonly, nullable) NSString *minorVersion;
+
34 @property (nonatomic, readonly, nullable) NSString *majorVersion;
+
35 
+
36 @end
+
37 
+
38 NS_ASSUME_NONNULL_END
+
Definition: SPUSkippedUpdate.h:22
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_updater_controller_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_updater_controller_8h_source.html new file mode 100644 index 0000000..bfa5cb4 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_updater_controller_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +Sparkle: Sparkle/SPUStandardUpdaterController.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUStandardUpdaterController.h
+
+
+
1 //
+
2 // SPUStandardUpdaterController.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/28/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 NS_ASSUME_NONNULL_BEGIN
+
20 
+
21 @class SPUUpdater;
+ +
23 @class NSMenuItem;
+ +
25 
+
39 SU_EXPORT @interface SPUStandardUpdaterController : NSObject
+
40 
+
46 @property (nonatomic, weak, nullable) IBOutlet id<SPUUpdaterDelegate> updaterDelegate;
+
47 
+
53 @property (nonatomic, weak, nullable) IBOutlet id<SPUStandardUserDriverDelegate> userDriverDelegate;
+
54 
+
60 @property (nonatomic, readonly) SPUUpdater *updater;
+
61 
+
65 @property (nonatomic, readonly) SPUStandardUserDriver *userDriver;
+
66 
+
74 - (instancetype)init NS_UNAVAILABLE;
+
75 
+
81 - (instancetype)initWithUpdaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate userDriverDelegate:(nullable id<SPUStandardUserDriverDelegate>)userDriverDelegate;
+
82 
+
89 - (instancetype)initWithStartingUpdater:(BOOL)startUpdater updaterDelegate:(nullable id<SPUUpdaterDelegate>)updaterDelegate userDriverDelegate:(nullable id<SPUStandardUserDriverDelegate>)userDriverDelegate;
+
90 
+
100 - (void)startUpdater;
+
101 
+
116 - (IBAction)checkForUpdates:(nullable id)sender;
+
117 
+
118 @end
+
119 
+
120 NS_ASSUME_NONNULL_END
+
A controller class that instantiates a SPUUpdater and allows binding UI to it.
Definition: SPUStandardUpdaterController.h:40
+
void startUpdater()
Starts the updater if it has not already been started.
+
SPUStandardUserDriver * userDriver
Accessible property for the updater's user driver.
Definition: SPUStandardUpdaterController.h:65
+
instancetype NS_UNAVAILABLE()
Create a new SPUStandardUpdaterController from a nib.
+
IBOutlet id< SPUStandardUserDriverDelegate > userDriverDelegate
Interface builder outlet for the user driver's delegate.
Definition: SPUStandardUpdaterController.h:53
+
IBOutlet id< SPUUpdaterDelegate > updaterDelegate
Interface builder outlet for the updater's delegate.
Definition: SPUStandardUpdaterController.h:46
+
SPUUpdater * updater
Accessible property for the updater.
Definition: SPUStandardUpdaterController.h:60
+
Sparkle's standard built-in user driver for updater interactions.
Definition: SPUStandardUserDriver.h:27
+
The main API in Sparkle for controlling the update mechanism.
Definition: SPUUpdater.h:33
+
A protocol for Sparkle's standard user driver's delegate.
Definition: SPUStandardUserDriverDelegate.h:26
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_user_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_user_driver_8h_source.html new file mode 100644 index 0000000..7e1601f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_user_driver_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: Sparkle/SPUStandardUserDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUStandardUserDriver.h
+
+
+
1 //
+
2 // SPUStandardUserDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/14/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SPUUserDriver.h>
+
18 #import <Sparkle/SUExport.h>
+
19 
+
20 NS_ASSUME_NONNULL_BEGIN
+
21 
+ +
23 
+
27 SU_EXPORT @interface SPUStandardUserDriver : NSObject <SPUUserDriver>
+
28 
+
35 - (instancetype)initWithHostBundle:(NSBundle *)hostBundle delegate:(nullable id<SPUStandardUserDriverDelegate>)delegate;
+
36 
+
40 - (instancetype)init NS_UNAVAILABLE;
+
41 
+
42 @end
+
43 
+
44 NS_ASSUME_NONNULL_END
+
Sparkle's standard built-in user driver for updater interactions.
Definition: SPUStandardUserDriver.h:27
+
instancetype NS_UNAVAILABLE()
Use initWithHostBundle:delegate: instead.
+
A protocol for Sparkle's standard user driver's delegate.
Definition: SPUStandardUserDriverDelegate.h:26
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_user_driver_delegate_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_user_driver_delegate_8h_source.html new file mode 100644 index 0000000..f5e4957 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_standard_user_driver_delegate_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: Sparkle/SPUStandardUserDriverDelegate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUStandardUserDriverDelegate.h
+
+
+
1 //
+
2 // SPUStandardUserDriverDelegate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/3/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 @protocol SUVersionDisplay;
+
20 
+
26 SU_EXPORT @protocol SPUStandardUserDriverDelegate <NSObject>
+
27 
+
28 @optional
+
29 
+ +
35 
+ +
41 
+ +
48 
+
49 @end
+
A protocol for Sparkle's standard user driver's delegate.
Definition: SPUStandardUserDriverDelegate.h:26
+
void standardUserDriverDidShowModalAlert()
Called after showing a modal alert window, to give the opportunity to hide attached windows that may ...
+
void standardUserDriverWillShowModalAlert()
Called before showing a modal alert window, to give the opportunity to hide attached windows that may...
+
_Nullable id< SUVersionDisplay > standardUserDriverRequestsVersionDisplayer()
Returns an object that formats version numbers for display to the user.
+
Applies special display formatting to version numbers.
Definition: SUVersionDisplayProtocol.h:22
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_u_i_based_update_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_u_i_based_update_driver_8h_source.html new file mode 100644 index 0000000..3b4a185 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_u_i_based_update_driver_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +Sparkle: Sparkle/SPUUIBasedUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUIBasedUpdateDriver.h
+
+
+
1 //
+
2 // SPUUIBasedUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @protocol SPUUIBasedUpdateDriverDelegate <NSObject>
+
15 
+
16 - (void)basicDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
17 - (void)coreDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
18 - (void)uiDriverIsRequestingAbortUpdateWithError:(nullable NSError *)error;
+
19 
+
20 @optional
+
21 
+
22 - (void)uiDriverDidShowUpdate;
+
23 - (void)basicDriverDidFinishLoadingAppcast;
+
24 
+
25 @end
+
26 
+
27 @class SUHost;
+ +
29 
+
30 @interface SPUUIBasedUpdateDriver : NSObject
+
31 
+
32 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater userDriver:(id <SPUUserDriver>)userDriver userInitiated:(BOOL)userInitiated updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate delegate:(id<SPUUIBasedUpdateDriverDelegate>)delegate;
+
33 
+
34 - (void)prepareCheckForUpdatesWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
35 
+
36 - (void)preflightForUpdatePermissionPreventingInstallerInteraction:(BOOL)preventsInstallerInteraction reply:(void (^)(NSError * _Nullable))reply;
+
37 
+
38 - (void)checkForUpdatesAtAppcastURL:(NSURL *)appcastURL withUserAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background;
+
39 
+
40 - (void)resumeInstallingUpdateWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
41 
+
42 - (void)resumeUpdate:(id<SPUResumableUpdate>)resumableUpdate completion:(SPUUpdateDriverCompletion)completionBlock;
+
43 
+
44 - (void)abortUpdateWithError:(nullable NSError *)error;
+
45 
+
46 @end
+
47 
+
48 NS_ASSUME_NONNULL_END
+
Definition: SPUUIBasedUpdateDriver.h:31
+
Definition: SUHost.h:15
+
Definition: SPUResumableUpdate.h:15
+
Definition: SPUUIBasedUpdateDriver.h:14
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_u_r_l_request_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_u_r_l_request_8h_source.html new file mode 100644 index 0000000..b49fd11 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_u_r_l_request_8h_source.html @@ -0,0 +1,113 @@ + + + + + + + +Sparkle: Sparkle/SPUURLRequest.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUURLRequest.h
+
+
+
1 //
+
2 // SPUURLRequest.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/19/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 // A class that wraps NSURLRequest and implements NSSecureCoding
+
14 // This class exists because NSURLRequest did not support NSSecureCoding in macOS 10.8
+
15 // I have not verified if NSURLRequest in 10.9 implements NSSecureCoding or not
+
16 @interface SPUURLRequest : NSObject <NSSecureCoding>
+
17 
+
18 // Creates a new URL request
+
19 // Only these properties are currently tracked:
+
20 // * URL
+
21 // * Cache policy
+
22 // * Timeout interval
+
23 // * HTTP header fields
+
24 // * networkServiceType
+
25 + (instancetype)URLRequestWithRequest:(NSURLRequest *)request;
+
26 
+
27 @property (nonatomic, readonly) NSURLRequest *request;
+
28 
+
29 @end
+
30 
+
31 NS_ASSUME_NONNULL_END
+
Definition: SPUURLRequest.h:16
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_update_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_update_driver_8h_source.html new file mode 100644 index 0000000..92fca2b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_update_driver_8h_source.html @@ -0,0 +1,121 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdateDriver.h
+
+
+
1 //
+
2 // SPUUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/15/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 NS_ASSUME_NONNULL_BEGIN
+
10 
+
11 @protocol SPUResumableUpdate;
+
12 
+
13 typedef void (^SPUUpdateDriverCompletion)(BOOL shouldShowUpdateImmediately, id<SPUResumableUpdate> _Nullable resumableUpdate);
+
14 
+
15 // This protocol describes an update driver that drives updates
+
16 // An update driver may have multiple levels of other controller components (eg: basic update driver, core based update driver, ui based update driver, appcast driver, etc)
+
17 // The update driver and the components the driver has communicates via parameter passing and delegation..
+
18 // The old Sparkle architecture communicated via subclassing and method overriding, but this lead to bugs due to high coupling, and complexity of not being aware of methods being executed.
+
19 // The newer architecture is still complex but should be more reliable to maintain and extend.
+
20 @protocol SPUUpdateDriver <NSObject>
+
21 
+
22 - (void)checkForUpdatesAtAppcastURL:(NSURL *)appcastURL withUserAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders preventingInstallerInteraction:(BOOL)preventsInstallerInteraction completion:(SPUUpdateDriverCompletion)completionBlock;
+
23 
+
24 - (void)resumeInstallingUpdateWithCompletion:(SPUUpdateDriverCompletion)completionBlock;
+
25 
+
26 - (void)resumeUpdate:(id<SPUResumableUpdate>)resumableUpdate completion:(SPUUpdateDriverCompletion)completionBlock;
+
27 
+
28 @property (nonatomic, readonly) BOOL showingUpdate;
+
29 
+
30 // A likely implementation of -abortUpdate is invoking -abortUpdateWithError: by passing nil
+
31 - (void)abortUpdate;
+
32 
+
33 // This should be invoked on the update driver to finish the update driver's work
+
34 - (void)abortUpdateWithError:(NSError * _Nullable)error;
+
35 
+
36 @end
+
37 
+
38 NS_ASSUME_NONNULL_END
+
Definition: SPUResumableUpdate.h:15
+
Definition: SPUUpdateDriver.h:20
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_update_permission_request_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_update_permission_request_8h_source.html new file mode 100644 index 0000000..3e1a739 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_update_permission_request_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdatePermissionRequest.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdatePermissionRequest.h
+
+
+
1 //
+
2 // SPUUpdatePermissionRequest.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 8/14/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 NS_ASSUME_NONNULL_BEGIN
+
20 
+
24 SU_EXPORT @interface SPUUpdatePermissionRequest : NSObject<NSSecureCoding>
+
25 
+
31 - (instancetype)initWithSystemProfile:(NSArray<NSDictionary<NSString *, NSString *> *> *)systemProfile;
+
32 
+
36 @property (nonatomic, readonly) NSArray<NSDictionary<NSString *, NSString *> *> *systemProfile;
+
37 
+
38 @end
+
39 
+
40 NS_ASSUME_NONNULL_END
+
This class represents information needed to make a permission request for checking updates.
Definition: SPUUpdatePermissionRequest.h:24
+
NSArray< NSDictionary< NSString *, NSString * > * > * systemProfile
A read-only property for the user's system profile.
Definition: SPUUpdatePermissionRequest.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_8h_source.html new file mode 100644 index 0000000..cf10582 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdater.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdater.h
+
+
+
1 //
+
2 // SPUUpdater.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 1/4/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 #import <Sparkle/SPUUserDriver.h>
+
19 
+
20 NS_ASSUME_NONNULL_BEGIN
+
21 
+
22 @class SUAppcastItem, SUAppcast;
+
23 
+
24 @protocol SPUUpdaterDelegate;
+
25 
+
32 SU_EXPORT @interface SPUUpdater : NSObject
+
33 
+
49 - (instancetype)initWithHostBundle:(NSBundle *)hostBundle applicationBundle:(NSBundle *)applicationBundle userDriver:(id <SPUUserDriver>)userDriver delegate:(id<SPUUpdaterDelegate> _Nullable)delegate;
+
50 
+
56 - (instancetype)init NS_UNAVAILABLE;
+
57 
+
79 - (BOOL)startUpdater:(NSError * __autoreleasing *)error;
+
80 
+
94 - (void)checkForUpdates;
+
95 
+ +
107 
+ +
120 
+
130 @property (nonatomic, readonly) BOOL canCheckForUpdates;
+
131 
+
145 @property (nonatomic, readonly) BOOL sessionInProgress;
+
146 
+
154 @property (nonatomic) BOOL automaticallyChecksForUpdates;
+
155 
+
163 @property (nonatomic) NSTimeInterval updateCheckInterval;
+
164 
+
173 @property (nonatomic) BOOL automaticallyDownloadsUpdates;
+
174 
+
185 @property (nonatomic, readonly, nullable) NSURL *feedURL;
+
186 
+
200 - (void)setFeedURL:(NSURL * _Nullable)feedURL;
+
201 
+
205 @property (nonatomic, readonly) NSBundle *hostBundle;
+
206 
+
210 @property (nonatomic, readonly) NSBundle *sparkleBundle;
+
211 
+
217 @property (nonatomic, copy) NSString *userAgentString;
+
218 
+
224 #if __has_feature(objc_generics)
+
225 @property (nonatomic, copy, nullable) NSDictionary<NSString *, NSString *> *httpHeaders;
+
226 #else
+
227 @property (nonatomic, copy, nullable) NSDictionary *httpHeaders;
+
228 #endif
+
229 
+
235 @property (nonatomic) BOOL sendsSystemProfile;
+
236 
+
242 @property (nonatomic, readonly, copy, nullable) NSDate *lastUpdateCheckDate;
+
243 
+
251 - (void)resetUpdateCycle;
+
252 
+
253 
+
257 @property (nonatomic, readonly, copy) NSArray<NSDictionary<NSString *, NSString *> *> *systemProfileArray;
+
258 
+
259 @end
+
260 
+
261 NS_ASSUME_NONNULL_END
+
The main API in Sparkle for controlling the update mechanism.
Definition: SPUUpdater.h:33
+
NSTimeInterval updateCheckInterval
A property indicating the current automatic update check interval.
Definition: SPUUpdater.h:163
+
NSDate * lastUpdateCheckDate
Returns the date of last update check.
Definition: SPUUpdater.h:242
+
void checkForUpdatesInBackground()
Checks for updates, but does not display any UI unless an update is found.
+
NSDictionary * httpHeaders
The HTTP headers used when checking for updates.
Definition: SPUUpdater.h:227
+
BOOL sendsSystemProfile
A property indicating whether or not the user's system profile information is sent when checking for ...
Definition: SPUUpdater.h:235
+
NSString * userAgentString
The user agent used when checking for updates.
Definition: SPUUpdater.h:217
+
void checkForUpdates()
Checks for updates, and displays progress while doing so if needed.
+
NSArray< NSDictionary< NSString *, NSString * > * > * systemProfileArray
The system profile information that is sent when checking for updates.
Definition: SPUUpdater.h:257
+
BOOL automaticallyChecksForUpdates
A property indicating whether or not to check for updates automatically.
Definition: SPUUpdater.h:154
+
NSBundle * sparkleBundle
The bundle this class (SPUUpdater) is loaded into.
Definition: SPUUpdater.h:210
+
BOOL automaticallyDownloadsUpdates
A property indicating whether or not updates can be automatically downloaded in the background.
Definition: SPUUpdater.h:173
+
BOOL canCheckForUpdates
A property indicating whether or not updates can be checked by the user.
Definition: SPUUpdater.h:130
+
instancetype NS_UNAVAILABLE()
Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standa...
+
void checkForUpdateInformation()
Begins a "probing" check for updates which will not actually offer to update to that version.
+
NSBundle * hostBundle
The host bundle that is being updated.
Definition: SPUUpdater.h:205
+
BOOL sessionInProgress
A property indicating whether or not an update session is in progress.
Definition: SPUUpdater.h:145
+
void resetUpdateCycle()
Appropriately schedules or cancels the update checking timer according to the preferences for time in...
+
NSURL * feedURL
The URL of the appcast used to download update information.
Definition: SPUUpdater.h:185
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_cycle_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_cycle_8h_source.html new file mode 100644 index 0000000..dc0d451 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_cycle_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdaterCycle.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdaterCycle.h
+
+
+
1 //
+
2 // SPUUpdaterCycle.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 6/11/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @protocol SPUUpdaterCycleDelegate <NSObject>
+
14 
+
15 - (void)resetUpdateCycle;
+
16 
+
17 @end
+
18 
+
19 // This notifies the updater for (re-)starting and canceling update cycles
+
20 // This class is used so that an updater instance isn't kept alive by a pending update cycle
+
21 @interface SPUUpdaterCycle : NSObject
+
22 
+
23 // This delegate is weakly referenced
+
24 - (instancetype)initWithDelegate:(id<SPUUpdaterCycleDelegate>)delegate;
+
25 
+
26 - (void)resetUpdateCycleAfterDelay;
+
27 
+
28 - (void)cancelNextUpdateCycle;
+
29 
+
30 @end
+
31 
+
32 NS_ASSUME_NONNULL_END
+
Definition: SPUUpdaterCycle.h:22
+
Definition: SPUUpdaterCycle.h:13
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_delegate_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_delegate_8h_source.html new file mode 100644 index 0000000..793b9cf --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_delegate_8h_source.html @@ -0,0 +1,225 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdaterDelegate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdaterDelegate.h
+
+
+
1 //
+
2 // SPUUpdaterDelegate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 8/12/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 @protocol SUVersionComparison;
+ +
21 
+
22 NS_ASSUME_NONNULL_BEGIN
+
23 
+
24 // -----------------------------------------------------------------------------
+
25 // SUUpdater Notifications for events that might be interesting to more than just the delegate
+
26 // The updater will be the notification object
+
27 // -----------------------------------------------------------------------------
+
28 SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;
+
29 SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;
+
30 SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;
+
31 SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;
+
32 #define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;
+
33 #define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;
+
34 
+
35 // Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo
+
36 SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;
+
37 // Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo
+
38 SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;
+
39 
+
40 // -----------------------------------------------------------------------------
+
41 // System Profile Keys
+
42 // -----------------------------------------------------------------------------
+
43 
+
44 SU_EXPORT extern NSString *const SUSystemProfilerApplicationNameKey;
+
45 SU_EXPORT extern NSString *const SUSystemProfilerApplicationVersionKey;
+
46 SU_EXPORT extern NSString *const SUSystemProfilerCPU64bitKey;
+
47 SU_EXPORT extern NSString *const SUSystemProfilerCPUCountKey;
+
48 SU_EXPORT extern NSString *const SUSystemProfilerCPUFrequencyKey;
+
49 SU_EXPORT extern NSString *const SUSystemProfilerCPUTypeKey;
+
50 SU_EXPORT extern NSString *const SUSystemProfilerCPUSubtypeKey;
+
51 SU_EXPORT extern NSString *const SUSystemProfilerHardwareModelKey;
+
52 SU_EXPORT extern NSString *const SUSystemProfilerMemoryKey;
+
53 SU_EXPORT extern NSString *const SUSystemProfilerOperatingSystemVersionKey;
+
54 SU_EXPORT extern NSString *const SUSystemProfilerPreferredLanguageKey;
+
55 
+
56 // -----------------------------------------------------------------------------
+
57 // SPUUpdater Delegate:
+
58 // -----------------------------------------------------------------------------
+
59 
+
60 typedef NS_ENUM(NSInteger, SPUUpdateCheck)
+
61 {
+
62  SPUUpdateCheckUserInitiated = 0,
+
63  SPUUpdateCheckBackgroundScheduled = 1
+
64 };
+
65 
+
69 @protocol SPUUpdaterDelegate <NSObject>
+
70 @optional
+
71 
+
81 - (void)updater:(SPUUpdater *)updater willScheduleUpdateCheckAfterDelay:(NSTimeInterval)delay;
+
82 
+
90 - (void)updaterWillIdleSchedulingUpdates:(SPUUpdater *)updater;
+
91 
+
100 - (BOOL)updaterMayCheckForUpdates:(SPUUpdater *)updater;
+
101 
+
112 #if __has_feature(objc_generics)
+
113 - (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+
114 #else
+
115 - (NSArray *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+
116 #endif
+
117 
+
127 #if __has_feature(objc_generics)
+
128 - (NSArray<NSString *> *)allowedSystemProfileKeysForUpdater:(SPUUpdater *)updater;
+
129 #else
+
130 - (NSArray *)allowedSystemProfileKeysForUpdater:(SPUUpdater *)updater;
+
131 #endif
+
132 
+
142 - (nullable NSString *)feedURLStringForUpdater:(SPUUpdater *)updater;
+
143 
+
151 - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SPUUpdater *)updater;
+
152 
+
161 - (void)updater:(SPUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
+
162 
+
185 - (NSSet<NSString *> *)allowedChannelsForUpdater:(SPUUpdater *)updater;
+
186 
+
215 - (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SPUUpdater *)updater;
+
216 
+
223 - (void)updater:(SPUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;
+
224 
+
237 - (void)updaterDidNotFindUpdate:(SPUUpdater *)updater error:(NSError *)error;
+
238 
+
244 - (void)updaterDidNotFindUpdate:(SPUUpdater *)updater;
+
245 
+
252 - (void)updater:(SPUUpdater *)updater userDidSkipThisVersion:(SUAppcastItem *)item;
+
253 
+
263 - (BOOL)updaterShouldDownloadReleaseNotes:(SPUUpdater *)updater;
+
264 
+
272 - (void)updater:(SPUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request;
+
273 
+
280 - (void)updater:(SPUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item;
+
281 
+
289 - (void)updater:(SPUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error;
+
290 
+
296 - (void)userDidCancelDownload:(SPUUpdater *)updater;
+
297 
+
304 - (void)updater:(SPUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item;
+
305 
+
312 - (void)updater:(SPUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item;
+
313 
+
320 - (void)updater:(SPUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;
+
321 
+
336 - (BOOL)updater:(SPUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvokingBlock:(void (^)(void))installHandler;
+
337 
+
347 - (BOOL)updaterShouldRelaunchApplication:(SPUUpdater *)updater;
+
348 
+
354 - (void)updaterWillRelaunchApplication:(SPUUpdater *)updater;
+
355 
+
370 - (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SPUUpdater *)updater;
+
371 
+
389 - (BOOL)updater:(SPUUpdater *)updater shouldAllowInstallerInteractionForUpdateCheck:(SPUUpdateCheck)updateCheck;
+
390 
+
399 - (nullable NSString *)decryptionPasswordForUpdater:(SPUUpdater *)updater;
+
400 
+
413 - (BOOL)updater:(SPUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))immediateInstallHandler;
+
414 
+
421 - (void)updater:(SPUUpdater *)updater didAbortWithError:(NSError *)error;
+
422 
+
423 @end
+
424 
+
425 NS_ASSUME_NONNULL_END
+
The main API in Sparkle for controlling the update mechanism.
Definition: SPUUpdater.h:33
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_settings_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_settings_8h_source.html new file mode 100644 index 0000000..2a13e77 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_settings_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdaterSettings.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdaterSettings.h
+
+
+
1 //
+
2 // SPUUpdaterSettings.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/27/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
19 NS_ASSUME_NONNULL_BEGIN
+
20 
+
27 SU_EXPORT @interface SPUUpdaterSettings : NSObject
+
28 
+
29 - (instancetype)initWithHostBundle:(NSBundle *)hostBundle;
+
30 
+
34 @property (readonly, nonatomic) BOOL automaticallyChecksForUpdates;
+
35 
+
39 @property (readonly, nonatomic) NSTimeInterval updateCheckInterval;
+
40 
+
44 @property (readonly, nonatomic) BOOL allowsAutomaticUpdates;
+
45 
+
52 @property (readonly, nonatomic) BOOL automaticallyDownloadsUpdates;
+
53 
+
57 @property (readonly, nonatomic) BOOL sendsSystemProfile;
+
58 
+
59 @end
+
60 
+
61 NS_ASSUME_NONNULL_END
+
This class can be used for reading certain updater settings.
Definition: SPUUpdaterSettings.h:28
+
BOOL automaticallyChecksForUpdates
Indicates whether or not automatic update checks are enabled.
Definition: SPUUpdaterSettings.h:34
+
BOOL sendsSystemProfile
Indicates whether or not anonymous system profile information is sent when checking for updates.
Definition: SPUUpdaterSettings.h:57
+
BOOL allowsAutomaticUpdates
Indicates whether or not automatically downloading updates is allowed to be turned on by the user.
Definition: SPUUpdaterSettings.h:44
+
BOOL automaticallyDownloadsUpdates
Indicates whether or not automatically downloading updates is enabled by the user or developer.
Definition: SPUUpdaterSettings.h:52
+
NSTimeInterval updateCheckInterval
The regular update check interval.
Definition: SPUUpdaterSettings.h:39
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_timer_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_timer_8h_source.html new file mode 100644 index 0000000..befd956 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_updater_timer_8h_source.html @@ -0,0 +1,114 @@ + + + + + + + +Sparkle: Sparkle/SPUUpdaterTimer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUpdaterTimer.h
+
+
+
1 //
+
2 // SPUUpdaterTimer.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 8/12/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @protocol SPUUpdaterTimerDelegate <NSObject>
+
14 
+
15 - (void)updaterTimerDidFire;
+
16 
+
17 @end
+
18 
+
19 // This notifies the updater for scheduled update checks
+
20 // This class is used so that an updater instance isn't kept alive by a scheduled update check
+
21 @interface SPUUpdaterTimer : NSObject
+
22 
+
23 - (instancetype)initWithDelegate:(id<SPUUpdaterTimerDelegate>)delegate;
+
24 
+
25 - (void)startAndFireAfterDelay:(NSTimeInterval)delay;
+
26 
+
27 - (void)invalidate;
+
28 
+
29 @end
+
30 
+
31 NS_ASSUME_NONNULL_END
+
Definition: SPUUpdaterTimer.h:22
+
Definition: SPUUpdaterTimer.h:13
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_driver_8h_source.html new file mode 100644 index 0000000..24b4e38 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_driver_8h_source.html @@ -0,0 +1,173 @@ + + + + + + + +Sparkle: Sparkle/SPUUserDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUserDriver.h
+
+
+
1 //
+
2 // SPUUserDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/14/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 
+
18 #import <Sparkle/SPUUserUpdateState.h>
+
19 #import <Sparkle/SUExport.h>
+
20 
+
21 NS_ASSUME_NONNULL_BEGIN
+
22 
+ +
24 
+
33 SU_EXPORT @protocol SPUUserDriver <NSObject>
+
34 
+
44 - (void)showUpdatePermissionRequest:(SPUUpdatePermissionRequest *)request reply:(void (^)(SUUpdatePermissionResponse *))reply;
+
45 
+
53 - (void)showUserInitiatedUpdateCheckWithCancellation:(void (^)(void))cancellation;
+
54 
+
88 - (void)showUpdateFoundWithAppcastItem:(SUAppcastItem *)appcastItem state:(SPUUserUpdateState *)state reply:(void (^)(SPUUserUpdateChoice))reply;
+
89 
+
99 - (void)showUpdateReleaseNotesWithDownloadData:(SPUDownloadData *)downloadData;
+
100 
+
110 - (void)showUpdateReleaseNotesFailedToDownloadWithError:(NSError *)error;
+
111 
+
129 - (void)showUpdateNotFoundWithError:(NSError *)error acknowledgement:(void (^)(void))acknowledgement;
+
130 
+
142 - (void)showUpdaterError:(NSError *)error acknowledgement:(void (^)(void))acknowledgement;
+
143 
+
151 - (void)showDownloadInitiatedWithCancellation:(void (^)(void))cancellation;
+
152 
+
160 - (void)showDownloadDidReceiveExpectedContentLength:(uint64_t)expectedContentLength;
+
161 
+
168 - (void)showDownloadDidReceiveDataOfLength:(uint64_t)length;
+
169 
+ +
179 
+
189 - (void)showExtractionReceivedProgress:(double)progress;
+
190 
+
198 - (void)showInstallingUpdate;
+
199 
+
215 - (void)showReadyToInstallAndRelaunch:(void (^)(SPUUserUpdateChoice))reply;
+
216 
+ +
229 
+
244 - (void)showUpdateInstalledAndRelaunched:(BOOL)relaunched acknowledgement:(void (^)(void))acknowledgement;
+
245 
+
252 - (void)showUpdateInFocus;
+
253 
+ +
262 
+
263 /*
+
264  * Below are deprecated methods that have been replaced by better alternatives.
+
265  * The deprecated methods will be used if the alternatives have not been implemented yet.
+
266  * In the future support for using these deprecated methods may be removed however.
+
267  */
+
268 @optional
+
269 
+
270 // Clients should move to non-deprecated methods
+
271 // Deprecated methods are only (temporarily) kept around for compatibility reasons
+
272 
+
273 - (void)showUpdateNotFoundWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateNotFoundWithError:acknowledgement: instead");
+
274 
+
275 - (void)showUpdateInstallationDidFinishWithAcknowledgement:(void (^)(void))acknowledgement __deprecated_msg("Implement -showUpdateInstalledAndRelaunched:acknowledgement: instead");
+
276 
+
277 - (void)dismissUserInitiatedUpdateCheck __deprecated_msg("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.");;
+
278 
+
279 @end
+
280 
+
281 NS_ASSUME_NONNULL_END
+
A class for containing downloaded data along with some information about it.
Definition: SPUDownloadData.h:33
+
This class represents information needed to make a permission request for checking updates.
Definition: SPUUpdatePermissionRequest.h:24
+
Definition: SPUUserUpdateState.h:38
+
Definition: SUAppcastItem.h:36
+
This class represents a response for permission to check updates.
Definition: SUUpdatePermissionResponse.h:22
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
void showDownloadDidStartExtractingUpdate()
Show the user that the update finished downloading and started extracting.
+
void showSendingTerminationSignal()
Show or dismiss progress while a termination signal is being sent to the application from Sparkle's i...
+
void dismissUpdateInstallation()
Dismiss the current update installation.
+
void showInstallingUpdate()
Show the user that the update is installing.
+
void showUpdateInFocus()
Show the user the current presented update or its progress in utmost focus.
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_initiated_update_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_initiated_update_driver_8h_source.html new file mode 100644 index 0000000..81a43d9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_initiated_update_driver_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +Sparkle: Sparkle/SPUUserInitiatedUpdateDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUserInitiatedUpdateDriver.h
+
+
+
1 //
+
2 // SPUUserInitiatedUpdateDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SPUUpdateDriver.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 @class SUHost;
+ +
16 
+ +
18 
+
19 - (instancetype)initWithHost:(SUHost *)host applicationBundle:(NSBundle *)applicationBundle sparkleBundle:(NSBundle *)sparkleBundle updater:(id)updater userDriver:(id <SPUUserDriver>)userDriver updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
Definition: SPUUserInitiatedUpdateDriver.h:17
+
Definition: SUHost.h:15
+
Definition: SPUUpdateDriver.h:20
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
The API in Sparkle for controlling the user interaction.
Definition: SPUUserDriver.h:33
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_update_state_09_private_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_update_state_09_private_8h_source.html new file mode 100644 index 0000000..3f2120d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_update_state_09_private_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: Sparkle/SPUUserUpdateState+Private.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUserUpdateState+Private.h
+
+
+
1 //
+
2 // SPUUserUpdateState+Private.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/9/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPUUserUpdateState_Private_h
+
10 #define SPUUserUpdateState_Private_h
+
11 
+
12 #import "SPUUserUpdateState.h"
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+ +
17 
+
18 - (instancetype)initWithStage:(SPUUserUpdateStage)stage userInitiated:(BOOL)userInitiated;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
23 
+
24 #endif /* SPUUserUpdateState_Private_h */
+
Definition: SPUUserUpdateState+Private.h:16
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_update_state_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_update_state_8h_source.html new file mode 100644 index 0000000..83695ab --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_user_update_state_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: Sparkle/SPUUserUpdateState.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUUserUpdateState.h
+
+
+
1 //
+
2 // SPUUserUpdateState.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/29/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPUUserUpdateState_h
+
10 #define SPUUserUpdateState_h
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #import <Sparkle/SUExport.h>
+
22 
+
23 NS_ASSUME_NONNULL_BEGIN
+
24 
+
25 typedef NS_ENUM(NSInteger, SPUUserUpdateChoice) {
+
26  SPUUserUpdateChoiceSkip,
+
27  SPUUserUpdateChoiceInstall,
+
28  SPUUserUpdateChoiceDismiss,
+
29 };
+
30 
+
31 typedef NS_ENUM(NSInteger, SPUUserUpdateStage) {
+
32  SPUUserUpdateStageNotDownloaded,
+
33  SPUUserUpdateStageDownloaded,
+
34  SPUUserUpdateStageInstalling
+
35 };
+
36 
+
37 SU_EXPORT @interface SPUUserUpdateState : NSObject
+
38 
+
39 - (instancetype)init NS_UNAVAILABLE;
+
40 
+
41 @property (nonatomic, readonly) SPUUserUpdateStage stage;
+
42 @property (nonatomic, readonly) BOOL userInitiated;
+
43 
+
44 @end
+
45 
+
46 NS_ASSUME_NONNULL_END
+
47 
+
48 #endif /* SPUUserUpdateState_h */
+
Definition: SPUUserUpdateState.h:38
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_x_p_c_service_info_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_x_p_c_service_info_8h_source.html new file mode 100644 index 0000000..93e252e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_p_u_x_p_c_service_info_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: Sparkle/SPUXPCServiceInfo.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SPUXPCServiceInfo.h
+
+
+
1 //
+
2 // SPUXPCServiceInfo.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 BOOL SPUXPCServiceExists(NSString *bundleName);
+
14 
+
15 BOOL SPUXPCValidateServiceIfBundleExists(NSString *bundleName, NSBundle *sparkleBundle, NSError * __autoreleasing *error);
+
16 
+
17 NSBundle * _Nullable SPUXPCServiceBundle(NSString *bundleName);
+
18 
+
19 NS_ASSUME_NONNULL_END
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_09_private_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_09_private_8h_source.html new file mode 100644 index 0000000..4817919 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_09_private_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: Sparkle/SUAppcast+Private.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcast+Private.h
+
+
+
1 //
+
2 // SUAppcast+Private.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/30/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 
+
18 NS_ASSUME_NONNULL_BEGIN
+
19 
+ +
21 
+ +
23 
+
24 - (nullable instancetype)initWithXMLData:(NSData *)xmlData relativeToURL:(NSURL * _Nullable)relativeURL stateResolver:(SPUAppcastItemStateResolver *)stateResolver error:(NSError * __autoreleasing *)error;
+
25 
+
26 - (SUAppcast *)copyByFilteringItems:(BOOL (^)(SUAppcastItem *))filterBlock;
+
27 
+
28 @end
+
29 
+
30 NS_ASSUME_NONNULL_END
+
Definition: SUAppcast+Private.h:22
+
Private exposed class used to resolve Appcast Item properties that rely on external factors such as a...
Definition: SPUAppcastItemStateResolver.h:30
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_8h_source.html new file mode 100644 index 0000000..9f2238c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +Sparkle: Sparkle/SUAppcast.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcast.h
+
+
+
1 //
+
2 // SUAppcast.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/12/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUAPPCAST_H
+
10 #define SUAPPCAST_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 #import <Sparkle/SUExport.h>
+
21 
+
22 NS_ASSUME_NONNULL_BEGIN
+
23 
+
24 @class SUAppcastItem;
+
25 SU_EXPORT @interface SUAppcast : NSObject
+
26 
+
27 @property (readonly, copy) NSArray<SUAppcastItem *> *items;
+
28 
+
29 @end
+
30 
+
31 NS_ASSUME_NONNULL_END
+
32 
+
33 #endif
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_driver_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_driver_8h_source.html new file mode 100644 index 0000000..d269f85 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_driver_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: Sparkle/SUAppcastDriver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcastDriver.h
+
+
+
1 //
+
2 // SUAppcastDriver.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+ +
14 @protocol SPUUpdaterDelegate;
+
15 
+
16 @protocol SUAppcastDriverDelegate <NSObject>
+
17 
+
18 - (void)didFailToFetchAppcastWithError:(NSError *)error;
+
19 - (void)didFinishLoadingAppcast:(SUAppcast *)appcast;
+
20 - (void)didFindValidUpdateWithAppcastItem:(SUAppcastItem *)appcastItem secondaryAppcastItem:(SUAppcastItem * _Nullable)secondaryAppcastItem;
+
21 - (void)didNotFindUpdateWithLatestAppcastItem:(nullable SUAppcastItem *)latestAppcastItem hostToLatestAppcastItemComparisonResult:(NSComparisonResult)hostToLatestAppcastItemComparisonResult background:(BOOL)background;
+
22 
+
23 @end
+
24 
+
25 @interface SUAppcastDriver : NSObject
+
26 
+
27 - (instancetype)initWithHost:(SUHost *)host updater:(id)updater updaterDelegate:(nullable id <SPUUpdaterDelegate>)updaterDelegate delegate:(nullable id <SUAppcastDriverDelegate>)delegate;
+
28 
+
29 - (void)loadAppcastFromURL:(NSURL *)appcastURL userAgent:(NSString *)userAgent httpHeaders:(NSDictionary * _Nullable)httpHeaders inBackground:(BOOL)background;
+
30 
+
31 - (void)cleanup:(void (^)(void))completionHandler;
+
32 
+
33 @end
+
34 
+
35 NS_ASSUME_NONNULL_END
+
Definition: SUAppcastDriver.h:26
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Provides methods to control the behavior of an SPUUpdater object.
Definition: SPUUpdaterDelegate.h:69
+
Definition: SUAppcastDriver.h:16
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_item_09_private_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_item_09_private_8h_source.html new file mode 100644 index 0000000..155b2d0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_item_09_private_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: Sparkle/SUAppcastItem+Private.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcastItem+Private.h
+
+
+
1 //
+
2 // SUAppcastItem+Private.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/30/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUAppcastItem_Private_h
+
10 #define SUAppcastItem_Private_h
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 NS_ASSUME_NONNULL_BEGIN
+
22 
+
23 // Available in SPUAppcastItemStateResolver.h (a private exposed header)
+ +
25 
+
26 @interface SUAppcastItem (Private) <NSSecureCoding>
+
27 
+
34 - (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL stateResolver:(SPUAppcastItemStateResolver *)stateResolver failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error;
+
35 
+
36 @end
+
37 
+
38 NS_ASSUME_NONNULL_END
+
39 
+
40 #endif /* SUAppcastItem_Private_h */
+
Definition: SUAppcastItem+Private.h:26
+
Private exposed class used to resolve Appcast Item properties that rely on external factors such as a...
Definition: SPUAppcastItemStateResolver.h:30
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_item_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_item_8h_source.html new file mode 100644 index 0000000..c31ce5d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_appcast_item_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +Sparkle: Sparkle/SUAppcastItem.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUAppcastItem.h
+
+
+
1 //
+
2 // SUAppcastItem.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/12/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUAPPCASTITEM_H
+
10 #define SUAPPCASTITEM_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #ifdef BUILDING_SPARKLE_TESTS
+
22 // Ignore incorrect warning
+
23 #pragma clang diagnostic push
+
24 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
25 #import "SUExport.h"
+
26 #pragma clang diagnostic pop
+
27 #else
+
28 #import <Sparkle/SUExport.h>
+
29 #endif
+
30 
+
31 @class SUSignatures;
+
32 @class SPUAppcastItemState;
+
33 
+
34 NS_ASSUME_NONNULL_BEGIN
+
35 
+
36 SU_EXPORT @interface SUAppcastItem : NSObject<NSSecureCoding>
+
37 @property (copy, readonly, nullable) NSString *title;
+
38 @property (copy, readonly, nullable) NSString *dateString;
+
39 @property (copy, readonly, nullable) NSDate *date;
+
40 @property (copy, readonly, nullable) NSString *itemDescription;
+
41 @property (strong, readonly, nullable) NSURL *releaseNotesURL;
+
42 @property (strong, readonly, nullable) SUSignatures *signatures;
+
43 @property (copy, readonly, nullable) NSString *minimumSystemVersion;
+
44 @property (copy, readonly, nullable) NSString *maximumSystemVersion;
+
45 @property (strong, readonly, nullable) NSURL *fileURL;
+
46 @property (nonatomic, readonly) uint64_t contentLength;
+
47 @property (copy, readonly) NSString *versionString;
+
48 @property (copy, readonly, nullable) NSString *osString;
+
49 @property (copy, readonly, nullable) NSString *displayVersionString;
+
50 @property (copy, readonly, nullable) NSDictionary *deltaUpdates;
+
51 @property (strong, readonly, nullable) NSURL *infoURL;
+
52 @property (copy, readonly, nullable) NSNumber* phasedRolloutInterval;
+
53 @property (nonatomic, copy, readonly) NSString *installationType;
+
54 @property (copy, readonly, nullable) NSString *minimumAutoupdateVersion;
+
55 @property (nonatomic, readonly, nullable) NSString *channel;
+
56 
+
57 @property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate;
+
58 @property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate;
+
59 @property (getter=isMajorUpgrade, readonly) BOOL majorUpgrade;
+
60 @property (getter=isMacOsUpdate, readonly) BOOL macOsUpdate;
+
61 @property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate;
+
62 
+
63 @property (nonatomic, readonly) BOOL minimumOperatingSystemVersionIsOK;
+
64 @property (nonatomic, readonly) BOOL maximumOperatingSystemVersionIsOK;
+
65 
+
66 // Returns the dictionary representing the appcast item; this might be useful later for extensions.
+
67 @property (readonly, copy) NSDictionary *propertiesDictionary;
+
68 
+
69 - (instancetype)init NS_UNAVAILABLE;
+
70 
+
71 + (instancetype)emptyAppcastItem;
+
72 
+
73 // Deprecated initializers
+
74 - (nullable instancetype)initWithDictionary:(NSDictionary *)dict __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
+
75 - (nullable instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
+
76 - (nullable instancetype)initWithDictionary:(NSDictionary *)dict relativeToURL:(NSURL * _Nullable)appcastURL failureReason:(NSString * _Nullable __autoreleasing *_Nullable)error __deprecated_msg("Properties that depend on the system or application version are not supported when used with this initializer. The designated initializer is available in SUAppcastItem+Private.h. Please first explore other APIs or contact us to describe your use case.");
+
77 
+
78 @end
+
79 
+
80 NS_ASSUME_NONNULL_END
+
81 
+
82 #endif
+
Definition: SPUAppcastItemState.h:15
+
Definition: SUAppcastItem.h:36
+
Definition: SUSignatures.h:31
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_application_info_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_application_info_8h_source.html new file mode 100644 index 0000000..38fe751 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_application_info_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SUApplicationInfo.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUApplicationInfo.h
+
+
+
1 //
+
2 // SUApplicationInfo.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/28/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS || !BUILDING_SPARKLE
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 @class SUHost, NSImage, NSApplication;
+
16 
+
17 @interface SUApplicationInfo : NSObject
+
18 
+
19 + (BOOL)isBackgroundApplication:(NSApplication *)application;
+
20 
+
21 + (NSImage *)bestIconForHost:(SUHost *)host;
+
22 
+
23 @end
+
24 
+
25 NS_ASSUME_NONNULL_END
+
26 
+
27 #endif
+
Definition: SUApplicationInfo.h:18
+
Definition: SUHost.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_bundle_icon_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_bundle_icon_8h_source.html new file mode 100644 index 0000000..bae2c59 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_bundle_icon_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +Sparkle: Sparkle/SUBundleIcon.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUBundleIcon.h
+
+
+
1 //
+
2 // SUBundleIcon.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/24/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUHost;
+
14 
+
15 @interface SUBundleIcon : NSObject
+
16 
+
17 + (NSURL * _Nullable)iconURLForHost:(SUHost *)host;
+
18 
+
19 @end
+
20 
+
21 NS_ASSUME_NONNULL_END
+
Definition: SUBundleIcon.h:16
+
Definition: SUHost.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_constants_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_constants_8h_source.html new file mode 100644 index 0000000..b7b58fe --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_constants_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +Sparkle: Sparkle/SUConstants.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUConstants.h
+
+
+
1 //
+
2 // SUConstants.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/16/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 
+
10 #ifndef SUCONSTANTS_H
+
11 #define SUCONSTANTS_H
+
12 
+
13 #import <Foundation/Foundation.h>
+
14 
+
15 // -----------------------------------------------------------------------------
+
16 // Misc:
+
17 // -----------------------------------------------------------------------------
+
18 
+
19 extern const NSTimeInterval SUDefaultUpdatePermissionPromptInterval;
+
20 extern const NSTimeInterval SUMinimumUpdateCheckInterval;
+
21 extern const NSTimeInterval SUDefaultUpdateCheckInterval;
+
22 extern const uint64_t SULeewayUpdateCheckInterval;
+
23 extern const NSTimeInterval SUImpatientUpdateCheckInterval;
+
24 
+
25 extern NSString *const SUBundleIdentifier;
+
26 
+
27 extern NSString *const SUAppcastAttributeValueMacOS;
+
28 
+
29 // -----------------------------------------------------------------------------
+
30 // Notifications:
+
31 // -----------------------------------------------------------------------------
+
32 
+
33 extern NSString *const SUTechnicalErrorInformationKey;
+
34 
+
35 // -----------------------------------------------------------------------------
+
36 // PList keys::
+
37 // -----------------------------------------------------------------------------
+
38 
+
39 extern NSString *const SUFeedURLKey;
+
40 extern NSString *const SUHasLaunchedBeforeKey;
+
41 extern NSString *const SURelaunchHostBundleKey;
+
42 extern NSString *const SUShowReleaseNotesKey;
+
43 extern NSString *const SUSkippedMinorVersionKey;
+
44 extern NSString *const SUSkippedMajorVersionKey;
+
45 extern NSString *const SUScheduledCheckIntervalKey;
+
46 extern NSString *const SULastCheckTimeKey;
+
47 extern NSString *const SUExpectsDSASignatureKey;
+
48 extern NSString *const SUExpectsEDSignatureKey;
+
49 extern NSString *const SUPublicDSAKeyKey;
+
50 extern NSString *const SUPublicDSAKeyFileKey;
+
51 extern NSString *const SUPublicEDKeyKey;
+
52 extern NSString *const SUAutomaticallyUpdateKey;
+
53 extern NSString *const SUAllowsAutomaticUpdatesKey;
+
54 extern NSString *const SUEnableAutomaticChecksKey;
+
55 extern NSString *const SUEnableSystemProfilingKey;
+
56 extern NSString *const SUSendProfileInfoKey;
+
57 extern NSString *const SUUpdateGroupIdentifierKey;
+
58 extern NSString *const SULastProfileSubmitDateKey;
+
59 extern NSString *const SUPromptUserOnFirstLaunchKey;
+
60 extern NSString *const SUDefaultsDomainKey;
+
61 extern NSString *const SUEnableJavaScriptKey;
+
62 extern NSString *const SUFixedHTMLDisplaySizeKey __attribute__((deprecated("This key is obsolete and has no effect.")));
+
63 extern NSString *const SUAppendVersionNumberKey __attribute__((deprecated("This key is obsolete. See SPARKLE_APPEND_VERSION_NUMBER.")));
+
64 extern NSString *const SUEnableAutomatedDowngradesKey __attribute__((deprecated("This key is obsolete. See SPARKLE_AUTOMATED_DOWNGRADES.")));
+
65 extern NSString *const SUNormalizeInstalledApplicationNameKey __attribute__((deprecated("This key is obsolete. SPARKLE_NORMALIZE_INSTALLED_APPLICATION_NAME.")));
+
66 extern NSString *const SURelaunchToolNameKey __attribute__((deprecated("This key is obsolete. SPARKLE_RELAUNCH_TOOL_NAME.")));
+
67 
+
68 // -----------------------------------------------------------------------------
+
69 // Appcast keys::
+
70 // -----------------------------------------------------------------------------
+
71 
+
72 extern NSString *const SUAppcastAttributeDeltaFrom;
+
73 extern NSString *const SUAppcastAttributeDSASignature;
+
74 extern NSString *const SUAppcastAttributeEDSignature;
+
75 extern NSString *const SUAppcastAttributeShortVersionString;
+
76 extern NSString *const SUAppcastAttributeVersion;
+
77 extern NSString *const SUAppcastAttributeOsType;
+
78 extern NSString *const SUAppcastAttributeInstallationType;
+
79 
+
80 extern NSString *const SUAppcastElementVersion;
+
81 extern NSString *const SUAppcastElementShortVersionString;
+
82 extern NSString *const SUAppcastElementCriticalUpdate;
+
83 extern NSString *const SUAppcastElementDeltas;
+
84 extern NSString *const SUAppcastElementMinimumAutoupdateVersion;
+
85 extern NSString *const SUAppcastElementMinimumSystemVersion;
+
86 extern NSString *const SUAppcastElementMaximumSystemVersion;
+
87 extern NSString *const SUAppcastElementReleaseNotesLink;
+
88 extern NSString *const SUAppcastElementTags;
+
89 extern NSString *const SUAppcastElementPhasedRolloutInterval;
+
90 extern NSString *const SUAppcastElementInformationalUpdate;
+
91 extern NSString *const SUAppcastElementChannel;
+
92 
+
93 extern NSString *const SURSSAttributeURL;
+
94 extern NSString *const SURSSAttributeLength;
+
95 
+
96 extern NSString *const SURSSElementDescription;
+
97 extern NSString *const SURSSElementEnclosure;
+
98 extern NSString *const SURSSElementLink;
+
99 extern NSString *const SURSSElementPubDate;
+
100 extern NSString *const SURSSElementTitle;
+
101 
+
102 extern NSString *const SUXMLLanguage;
+
103 
+
104 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_errors_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_errors_8h_source.html new file mode 100644 index 0000000..c957dab --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_errors_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +Sparkle: Sparkle/SUErrors.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUErrors.h
+
+
+
1 //
+
2 // SUErrors.h
+
3 // Sparkle
+
4 //
+
5 // Created by C.W. Betts on 10/13/14.
+
6 // Copyright (c) 2014 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUERRORS_H
+
10 #define SUERRORS_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #if defined(BUILDING_SPARKLE_TOOL) || defined(BUILDING_SPARKLE_TESTS)
+
22 // Ignore incorrect warning
+
23 #pragma clang diagnostic push
+
24 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
25 #import "SUExport.h"
+
26 #pragma clang diagnostic pop
+
27 #else
+
28 #import <Sparkle/SUExport.h>
+
29 #endif
+
30 
+
34 SU_EXPORT extern NSString *const SUSparkleErrorDomain;
+
35 
+
36 typedef NS_ENUM(OSStatus, SUError) {
+
37  // Configuration phase errors
+
38  SUNoPublicDSAFoundError = 0001,
+
39  SUInsufficientSigningError = 0002,
+
40  SUInsecureFeedURLError = 0003,
+
41  SUInvalidFeedURLError = 0004,
+
42  SUInvalidUpdaterError = 0005,
+
43  SUInvalidHostBundleIdentifierError = 0006,
+
44  SUInvalidHostVersionError = 0007,
+
45 
+
46  // Appcast phase errors.
+
47  SUAppcastParseError = 1000,
+
48  SUNoUpdateError = 1001,
+
49  SUAppcastError = 1002,
+
50  SURunningFromDiskImageError = 1003,
+
51  SUResumeAppcastError = 1004,
+
52  SURunningTranslocated = 1005,
+
53  SUWebKitTerminationError = 1006,
+
54 
+
55  // Download phase errors.
+
56  SUTemporaryDirectoryError = 2000,
+
57  SUDownloadError = 2001,
+
58 
+
59  // Extraction phase errors.
+
60  SUUnarchivingError = 3000,
+
61  SUSignatureError = 3001,
+
62  SUValidationError = 3002,
+
63 
+
64  // Installation phase errors.
+
65  SUFileCopyFailure = 4000,
+
66  SUAuthenticationFailure = 4001,
+
67  SUMissingUpdateError = 4002,
+
68  SUMissingInstallerToolError = 4003,
+
69  SURelaunchError = 4004,
+
70  SUInstallationError = 4005,
+
71  SUDowngradeError = 4006,
+
72  SUInstallationCanceledError = 4007,
+
73  SUInstallationAuthorizeLaterError = 4008,
+
74  SUNotAllowedInteractionError = 4009,
+
75  SUAgentInvalidationError = 4010,
+
76 
+
77  // API misuse errors.
+
78  SUIncorrectAPIUsageError = 5000
+
79 };
+
80 
+
81 typedef NS_ENUM(OSStatus, SPUNoUpdateFoundReason) {
+
82  SPUNoUpdateFoundReasonUnknown,
+
83  SPUNoUpdateFoundReasonOnLatestVersion,
+
84  SPUNoUpdateFoundReasonOnNewerThanLatestVersion,
+
85  SPUNoUpdateFoundReasonSystemIsTooOld,
+
86  SPUNoUpdateFoundReasonSystemIsTooNew
+
87 };
+
88 
+
89 SU_EXPORT extern NSString *const SPUNoUpdateFoundReasonKey;
+
90 SU_EXPORT extern NSString *const SPULatestAppcastItemFoundKey;
+
91 SU_EXPORT extern NSString *const SPUNoUpdateFoundUserInitiatedKey;
+
92 
+
93 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_export_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_export_8h_source.html new file mode 100644 index 0000000..df93771 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_export_8h_source.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: Sparkle/SUExport.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUExport.h
+
+
+
1 //
+
2 // SUExport.h
+
3 // Sparkle
+
4 //
+
5 // Created by Jake Petroules on 2014-08-23.
+
6 // Copyright (c) 2014 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUEXPORT_H
+
10 #define SUEXPORT_H
+
11 
+
12 #ifdef BUILDING_SPARKLE
+
13 #define SU_EXPORT __attribute__((visibility("default")))
+
14 #else
+
15 #define SU_EXPORT
+
16 #endif
+
17 
+
18 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_file_manager_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_file_manager_8h_source.html new file mode 100644 index 0000000..60a6557 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_file_manager_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: Sparkle/SUFileManager.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUFileManager.h
+
+
+
1 //
+
2 // SUFileManager.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/18/15.
+
6 // Copyright (c) 2015 zgcoder. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SUExport.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
19 @interface SUFileManager : NSObject
+
20 
+
26 - (instancetype)init;
+
27 
+
38 - (NSURL * _Nullable)makeTemporaryDirectoryWithPreferredName:(NSString *)preferredName appropriateForDirectoryURL:(NSURL *)appropriateURL error:(NSError * __autoreleasing *)error;
+
39 
+
48 - (BOOL)makeDirectoryAtURL:(NSURL *)targetURL error:(NSError **)error;
+
49 
+
60 - (BOOL)moveItemAtURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL error:(NSError **)error;
+
61 
+
73 - (BOOL)replaceItemAtURL:(NSURL *)originalItemURL withItemAtURL:(NSURL *)newItemURL error:(NSError **)error __OSX_AVAILABLE(10.13);
+
74 
+
84 - (BOOL)copyItemAtURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL error:(NSError **)error;
+
85 
+
94 - (BOOL)removeItemAtURL:(NSURL *)url error:(NSError **)error;
+
95 
+
110 - (BOOL)changeOwnerAndGroupOfItemAtRootURL:(NSURL *)targetURL toMatchURL:(NSURL *)matchURL error:(NSError **)error;
+
111 
+
123 - (BOOL)updateModificationAndAccessTimeOfItemAtURL:(NSURL *)targetURL error:(NSError **)error;
+
124 
+
137 - (BOOL)updateAccessTimeOfItemAtRootURL:(NSURL *)targetURL error:(NSError * __autoreleasing *)error;
+
138 
+
155 - (BOOL)releaseItemFromQuarantineAtRootURL:(NSURL *)rootURL error:(NSError **)error;
+
156 
+
157 @end
+
158 
+
159 NS_ASSUME_NONNULL_END
+
Definition: SUFileManager.h:20
+
instancetype init()
Definition: SUFileManager.m:56
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_host_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_host_8h_source.html new file mode 100644 index 0000000..573ca1b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_host_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +Sparkle: Sparkle/SUHost.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUHost.h
+
+
+
1 //
+
2 // SUHost.h
+
3 // Sparkle
+
4 //
+
5 // Copyright 2008 Andy Matuschak. All rights reserved.
+
6 //
+
7 
+
8 #import <Foundation/Foundation.h>
+
9 
+
10 NS_ASSUME_NONNULL_BEGIN
+
11 
+
12 @class SUPublicKeys;
+
13 
+
14 @interface SUHost : NSObject
+
15 
+
16 @property (strong, readonly) NSBundle *bundle;
+
17 
+
18 - (instancetype)initWithBundle:(NSBundle *)aBundle;
+
19 
+
20 @property (readonly, copy) NSString *bundlePath;
+
21 @property (readonly, copy) NSString *name;
+
22 @property (readonly, copy) NSString *version;
+
23 @property (readonly, nonatomic) BOOL validVersion;
+
24 @property (readonly, copy) NSString *displayVersion;
+
25 @property (readonly) SUPublicKeys *publicKeys;
+
26 
+
27 @property (getter=isRunningOnReadOnlyVolume, readonly) BOOL runningOnReadOnlyVolume;
+
28 @property (getter=isRunningTranslocated, readonly) BOOL runningTranslocated;
+
29 @property (readonly, nonatomic, copy, nullable) NSString *publicDSAKeyFileKey;
+
30 
+
31 - (nullable id)objectForInfoDictionaryKey:(NSString *)key;
+
32 - (BOOL)boolForInfoDictionaryKey:(NSString *)key;
+
33 - (nullable id)objectForUserDefaultsKey:(NSString *)defaultName;
+
34 - (void)setObject:(nullable id)value forUserDefaultsKey:(NSString *)defaultName;
+
35 - (BOOL)boolForUserDefaultsKey:(NSString *)defaultName;
+
36 - (void)setBool:(BOOL)value forUserDefaultsKey:(NSString *)defaultName;
+
37 - (nullable id)objectForKey:(NSString *)key;
+
38 - (BOOL)boolForKey:(NSString *)key;
+
39 @end
+
40 
+
41 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
Definition: SUSignatures.h:44
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_installer_agent_initiation_protocol_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_installer_agent_initiation_protocol_8h_source.html new file mode 100644 index 0000000..6e894f8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_installer_agent_initiation_protocol_8h_source.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/SUInstallerAgentInitiationProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUInstallerAgentInitiationProtocol.h
+
+
+
1 //
+
2 // SUInstallerAgentInitiationProtocol.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 7/17/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+ +
12 
+
13 - (void)connectionDidInitiateWithReply:(void (^)(void))acknowledgement;
+
14 
+
15 - (void)connectionWillInvalidateWithError:(NSError *)error;
+
16 
+
17 @end
+
Definition: SUInstallerAgentInitiationProtocol.h:11
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_installer_protocol_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_installer_protocol_8h_source.html new file mode 100644 index 0000000..03f78b9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_installer_protocol_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +Sparkle: Sparkle/SUInstallerProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUInstallerProtocol.h
+
+
+
1 //
+
2 // SUInstallerProtocol.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/26/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @protocol SUInstallerProtocol <NSObject>
+
14 
+
15 // Any installation work can be done prior to user application being terminated and relaunched
+
16 // Currently this is invoked after the user application is terminated, but this may change in the future.
+
17 // No UI should occur during this stage (i.e, do not show package installer apps, etc..)
+
18 // Should be able to be called from non-main thread
+
19 - (BOOL)performInitialInstallation:(NSError **)error;
+
20 
+
21 // Any installation work after the user application has been terminated. This is where the final installation work can be done.
+
22 // After this stage is done, the user application may be relaunched.
+
23 // Should be able to be called from non-main thread
+
24 - (BOOL)performFinalInstallationProgressBlock:(nullable void(^)(double))cb error:(NSError **)error;
+
25 
+
26 // Indicates whether or not this installer can install the update silently in the background, without hindering the user
+
27 // Should be thread safe
+
28 - (BOOL)canInstallSilently;
+
29 
+
30 // The destination and installation path of the bundle being updated
+
31 // Should be thread safe
+
32 - (NSString *)installationPath;
+
33 
+
34 @end
+
35 
+
36 NS_ASSUME_NONNULL_END
+
Definition: SUInstallerProtocol.h:13
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_legacy_web_view_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_legacy_web_view_8h_source.html new file mode 100644 index 0000000..a607621 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_legacy_web_view_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SULegacyWebView.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SULegacyWebView.h
+
+
+
1 //
+
2 // SULegacyWebView.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/30/20.
+
6 // Copyright © 2020 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 #import "SUWebView.h"
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 @interface SULegacyWebView : NSObject <SUWebView>
+
17 
+
18 - (instancetype)initWithColorStyleSheetLocation:(NSURL *)colorStyleSheetLocation fontFamily:(NSString *)fontFamily fontPointSize:(int)fontPointSize javaScriptEnabled:(BOOL)javaScriptEnabled;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
23 
+
24 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_localizations_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_localizations_8h_source.html new file mode 100644 index 0000000..a168384 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_localizations_8h_source.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: Sparkle/SULocalizations.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SULocalizations.h
+
+
+
1 //
+
2 // SULocalizations.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/28/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SULocalizations_h
+
10 #define SULocalizations_h
+
11 
+
12 #import "SUConstants.h"
+
13 
+
14 #define SULocalizedString(key, comment) NSLocalizedStringFromTableInBundle(key, @"Sparkle", (NSBundle * _Nonnull)([NSBundle bundleWithIdentifier:SUBundleIdentifier] ? [NSBundle bundleWithIdentifier:SUBundleIdentifier] : [NSBundle mainBundle]), comment)
+
15 
+
16 #endif /* SULocalizations_h */
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_log_09_n_s_error_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_log_09_n_s_error_8h_source.html new file mode 100644 index 0000000..70b735d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_log_09_n_s_error_8h_source.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: Sparkle/SULog+NSError.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SULog+NSError.h
+
+
+
1 //
+
2 // SULog+NSError.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/19/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SULog_NSError_h
+
10 #define SULog_NSError_h
+
11 
+
12 #import <Foundation/Foundation.h>
+
13 
+
14 void SULogError(NSError *error);
+
15 
+
16 #endif /* SULog_NSError_h */
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_log_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_log_8h_source.html new file mode 100644 index 0000000..af48715 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_log_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SULog.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SULog.h
+
+
+
1 //
+
2 // SULog.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 5/18/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SULOG_H
+
10 #define SULOG_H
+
11 
+
12 #include <Foundation/Foundation.h>
+
13 
+
14 typedef NS_ENUM(uint8_t, SULogLevel) {
+
15  // This level is for information that *might* result a failure
+
16  // For now until other levels are added, this may serve as a level for other information as well
+
17  SULogLevelDefault,
+
18  // This level is for errors that occurred
+
19  SULogLevelError
+
20 };
+
21 
+
22 // Logging utlity function that is thread-safe
+
23 // On 10.12 or later this uses os_log
+
24 // Otherwise on older systems this uses ASL
+
25 // For debugging command line tools, you may have to use Console.app or log(1) to view log messages
+
26 // Try to keep log messages as compact/short as possible
+
27 void SULog(SULogLevel level, NSString *format, ...) NS_FORMAT_FUNCTION(2, 3);
+
28 
+
29 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_normalization_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_normalization_8h_source.html new file mode 100644 index 0000000..4975425 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_normalization_8h_source.html @@ -0,0 +1,98 @@ + + + + + + + +Sparkle: Sparkle/SUNormalization.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUNormalization.h
+
+
+
1 //
+
2 // SUNormalization.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/26/21.
+
6 // Copyright © 2021 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "SUHost.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+
14 NSString *SUNormalizedInstallationPath(SUHost *host);
+
15 
+
16 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_operating_system_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_operating_system_8h_source.html new file mode 100644 index 0000000..ad826a6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_operating_system_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SUOperatingSystem.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUOperatingSystem.h
+
+
+
1 //
+
2 // SUOperatingSystem.h
+
3 // Sparkle
+
4 //
+
5 // Copyright © 2015 Sparkle Project. All rights reserved.
+
6 //
+
7 
+
8 #import <Foundation/Foundation.h>
+
9 
+
10 #if __MAC_OS_X_VERSION_MAX_ALLOWED < 101000
+
11 typedef struct {
+
12  NSInteger majorVersion;
+
13  NSInteger minorVersion;
+
14  NSInteger patchVersion;
+ +
16 #endif
+
17 
+
18 @interface SUOperatingSystem : NSObject
+
19 
+
20 + (NSOperatingSystemVersion)operatingSystemVersion;
+
21 + (BOOL)isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version;
+
22 + (NSString *)systemVersionString;
+
23 
+
24 @end
+
Definition: SUOperatingSystem.h:19
+
Definition: SUOperatingSystem.h:11
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_phased_update_group_info_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_phased_update_group_info_8h_source.html new file mode 100644 index 0000000..15ddc0b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_phased_update_group_info_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SUPhasedUpdateGroupInfo.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUPhasedUpdateGroupInfo.h
+
+
+
1 //
+
2 // SUPhasedUpdateGroupInfo.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 01/24/21.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @class SUHost;
+
14 
+
15 @interface SUPhasedUpdateGroupInfo : NSObject
+
16 
+
17 + (NSUInteger)updateGroupForHost:(SUHost*)host;
+
18 + (NSNumber*)setNewUpdateGroupIdentifierForHost:(SUHost*)host;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
Definition: SUPhasedUpdateGroupInfo.h:16
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_signatures_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_signatures_8h_source.html new file mode 100644 index 0000000..f9c6533 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_signatures_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +Sparkle: Sparkle/SUSignatures.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUSignatures.h
+
+
+
1 //
+
2 // SUSignatures.h
+
3 // Sparkle
+
4 //
+
5 // Created by Kornel on 15/09/2018.
+
6 // Copyright © 2018 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 #if __MAC_OS_X_VERSION_MAX_ALLOWED < 1090
+ +
13 - (id)initWithBase64Encoding:(NSString *)base64String;
+
14 @end
+
15 #endif
+
16 
+
17 NS_ASSUME_NONNULL_BEGIN
+
18 
+
19 typedef NS_ENUM(uint8_t, SUSigningInputStatus) {
+
21  SUSigningInputStatusAbsent = 0,
+
22 
+
24  SUSigningInputStatusInvalid,
+
25 
+
27  SUSigningInputStatusPresent,
+
28  SUSigningInputStatusLastValidCase = SUSigningInputStatusPresent
+
29 };
+
30 
+
31 @interface SUSignatures : NSObject <NSSecureCoding> {
+
32  unsigned char ed25519_signature[64];
+
33 }
+
34 @property (strong, readonly, nullable) NSData *dsaSignature;
+
35 @property (readonly) SUSigningInputStatus dsaSignatureStatus;
+
36 
+
37 @property (readonly, nullable, nonatomic) const unsigned char *ed25519Signature;
+
38 @property (readonly) SUSigningInputStatus ed25519SignatureStatus;
+
39 
+
40 - (instancetype)initWithDsa:(NSString * _Nullable)dsa ed:(NSString * _Nullable)ed;
+
41 @end
+
42 
+
43 
+
44 @interface SUPublicKeys : NSObject {
+
45  unsigned char ed25519_public_key[32];
+
46 }
+
47 @property (strong, readonly, nullable) NSString *dsaPubKey;
+
48 @property (readonly) SUSigningInputStatus dsaPubKeyStatus;
+
49 
+
50 @property (readonly, nullable, nonatomic) const unsigned char *ed25519PubKey;
+
51 @property (readonly) SUSigningInputStatus ed25519PubKeyStatus;
+
52 
+
54 @property (readonly) BOOL hasAnyKeys;
+
55 
+
56 - (instancetype)initWithDsa:(NSString * _Nullable)dsa ed:(NSString * _Nullable)ed;
+
57 
+
58 @end
+
59 
+
60 NS_ASSUME_NONNULL_END
+
Definition: SUSignatures.h:12
+
Definition: SUSignatures.h:44
+
Definition: SUSignatures.h:31
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_standard_version_comparator_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_standard_version_comparator_8h_source.html new file mode 100644 index 0000000..8a78815 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_standard_version_comparator_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: Sparkle/SUStandardVersionComparator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUStandardVersionComparator.h
+
+
+
1 //
+
2 // SUStandardVersionComparator.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 12/21/07.
+
6 // Copyright 2007 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUSTANDARDVERSIONCOMPARATOR_H
+
10 #define SUSTANDARDVERSIONCOMPARATOR_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #ifdef BUILDING_SPARKLE_TOOL
+
22 // Ignore incorrect warning
+
23 #pragma clang diagnostic push
+
24 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
25 #import "SUExport.h"
+
26 #import "SUVersionComparisonProtocol.h"
+
27 #pragma clang diagnostic pop
+
28 #else
+
29 #import <Sparkle/SUExport.h>
+
30 #import <Sparkle/SUVersionComparisonProtocol.h>
+
31 #endif
+
32 
+
33 NS_ASSUME_NONNULL_BEGIN
+
34 
+
42 SU_EXPORT @interface SUStandardVersionComparator : NSObject <SUVersionComparison>
+
43 
+
47 - (instancetype)init;
+
48 
+ +
55 
+
61 - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
+
62 @end
+
63 
+
64 NS_ASSUME_NONNULL_END
+
65 #endif
+
Sparkle's default version comparator.
Definition: SUStandardVersionComparator.h:42
+
SUStandardVersionComparator * defaultComparator()
Returns a singleton instance of the comparator.
Definition: SUStandardVersionComparator.m:22
+
instancetype init()
Initializes a new instance of the standard version comparator.
Definition: SUStandardVersionComparator.m:17
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_status_controller_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_status_controller_8h_source.html new file mode 100644 index 0000000..01f96e8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_status_controller_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: Sparkle/SUStatusController.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUStatusController.h
+
+
+
1 //
+
2 // SUStatusController.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/14/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS || !BUILDING_SPARKLE
+
10 
+
11 #ifndef SUSTATUSCONTROLLER_H
+
12 #define SUSTATUSCONTROLLER_H
+
13 
+
14 #import <Cocoa/Cocoa.h>
+
15 
+
16 @class SUHost;
+
17 @interface SUStatusController : NSWindowController
+
18 @property (weak) IBOutlet NSButton *actionButton;
+
19 @property (weak) IBOutlet NSProgressIndicator *progressBar;
+
20 @property (weak) IBOutlet NSTextField *statusTextField;
+
21 
+
22 @property (copy) NSString *statusText;
+
23 @property double progressValue;
+
24 @property (nonatomic) double maxProgressValue;
+
25 @property (getter=isButtonEnabled) BOOL buttonEnabled;
+
26 
+
27 - (instancetype)initWithHost:(SUHost *)host;
+
28 
+
29 // Pass 0 for the max progress value to get an indeterminate progress bar.
+
30 // Pass nil for the status text to not show it.
+
31 - (void)beginActionWithTitle:(NSString *)title maxProgressValue:(double)maxProgressValue statusText:(NSString *)statusText;
+
32 
+
33 // If isDefault is YES, the button's key equivalent will be \r.
+
34 - (void)setButtonTitle:(NSString *)buttonTitle target:(id)target action:(SEL)action isDefault:(BOOL)isDefault;
+
35 
+
36 @end
+
37 
+
38 #endif
+
39 
+
40 #endif
+
Definition: SUHost.h:15
+
Definition: SUStatusController.h:18
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_system_profiler_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_system_profiler_8h_source.html new file mode 100644 index 0000000..c3969b5 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_system_profiler_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SUSystemProfiler.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUSystemProfiler.h
+
+
+
1 //
+
2 // SUSystemProfiler.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 12/22/07.
+
6 // Copyright 2007 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUSYSTEMPROFILER_H
+
10 #define SUSYSTEMPROFILER_H
+
11 
+
12 #import <Foundation/Foundation.h>
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 @class SUHost;
+
17 @interface SUSystemProfiler : NSObject
+
18 
+
19 + (NSArray<NSDictionary<NSString *, NSString *> *> *)systemProfileArrayForHost:(SUHost *)host;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
24 #endif
+
Definition: SUHost.h:15
+
Definition: SUSystemProfiler.h:18
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_touch_bar_button_group_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_touch_bar_button_group_8h_source.html new file mode 100644 index 0000000..9ef0b84 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_touch_bar_button_group_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: Sparkle/SUTouchBarButtonGroup.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUTouchBarButtonGroup.h
+
+
+
1 //
+
2 // SUTouchBarButtonGroup.h
+
3 // Sparkle
+
4 //
+
5 // Created by Yuxin Wang on 05/01/2017.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS || !BUILDING_SPARKLE
+
10 
+
11 #import <Cocoa/Cocoa.h>
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 @interface SUTouchBarButtonGroup : NSViewController
+
16 
+
17 @property (nonatomic, readonly, copy) NSArray<NSButton *> *buttons;
+
18 
+
19 - (instancetype)initByReferencingButtons:(NSArray<NSButton *> *)buttons;
+
20 
+
21 @end
+
22 
+
23 NS_ASSUME_NONNULL_END
+
24 
+
25 #endif
+
Definition: SUTouchBarButtonGroup.h:16
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_touch_bar_forward_declarations_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_touch_bar_forward_declarations_8h_source.html new file mode 100644 index 0000000..66c698b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_touch_bar_forward_declarations_8h_source.html @@ -0,0 +1,176 @@ + + + + + + + +Sparkle: Sparkle/SUTouchBarForwardDeclarations.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUTouchBarForwardDeclarations.h
+
+
+
1 //
+
2 // SUTouchBarForwardDeclarations.h
+
3 // Sparkle
+
4 //
+
5 // Created by Yuxin Wang on 18/01/2017.
+
6 // Copyright © 2017 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 // Once Sparkle no longer supports OSX 10.12.0, this file can be deleted.
+
12 
+
13 #import <Foundation/Foundation.h>
+
14 
+
15 #if __MAC_OS_X_VERSION_MAX_ALLOWED < 101201
+
16 
+
17 NS_ASSUME_NONNULL_BEGIN
+
18 
+
19 @class NSTouchBar;
+
20 @class NSTouchBarItem;
+
21 @class NSCustomTouchBarItem;
+
22 
+
23 typedef NSString * NSTouchBarItemIdentifier;
+
24 typedef NSString * NSTouchBarCustomizationIdentifier;
+
25 
+
26 @protocol NSTouchBarDelegate;
+
27 
+
28 NS_CLASS_AVAILABLE_MAC(10_12_2)
+
29 @interface NSTouchBar : NSObject <NSCoding>
+
30 
+
31 - (instancetype)init NS_DESIGNATED_INITIALIZER;
+
32 - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
+
33 
+
34 @property (copy, nullable) NSTouchBarCustomizationIdentifier customizationIdentifier;
+
35 @property (copy) NSArray<NSTouchBarItemIdentifier> *customizationAllowedItemIdentifiers;
+
36 @property (copy) NSArray<NSTouchBarItemIdentifier> *customizationRequiredItemIdentifiers;
+
37 @property (copy) NSArray<NSTouchBarItemIdentifier> *defaultItemIdentifiers;
+
38 @property (copy, readonly) NSArray<NSTouchBarItemIdentifier> *itemIdentifiers;
+
39 @property (copy, nullable) NSTouchBarItemIdentifier principalItemIdentifier;
+
40 @property (copy, nullable) NSTouchBarItemIdentifier escapeKeyReplacementItemIdentifier;
+
41 @property (copy) NSSet<NSTouchBarItem *> *templateItems;
+
42 @property (nullable, weak) id <NSTouchBarDelegate> delegate;
+
43 - (nullable __kindof NSTouchBarItem *)itemForIdentifier:(NSTouchBarItemIdentifier)identifier;
+
44 @property (readonly, getter=isVisible) BOOL visible;
+
45 
+
46 @end
+
47 
+
48 @protocol NSTouchBarDelegate<NSObject>
+
49 @optional
+
50 - (nullable NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar
+
51  makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier;
+
52 @end
+
53 
+
54 typedef float NSTouchBarItemPriority;
+
55 
+
56 NS_CLASS_AVAILABLE_MAC(10_12_2)
+
57 @interface NSTouchBarItem : NSObject <NSCoding>
+
58 
+
59 - (instancetype)initWithIdentifier:(NSTouchBarItemIdentifier)identifier NS_DESIGNATED_INITIALIZER;
+
60 - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
+
61 - (instancetype)init NS_UNAVAILABLE;
+
62 
+
63 @property (readonly, copy) NSTouchBarItemIdentifier identifier;
+
64 @property NSTouchBarItemPriority visibilityPriority;
+
65 @property (readonly, nullable) NSView *view;
+
66 @property (readonly, nullable) NSViewController *viewController;
+
67 @property (readonly, copy) NSString *customizationLabel;
+
68 @property (readonly, getter=isVisible) BOOL visible;
+
69 
+
70 @end
+
71 
+
72 NS_CLASS_AVAILABLE_MAC(10_12_2)
+
73 @interface NSCustomTouchBarItem : NSTouchBarItem
+
74 
+
75 @property (readwrite, strong) __kindof NSView *view;
+
76 @property (readwrite, strong, nullable) __kindof NSViewController *viewController;
+
77 @property (readwrite, copy, null_resettable) NSString *customizationLabel;
+
78 
+
79 @end
+
80 
+
81 NS_ASSUME_NONNULL_END
+
82 
+
83 #else
+
84 
+
85 // When compiling against the 10.12.1 SDK or later, just provide forward
+
86 // declarations to suppress the partial availability warnings.
+
87 
+
88 @class NSTouchBar;
+
89 @protocol NSTouchBarDelegate;
+
90 @class NSTouchBarItem;
+
91 @class NSCustomTouchBarItem;
+
92 
+
93 #endif
+
94 
+
95 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_alert_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_alert_8h_source.html new file mode 100644 index 0000000..2349b22 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_alert_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +Sparkle: Sparkle/SUUpdateAlert.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdateAlert.h
+
+
+
1 //
+
2 // SUUpdateAlert.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/12/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #ifndef SUUPDATEALERT_H
+
12 #define SUUPDATEALERT_H
+
13 
+
14 #import <Cocoa/Cocoa.h>
+
15 #import "SUVersionDisplayProtocol.h"
+
16 #import "SPUUserUpdateState.h"
+
17 
+
18 @protocol SUUpdateAlertDelegate;
+
19 
+ +
21 @interface SUUpdateAlert : NSWindowController
+
22 
+
23 @property (nonatomic, weak, readonly) id <SUVersionDisplay> versionDisplayer;
+
24 
+
25 - (instancetype)initWithAppcastItem:(SUAppcastItem *)item state:(SPUUserUpdateState *)state host:(SUHost *)aHost versionDisplayer:(id <SUVersionDisplay>)aVersionDisplayer completionBlock:(void (^)(SPUUserUpdateChoice))block;
+
26 
+
27 - (void)showUpdateReleaseNotesWithDownloadData:(SPUDownloadData *)downloadData;
+
28 - (void)showReleaseNotesFailedToDownload;
+
29 
+
30 - (IBAction)installUpdate:sender;
+
31 - (IBAction)skipThisVersion:sender;
+
32 - (IBAction)remindMeLater:sender;
+
33 
+
34 - (void)setInstallButtonFocus:(BOOL)focus;
+
35 
+
36 @end
+
37 
+
38 #endif
+
39 
+
40 #endif
+
A class for containing downloaded data along with some information about it.
Definition: SPUDownloadData.h:33
+
Definition: SPUUserUpdateState.h:38
+
Definition: SUAppcastItem.h:36
+
Definition: SUHost.h:15
+
Applies special display formatting to version numbers.
Definition: SUVersionDisplayProtocol.h:22
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_permission_prompt_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_permission_prompt_8h_source.html new file mode 100644 index 0000000..4e530a0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_permission_prompt_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Sparkle/SUUpdatePermissionPrompt.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdatePermissionPrompt.h
+
+
+
1 //
+
2 // SUUpdatePermissionPrompt.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 1/24/08.
+
6 // Copyright 2008 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #ifndef SUUPDATEPERMISSIONPROMPT_H
+
12 #define SUUPDATEPERMISSIONPROMPT_H
+
13 
+
14 #import <Cocoa/Cocoa.h>
+
15 
+ +
17 
+
18 @interface SUUpdatePermissionPrompt : NSWindowController
+
19 
+
20 - (instancetype)initPromptWithHost:(SUHost *)theHost request:(SPUUpdatePermissionRequest *)request reply:(void (^)(SUUpdatePermissionResponse *))reply;
+
21 
+
22 @end
+
23 
+
24 #endif
+
25 
+
26 #endif
+
This class represents information needed to make a permission request for checking updates.
Definition: SPUUpdatePermissionRequest.h:24
+
Definition: SUHost.h:15
+
This class represents a response for permission to check updates.
Definition: SUUpdatePermissionResponse.h:22
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_permission_response_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_permission_response_8h_source.html new file mode 100644 index 0000000..c836c4b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_permission_response_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +Sparkle: Sparkle/SUUpdatePermissionResponse.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdatePermissionResponse.h
+
+
+
1 //
+
2 // SUUpdatePermissionResponse.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 2/8/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
22 SU_EXPORT @interface SUUpdatePermissionResponse : NSObject<NSSecureCoding>
+
23 
+
30 - (instancetype)initWithAutomaticUpdateChecks:(BOOL)automaticUpdateChecks sendSystemProfile:(BOOL)sendSystemProfile;
+
31 
+
32 /*
+
33  Use -initWithAutomaticUpdateChecks:sendSystemProfile: instead.
+
34  */
+
35 - (instancetype)init NS_UNAVAILABLE;
+
36 
+
40 @property (nonatomic, readonly) BOOL automaticUpdateChecks;
+
41 
+
45 @property (nonatomic, readonly) BOOL sendSystemProfile;
+
46 
+
47 @end
+
This class represents a response for permission to check updates.
Definition: SUUpdatePermissionResponse.h:22
+
BOOL automaticUpdateChecks
A read-only property indicating whether automatic update checks are allowed or not.
Definition: SUUpdatePermissionResponse.h:40
+
BOOL sendSystemProfile
A read-only property indicating if system profile should be sent or not.
Definition: SUUpdatePermissionResponse.h:45
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_validator_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_validator_8h_source.html new file mode 100644 index 0000000..d7c66b6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_update_validator_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +Sparkle: Sparkle/SUUpdateValidator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdateValidator.h
+
+
+
1 //
+
2 // SUUpdateValidator.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/3/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 @class SUHost;
+
12 @class SUSignatures;
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 @interface SUUpdateValidator : NSObject
+
17 
+
18 - (instancetype)initWithDownloadPath:(NSString *)downloadPath signatures:(SUSignatures *)signatures host:(SUHost *)host;
+
19 
+
20 // This is "pre" validation, before the archive has been extracted
+
21 - (BOOL)validateDownloadPathWithError:(NSError **)error;
+
22 
+
23 // This is "post" validation, after an archive has been extracted
+
24 - (BOOL)validateWithUpdateDirectory:(NSString *)updateDirectory error:(NSError **)error;
+
25 
+
26 @end
+
27 
+
28 NS_ASSUME_NONNULL_END
+
Definition: SUHost.h:15
+
Definition: SUSignatures.h:31
+
Definition: SUUpdateValidator.h:17
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_updater_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_updater_8h_source.html new file mode 100644 index 0000000..ffb9439 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_updater_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +Sparkle: Sparkle/SUUpdater.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdater.h
+
+
+
1 //
+
2 // SUUpdater.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 1/4/06.
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUUPDATER_H
+
10 #define SUUPDATER_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 #import <Sparkle/SUExport.h>
+
21 #import <Sparkle/SUVersionComparisonProtocol.h>
+
22 #import <Sparkle/SUVersionDisplayProtocol.h>
+
23 #import <Sparkle/SUUpdaterDelegate.h>
+
24 
+
25 @class SUAppcastItem, SUAppcast, NSMenuItem;
+
26 
+
27 @protocol SUUpdaterDelegate;
+
28 
+
37 __deprecated_msg("Deprecated in Sparkle 2. Use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.")
+
38 SU_EXPORT @interface SUUpdater : NSObject
+
39 
+
40 @property (unsafe_unretained, nonatomic) IBOutlet id<SUUpdaterDelegate> delegate;
+
41 
+
47 + (SUUpdater *)sharedUpdater;
+
48 
+
53 + (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
+
54 
+
60 - (instancetype)initForBundle:(NSBundle *)bundle;
+
61 
+
72 - (IBAction)checkForUpdates:(id)sender;
+
73 
+
77 - (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
+
78 
+
92 - (void)checkForUpdatesInBackground;
+
93 
+
101 @property (nonatomic) BOOL automaticallyChecksForUpdates;
+
102 
+
111 @property (nonatomic) BOOL automaticallyDownloadsUpdates;
+
112 
+
120 @property (nonatomic) NSTimeInterval updateCheckInterval;
+
121 
+
133 - (void)checkForUpdateInformation;
+
134 
+
144 @property (nonatomic, copy) NSURL *feedURL;
+
145 
+
149 @property (readonly, nonatomic) NSBundle *hostBundle;
+
150 
+
154 @property (nonatomic, readonly) NSBundle *sparkleBundle;
+
155 
+
161 @property (nonatomic, copy) NSString *userAgentString;
+
162 
+
168 @property (copy) NSDictionary<NSString *, NSString *> *httpHeaders;
+
169 
+
175 @property (nonatomic) BOOL sendsSystemProfile;
+
176 
+
180 @property (nonatomic, copy) NSString *decryptionPassword;
+
181 
+
187 @property (nonatomic, readonly, copy) NSDate *lastUpdateCheckDate;
+
188 
+
196 - (void)resetUpdateCycle;
+
197 
+
204 @property (nonatomic, readonly) BOOL updateInProgress;
+
205 
+
206 @end
+
207 
+
208 #endif
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_updater_delegate_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_updater_delegate_8h_source.html new file mode 100644 index 0000000..ca569da --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_updater_delegate_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +Sparkle: Sparkle/SUUpdaterDelegate.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUUpdaterDelegate.h
+
+
+
1 //
+
2 // SUUpdaterDelegate.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/12/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+ +
20 @class SUUpdater, SUAppcast, SUAppcastItem;
+
21 
+
22 NS_ASSUME_NONNULL_BEGIN
+
23 
+
24 // -----------------------------------------------------------------------------
+
25 // SUUpdater Notifications for events that might be interesting to more than just the delegate
+
26 // The updater will be the notification object
+
27 // -----------------------------------------------------------------------------
+
28 SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;
+
29 SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;
+
30 SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;
+
31 SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;
+
32 #define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;
+
33 #define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;
+
34 
+
35 // Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo
+
36 SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;
+
37 // Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo
+
38 SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;
+
39 
+
40 // -----------------------------------------------------------------------------
+
41 // SUUpdater Delegate:
+
42 // -----------------------------------------------------------------------------
+
43 
+
47 __deprecated_msg("Deprecated in Sparkle 2. See SPUUpdaterDelegate instead")
+
48 @protocol SUUpdaterDelegate <NSObject>
+
49 @optional
+
50 
+
58 - (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater;
+
59 
+
70 - (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+
71 
+
82 - (nullable NSString *)feedURLStringForUpdater:(SUUpdater *)updater;
+
83 
+
91 - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater;
+
92 
+
101 - (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
+
102 
+
113 - (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater;
+
114 
+
121 - (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;
+
122 
+
128 - (void)updaterDidNotFindUpdate:(SUUpdater *)updater;
+
129 
+
137 - (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request;
+
138 
+
145 - (void)updater:(SUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item;
+
146 
+
154 - (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error;
+
155 
+
161 - (void)userDidCancelDownload:(SUUpdater *)updater;
+
162 
+
169 - (void)updater:(SUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item;
+
170 
+
177 - (void)updater:(SUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item;
+
178 
+
185 - (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;
+
186 
+
193 - (void)updater:(SUUpdater *)updater userDidSkipThisVersion:(SUAppcastItem *)item;
+
194 
+
209 - (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation;
+
210 
+
224 - (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item;
+
225 
+
234 - (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;
+
235 
+
241 - (void)updaterWillRelaunchApplication:(SUUpdater *)updater;
+
242 
+
248 - (void)updaterDidRelaunchApplication:(SUUpdater *)updater;
+
249 
+
263 - (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater;
+
264 
+
272 - (nullable id <SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater;
+
273 
+
283 - (nullable NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;
+
284 
+
291 - (void)updaterWillShowModalAlert:(SUUpdater *)updater;
+
292 
+
299 - (void)updaterDidShowModalAlert:(SUUpdater *)updater;
+
300 
+
311 - (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation;
+
312 
+
322 - (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationBlock:(void (^)(void))installationBlock;
+
323 
+
332 - (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item __deprecated;
+
333 
+
340 - (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error;
+
341 
+
342 @end
+
343 
+
344 NS_ASSUME_NONNULL_END
+
Definition: SUAppcast.h:26
+
Definition: SUAppcastItem.h:36
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
Applies special display formatting to version numbers.
Definition: SUVersionDisplayProtocol.h:22
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_version_comparison_protocol_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_version_comparison_protocol_8h_source.html new file mode 100644 index 0000000..bb04655 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_version_comparison_protocol_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: Sparkle/SUVersionComparisonProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUVersionComparisonProtocol.h
+
+
+
1 //
+
2 // SUVersionComparisonProtocol.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 12/21/07.
+
6 // Copyright 2007 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SUVERSIONCOMPARISONPROTOCOL_H
+
10 #define SUVERSIONCOMPARISONPROTOCOL_H
+
11 
+
12 #if __has_feature(modules)
+
13 #if __has_warning("-Watimport-in-framework-header")
+
14 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
15 #endif
+
16 @import Foundation;
+
17 #else
+
18 #import <Foundation/Foundation.h>
+
19 #endif
+
20 
+
21 #ifdef BUILDING_SPARKLE_TOOL
+
22 // Ignore incorrect warning
+
23 #pragma clang diagnostic push
+
24 #pragma clang diagnostic ignored "-Wquoted-include-in-framework-header"
+
25 #import "SUExport.h"
+
26 #pragma clang diagnostic pop
+
27 #else
+
28 #import <Sparkle/SUExport.h>
+
29 #endif
+
30 
+
31 NS_ASSUME_NONNULL_BEGIN
+
32 
+ +
37 
+
44 - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!
+
45 
+
46 @end
+
47 
+
48 NS_ASSUME_NONNULL_END
+
49 #endif
+
Provides version comparison facilities for Sparkle.
Definition: SUVersionComparisonProtocol.h:36
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_version_display_protocol_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_version_display_protocol_8h_source.html new file mode 100644 index 0000000..d363b15 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_version_display_protocol_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SUVersionDisplayProtocol.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUVersionDisplayProtocol.h
+
+
+
1 //
+
2 // SUVersionDisplayProtocol.h
+
3 // EyeTV
+
4 //
+
5 // Created by Uli Kusterer on 08.12.09.
+
6 // Copyright 2009 Elgato Systems GmbH. All rights reserved.
+
7 //
+
8 
+
9 #if __has_feature(modules)
+
10 #if __has_warning("-Watimport-in-framework-header")
+
11 #pragma clang diagnostic ignored "-Watimport-in-framework-header"
+
12 #endif
+
13 @import Foundation;
+
14 #else
+
15 #import <Foundation/Foundation.h>
+
16 #endif
+
17 #import <Sparkle/SUExport.h>
+
18 
+
22 SU_EXPORT @protocol SUVersionDisplay
+
23 
+
30 - (void)formatVersion:(NSString *_Nonnull*_Nonnull)inOutVersionA andVersion:(NSString *_Nonnull*_Nonnull)inOutVersionB;
+
31 
+
32 @end
+
Applies special display formatting to version numbers.
Definition: SUVersionDisplayProtocol.h:22
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_w_k_web_view_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_w_k_web_view_8h_source.html new file mode 100644 index 0000000..29c0b2a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_w_k_web_view_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: Sparkle/SUWKWebView.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUWKWebView.h
+
+
+
1 //
+
2 // SUWKWebView.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/30/20.
+
6 // Copyright © 2020 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 #import "SUWebView.h"
+
13 
+
14 NS_ASSUME_NONNULL_BEGIN
+
15 
+
16 @interface SUWKWebView : NSObject <SUWebView>
+
17 
+
18 - (instancetype)initWithColorStyleSheetLocation:(NSURL *)colorStyleSheetLocation fontFamily:(NSString *)fontFamily fontPointSize:(int)fontPointSize javaScriptEnabled:(BOOL)javaScriptEnabled;
+
19 
+
20 @end
+
21 
+
22 NS_ASSUME_NONNULL_END
+
23 
+
24 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_web_view_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_web_view_8h_source.html new file mode 100644 index 0000000..111a574 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_web_view_8h_source.html @@ -0,0 +1,114 @@ + + + + + + + +Sparkle: Sparkle/SUWebView.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUWebView.h
+
+
+
1 //
+
2 // SUWebView.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/30/20.
+
6 // Copyright © 2020 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 
+
13 @class NSView;
+
14 
+
15 NS_ASSUME_NONNULL_BEGIN
+
16 
+
17 @protocol SUWebView <NSObject>
+
18 
+
19 @property (nonatomic, readonly) NSView *view;
+
20 
+
21 - (void)loadHTMLString:(NSString *)htmlString baseURL:(NSURL * _Nullable)baseURL completionHandler:(void (^)(NSError * _Nullable))completionHandler;
+
22 
+
23 - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL completionHandler:(void (^)(NSError * _Nullable))completionHandler;
+
24 
+
25 - (void)stopLoading;
+
26 
+
27 - (void)setDrawsBackground:(BOOL)drawsBackground;
+
28 
+
29 @end
+
30 
+
31 NS_ASSUME_NONNULL_END
+
32 
+
33 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_web_view_common_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_web_view_common_8h_source.html new file mode 100644 index 0000000..1f888dd --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_s_u_web_view_common_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: Sparkle/SUWebViewCommon.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SUWebViewCommon.h
+
+
+
1 //
+
2 // SUWebViewCommon.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 12/31/20.
+
6 // Copyright © 2020 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #if SPARKLE_BUILD_UI_BITS
+
10 
+
11 #import <Foundation/Foundation.h>
+
12 
+
13 NS_ASSUME_NONNULL_BEGIN
+
14 
+
15 BOOL SUWebViewIsSafeURL(NSURL *url, BOOL *isAboutBlankURL);
+
16 
+
17 NS_ASSUME_NONNULL_END
+
18 
+
19 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_show_installer_progress_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_show_installer_progress_8h_source.html new file mode 100644 index 0000000..fbf3846 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_show_installer_progress_8h_source.html @@ -0,0 +1,101 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress/ShowInstallerProgress.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ShowInstallerProgress.h
+
+
+
1 //
+
2 // ShowInstallerProgress.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 4/10/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 #import "InstallerProgressDelegate.h"
+
11 
+
12 NS_ASSUME_NONNULL_BEGIN
+
13 
+ +
15 
+
16 @end
+
17 
+
18 NS_ASSUME_NONNULL_END
+
Definition: ShowInstallerProgress.h:14
+
Definition: InstallerProgressDelegate.h:15
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_sparkle_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_sparkle_8h_source.html new file mode 100644 index 0000000..2f8df6f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_sparkle_8h_source.html @@ -0,0 +1,120 @@ + + + + + + + +Sparkle: Sparkle/Sparkle.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Sparkle.h
+
+
+
1 //
+
2 // Sparkle.h
+
3 // Sparkle
+
4 //
+
5 // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07)
+
6 // Copyright 2006 Andy Matuschak. All rights reserved.
+
7 //
+
8 
+
9 #ifndef SPARKLE_H
+
10 #define SPARKLE_H
+
11 
+
12 // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless
+
13 // there are name-space collisions) so we can list all of them to start with:
+
14 
+
15 #import <Sparkle/SUExport.h>
+
16 #import <Sparkle/SUAppcast.h>
+
17 #import <Sparkle/SUAppcastItem.h>
+
18 #import <Sparkle/SUStandardVersionComparator.h>
+
19 #import <Sparkle/SPUUpdater.h>
+
20 #import <Sparkle/SPUUpdaterDelegate.h>
+
21 #import <Sparkle/SPUUpdaterSettings.h>
+
22 #import <Sparkle/SUVersionComparisonProtocol.h>
+
23 #import <Sparkle/SUVersionDisplayProtocol.h>
+
24 #import <Sparkle/SUErrors.h>
+
25 #import <Sparkle/SPUUpdatePermissionRequest.h>
+
26 #import <Sparkle/SUUpdatePermissionResponse.h>
+
27 #import <Sparkle/SPUUserDriver.h>
+
28 #import <Sparkle/SPUDownloadData.h>
+
29 
+
30 // UI bits
+
31 #import <Sparkle/SPUStandardUpdaterController.h>
+
32 #import <Sparkle/SPUStandardUserDriver.h>
+
33 #import <Sparkle/SPUStandardUserDriverDelegate.h>
+
34 
+
35 // Deprecated bits
+
36 #import <Sparkle/SUUpdater.h>
+
37 #import <Sparkle/SUUpdaterDelegate.h>
+
38 
+
39 #endif
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_termination_listener_8h_source.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_termination_listener_8h_source.html new file mode 100644 index 0000000..f21a972 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/_termination_listener_8h_source.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: Sparkle/Autoupdate/TerminationListener.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TerminationListener.h
+
+
+
1 //
+
2 // TerminationListener.h
+
3 // Sparkle
+
4 //
+
5 // Created by Mayur Pawashe on 3/7/16.
+
6 // Copyright © 2016 Sparkle Project. All rights reserved.
+
7 //
+
8 
+
9 #import <Foundation/Foundation.h>
+
10 
+
11 NS_ASSUME_NONNULL_BEGIN
+
12 
+
13 @interface TerminationListener : NSObject
+
14 
+
15 - (instancetype)initWithProcessIdentifier:(NSNumber * _Nullable)processIdentifier;
+
16 
+
17 @property (nonatomic, readonly) BOOL terminated;
+
18 
+
19 // If the process identifier provided was nil, then the completion block will invoke immediately with a YES success
+
20 - (void)startListeningWithCompletion:(void (^)(BOOL success))completionBlock;
+
21 
+
22 @end
+
23 
+
24 NS_ASSUME_NONNULL_END
+
Definition: TerminationListener.h:14
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/annotated.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/annotated.html new file mode 100644 index 0000000..8444960 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/annotated.html @@ -0,0 +1,180 @@ + + + + + + + +Sparkle: Class List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CInstallerProgressAppController
 CInstallerProgressAppController()
 C<InstallerProgressDelegate>
 CNSButton(SierraSDK)
 CNSData(SUSignatureVerifier)
 CNSObject(PrivateDelegateMethods)
 CNSOperatingSystemVersion
 CNSProcessInfo()
 CShowInstallerProgress
 CShowInstallerProgress()
 CSPUAppcastItemState
 CSPUAppcastItemState()
 CSPUAppcastItemStateResolverPrivate exposed class used to resolve Appcast Item properties that rely on external factors such as a host
 CSPUAutomaticUpdateDriver
 CSPUAutomaticUpdateDriver()
 CSPUBasicUpdateDriver
 CSPUBasicUpdateDriver()
 C<SPUBasicUpdateDriverDelegate>
 CSPUCoreBasedUpdateDriver
 CSPUCoreBasedUpdateDriver()
 C<SPUCoreBasedUpdateDriverDelegate>
 CSPUDownloadDataA class for containing downloaded data along with some information about it
 CSPUDownloadDriver
 CSPUDownloadDriver()
 C<SPUDownloadDriverDelegate>
 CSPUDownloadedUpdate
 CSPUInformationalUpdate
 C<SPUInstallerAgentProtocol>
 CSPUInstallerDriver
 CSPUInstallerDriver()
 C<SPUInstallerDriverDelegate>
 CSPULocalCacheDirectory
 CSPUProbeInstallStatus
 CSPUProbingUpdateDriver
 CSPUProbingUpdateDriver()
 CSPUReleaseNotesDriver
 C<SPUResumableUpdate>
 CSPUScheduledUpdateDriver
 CSPUScheduledUpdateDriver()
 CSPUSkippedUpdate
 CSPUStandardUpdaterControllerA controller class that instantiates a SPUUpdater and allows binding UI to it
 CSPUStandardUserDriverSparkle's standard built-in user driver for updater interactions
 C<SPUStandardUserDriverDelegate>A protocol for Sparkle's standard user driver's delegate
 CSPUUIBasedUpdateDriver
 CSPUUIBasedUpdateDriver()
 C<SPUUIBasedUpdateDriverDelegate>
 C<SPUUpdateDriver>
 CSPUUpdatePermissionRequestThis class represents information needed to make a permission request for checking updates
 CSPUUpdaterThe main API in Sparkle for controlling the update mechanism
 CSPUUpdater()
 CSPUUpdaterCycle
 CSPUUpdaterCycle()
 C<SPUUpdaterCycleDelegate>
 C<SPUUpdaterDelegate>Provides methods to control the behavior of an SPUUpdater object
 CSPUUpdaterSettingsThis class can be used for reading certain updater settings
 CSPUUpdaterSettings()
 CSPUUpdaterTimer
 CSPUUpdaterTimer()
 C<SPUUpdaterTimerDelegate>
 CSPUURLRequest
 CSPUURLRequest()
 C<SPUUserDriver>The API in Sparkle for controlling the user interaction
 CSPUUserInitiatedUpdateDriver
 CSPUUserInitiatedUpdateDriver()
 CSPUUserUpdateState
 CSPUUserUpdateState()
 CSPUUserUpdateState(Private)
 CSUAppcast
 CSUAppcast()
 CSUAppcast(Private)
 CSUAppcastDriver
 CSUAppcastDriver()
 C<SUAppcastDriverDelegate>
 CSUAppcastItem
 CSUAppcastItem()
 CSUAppcastItem(Private)
 CSUApplicationInfo
 CSUBundleIcon
 CSUFileManager
 CSUHost
 CSUHost()
 C<SUInstallerAgentInitiationProtocol>
 C<SUInstallerProtocol>
 CSUOperatingSystem
 CSUPhasedUpdateGroupInfo
 CSUPublicKeys
 CSUSignatures
 CSUStandardVersionComparatorSparkle's default version comparator
 CSUStatusController
 CSUStatusController()
 CSUSystemProfiler
 CSUTouchBarButtonGroup
 CSUUpdatePermissionResponseThis class represents a response for permission to check updates
 CSUUpdateValidator
 CSUUpdateValidator()
 C<SUVersionComparison>Provides version comparison facilities for Sparkle
 C<SUVersionDisplay>Applies special display formatting to version numbers
 CTerminationListener
 CTerminationListener()
+
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/badge.svg b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/badge.svg new file mode 100644 index 0000000..dbb00ab --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/badge.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + documentation + + + documentation + + + 58% + + + 58% + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/bc_s.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/bdwn.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
InstallerProgressAppController() Member List
+
+
+ +

This is the complete list of members for InstallerProgressAppController(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
application (defined in InstallerProgressAppController())InstallerProgressAppController()
applicationBundle (defined in InstallerProgressAppController())InstallerProgressAppController()
applicationInitiallyAlive (defined in InstallerProgressAppController())InstallerProgressAppController()
connected (defined in InstallerProgressAppController())InstallerProgressAppController()
connection (defined in InstallerProgressAppController())InstallerProgressAppController()
delegate (defined in InstallerProgressAppController())InstallerProgressAppController()
normalizedPath (defined in InstallerProgressAppController())InstallerProgressAppController()
oldHost (defined in InstallerProgressAppController())InstallerProgressAppController()
oldHostBundlePath (defined in InstallerProgressAppController())InstallerProgressAppController()
registerApplicationBundlePath:reply: (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
registerInstallationInfoData: (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
relaunchApplication (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
repliedToRegistration (defined in InstallerProgressAppController())InstallerProgressAppController()
sendTerminationSignal (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
shouldRelaunchHostBundle (defined in InstallerProgressAppController())InstallerProgressAppController()
showProgress (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
statusInfo (defined in InstallerProgressAppController())InstallerProgressAppController()
stopProgress (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
submittedLauncherJob (defined in InstallerProgressAppController())InstallerProgressAppController()
systemDomain (defined in InstallerProgressAppController())InstallerProgressAppController()
willTerminate (defined in InstallerProgressAppController())InstallerProgressAppController()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_installer_progress_app_controller_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_installer_progress_app_controller_07_08.html new file mode 100644 index 0000000..2ba0ce6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_installer_progress_app_controller_07_08.html @@ -0,0 +1,163 @@ + + + + + + + +Sparkle: InstallerProgressAppController() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
InstallerProgressAppController() Category Reference
+
+
+
+Inheritance diagram for InstallerProgressAppController():
+
+
+ + +<SPUInstallerAgentProtocol> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+NSApplication * application
 
+id< InstallerProgressDelegatedelegate
 
+NSXPCConnection * connection
 
+BOOL connected
 
+BOOL repliedToRegistration
 
+SUHostoldHost
 
+BOOL shouldRelaunchHostBundle
 
+NSString * oldHostBundlePath
 
+BOOL systemDomain
 
+StatusInfo * statusInfo
 
+BOOL submittedLauncherJob
 
+BOOL willTerminate
 
+BOOL applicationInitiallyAlive
 
+NSBundle * applicationBundle
 
+NSString * normalizedPath
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUInstallerAgentProtocol>
+(void) - registerApplicationBundlePath:reply:
 
+(void) - registerInstallationInfoData:
 
+(void) - sendTerminationSignal
 
+(void) - showProgress
 
+(void) - stopProgress
 
+(void) - relaunchApplication
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/InstallerProgress/InstallerProgressAppController.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_installer_progress_app_controller_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_installer_progress_app_controller_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..6e60bc71b3de3ca733f9d4cc4118802ee29a7a7d GIT binary patch literal 1238 zcmeAS@N?(olHy`uVBq!ia0y~yVC)0312~w0q~*+{r9es|z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opH=uLkw<{0{Q_SHuMfMM|3stj_JeC=T~@7{yJ~j);ft;He{Fh{eJV`+?0c2d z+@$BXBv&3;_vM7lf$Fe%Pp)!(X^1Rf~0F$Sk+n7s}a>b6m9Rv)RA-e4|g{ z6xa82WqoIyT6Xu*3h8>W`;)w_Eq=@=d|Q68B$g3`&kfze7E}w@h zRxV#v6|%oKdE0JRm$->*-&h3A4hgmXTUEAXld{sMyuB^XpvMKF(jz9L*z)0ORsk?Eoet-Iuz45L92fP7?#B!p7QOyzW8=3$>^NhB z>uD~(!;e|A3uPGEp14~!NLunS0FxR6Fr_g76B@&eiH{i!lz|G}`j`*&$go2c?221| z{W8Y^R)gv6TnJHu+RzkOtP*hgk;gd4Eq=cgx(!yUeP0*7`h6*?wCy(k1I^xap4hej z^9^>ME0VGAbdoqHvAe2gvEf|N<3bxG=0@+n^Xb%Oy?w4*k9@dyM)u-9qpP(s%T$-& zEI&IbsjogxHh2F6{|6i!c5z(MKDy-QrJt(2k~4no+`9i?_}{L3Hbqr>sov(_(*ID4+IR_5+K-VM8cU0!(9e#w)gtF*&5+UT?uZ7DnMI(N49 zJLT)kwtZV_@A-bCvFH(-rS=!4U%%i!*TeiERJQQzGKqCv;s-3hEW7$8o$WwGA9F(d z`zT*6RR-g|s}EhNFUA%x>W2lLIO261&cBv-v7619ERu5+SO_tAy85}Sb4q9e09qeT AjsO4v literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_button_07_sierra_s_d_k_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_button_07_sierra_s_d_k_08-members.html new file mode 100644 index 0000000..5351e69 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_button_07_sierra_s_d_k_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
NSButton(SierraSDK) Member List
+
+
+ +

This is the complete list of members for NSButton(SierraSDK), including all inherited members.

+ + +
buttonWithTitle:target:action: (defined in NSButton(SierraSDK))NSButton(SierraSDK)static
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_button_07_sierra_s_d_k_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_button_07_sierra_s_d_k_08.html new file mode 100644 index 0000000..9f75d2a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_button_07_sierra_s_d_k_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: NSButton(SierraSDK) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
NSButton(SierraSDK) Category Reference
+
+
+ + + + +

+Class Methods

+(instancetype) + buttonWithTitle:target:action:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUTouchBarButtonGroup.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_data_07_s_u_signature_verifier_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_data_07_s_u_signature_verifier_08-members.html new file mode 100644 index 0000000..1894749 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_data_07_s_u_signature_verifier_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
NSData(SUSignatureVerifier) Member List
+
+
+ +

This is the complete list of members for NSData(SUSignatureVerifier), including all inherited members.

+ + +
initWithBase64Encoding: (defined in NSData(SUSignatureVerifier))NSData(SUSignatureVerifier)
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_data_07_s_u_signature_verifier_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_data_07_s_u_signature_verifier_08.html new file mode 100644 index 0000000..e47ab47 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_data_07_s_u_signature_verifier_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: NSData(SUSignatureVerifier) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
NSData(SUSignatureVerifier) Category Reference
+
+
+ + + + +

+Instance Methods

+(id) - initWithBase64Encoding:
 
+
The documentation for this category was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_object_07_private_delegate_methods_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_object_07_private_delegate_methods_08-members.html new file mode 100644 index 0000000..5babf20 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_object_07_private_delegate_methods_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
NSObject(PrivateDelegateMethods) Member List
+
+
+ +

This is the complete list of members for NSObject(PrivateDelegateMethods), including all inherited members.

+ + +
_pathToRelaunchForUpdater: (defined in NSObject(PrivateDelegateMethods))NSObject(PrivateDelegateMethods)
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_object_07_private_delegate_methods_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_object_07_private_delegate_methods_08.html new file mode 100644 index 0000000..6abcd13 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_object_07_private_delegate_methods_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: NSObject(PrivateDelegateMethods) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
NSObject(PrivateDelegateMethods) Category Reference
+
+
+ + + + +

+Instance Methods

+(nullable NSString *) - _pathToRelaunchForUpdater:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUInstallerDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_process_info_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_process_info_07_08-members.html new file mode 100644 index 0000000..c1e1f3a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_process_info_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
NSProcessInfo() Member List
+
+
+ +

This is the complete list of members for NSProcessInfo(), including all inherited members.

+ + +
operatingSystemVersion (defined in NSProcessInfo())NSProcessInfo()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_process_info_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_process_info_07_08.html new file mode 100644 index 0000000..ded3af7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_n_s_process_info_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: NSProcessInfo() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
NSProcessInfo() Category Reference
+
+
+ + + + +

+Instance Methods

+(NSOperatingSystemVersion- operatingSystemVersion
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUOperatingSystem.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_appcast_item_state_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_appcast_item_state_07_08.html new file mode 100644 index 0000000..f27c629 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_appcast_item_state_07_08.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: SPUAppcastItemState() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUAppcastItemState() Category Reference
+
+
+
+Inheritance diagram for SPUAppcastItemState():
+
+
+ +
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUAppcastItemState.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_appcast_item_state_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_appcast_item_state_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6ae896ccc069227ba27a28a5a69c1ee2d8e70f GIT binary patch literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^JwP15!3-q-Jj#s#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;iA7AzVfB$x0 zjvEP9E7QW7%O)0ObFuaHdd3+VN4w5YS-X%|*>k2@k4oySgLC$-zaKtT{%w-#%e`*r zpWnAGUT&c75P2lhvugd3&v_!3&&Wh(z7E+wZH0E}^y=5IY))JGzqV3Y8O-*1R#4(8 zrmI%R(oRjOkb7G%xz{ICRhr-6U&EBCKgmpUDy+3OUYq8md}~Lm=PT1)J+kFl&sKl;$*)-w-m9v&@z(qM zYM#GNN3p5x>#4IgzWn~wzbx;dWgriPH3Pll!eGCE{eV^!=d+Iy9cijF)K6QPcprRo zn`J`wVTP1j1`IRJcpR4TGEd0F&8-(ab|yzOks&(+sz&Ne;Mu1|vdq`d=iXU<|0e^> zPt$hQ{)HUHx%Y1KPcm=i%>HJu&i;@}z}2Uj=U$xiI2SS7a`yU*mvn?<-EK`N_DWor z!)p+#`a!JTfbE~=x~I0+uJH*cUHHiJY1Ydp*I#_HIq<`9{z7Ym*i%_pO_XJ*}9))cYo z>iuOEW)II R&cGDJ;OXk;vd$@?2>`PICZYfU literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08-members.html new file mode 100644 index 0000000..e7f60d1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08-members.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUAutomaticUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUAutomaticUpdateDriver(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
basicDriverDidFinishLoadingAppcast (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
coreDriver (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
coreDriverDidStartExtractingUpdate (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverDidReceiveDataOfLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidExtractUpdateWithProgress: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidStartInstalling (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerIsSendingAppTerminationSignal (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
updateItem (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
updater (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
updaterDelegate (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
userDriver (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
willInstallSilently (defined in SPUAutomaticUpdateDriver())SPUAutomaticUpdateDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08.html new file mode 100644 index 0000000..2faec71 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08.html @@ -0,0 +1,157 @@ + + + + + + + +Sparkle: SPUAutomaticUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUAutomaticUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUAutomaticUpdateDriver():
+
+
+ + +<SPUCoreBasedUpdateDriverDelegate> + +
+ + + + + + + + + + + + + + +

+Properties

+id updater
 
+id< SPUUserDriveruserDriver
 
+id updaterDelegate
 
+SPUCoreBasedUpdateDrivercoreDriver
 
+SUAppcastItemupdateItem
 
+BOOL willInstallSilently
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUCoreBasedUpdateDriverDelegate>
+(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:
 
+(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
 
+(void) - coreDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
+(void) - coreDriverDidStartExtractingUpdate
 
+(void) - installerDidStartInstalling
 
+(void) - installerDidExtractUpdateWithProgress:
 
+(void) - installerIsSendingAppTerminationSignal
 
+(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUAutomaticUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_automatic_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..eacdfd1988340243c31e7e08d572e62527a5c48b GIT binary patch literal 1125 zcmeAS@N?(olHy`uVBq!ia0vp^?|`_2gBeI(pQ|1Yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0zj(ShhEy=VoqJd4kphn!f8nt`|E1S^ zY3^UUOWR8N(V2A33oXu0J5*Z)t_eDZmWo=gTeT__O!yw_J@)?p_e~P<+m1ckUTj}( zJGoH!reB14NT~GR>pMDiDo+~j`t6C&8}=XdeVsLbG3)mG9UVPi z*xm_yFSh*OSKTtV%>3Kk>eoCT&YIHOrl0b;DgFG({!o)Q1M^zyyCE3clJQ~3Sd!<%mlH=nv3vi@g^`=q1F zcOL%HVs4vlx+!Xd>YZ<2_$Ti=+&d@L=sjmpkL=@j#a`aLF}r_CmVfzrBJ1FFx9vx( zrS7KrZT((4rRt8A-PxOK3#6Z)HQ&4b)GLKuD?f8=PtG!W*PLEnAX!o!Q~iJT=G%96 zpRLY&<7#yMSW$-g{m|385xKm*vAs*bz0;l}R_v!$ocZ;Ml91rc73$@yI!^3=*~#p^ zBQ&h5!aF-|3i(&)?SA&UN599QvpEhFp(YlV|b%ySp*QJ{Gwie`X z(f+8{_Ij%1fps$C2UZb}6LvXqB+3dhgiVCT@732k`gd&;{dBzj<@#*}Iq%FSv3H;U zt>1m^+1op1hO7@<^dB$#y7m0EBbs^n?ecSfGsGa$JZjh + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUBasicUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUBasicUpdateDriver(), including all inherited members.

+ + + + + + + + + + + + +
aborted (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
appcastDriver (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
completionBlock (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
delegate (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
didFailToFetchAppcastWithError: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
didFindValidUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
didFinishLoadingAppcast: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
didNotFindUpdateWithLatestAppcastItem:hostToLatestAppcastItemComparisonResult:background: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
host (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
updater (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
updaterDelegate (defined in SPUBasicUpdateDriver())SPUBasicUpdateDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_basic_update_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_basic_update_driver_07_08.html new file mode 100644 index 0000000..75ac33c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_basic_update_driver_07_08.html @@ -0,0 +1,133 @@ + + + + + + + +Sparkle: SPUBasicUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUBasicUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUBasicUpdateDriver():
+
+
+ + +<SUAppcastDriverDelegate> + +
+ + + + + + + + + + + + + + + + +

+Properties

+id< SPUBasicUpdateDriverDelegatedelegate
 
+SUAppcastDriverappcastDriver
 
+SPUUpdateDriverCompletion completionBlock
 
+SUHosthost
 
+id updater
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+BOOL aborted
 
+ + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SUAppcastDriverDelegate>
+(void) - didFailToFetchAppcastWithError:
 
+(void) - didFinishLoadingAppcast:
 
+(void) - didFindValidUpdateWithAppcastItem:secondaryAppcastItem:
 
+(void) - didNotFindUpdateWithLatestAppcastItem:hostToLatestAppcastItemComparisonResult:background:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUBasicUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_basic_update_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_basic_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e41dc43e915a7011d8b60f909426c60c48c018 GIT binary patch literal 1008 zcmeAS@N?(olHy`uVBq!ia0vp^>wvg}gBeJAsw;d4QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;k|JHS( zE_O%qR-etAX)Y`8*zr)p>DP1tCkc0!(5rz@cC1GzaX zJN;@TxBE0t+2UJby`y?tOzc;wyePd%A~P=>?Ond!uKIezdw26kVeadM?=B1ZQ&dv? zE^O{9qngln`vS^$PkqStI{(k=+G~3sugcnI_vWt6u2rk%Pky{=Rn*DC(9pFekJ|(e z88B_Qz?>k{+xokL=cu*VJ0EMI_X#`VBpKd3*}(wx1cSDvUc*!w@dI9c+zG13SvO32 z%oK65kZ}!)bopQ3%O<_bYJwAio>x)=>Jt>ymMu8^CwkUad3P6=xC=Sk_slu_TmPEb z^LM)+>*gIgv*Tgty;r(|6Zb{U{=H-BW#00``g@Y-+63+dXrt?tVNor||nht8!^k-^t9p?+)&{ zqM26|(<`3Cx&7?Fp6EGymGfq;Y0KWxH~Cde*xtLlY%YL<*k^64m<9%~>hsu53yz1n1?VZv2`JwfXSEo-^w2ayH``y;9*6(8zKQA#l zQaUe;O>kncsI;0=(o*?9^}=~GpDHQI)`phwSL-VUy-bY}oVb7b1NV&SKF?sBF z*@Rb_f!mhh*u{t){l^3LBtJa2MfoFN+v}-}2mJ7bEPB9SkLOVAQD!=z0gIYnJ6=oP z={lArlK)cjM7W$s+VjafMM{q~KC;p)>Dv8x?iL2wyyU#~t&v{-|?`@zm;B=Y-c59_y%iTVZ(XsjYRE{j + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUCoreBasedUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUCoreBasedUpdateDriver(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
basicDriver (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
basicDriverDidFinishLoadingAppcast (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
delegate (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
downloadDriver (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
downloadDriverDidDownloadData: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidDownloadUpdate: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidFailToDownloadFileWithError: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveDataOfLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadedUpdateForRemoval (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
host (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
httpHeaders (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
installerDidExtractUpdateWithProgress: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidFailToApplyDeltaUpdate (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidStartExtracting (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDidStartInstalling (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerDriver (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
installerIsRequestingAbortInstallWithError: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerIsSendingAppTerminationSignal (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
installerWillFinishInstallationAndRelaunch: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
preventsInstallerInteraction (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
resumableUpdate (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
resumingInstallingUpdate (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
secondaryUpdateItem (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
silentInstall (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
updateItem (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
updater (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
updaterDelegate (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
userAgent (defined in SPUCoreBasedUpdateDriver())SPUCoreBasedUpdateDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_core_based_update_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_core_based_update_driver_07_08.html new file mode 100644 index 0000000..3246a0d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_core_based_update_driver_07_08.html @@ -0,0 +1,206 @@ + + + + + + + +Sparkle: SPUCoreBasedUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUCoreBasedUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUCoreBasedUpdateDriver():
+
+
+ + +<SPUBasicUpdateDriverDelegate> +<SPUDownloadDriverDelegate> +<SPUInstallerDriverDelegate> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+SPUBasicUpdateDriverbasicDriver
 
+SPUDownloadDriverdownloadDriver
 
+SPUInstallerDriverinstallerDriver
 
+id< SPUCoreBasedUpdateDriverDelegatedelegate
 
+SUAppcastItemupdateItem
 
+SUAppcastItemsecondaryUpdateItem
 
+id< SPUResumableUpdateresumableUpdate
 
+SPUDownloadedUpdatedownloadedUpdateForRemoval
 
+SUHosthost
 
+BOOL resumingInstallingUpdate
 
+BOOL silentInstall
 
+BOOL preventsInstallerInteraction
 
+id updater
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+NSString * userAgent
 
+NSDictionary * httpHeaders
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUBasicUpdateDriverDelegate>
+(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain:
 
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverDidFinishLoadingAppcast
 
- Instance Methods inherited from <SPUDownloadDriverDelegate>
+(void) - downloadDriverDidFailToDownloadFileWithError:
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidDownloadUpdate:
 
+(void) - downloadDriverDidDownloadData:
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
- Instance Methods inherited from <SPUInstallerDriverDelegate>
+(void) - installerDidStartInstalling
 
+(void) - installerDidStartExtracting
 
+(void) - installerDidExtractUpdateWithProgress:
 
+(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
 
+(void) - installerIsSendingAppTerminationSignal
 
+(void) - installerWillFinishInstallationAndRelaunch:
 
+(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
 
+(void) - installerIsRequestingAbortInstallWithError:
 
+(void) - installerDidFailToApplyDeltaUpdate
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUCoreBasedUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_core_based_update_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_core_based_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..822312c6bef3751b4bcb5fdeb7227f7e485fdb07 GIT binary patch literal 2035 zcmbVNc~nzp7JqC8g;b^uL=*^Ca6wrP44`00P$$tD``uaMg{x++K%WSy=X}?Qz zbFsgzq%YoWaWa@k>7}vF%y8Oy}WkgiwA&;e! zU~N3n^8^Hjx;(St6pp=9;;yf*7>^c6&NeZo`8ewQN@`?Qg%3++9PRhdQq!gw>WT2y z-I9ne!R}W%-u37uu(sI$!!R#|Pm#&i@eLL`i6In`gJ6FAbvpCzBCf}bOy5qFo%C(l zEwLz(KDysx>#~3IvG_(+cgUS7`;s2Ohdzz)n=`1!c0iLS+M+kO>_PL~l5q8z&rfTYKTxaIH4F zqF#G^1amyhr*)cD_X(Poaz3ZM=)JG*cFz49z2Sgb`71yT) z16tpc7N376zzCMo8&71 zIPQ!1&;gGt!aJ@j5c8;*_>Hx}tu~^`N}Ek;>Qyo1~a(Nmk<}IqkL2ncgBL(F7tu!XXx^G$UYvuLoqdY_lKtaCoUJF}r#ZY7|A9C^?;n*62HG<*t&+hHQw^CzXtVJ66I&4cKLM_E!+9xdjc-aPm0J6fnWcHS~b35IeP#VGxlun>8Rps=rl3U;woR;5I55 zhzHuX{$Js4;*B{D=mF`y_s&BD;+y}H3ENXOw#u;P4A+WBfICl@v^wQrJv^In_!;dh zr|ota#yG6^bHfh$&ku*sB=?JfN#&Oyfn1{t`#uO79OfD0R77jh5nL4JNlfaQK+7RA zc=N{QfX6Pvf-7`M^eXY-;>aVVS`B_}0i7u}xT$cNWw!5%*Jek~51=BMnys+8v4>$h zU|3+V=Y^kBPF`{K+(doVQaY>s1%D64P`-DACQr0lDmU)ok)ajioGHG`URWST_$p-w z!Ak|-J~WGzghJg)c-#51TP|Go(?B#j{}A+@@&*S#k#oEPs@{W?3quYZ+DW~*#iYeb z_>s8M;*_h2OS8t3CXIA58Wygw{j7wm + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUDownloadDriver() Member List
+
+
+ +

This is the complete list of members for SPUDownloadDriver(), including all inherited members.

+ + + + + + + + + + + + +
cleaningUp (defined in SPUDownloadDriver())SPUDownloadDriver()
connection (defined in SPUDownloadDriver())SPUDownloadDriver()
delegate (defined in SPUDownloadDriver())SPUDownloadDriver()
downloader (defined in SPUDownloadDriver())SPUDownloadDriver()
downloadName (defined in SPUDownloadDriver())SPUDownloadDriver()
expectedContentLength (defined in SPUDownloadDriver())SPUDownloadDriver()
host (defined in SPUDownloadDriver())SPUDownloadDriver()
retrievedDownloadResult (defined in SPUDownloadDriver())SPUDownloadDriver()
secondaryUpdateItem (defined in SPUDownloadDriver())SPUDownloadDriver()
temporaryDirectory (defined in SPUDownloadDriver())SPUDownloadDriver()
updateItem (defined in SPUDownloadDriver())SPUDownloadDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_download_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_download_driver_07_08.html new file mode 100644 index 0000000..b4f717f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_download_driver_07_08.html @@ -0,0 +1,126 @@ + + + + + + + +Sparkle: SPUDownloadDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUDownloadDriver() Category Reference
+
+
+
+Inheritance diagram for SPUDownloadDriver():
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+id< SPUDownloaderProtocol > downloader
 
+NSXPCConnection * connection
 
+SUAppcastItemupdateItem
 
+SUAppcastItemsecondaryUpdateItem
 
+SUHosthost
 
+NSString * temporaryDirectory
 
+NSString * downloadName
 
+id< SPUDownloadDriverDelegatedelegate
 
+BOOL retrievedDownloadResult
 
+uint64_t expectedContentLength
 
+BOOL cleaningUp
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUDownloadDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_download_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_download_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c0e08d498a3e852290896833bfcc9d45b4591e GIT binary patch literal 692 zcmeAS@N?(olHy`uVBq!ia0vp^D}XqFgBeKf3OV-)NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~IeWS|hEy=VoqN0JwE~ap^tes`|M&YR zN%KfdG`sp`hUVm)X3maQy(gl^npsE?f9WqI&l(AOy#>JesW@Y=lgZ%H_ zw_0{u@qFChY=Y&nF`X!WM{H-{EzoI%X&hy;1>+1X8{5$1qx}#Q0`s=JiWpxz` z+|L|ez^VWJ+eYDkIje+Yb9YScj$@qe_&LGeefR7yJ@L;%iyU7seSU4`D~8<7duB7m zGvDo>Q5)1^dHY20xwySsR_qpebZoKd4UR7-tj=4zPBz~B(dp{$TUn3pJb58-Ma8me z_Ttp5|8?AFS6|r~-ffg;uDiPK{*qO{R`=FjmH%qFs><_MebwPY{tH@dlS;1o+F1Ro z-xvNuHFE*0mgmH%1(QTps;`)NlZA=nI&%WsS*BkVK2BELFD4iBUCML_zsh_htC7it zSo|u#dDhIc3Oo<~MJ-?e8qP5BljC+TYrWRoNB=zDGuW2a?_TrSob|;?*0TwI+!rQu z|4NHBS%(5G9w}dt%3+Cm z9;5%o`NE+(n-z?GZI)5G?`Hq1dvW^Cn>(vrcg6+3U-L_L^DcMkCCARBTXKDv{p&>) z(~n$V=3gh{H4e<(;=ri16^OsGm>SP^_|LFJKmOOglsQL$NsPhM)z4*}Q$iB}u(m>k literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08-members.html new file mode 100644 index 0000000..3cdd4ae --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08-members.html @@ -0,0 +1,98 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUInstallerDriver() Member List
+
+
+ +

This is the complete list of members for SPUInstallerDriver(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
aborted (defined in SPUInstallerDriver())SPUInstallerDriver()
applicationBundle (defined in SPUInstallerDriver())SPUInstallerDriver()
currentStage (defined in SPUInstallerDriver())SPUInstallerDriver()
delegate (defined in SPUInstallerDriver())SPUInstallerDriver()
downloadName (defined in SPUInstallerDriver())SPUInstallerDriver()
extractionAttempts (defined in SPUInstallerDriver())SPUInstallerDriver()
host (defined in SPUInstallerDriver())SPUInstallerDriver()
installerConnection (defined in SPUInstallerDriver())SPUInstallerDriver()
installerError (defined in SPUInstallerDriver())SPUInstallerDriver()
postponedOnce (defined in SPUInstallerDriver())SPUInstallerDriver()
relaunch (defined in SPUInstallerDriver())SPUInstallerDriver()
sparkleBundle (defined in SPUInstallerDriver())SPUInstallerDriver()
startedInstalling (defined in SPUInstallerDriver())SPUInstallerDriver()
systemDomain (defined in SPUInstallerDriver())SPUInstallerDriver()
temporaryDirectory (defined in SPUInstallerDriver())SPUInstallerDriver()
updateItem (defined in SPUInstallerDriver())SPUInstallerDriver()
updater (defined in SPUInstallerDriver())SPUInstallerDriver()
updaterDelegate (defined in SPUInstallerDriver())SPUInstallerDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08.html new file mode 100644 index 0000000..2cfa3ad --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08.html @@ -0,0 +1,147 @@ + + + + + + + +Sparkle: SPUInstallerDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUInstallerDriver() Category Reference
+
+
+
+Inheritance diagram for SPUInstallerDriver():
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+SUHosthost
 
+NSBundle * applicationBundle
 
+NSBundle * sparkleBundle
 
+id< SPUInstallerDriverDelegatedelegate
 
+SPUInstallerMessageType currentStage
 
+BOOL startedInstalling
 
+id< SUInstallerConnectionProtocol > installerConnection
 
+NSUInteger extractionAttempts
 
+BOOL postponedOnce
 
+id updater
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+BOOL relaunch
 
+BOOL systemDomain
 
+SUAppcastItemupdateItem
 
+NSString * downloadName
 
+NSString * temporaryDirectory
 
+BOOL aborted
 
+NSError * installerError
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUInstallerDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_installer_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..b04c858c39e0d8f910831bdbcc2a5c0911221c9b GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^w}3c+gBeJAyqFyhq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0Dm`5sLn;{G&b>RSS%If@|D7*;{!8bt zR$$y>U$#AV#+iZ;l_NC*k95=0in%5)krd6CWHO7%camFhdzrTG_S>K4ysNumU%Gmd zn)fB)SIgyh*zh?`%KrLWY^_t3sILE{CC0aA?|S~3cZ<};b=uq4-QU#qa?-_1v*LPf z$~K)adwQ_?%jM1YKb@1bRQDD5`c@)WHtx6F*(J+PhD324uRJH_U2^rX*@d5zR&Keq z;@_czF5)@u+xF(1pEY}5>;1()U9*+1)i5OxJ*2y zd>hp~7iZ>~7;n~O{a_i(@a)Q-jOnMhhDxhUcZgP|kdRe$icJt9fi6dhR*hcHgrrrh5DHx08A=x!v8j`&Y#AX>s@J z(m%6qnWJ8v!RC8dL)Ue_bD8aarhCucyqd44?4Ev>b%*QK#ktArt}n8ky@g@#y;T$R zBCEEv>cGksUevmB|( UPcD_|1tv@ePgg&ebxsLQ0Q^E)=l}o! literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08-members.html new file mode 100644 index 0000000..b24a2f1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08-members.html @@ -0,0 +1,85 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUProbingUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUProbingUpdateDriver(), including all inherited members.

+ + + + + + +
basicDriver (defined in SPUProbingUpdateDriver())SPUProbingUpdateDriver()
basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
basicDriverDidFinishLoadingAppcast (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
resumableUpdate (defined in SPUProbingUpdateDriver())SPUProbingUpdateDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08.html new file mode 100644 index 0000000..0f50462 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: SPUProbingUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUProbingUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUProbingUpdateDriver():
+
+
+ + +<SPUBasicUpdateDriverDelegate> + +
+ + + + + + +

+Properties

+SPUBasicUpdateDriverbasicDriver
 
+id< SPUResumableUpdateresumableUpdate
 
+ + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUBasicUpdateDriverDelegate>
+(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain:
 
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUProbingUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_probing_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..c39bacdd5cc518963484045b29f9f978750016e8 GIT binary patch literal 1061 zcmeAS@N?(olHy`uVBq!ia0vp^=YY6_gBeK9IH1xFq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0w|KfZhEy=Vo%?#zY6TuQ@xo=5|IO`k zS$B49+r6oJ)69}zm7OzE1Uu?E6Z z()9*@r)rc}=!b+#&phTiQ+@qTweRkoT325edbx&#?p@btasJ6RrzK0L6^5PYh?;v$ zkoU0W^vGK#zNJLuj#l}AOXPnC?d+AFX9=Ff_Ja4b>f|^V6r3v|k+rIFhQ&N)M+gb2 zyw>jBQ06qZ>a34sy79g{*12ce_IbQ#S#G^=RYJK@Rb2NSVZYtK`@~}NMBhJH)BHK- zO~Io_TI%|bzubFQsrxB^b@0;q4KGgpv_87>`SzREqJDyFgMU1FJMX$*>7KzbMBnZ-K` z^0u$6cy?&#&2g+aW{NXb3)oeJ>vE2l|?HXKE5hk zb5C>aYww=|&Z_f2?#)f;D&bWZ{Vt(?ym$KE)y&!F^1U~Ih`e#yL;q84=!4IDH?vxM zY?#@kv{!h}yB|h24)OUV+ZG)PEnW9;jqs%9Y3;(n+UcLP{AT~Nm{V1SJ#)Cyvc8 + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUScheduledUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUScheduledUpdateDriver(), including all inherited members.

+ + + + + + + + +
basicDriverDidFinishLoadingAppcast (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
showedUpdate (defined in SPUScheduledUpdateDriver())SPUScheduledUpdateDriver()
uiDriver (defined in SPUScheduledUpdateDriver())SPUScheduledUpdateDriver()
uiDriverDidShowUpdate (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
uiDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_scheduled_update_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_scheduled_update_driver_07_08.html new file mode 100644 index 0000000..c8eaec5 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_scheduled_update_driver_07_08.html @@ -0,0 +1,121 @@ + + + + + + + +Sparkle: SPUScheduledUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUScheduledUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUScheduledUpdateDriver():
+
+
+ + +<SPUUIBasedUpdateDriverDelegate> + +
+ + + + + + +

+Properties

+SPUUIBasedUpdateDriveruiDriver
 
+BOOL showedUpdate
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUUIBasedUpdateDriverDelegate>
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - coreDriverIsRequestingAbortUpdateWithError:
 
+(void) - uiDriverIsRequestingAbortUpdateWithError:
 
+(void) - uiDriverDidShowUpdate
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUScheduledUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_scheduled_update_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_scheduled_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..398addf937ad55028083af000607a8de3c47813c GIT binary patch literal 1083 zcmeAS@N?(olHy`uVBq!ia0vp^cY(NrgBeJMM9Sp=DTx4|5ZC|z{{xvX-h3_XKQsZz z0^y+>~y=)HnH%(u9AiEdtX-9Yae4E$6OUy+#>_uf40Xl)XzhRano9?%wY;VdboT#i1p1w>q# ztJfkBCVGIslsO{I`|{m9?Z>*lUhrPy{BxpY%gJ+)t5Kz$^94iT%>;1 z_?s`c`E=CP_xhKB%IVkcs>dg7`upxjtYqc(uwzyqHC}P=+M#N{w0q|!!`wTERQKoC z7r1m8=e%t#oscJGs+_j#@DKgx>*gidzOCCPylY{7=>3PcdKQUkbgr}AIaxO9-I>L= z1S|c@e~8@E_1?W@X5N?AfmfK8uZ?vzUj904+d4=8@bz`Y@3eL){Zw$Czq-q6MXb?3 z>$}^Z>*cq;Te+#O{N1egv7cjZ^z(j@=*x(e?_Qd*`*z+c`&GKJ?`BRtza)KHV0wJ9 z;Ka*co<*xEeVThu#lR;#*HCa`+_dcLxh{eey{=#C?D(^Ej-ShsWnki62{6P~b3JI^ z#i+A->C3$BQ$J2yw)?Pd&vvu9-+dTX7g;gPCLT9z7IES@-NmqB#T>o^%Ru4_# zZ&v%iujoAQF0kO&`DwrI{(aeD_}x!4KGh?RLEm(_w{fLuoTqtn)?vn;FN}A!PwhBV zJ>jpf)FgkYsNZ(ez>&};vA3g~rF)zHi=d~wXNi7$USs5usi78d`?dVuPkKeBtEa9l z-m^V6wdUO<+v(d*+t0}l{+|Sn0b|*QIQcJU7X1m`kz?<*lSG*`^3DfaO<<@A1@bAKVSL1$~~&%-xXsBGO);G3Z^8tla-ci6KU1Ir9vyytsym|N8hIWLe5K_=2#l h-2%my4J-aJ$FOeL_uu}&4q#4a@O1TaS?83{1OOx)4VVA` literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08-members.html new file mode 100644 index 0000000..695e386 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08-members.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUIBasedUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUUIBasedUpdateDriver(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
basicDriverDidFinishLoadingAppcast (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
coreDriver (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
coreDriverDidStartExtractingUpdate (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
delegate (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
downloadDriverDidReceiveDataOfLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
host (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
httpHeaders (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
installerDidExtractUpdateWithProgress: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerDidStartInstalling (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
installerIsSendingAppTerminationSignal (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
preventsInstallerInteraction (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
releaseNotesDriver (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
resumingDownloadedUpdate (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
resumingInstallingUpdate (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
updater (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
updaterDelegate (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
userAgent (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
userDriver (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
userInitiated (defined in SPUUIBasedUpdateDriver())SPUUIBasedUpdateDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08.html new file mode 100644 index 0000000..1092d38 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08.html @@ -0,0 +1,178 @@ + + + + + + + +Sparkle: SPUUIBasedUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUIBasedUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUUIBasedUpdateDriver():
+
+
+ + +<SPUCoreBasedUpdateDriverDelegate> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+SPUCoreBasedUpdateDrivercoreDriver
 
+SUHosthost
 
+id updater
 
+BOOL userInitiated
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+id< SPUUIBasedUpdateDriverDelegatedelegate
 
+id< SPUUserDriveruserDriver
 
+SPUReleaseNotesDriverreleaseNotesDriver
 
+BOOL resumingInstallingUpdate
 
+BOOL resumingDownloadedUpdate
 
+BOOL preventsInstallerInteraction
 
+NSDictionary * httpHeaders
 
+NSString * userAgent
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUCoreBasedUpdateDriverDelegate>
+(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:
 
+(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
 
+(void) - coreDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
+(void) - coreDriverDidStartExtractingUpdate
 
+(void) - installerDidStartInstalling
 
+(void) - installerDidExtractUpdateWithProgress:
 
+(void) - installerIsSendingAppTerminationSignal
 
+(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUIBasedUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_i_based_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..7535928807e1598c99675443c7aae5cd3b32f635 GIT binary patch literal 1103 zcmeAS@N?(olHy`uVBq!ia0vp^?|`_2gBeI(pQ|1Yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0?|Hg7hEy=Vo%>d3kqwWV|KXmU|E=q; z2K~}JweG?0%sG`TPM%e>O#XUvD4tPnTJ=h&C?+&?HJGrHG`Fh%V}C2DCL;gZj@Tc? z&x?)nlx}mpmJYq@_TMB=$vd#f@BMnA(o^3bPwH|A{rcNV@Vn(t-H9uw80W>blxnUz zU3p~r!)d8=%yK8+WqcR*HvQ}?nL8$TJ%U0$37D6y-&H=Bxu&j6Iq&Kwwwt+8U+t&e z-BZ4L_A2Aqw|2|V*?st2jneC%J65gwy~}LR<5jETmUS=wZ?k*Vs_Q2ULqpe|0uitJ zq@6e}b372=#dv1%&Vu~yD=VHK+I#uj5o^hHUHaYrub=kV`k9uG^Nu~d_qK5JskcwW+gI0hcr5KMbakoIJT5A@Q42(@vVONo=d=makJdbf&l!4m zZs%&<+gb2_i}6Rlw%2nd53G|BKd_2;{Gg;&;E;_H!x^RHtQ)j|cvbR_^Y^xyeSUuY z zpjU5gq0hhQ=A*mc?!HtkDfmEGR`;2I;q{%V$*aC5dDPvnn_#FEpRK>2E$=+jY zyLaB)Et)6z=YQMp?bYVu-rq|c4X0OctI&IM`(ABK*ra8~&o9QN_bvNX@czKIb2TUL zvHs}VC-~z|GslDMqL_x{TYk0;-+w9U9k>ch%2hIN6k80s|1sBX+ZX)D$Abr$`x!i4 L{an^LB{Ts558xre literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_r_l_request_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_r_l_request_07_08-members.html new file mode 100644 index 0000000..60d54b3 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_r_l_request_07_08-members.html @@ -0,0 +1,85 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUURLRequest() Member List
+
+
+ +

This is the complete list of members for SPUURLRequest(), including all inherited members.

+ + + + + + +
cachePolicy (defined in SPUURLRequest())SPUURLRequest()
httpHeaderFields (defined in SPUURLRequest())SPUURLRequest()
networkServiceType (defined in SPUURLRequest())SPUURLRequest()
timeoutInterval (defined in SPUURLRequest())SPUURLRequest()
url (defined in SPUURLRequest())SPUURLRequest()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_r_l_request_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_r_l_request_07_08.html new file mode 100644 index 0000000..2224129 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_u_r_l_request_07_08.html @@ -0,0 +1,102 @@ + + + + + + + +Sparkle: SPUURLRequest() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUURLRequest() Category Reference
+
+
+ + + + + + + + + + + + +

+Properties

+NSURL * url
 
+NSURLRequestCachePolicy cachePolicy
 
+NSTimeInterval timeoutInterval
 
+NSDictionary< NSString *, NSString * > * httpHeaderFields
 
+NSURLRequestNetworkServiceType networkServiceType
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUURLRequest.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08-members.html new file mode 100644 index 0000000..8a22fc1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08-members.html @@ -0,0 +1,98 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdater() Member List
+
+
+ +

This is the complete list of members for SPUUpdater(), including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
applicationBundle (defined in SPUUpdater())SPUUpdater()
delegate (defined in SPUUpdater())SPUUpdater()
driver (defined in SPUUpdater())SPUUpdater()
host (defined in SPUUpdater())SPUUpdater()
loggedATSWarning (defined in SPUUpdater())SPUUpdater()
loggedNoSecureKeyWarning (defined in SPUUpdater())SPUUpdater()
parameterizedFeedURL (defined in SPUUpdater())SPUUpdater()
resetUpdateCycle (defined in <SPUUpdaterCycleDelegate>)<SPUUpdaterCycleDelegate>
resumableUpdate (defined in SPUUpdater())SPUUpdater()
sessionInProgress (defined in SPUUpdater())SPUUpdater()
showingPermissionRequest (defined in SPUUpdater())SPUUpdater()
startedUpdater (defined in SPUUpdater())SPUUpdater()
updateLastCheckedDate (defined in SPUUpdater())SPUUpdater()
updaterCycle (defined in SPUUpdater())SPUUpdater()
updaterSettings (defined in SPUUpdater())SPUUpdater()
updaterTimer (defined in SPUUpdater())SPUUpdater()
updaterTimerDidFire (defined in <SPUUpdaterTimerDelegate>)<SPUUpdaterTimerDelegate>
userDriver (defined in SPUUpdater())SPUUpdater()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08.html new file mode 100644 index 0000000..61e6b32 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08.html @@ -0,0 +1,156 @@ + + + + + + + +Sparkle: SPUUpdater() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdater() Category Reference
+
+
+
+Inheritance diagram for SPUUpdater():
+
+
+ + +<SPUUpdaterCycleDelegate> +<SPUUpdaterTimerDelegate> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+NSURL * parameterizedFeedURL
 
+id< SPUUserDriveruserDriver
 
+id< SPUUpdaterDelegatedelegate
 
+id< SPUUpdateDriverdriver
 
+SUHosthost
 
+NSBundle * applicationBundle
 
+SPUUpdaterSettingsupdaterSettings
 
+SPUUpdaterCycleupdaterCycle
 
+SPUUpdaterTimerupdaterTimer
 
+BOOL startedUpdater
 
+id< SPUResumableUpdateresumableUpdate
 
+BOOL sessionInProgress
 
+BOOL showingPermissionRequest
 
+NSDate * updateLastCheckedDate
 
+BOOL loggedATSWarning
 
+BOOL loggedNoSecureKeyWarning
 
+ + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUUpdaterCycleDelegate>
+(void) - resetUpdateCycle
 
- Instance Methods inherited from <SPUUpdaterTimerDelegate>
+(void) - updaterTimerDidFire
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUpdater.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..3d64188cd2614e6ce3f53158ea508166acdf21de GIT binary patch literal 1399 zcmb_ce^AnA9R3>lW18mLET^Wjgl0=v8kC8drHQ$;Gt)D5G=ET;3Ra4RF0!)BHVI^@ ztyq?}Md<|=njzF`B~p%EjQd7_ic#tp%>0%7+_(L)Zg*{e?Y(=S_j&G~`+V-Xd+x2? zk{IXi>f;IkfO|YKCK&)63SfT11p(uv4#|Tb?=4@Z#M+p6i_>(Y@4P z`kgGldqMts)23jYqmJ|zd(p z75joN*1ps$3vKq5C!rq?{K}lF?lPYuEit>v`#frqnMShD$1_cSg!%Q{4gRr4V_XL{ z_d#5g#x`y#4jO7$jWTL;%Fd2Z(UT~?*vq<0w|Al5i-ISlE~sTsQT1-Qhp?vWEwj}X z_1T}cqK&K0A5?`m&bC98jZu*V(>+CzAe2C+TgJS>0eK&$ToHex*>1u`tTlll6|VI& z4Yv=sQHC!MeuXk;$op>4Xj=V<4a+tdyB|%-Q7Ux>N1sd5RQv$VkFig_qSC}H$!UY} z8`R%n-{q%)!Oc$=9E0kT^FLtJQW3k@(@hEZb@PN7f}5%u3<#`vh7jg=iC(hYJ*)6U zMqrR{pi7UF%X+>;C9~jvmOC~oOR~1M`-#HB_MAw**^s`02!ki9ki76{?%4)MBuFMl zFVDSf)>6y-0%lrr()T^TYP=^qX>YP!El;QEY*o+%7_fQlTP}JHyBtaPf5n72(q2>S zY%Cw!V_PYk9UA4YIx<5lePgN}BUlO2%S)dR;N07@A71;OV4w*hHpqKAn{CT?W~cFw zhj%RQh~hqet#~suC`i0ta&7#>Jt&@aVW%>W#1UOln=`tf-WfUujT`m1(#&UzzN?mo zr*x`6r;D_~nnq}ppLT;Qf*lv3S-u#D;BziNIFZD zDd2MaNCIq6cg`o_jkj5mmoP0)_D8BokjQ$ixEJHQ`OK96S`Gyo-X_i)#DR;*++Ivg z5{e|nhpBdGG_rytt9WC(1xOXlmV7Ofl}?N}a5>iLQAI*`16WB~Mvr^lCtdrhw6}97 zSz)Iv2HV);5S0w-@;g&Vp57Luk}Y@X!H2o6=RcCcg$NS_8u?wVquZO9>XIzw0w7?( z={K|?_Dli8yGTeb6fVl*J7jk_7b!~Va+Gi2yh0`rO~kMBgzI%Q7cmzJzE=uWhCh}8 zgHiQ(pzvQT|205z3a+;+BXxJk?SJmL$7P>09{OdV*w57SK%rUGcVMMsS*;jN$ILLH z%z*yIwoB0FVe3yKyT?aAS`O4D;3b$Uul}DQ`EzROLxZ91@f?QIa>sq|zDMUL^_rdh z8azN5cg{=emAHY{rNe2b$8|)!#A8_}Hc#10Y{h~=L|L#|(HH`gVCBf*!CPGHL}=(U zsUpa?->0-BT{e%QCgQhP;7vYSR^)OVKzUE#_K=9?y6toN_gN5z0H2Z7<4O17UlNFq LO^j(>zoYU`THdNc literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_cycle_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_cycle_07_08-members.html new file mode 100644 index 0000000..0f16752 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_cycle_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterCycle() Member List
+
+
+ +

This is the complete list of members for SPUUpdaterCycle(), including all inherited members.

+ + +
delegate (defined in SPUUpdaterCycle())SPUUpdaterCycle()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_cycle_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_cycle_07_08.html new file mode 100644 index 0000000..2c28441 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_cycle_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: SPUUpdaterCycle() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterCycle() Category Reference
+
+
+ + + + +

+Properties

+id< SPUUpdaterCycleDelegatedelegate
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUpdaterCycle.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_settings_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_settings_07_08-members.html new file mode 100644 index 0000000..7a61ffe --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_settings_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterSettings() Member List
+
+
+ +

This is the complete list of members for SPUUpdaterSettings(), including all inherited members.

+ + +
host (defined in SPUUpdaterSettings())SPUUpdaterSettings()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_settings_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_settings_07_08.html new file mode 100644 index 0000000..b9a1352 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_settings_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: SPUUpdaterSettings() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterSettings() Category Reference
+
+
+ + + + +

+Properties

+SUHosthost
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUpdaterSettings.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_timer_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_timer_07_08-members.html new file mode 100644 index 0000000..5d444ad --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_timer_07_08-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterTimer() Member List
+
+
+ +

This is the complete list of members for SPUUpdaterTimer(), including all inherited members.

+ + + +
delegate (defined in SPUUpdaterTimer())SPUUpdaterTimer()
source (defined in SPUUpdaterTimer())SPUUpdaterTimer()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_timer_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_timer_07_08.html new file mode 100644 index 0000000..ef1add8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_updater_timer_07_08.html @@ -0,0 +1,93 @@ + + + + + + + +Sparkle: SPUUpdaterTimer() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterTimer() Category Reference
+
+
+ + + + + + +

+Properties

+id< SPUUpdaterTimerDelegatedelegate
 
+dispatch_source_t source
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUpdaterTimer.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08-members.html new file mode 100644 index 0000000..6ec21c0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08-members.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUserInitiatedUpdateDriver() Member List
+
+
+ +

This is the complete list of members for SPUUserInitiatedUpdateDriver(), including all inherited members.

+ + + + + + + + + + + +
aborted (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
basicDriverDidFinishLoadingAppcast (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
showingUpdate (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
showingUserInitiatedProgress (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
uiDriver (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
uiDriverDidShowUpdate (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
uiDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
userDriver (defined in SPUUserInitiatedUpdateDriver())SPUUserInitiatedUpdateDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08.html new file mode 100644 index 0000000..633fc42 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: SPUUserInitiatedUpdateDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUserInitiatedUpdateDriver() Category Reference
+
+
+
+Inheritance diagram for SPUUserInitiatedUpdateDriver():
+
+
+ + +<SPUUIBasedUpdateDriverDelegate> + +
+ + + + + + + + + + + + +

+Properties

+SPUUIBasedUpdateDriveruiDriver
 
+id< SPUUserDriveruserDriver
 
+BOOL showingUserInitiatedProgress
 
+BOOL showingUpdate
 
+BOOL aborted
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUUIBasedUpdateDriverDelegate>
+(void) - basicDriverIsRequestingAbortUpdateWithError:
 
+(void) - coreDriverIsRequestingAbortUpdateWithError:
 
+(void) - uiDriverIsRequestingAbortUpdateWithError:
 
+(void) - uiDriverDidShowUpdate
 
+(void) - basicDriverDidFinishLoadingAppcast
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUserInitiatedUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_initiated_update_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..b851d4e0917c5373b34be8ad92330e5d3d6190af GIT binary patch literal 1092 zcmeAS@N?(olHy`uVBq!ia0vp^cY(NrgBeJMM9Sp=DTx4|5ZC|z{{xvX-h3_XKQsZz z0^u?vdJ&>>T)n~ZeeuIz54gP*^+C_vv;Vy z(wto*6w7wA;Z5(VELHy!Nfqn+#%0x06pPK?PoI+%di8OM&E4d+(X)zT-<5EG_R7;c z&MfB}el5kWAoQJ8N%Tv(Gvzw5ad$U;SfsPN#C!3^+-DK{E*EXTF!SA|ld)G_{=dKT z_W8LxGv>YgdFSt=>g#W3sxO%9wtSV84PcEy_(D`6u*Ttn% zF0Enuv1lE`<*ck-uS?VRtbCbQApH2Oueh!7fz?fX2bL3$A85qtO+UTmk&==TFc@5p z0D}QYNbM^59j)L0I{948XJx^O^SH9DZ{L&jubp4IC4J)V&!(~M%N9zrR`$MQ_qUyW z{^hYL(R)gRKj+Iyye=x+c(eXm!s)x;;$BwHG@Wc#aQ?OMuB|Hd-rJAeQZIferuO^u zuhz4dcO9zQH{)%Kbk$wK@?E)~rWU79&zOF9U75r6t>!=9zVkhw-8kvxtI5_YE^IQ| zp0oZ$@~*SXHmr+$wf64Is{HSJ#4JkR@tmEp?q=ld=4t2N)d6|2f_sD)_NMMBE1Iqz zzx?-?J8zd>=sEKy{rS3I_d*{h)oC~UPW^oC%SKbt((>qKZ``*oyIs9(qvV$}mtMcf z)>A5)QTJn7XGhI4c_xcx#;R&cmrfPGo8=@TXlOOv&*h1}Xo-@N9hfLxygNp3dL-)y z*I347SFe;@e|@GR`10KcYR6{J)~ix$2xpaT@FyN02=vlin(4|kBgB#YK`;oPe<`P% zp1YF&@Kg18#x>tg9zD~uHukvZd8^~^DmBHqE?f=XHS3w^u7?jqcL|2P)#SQ-;~4S(VzGWd6x!A982JSJ-Cn+Q z^4(9JrBCbU>!-21TA%py;m*|GQSGMIx1z&eE{S;Cur51(9ruEZJJQ7>--oB2ytg=7 zPJe0I<;&+?vtu`xEZXOoUVP=P*44{=bJvr1+&)v;`anHKEdZWo= zeyzow3aO3^oN(^(>E?}0( u(v53~s`q9uSO!bK@8r)<37Qr1pJ8V9hFj}8g;Ic7p25@A&t;ucLK6V + + + + + + +Sparkle: SPUUserUpdateState() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUserUpdateState() Category Reference
+
+
+
+Inheritance diagram for SPUUserUpdateState():
+
+
+ +
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SPUUserUpdateState.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..f0bb0f2e35c7c2cf03b4691b24b7c245b9b1ede7 GIT binary patch literal 638 zcmeAS@N?(olHy`uVBq!ia0vp^oj@GG!3-p&PA`)IQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;z6*_=|S%USL1azsc;C6h5%$g>E9dp*x>eOzVo^|f8^q>}abK3mp4 zzR7uVXLVNqh~N0UdcDEvliKpCC!U4`O_@CH?&+Y%GauO;&vKj;V|(&p{lq29*KcIf zajrUYI^fyKS?wj)FK$sOjlJ~DwEMmIBq?5xRT-kS#~-O&Ul-o`>e3w56Py{EXFjoc zo;Et`sr7F~@p8+JZNGHXm-@ds=H4$qDe9}<-$T=DKVAL4MD|trnOf6=kKgJ(zwx+K ze@#l|-^HI7=bWjN{vEI5xz1O~bKO!8C8aQd1IMcvbQY$1$n}Q?OjE3E(rMbnchb(9 zVXYZwL-u5b9R#S?+b6oX=qNHJ0E2|#x*B7F=%n!9%NBnznls&oX$RXhqt(}5H>`b| z`Nrec-2alDtgkdqpYhD=5c>PGZvF8tcQe)f$!~YXe60Q1b$Rj=o4Zfc&Kg}y)x7rT z;*V(&X{#?smA}cIFLEx*_sXRB=nZ%FIA2o94w*Zv*r}*$4(pCzhPS0}PgtTK-F`RX zxJn#j`RrT!TrXYO_ie}f$(kp(SiRkNey8r@xpRMYzI!vrTTWs9m2H*t8ET^Evq;QK zYS@42y@F)zTgJMO*(?XPdNRZuFIQ7aV*JaPp6vgA@~qFQz{JAf>FVdQ&MBb@03jtR AJOBUy literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_private_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_private_08-members.html new file mode 100644 index 0000000..4b1fd0d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_private_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUserUpdateState(Private) Member List
+
+
+ +

This is the complete list of members for SPUUserUpdateState(Private), including all inherited members.

+ + +
initWithStage:userInitiated: (defined in SPUUserUpdateState(Private))SPUUserUpdateState(Private)
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_private_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_private_08.html new file mode 100644 index 0000000..625e2c7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_p_u_user_update_state_07_private_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: SPUUserUpdateState(Private) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUserUpdateState(Private) Category Reference
+
+
+ + + + +

+Instance Methods

+(instancetype) - initWithStage:userInitiated:
 
+
The documentation for this category was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_08-members.html new file mode 100644 index 0000000..2e50181 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcast() Member List
+
+
+ +

This is the complete list of members for SUAppcast(), including all inherited members.

+ + +
items (defined in SUAppcast())SUAppcast()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_08.html new file mode 100644 index 0000000..57b58aa --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: SUAppcast() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcast() Category Reference
+
+
+ + + + +

+Properties

+NSArray< SUAppcastItem * > * items
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUAppcast.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_private_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_private_08-members.html new file mode 100644 index 0000000..6ddffee --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_private_08-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcast(Private) Member List
+
+
+ +

This is the complete list of members for SUAppcast(Private), including all inherited members.

+ + + +
copyByFilteringItems: (defined in SUAppcast(Private))SUAppcast(Private)
initWithXMLData:relativeToURL:stateResolver:error: (defined in SUAppcast(Private))SUAppcast(Private)
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_private_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_private_08.html new file mode 100644 index 0000000..981065e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_07_private_08.html @@ -0,0 +1,93 @@ + + + + + + + +Sparkle: SUAppcast(Private) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcast(Private) Category Reference
+
+
+ + + + + + +

+Instance Methods

+(nullable instancetype) - initWithXMLData:relativeToURL:stateResolver:error:
 
+(SUAppcast *) - copyByFilteringItems:
 
+
The documentation for this category was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08-members.html new file mode 100644 index 0000000..6fdc4ff --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08-members.html @@ -0,0 +1,91 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcastDriver() Member List
+
+
+ +

This is the complete list of members for SUAppcastDriver(), including all inherited members.

+ + + + + + + + + + + + +
delegate (defined in SUAppcastDriver())SUAppcastDriver()
downloadDriver (defined in SUAppcastDriver())SUAppcastDriver()
downloadDriverDidDownloadData: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidDownloadUpdate: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidFailToDownloadFileWithError: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveDataOfLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
host (defined in SUAppcastDriver())SUAppcastDriver()
updater (defined in SUAppcastDriver())SUAppcastDriver()
updaterDelegate (defined in SUAppcastDriver())SUAppcastDriver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08.html new file mode 100644 index 0000000..ab273e0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08.html @@ -0,0 +1,133 @@ + + + + + + + +Sparkle: SUAppcastDriver() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcastDriver() Category Reference
+
+
+
+Inheritance diagram for SUAppcastDriver():
+
+
+ + +<SPUDownloadDriverDelegate> + +
+ + + + + + + + + + + + +

+Properties

+SUHosthost
 
+id updater
 
+id< SPUUpdaterDelegateupdaterDelegate
 
+id< SUAppcastDriverDelegatedelegate
 
+SPUDownloadDriverdownloadDriver
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUDownloadDriverDelegate>
+(void) - downloadDriverDidFailToDownloadFileWithError:
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidDownloadUpdate:
 
+(void) - downloadDriverDidDownloadData:
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUAppcastDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_driver_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8166332d2568c5a3d721fd3e263e3e78cabbd5 GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SPgBeJ+af+A#DTx4|5ZC|z{{xvX-h3_XKQsZz z0^3kP61PbKg!{t-#~JU%0IDzxlpg zQN@mR)vIS4O}=Y+G{~+<|F0~llj@fIZpBW*!}J>-wl4z_2T~*wSAfM1Oh^B5652qbC+wys(TI`D^^v3ooT}g zbaetl-cv>cqs81da?R2`dLMe~bDAHrJ`!R2pvuBv!^z0t@5FFmvH-&e6?|Naq*=={ zQ)alh98+a+aRF)*6!bS^diis^$oo&R;rqHfzP$Li?d5g(g|gN8^YUu7H?Zvq?&|n* zL-fbOc-!ZtOw~&7&wsyts(W(W|JT!h+OBiG{QhrzmEPKCQNfwVRy~Wc|Hd-yj-}X% zjcfdiV>#D~+%##wl9_rtB-Xt7#;>G6mTRZ}$-VHqBwcekuk~xZziZNk;xUy zC=WEBdXDqVt7@jopR2?}j>YYsrf!|G_5Sotv5e9mCN`XX8OJ5d74mrY#@ox^%6x0x zUi~0Iq4NY^d-Z{mcl=weul=;WaEICYyHjaRPVnwIPM=lM&aQ2cTqe1@o=f-n(TkcY zN}p=~6m-^XZ#c;+I8ir#AJgm}K|#Zsdalk68386GC17&s=ur1>%$&8Xk#WaV_5&w? z!Cb+UXRzyl@xP6{ZQ>ol90#To3Sp%1f6y@{NJ>)Zz>XG%26aV-2PgGe@7?})Rl9!9 zyMH<6@=~F!2ijI~9`OI;r@$V^;`iNrFGJahw+!b#$TOv}PWyL0DQ@P^zqw?xpYC8u#p5?ZBDnImwhM_)6o|v%b4yep@%k=O^uEms+*xEQj`n%(&w9 z4QHS2(f`f#(>*x%@LQgu_ykwT;@zBc?lG(V{ + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcastItem() Member List
+
+
+ +

This is the complete list of members for SUAppcastItem(), including all inherited members.

+ + + + +
hasCriticalInformation (defined in SUAppcastItem())SUAppcastItem()
informationalUpdateVersions (defined in SUAppcastItem())SUAppcastItem()
state (defined in SUAppcastItem())SUAppcastItem()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_08.html new file mode 100644 index 0000000..9400d88 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_08.html @@ -0,0 +1,96 @@ + + + + + + + +Sparkle: SUAppcastItem() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcastItem() Category Reference
+
+
+ + + + + + + + +

+Properties

+SPUAppcastItemStatestate
 
+BOOL hasCriticalInformation
 
+NSSet< NSString * > * informationalUpdateVersions
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUAppcastItem.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08-members.html new file mode 100644 index 0000000..deee458 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcastItem(Private) Member List
+
+
+ +

This is the complete list of members for SUAppcastItem(Private), including all inherited members.

+ + +
initWithDictionary:relativeToURL:stateResolver:failureReason:SUAppcastItem(Private)
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08.html new file mode 100644 index 0000000..eeb3938 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08.html @@ -0,0 +1,142 @@ + + + + + + + +Sparkle: SUAppcastItem(Private) Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcastItem(Private) Category Reference
+
+
+
+Inheritance diagram for SUAppcastItem(Private):
+
+
+ +
+ + + + + +

+Instance Methods

(nullable instancetype) - initWithDictionary:relativeToURL:stateResolver:failureReason:
 Initializes with data from a dictionary provided by the RSS class and state resolver. More...
 
+

Method Documentation

+ +

◆ initWithDictionary:relativeToURL:stateResolver:failureReason:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- (nullable instancetype) initWithDictionary: (NSDictionary *) dict
relativeToURL:(NSURL *_Nullable) appcastURL
stateResolver:(SPUAppcastItemStateResolver *) stateResolver
failureReason:(NSString *_Nullable __autoreleasing *_Nullable) error 
+
+ +

Initializes with data from a dictionary provided by the RSS class and state resolver.

+

This initializer method is intended to be marked "private" and discouraged from public usage. This method is available however. Talk to us to describe your use case and if you need to construct appcast items yourself.

+ +

Extends class SUAppcastItem.

+ +
+
+
The documentation for this category was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_appcast_item_07_private_08.png new file mode 100644 index 0000000000000000000000000000000000000000..669748273ac41ee91e981d97db1178c171c1cb26 GIT binary patch literal 675 zcmeAS@N?(olHy`uVBq!ia0vp^6M#5?gBeI3Ea0&NQW60^A+G=b{|7Q(y!l$%e+Z-k zj1L?*z}k679?0b=3GxeO04f53tEWPY7#Nt0JY5_^Dj46+y`A?)fyZ@veA@s2^7CVM zNOsKjvejBO;f6C?&*lxhl}FFys3uO@(q}e7#r2lMB$1brFXZg&&)?cVFIeAmquc4n z?{{xyyudqA#&oaB(OD7u&N+)L)V8`BZn%c=wBng(r7Jf3)b;I?oUp{PctLR_qnDr8 z{eo+Hx*vD0{C_#;-KEQ4t_m+Oi|kzJ`f0tX=Ug?1-tB3^#!CcO?Afzq?b+*dr_1!o z9Xq>+VU|LxpjWG*_PgU8JClA-Zj%ci*@_&up{WzvrSh${P zU->DOm-gA33iXkmS-0N1X#8M%yM8ak{h6)`#+zGNJ}CcUShM76gWde29bwE?71xxa z_%h}jHAF~rC|qJ=>e$lApp>i7;DMX_Hx_8n)E34yi+NcDGMO1&Ryl;X&S(Dl-1Jpq zxjDo7!?mBRzgwIWS-=z27{~rz^2AT(7oqB2F)|an17=y7NA4~@zHYbtdXFa;vmb6a zcv{0=EqHr|&rJ4J+WE&#`PLa{L>ujWZywIn*qrs^^P}t)!Iw*a9$3M9cx#mNy?+0% z%mLz$mYs56VDnP)-9@<#*PJ{v$^yiB9cs_rKHKkbwb}7@n&524pHoa-|1iDyZ7RaF zb5Tc7SkYa#4^baVP6?&0d+_Z*4QI%?w68zDEqk|)wc+}&V~alCU_SF@dBeT+QueY8 p+8IDk-Ev@ + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUHost() Member List
+
+
+ +

This is the complete list of members for SUHost(), including all inherited members.

+ + + + + + +
bundle (defined in SUHost())SUHost()
defaultsDomain (defined in SUHost())SUHost()
isMainBundle (defined in SUHost())SUHost()
publicDSAKey (defined in SUHost())SUHost()
usesStandardUserDefaults (defined in SUHost())SUHost()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_host_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_host_07_08.html new file mode 100644 index 0000000..7cc9fce --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_host_07_08.html @@ -0,0 +1,102 @@ + + + + + + + +Sparkle: SUHost() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUHost() Category Reference
+
+
+ + + + + + + + + + + + +

+Properties

+NSBundle * bundle
 
+BOOL isMainBundle
 
+NSString * defaultsDomain
 
+BOOL usesStandardUserDefaults
 
+NSString * publicDSAKey
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUHost.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08-members.html new file mode 100644 index 0000000..f41f218 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUStatusController() Member List
+
+
+ +

This is the complete list of members for SUStatusController(), including all inherited members.

+ + + + + +
buttonTitle (defined in SUStatusController())SUStatusController()protected
host (defined in SUStatusController())SUStatusController()
title (defined in SUStatusController())SUStatusController()
touchBarButton (defined in SUStatusController())SUStatusController()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08.html new file mode 100644 index 0000000..ad4cb83 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: SUStatusController() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUStatusController() Category Reference
+
+
+
+Inheritance diagram for SUStatusController():
+
+
+ +
+ + + + + + + + + + +

+Properties

+NSString * title
 
+NSString * buttonTitle
 
+SUHosthost
 
+NSButton * touchBarButton
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUStatusController.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_status_controller_07_08.png new file mode 100644 index 0000000000000000000000000000000000000000..8428f6b3dce0acf17b64305adf81b749d7bf76ab GIT binary patch literal 667 zcmeAS@N?(olHy`uVBq!ia0vp^Q-C;tgBeJkn7zgYNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~X?eOhhEy=VoqPMzYy%#)aPy15_ZQY5 zV86++XiMg!GLysX+a|o-s&i0RNoh4_U}&s2=h9VDflez|xtTc2?tQy2^kCtA=~b&X zcisFvBR4#{{H^+my}K`NQM|rzO+erEoZrSPl)bL)X30OEtF<@H6M_@2}+71mW! zr&i7}dMuW;rk8V-NKfufC#i2ChYR|yFq*1Xv1EBzNv~Y(_$^|O$JaShQhZlt2y72n z_IbAD)B5GhUP*gBpAvj~@w!Xx_e1Un?%RHK`Kn)%wvnGd2Q2#)5^7tk7&N_pZT;)^ zHLHG=s!myz<+9qTvqML%!TcrThFM`PRW@Qvq6A;HXWFh(UAXBNLz0(9Lx&KT!lD+Y z4vmEjO1QZ%>f40`BYimzL_yUkiD&6Iyp7#?vrdwgC%lmHjA>-uE_M0zDg2>{cb4;C z{n1!w+y2QSe?i&~TZw03&gREAeA)fp&iSiWVZQe9g;_plKiE*!oy%rsI<$cE)u$`#SLfez@BdqQc)jDyO_hwV)GqoTH&@Lz2s-xl zZb0yvb0+z=`+i-VIdAWWzH0$2cfU?~AAa?Fl^^4u+Pxn<8GiIkYw7x*#;|V{)PJ|^ eT9lNsUy66X4A~aO6QT}GNerH@elF{r5}E)|12X>r literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_update_validator_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_update_validator_07_08-members.html new file mode 100644 index 0000000..0dace5c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_update_validator_07_08-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUUpdateValidator() Member List
+
+
+ +

This is the complete list of members for SUUpdateValidator(), including all inherited members.

+ + + + + +
downloadPath (defined in SUUpdateValidator())SUUpdateValidator()
host (defined in SUUpdateValidator())SUUpdateValidator()
prevalidatedSignature (defined in SUUpdateValidator())SUUpdateValidator()
signatures (defined in SUUpdateValidator())SUUpdateValidator()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_update_validator_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_update_validator_07_08.html new file mode 100644 index 0000000..ced5b5d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_s_u_update_validator_07_08.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: SUUpdateValidator() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUUpdateValidator() Category Reference
+
+
+ + + + + + + + + + +

+Properties

+SUHosthost
 
+BOOL prevalidatedSignature
 
+SUSignaturessignatures
 
+NSString * downloadPath
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/SUUpdateValidator.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_show_installer_progress_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_show_installer_progress_07_08-members.html new file mode 100644 index 0000000..42cca1e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_show_installer_progress_07_08-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
ShowInstallerProgress() Member List
+
+
+ +

This is the complete list of members for ShowInstallerProgress(), including all inherited members.

+ + +
statusController (defined in ShowInstallerProgress())ShowInstallerProgress()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_show_installer_progress_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_show_installer_progress_07_08.html new file mode 100644 index 0000000..803990b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_show_installer_progress_07_08.html @@ -0,0 +1,90 @@ + + + + + + + +Sparkle: ShowInstallerProgress() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
ShowInstallerProgress() Category Reference
+
+
+ + + + +

+Properties

+SUStatusControllerstatusController
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/InstallerProgress/ShowInstallerProgress.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_termination_listener_07_08-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_termination_listener_07_08-members.html new file mode 100644 index 0000000..fbfb9c7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_termination_listener_07_08-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TerminationListener() Member List
+
+
+ +

This is the complete list of members for TerminationListener(), including all inherited members.

+ + + + +
completionBlock (defined in TerminationListener())TerminationListener()
processIdentifier (defined in TerminationListener())TerminationListener()
watchedTermination (defined in TerminationListener())TerminationListener()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_termination_listener_07_08.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_termination_listener_07_08.html new file mode 100644 index 0000000..18533d4 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/category_termination_listener_07_08.html @@ -0,0 +1,96 @@ + + + + + + + +Sparkle: TerminationListener() Category Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
TerminationListener() Category Reference
+
+
+ + + + + + + + +

+Properties

+NSNumber * processIdentifier
 
+BOOL watchedTermination
 
+void(^ completionBlock )(BOOL)
 
+
The documentation for this category was generated from the following file:
    +
  • Sparkle/Autoupdate/TerminationListener.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/classes.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/classes.html new file mode 100644 index 0000000..a871d2a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/classes.html @@ -0,0 +1,670 @@ + + + + Classes Reference + + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+

Classes

+

The following classes are available globally.

+ +
+
+
+
    +
  • +
    + + + + SPUDownloadData + +
    +
    +
    +
    +
    +
    +

    A class for containing downloaded data along with some information about it.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUDownloadData : NSObject <NSSecureCoding>
    + +
    +
    +

    Swift

    +
    class SPUDownloadData : NSObject, NSSecureCoding
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    A controller class that instantiates a SPUUpdater and allows binding UI to its updater settings.

    + +

    This class can be instantiated in a nib or created programatically using -initWithUpdaterDelegate:userDriverDelegate: or -initWithStartingUpdater:updaterDelegate:userDriverDelegate:.

    + +

    The controller’s updater targets the application’s main bundle and uses Sparkle’s standard user interface. +Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programatically too.

    + +

    The controller creates an SPUUpdater instance using a SPUStandardUserDriver and allows hooking up the check for updates action and handling menu item validation. +It also allows hooking up the updater’s and user driver’s delegates.

    + +

    If you need more control over what bundle you want to update, or you want to provide a custom user interface (via SPUUserDriver), please use SPUUpdater directly instead.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUStandardUpdaterController : NSObject
    + +
    +
    +

    Swift

    +
    class SPUStandardUpdaterController : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUStandardUserDriver + +
    +
    +
    +
    +
    +
    +

    Sparkle’s standard built-in user driver for updater interactions

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUStandardUserDriver : NSObject <SPUUserDriver>
    + +
    +
    +

    Swift

    +
    class SPUStandardUserDriver : NSObject, SPUUserDriver
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This class represents information needed to make a permission request for checking updates.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUUpdatePermissionRequest : NSObject <NSSecureCoding>
    + +
    +
    +

    Swift

    +
    class SPUUpdatePermissionRequest : NSObject, NSSecureCoding
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUpdater + +
    +
    +
    +
    +
    +
    +

    The main API in Sparkle for controlling the update mechanism.

    + +

    This class is used to configure the update parameters as well as manually and automatically schedule and control checks for updates.

    + +

    For convenience, you can create a standard or nib instantiable updater by using SPUStandardUpdaterController.

    + +

    Prefer to set initial properties in your bundle’s Info.plist as described in Customizing Sparkle.

    + +

    Otherwise only if you need dynamic behavior (eg. for user preferences) should you set properties on the updater such as:

    + +
      +
    • automaticallyChecksForUpdates
    • +
    • updateCheckInterval
    • +
    • automaticallyDownloadsUpdates
    • +
    • feedURL
    • +
    + +

    Please view the documentation on each of these properties for more detail if you are to configure them dynamically.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUUpdater : NSObject
    + +
    +
    +

    Swift

    +
    class SPUUpdater : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUpdaterSettings + +
    +
    +
    +
    +
    +
    +

    This class can be used for reading certain updater settings.

    + +

    It retrieves the settings by first looking into the host’s user defaults. +If the setting is not found in there, then the host’s Info.plist file is looked at.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUUpdaterSettings : NSObject
    + +
    +
    +

    Swift

    +
    class SPUUpdaterSettings : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SPUUserUpdateState + +
    +
    +
    +
    +
    +
    +

    This represents the user’s current update state.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SPUUserUpdateState : NSObject
    + +
    +
    +

    Swift

    +
    class SPUUserUpdateState : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUAppcast + +
    +
    +
    +
    +
    +
    +

    The appcast representing a collection of SUAppcastItem items in the feed.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SUAppcast : NSObject
    + +
    +
    +

    Swift

    +
    class SUAppcast : NSObject
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUAppcastItem + +
    +
    +
    +
    +
    +
    +

    The appcast item describing an update in the application’s appcast feed.

    + +

    An appcast item represents a single update item in the SUAppcast contained within the <item> element.

    + +

    Every appcast item must have a versionString, and either a fileURL or an infoURL. +All the remaining properties describing an update to the application are optional.

    + +

    Extended documentation and examples on using appcast item features are available at: +https://sparkle-project.org/documentation/publishing/

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SUAppcastItem : NSObject <NSSecureCoding>
    + +
    +
    +

    Swift

    +
    class SUAppcastItem : NSObject, NSSecureCoding
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    Sparkle’s default version comparator.

    + +

    This comparator is adapted from MacPAD, by Kevin Ballard. +It’s “dumb” in that it does essentially string comparison, +in components split by character type.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SUStandardVersionComparator : NSObject <SUVersionComparison>
    + +
    +
    +

    Swift

    +
    class SUStandardVersionComparator : NSObject, SUVersionComparison
    + +
    +
    +
    +
    +
  • +
  • + +
    +
    +
    +
    +
    +

    This class represents a response for permission to check updates.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    @interface SUUpdatePermissionResponse : NSObject <NSSecureCoding>
    + +
    +
    +

    Swift

    +
    class SUUpdatePermissionResponse : NSObject, NSSecureCoding
    + +
    +
    +
    +
    +
  • +
  • +
    + + + + SUUpdater + +
    +
    +
    +
    +
    +
    +

    Deprecated

    +

    Deprecated in Sparkle 2. Use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.

    + +
    +
    +

    The legacy API in Sparkle for controlling the update mechanism.

    + +

    This class is now deprecated and acts as a thin wrapper around SPUUpdater and SPUStandardUserDriver.

    + +

    If you are migrating to Sparkle 2, use SPUStandardUpdaterController instead, or SPUUpdater if you need more control.

    + + See more +
    +
    +

    Declaration

    +
    +

    Objective-C

    +
    
    +@interface SUUpdater : NSObject
    + +
    +
    +

    Swift

    +
    class SUUpdater : NSObject
    + +
    +
    +
    +
    +
  • +
+
+
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/closed.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/css/highlight.css b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/css/highlight.css new file mode 100644 index 0000000..d0db0e1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/css/highlight.css @@ -0,0 +1,200 @@ +/* Credit to https://gist.github.com/wataru420/2048287 */ +.highlight { + /* Comment */ + /* Error */ + /* Keyword */ + /* Operator */ + /* Comment.Multiline */ + /* Comment.Preproc */ + /* Comment.Single */ + /* Comment.Special */ + /* Generic.Deleted */ + /* Generic.Deleted.Specific */ + /* Generic.Emph */ + /* Generic.Error */ + /* Generic.Heading */ + /* Generic.Inserted */ + /* Generic.Inserted.Specific */ + /* Generic.Output */ + /* Generic.Prompt */ + /* Generic.Strong */ + /* Generic.Subheading */ + /* Generic.Traceback */ + /* Keyword.Constant */ + /* Keyword.Declaration */ + /* Keyword.Pseudo */ + /* Keyword.Reserved */ + /* Keyword.Type */ + /* Literal.Number */ + /* Literal.String */ + /* Name.Attribute */ + /* Name.Builtin */ + /* Name.Class */ + /* Name.Constant */ + /* Name.Entity */ + /* Name.Exception */ + /* Name.Function */ + /* Name.Namespace */ + /* Name.Tag */ + /* Name.Variable */ + /* Operator.Word */ + /* Text.Whitespace */ + /* Literal.Number.Float */ + /* Literal.Number.Hex */ + /* Literal.Number.Integer */ + /* Literal.Number.Oct */ + /* Literal.String.Backtick */ + /* Literal.String.Char */ + /* Literal.String.Doc */ + /* Literal.String.Double */ + /* Literal.String.Escape */ + /* Literal.String.Heredoc */ + /* Literal.String.Interpol */ + /* Literal.String.Other */ + /* Literal.String.Regex */ + /* Literal.String.Single */ + /* Literal.String.Symbol */ + /* Name.Builtin.Pseudo */ + /* Name.Variable.Class */ + /* Name.Variable.Global */ + /* Name.Variable.Instance */ + /* Literal.Number.Integer.Long */ } + .highlight .c { + color: #999988; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + color: #000000; + font-weight: bold; } + .highlight .o { + color: #000000; + font-weight: bold; } + .highlight .cm { + color: #999988; + font-style: italic; } + .highlight .cp { + color: #999999; + font-weight: bold; } + .highlight .c1 { + color: #999988; + font-style: italic; } + .highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000000; + background-color: #ffdddd; } + .highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + .highlight .ge { + color: #000000; + font-style: italic; } + .highlight .gr { + color: #aa0000; } + .highlight .gh { + color: #999999; } + .highlight .gi { + color: #000000; + background-color: #ddffdd; } + .highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + .highlight .go { + color: #888888; } + .highlight .gp { + color: #555555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaaaaa; } + .highlight .gt { + color: #aa0000; } + .highlight .kc { + color: #000000; + font-weight: bold; } + .highlight .kd { + color: #000000; + font-weight: bold; } + .highlight .kp { + color: #000000; + font-weight: bold; } + .highlight .kr { + color: #000000; + font-weight: bold; } + .highlight .kt { + color: #445588; } + .highlight .m { + color: #009999; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #445588; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #990000; + font-weight: bold; } + .highlight .nf { + color: #990000; } + .highlight .nn { + color: #555555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + color: #000000; + font-weight: bold; } + .highlight .w { + color: #bbbbbb; } + .highlight .mf { + color: #009999; } + .highlight .mh { + color: #009999; } + .highlight .mi { + color: #009999; } + .highlight .mo { + color: #009999; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #009999; } diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/css/jazzy.css b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/css/jazzy.css new file mode 100644 index 0000000..b1d61a4 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/css/jazzy.css @@ -0,0 +1,412 @@ +html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { + background: transparent; + border: 0; + margin: 0; + outline: 0; + padding: 0; + vertical-align: baseline; } + +body { + background-color: #fff; + font-family: -apple-system, Helvetica, freesans, Arial, sans-serif; + font-size: 16px; + line-height: 1.6; + -webkit-font-smoothing: subpixel-antialiased; + word-wrap: break-word; + min-height: 100vh; } + +h1, h2, h3 { + margin-top: 0.8em; + margin-bottom: 0.3em; + font-weight: 400; + color: black; } + +h1 { + font-size: 2.5em; } + +h2 { + font-size: 2em; + border-bottom: 1px solid #e2e2e2; } + +h4 { + font-size: 13px; + line-height: 1.5; + margin-top: 21px; } + +h5 { + font-size: 1.1em; } + +h6 { + font-size: 1.1em; + color: #777; } + +@media screen and (max-width: 767px) { + h1 { + font-size: 1.75em; } + h2 { + font-size: 1.4em; } } + +pre, code { + font-family: "SF Mono", Menlo, monospace; + font-size: 0.95em; + color: #777; + word-wrap: normal; } + +pre { + line-height: 1.6; } + +a { + color: #0088cc; + text-decoration: none; } + a code { + color: inherit; } + +ul { + padding-left: 15px; } + +li { + line-height: 1.8em; } + +img { + max-width: 100%; } + +blockquote { + margin-left: 0; + padding: 0 10px; + border-left: 4px solid #ccc; } + +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 87px; } + +.footnote-def { + scroll-margin-top: 87px; } + +.content-wrapper { + margin: 0 auto; + width: calc(100% - 32px); + max-width: 980px; } + +.wrapper { + display: flex; + flex-direction: column; + min-height: inherit; + overflow: auto; } + +.article-wrapper > *, +.nav-wrapper > *, +.footer-wrapper > * { + margin: 0 auto; + width: calc(100% - 32px); + max-width: 980px; } + +.article-wrapper { + flex: 1; + background-color: #fff; } + +.nav-wrapper { + background-color: #fafafa; } + +.footer-wrapper { + background-color: #f2f2f2; } + +header { + line-height: 48px; + background-color: #2C2C2C; + position: fixed; + width: 100%; + z-index: 3; } + header img { + padding-right: 6px; + vertical-align: -4px; + height: 16px; } + header a { + color: #fff; } + header p { + float: left; + color: #999; } + header .header-right { + float: right; + margin-left: 16px; } + +#breadcrumbs-container { + background-color: #2C2C2C; + position: fixed; + z-index: 2; + width: 100%; } + +#breadcrumbs { + color: rgba(255, 255, 255, 0.6); + height: 29px; + padding-bottom: 10px; + width: 100%; + margin-top: 48px; + white-space: nowrap; + overflow-x: scroll; } + #breadcrumbs #carat { + height: 10px; + margin: 0 5px; } + #breadcrumbs a { + color: white; } + +@media screen and (max-width: 767px) { + #breadcrumbs { + color: white; } } + +.nav-groups { + list-style-type: none; + padding-left: 0; } + +.nav-group-name { + font-size: 1.5rem; + font-weight: 500; + padding: 20px 0; } + .nav-group-name:not(:last-child) { + border-bottom: 1px solid #e2e2e2; } + .nav-group-name > a { + color: #333; } + +.nav-group-tasks { + column-count: 2; + list-style: none; + padding: 0; + margin-top: 5px; } + +.nav-group-task { + font-size: 1.1rem; + font-weight: 400; } + .nav-group-task a { + color: #888; } + +@media screen and (max-width: 767px) { + .nav-group-tasks { + column-count: 1; } } + +.main-content { + overflow: hidden; + padding-bottom: 60px; + margin-top: 87px; } + .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { + margin-bottom: 1em; } + .main-content p { + line-height: 1.5; } + .main-content section { + max-width: 750px; } + .main-content section .section:first-child { + margin-top: 0; + padding-top: 0; } + .main-content section .task-group-section .task-group:first-of-type { + padding-top: 10px; } + .main-content section .task-group-section .task-group:first-of-type .section-name { + padding-top: 15px; } + .main-content section .heading:before { + content: ""; + display: block; + padding-top: 87px; + margin: -87px 0 0; } + .main-content .section-name p { + margin-bottom: inherit; + line-height: inherit; } + .main-content .section-name code { + color: inherit; } + +.highlight { + background-color: #eee; + padding: 10px 12px; + border: 1px solid #e2e2e2; + border-radius: 4px; + overflow-x: auto; } + +.declaration .highlight { + overflow-x: initial; + padding: 0 40px 40px 0; + margin-bottom: -25px; + background-color: transparent; + border: none; } + +.section-name { + font-size: 1.5rem; + font-weight: 500; + margin: 0; } + +.task-group-section { + margin-top: 10px; + border-top: 1px solid #e2e2e2; } + +.task-group { + padding-top: 0px; } + .task-group > ul { + padding-left: 0; } + +.task-name-container a[name]:before { + content: ""; + display: block; + padding-top: 87px; + margin: -87px 0 0; } + +.section-name-container { + position: relative; + display: inline-block; } + .section-name-container .section-name-link { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + margin-bottom: 0; } + .section-name-container .section-name { + position: relative; + pointer-events: none; + z-index: 1; } + .section-name-container .section-name a { + pointer-events: auto; } + +.item { + padding-top: 8px; + width: 100%; + list-style-type: none; } + .item a[name]:before { + content: ""; + display: block; + padding-top: 87px; + margin: -87px 0 0; } + .item code { + background-color: transparent; + padding: 0; } + .item .token, .item .direct-link { + display: inline-block; + text-indent: -20px; + padding-left: 3px; + margin-left: 55px; + transition: all 300ms; } + .item .discouraged { + text-decoration: line-through; } + .item .token-open { + margin-left: 45px; } + .item .declaration-note { + font-size: .85em; + color: gray; + font-style: italic; } + +.pointer-container { + left: -23px; + padding-bottom: 13px; + position: relative; + width: 110%; } + +.pointer { + background: #f9f9f9; + border-left: 1px solid #e2e2e2; + border-top: 1px solid #e2e2e2; + height: 12px; + left: 21px; + top: -7px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + width: 12px; } + +.height-container { + display: none; + position: relative; + width: 100%; + overflow: hidden; } + .height-container .section { + position: relative; + background: #f9f9f9; + width: 100%; + padding: 10px 25px; + border: 1px solid #e2e2e2; + border-radius: 8px; + box-sizing: border-box; } + +.aside, .language { + padding: 6px 12px; + margin: 12px 0; + border-left: 5px solid #dddddd; + overflow-y: hidden; } + .aside .aside-title, .language .aside-title { + font-size: 12px; + font-weight: 600; + letter-spacing: 2px; + text-transform: uppercase; + padding-bottom: 0; + margin: 0; + color: #aaa; + -webkit-user-select: none; } + .aside p:last-child, .language p:last-child { + margin-bottom: 0; } + +.language { + border-left: 5px solid #cde9f4; } + .language .aside-title { + color: #4b8afb; } + +.aside-warning, .aside-deprecated, .aside-unavailable { + border-left: 5px solid #ff6666; } + .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { + color: #ff0000; } + +.graybox { + border-collapse: collapse; + width: 100%; } + .graybox p { + margin: 0; + word-break: break-word; + min-width: 50px; } + .graybox td { + border: 1px solid #e2e2e2; + padding: 5px 25px 5px 10px; + vertical-align: middle; } + .graybox tr td:first-of-type { + text-align: right; + padding: 7px; + vertical-align: top; + word-break: normal; + width: 40px; } + +.slightly-smaller { + font-size: 0.9em; } + +#footer { + padding: 25px 0; + box-sizing: border-box; } + #footer p { + margin: 0; + color: #aaa; + font-size: 0.8em; } + +html.dash header, html.dash #breadcrumbs { + display: none; } + +html.dash .main-content { + width: calc(100% - 32px); + max-width: 980px; + margin-left: 0; + border: none; + width: 100%; + top: 0; + padding-bottom: 0; } + +html.dash .height-container { + display: block; } + +html.dash .item .token { + margin-left: 0; } + +html.dash .content-wrapper { + width: auto; } + +html.dash #footer { + position: static; } + +@media screen and (max-width: 767px) { + .no-mobile { + display: none; } } diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_3429d7ca3cc00bc309a2ec9474a0a508.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_3429d7ca3cc00bc309a2ec9474a0a508.html new file mode 100644 index 0000000..d761f11 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_3429d7ca3cc00bc309a2ec9474a0a508.html @@ -0,0 +1,85 @@ + + + + + + + +Sparkle: Sparkle Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Sparkle Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_9735f67ecdf0c41f32abd6fc1aab85b9.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_9735f67ecdf0c41f32abd6fc1aab85b9.html new file mode 100644 index 0000000..a5e3a1f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_9735f67ecdf0c41f32abd6fc1aab85b9.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Sparkle/Autoupdate Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Autoupdate Directory Reference
+
+
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_e955798b210d66193b03eac1f9f3f1d5.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_e955798b210d66193b03eac1f9f3f1d5.html new file mode 100644 index 0000000..132c842 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dir_e955798b210d66193b03eac1f9f3f1d5.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Sparkle/InstallerProgress Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
InstallerProgress Directory Reference
+
+
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doc.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doxygen.css b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doxygen.css new file mode 100644 index 0000000..ffbff02 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doxygen.svg b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dynsections.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Sparkle: File List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  Sparkle
  Autoupdate
 TerminationListener.h
  InstallerProgress
 InstallerProgressAppController.h
 InstallerProgressDelegate.h
 ShowInstallerProgress.h
 SPUInstallerAgentProtocol.h
 SUInstallerAgentInitiationProtocol.h
 AppKitPrevention.h
 Sparkle.h
 SPUAppcastItemState.h
 SPUAppcastItemStateResolver+Private.h
 SPUAppcastItemStateResolver.h
 SPUAutomaticUpdateDriver.h
 SPUBasicUpdateDriver.h
 SPUCoreBasedUpdateDriver.h
 SPUDownloadData.h
 SPUDownloadDriver.h
 SPUDownloadedUpdate.h
 SPUInformationalUpdate.h
 SPUInstallationType.h
 SPUInstallerDriver.h
 SPULocalCacheDirectory.h
 SPUProbeInstallStatus.h
 SPUProbingUpdateDriver.h
 SPUResumableUpdate.h
 SPUScheduledUpdateDriver.h
 SPUSecureCoding.h
 SPUSkippedUpdate.h
 SPUStandardUpdaterController.h
 SPUStandardUserDriver.h
 SPUStandardUserDriverDelegate.h
 SPUUIBasedUpdateDriver.h
 SPUUpdateDriver.h
 SPUUpdatePermissionRequest.h
 SPUUpdater.h
 SPUUpdaterCycle.h
 SPUUpdaterDelegate.h
 SPUUpdaterSettings.h
 SPUUpdaterTimer.h
 SPUURLRequest.h
 SPUUserDriver.h
 SPUUserInitiatedUpdateDriver.h
 SPUUserUpdateState+Private.h
 SPUUserUpdateState.h
 SPUXPCServiceInfo.h
 SUAppcast+Private.h
 SUAppcast.h
 SUAppcastDriver.h
 SUAppcastItem+Private.h
 SUAppcastItem.h
 SUApplicationInfo.h
 SUBundleIcon.h
 SUConstants.h
 SUErrors.h
 SUExport.h
 SUFileManager.h
 SUHost.h
 SUInstallerProtocol.h
 SULegacyWebView.h
 SULocalizations.h
 SULog+NSError.h
 SULog.h
 SUNormalization.h
 SUOperatingSystem.h
 SUPhasedUpdateGroupInfo.h
 SUSignatures.h
 SUStandardVersionComparator.h
 SUStatusController.h
 SUSystemProfiler.h
 SUTouchBarButtonGroup.h
 SUTouchBarForwardDeclarations.h
 SUUpdateAlert.h
 SUUpdatePermissionPrompt.h
 SUUpdatePermissionResponse.h
 SUUpdater.h
 SUUpdaterDelegate.h
 SUUpdateValidator.h
 SUVersionComparisonProtocol.h
 SUVersionDisplayProtocol.h
 SUWebView.h
 SUWebViewCommon.h
 SUWKWebView.h
+
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/folderclosed.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions.html new file mode 100644 index 0000000..7027702 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions.html @@ -0,0 +1,463 @@ + + + + + + + +Sparkle: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions_func.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions_func.html new file mode 100644 index 0000000..14e54bb --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions_func.html @@ -0,0 +1,369 @@ + + + + + + + +Sparkle: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+ + +

- v -

+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions_prop.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions_prop.html new file mode 100644 index 0000000..e31589a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/functions_prop.html @@ -0,0 +1,157 @@ + + + + + + + +Sparkle: Class Members - Properties + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/hierarchy.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/hierarchy.html new file mode 100644 index 0000000..beb07f3 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/hierarchy.html @@ -0,0 +1,210 @@ + + + + + + + +Sparkle: Class Hierarchy + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 C<NSApplicationDelegate>
 CNSButton(SierraSDK)
 CNSData(SUSignatureVerifier)
 CNSObject
 CNSObject(PrivateDelegateMethods)
 C<NSObject>
 CNSOperatingSystemVersion
 CNSProcessInfo()
 C<NSSecureCoding>
 C<NSTouchBarDelegate>
 CNSViewController
 CNSWindowController
 CShowInstallerProgress()
 C<SPUDownloaderDelegate>
 C<SPUInstallerAgentProtocol>
 CSPUUpdaterCycle()
 CSPUUpdaterSettings()
 CSPUUpdaterTimer()
 CSPUURLRequest()
 CSPUUserUpdateState(Private)
 CSUAppcast()
 CSUAppcast(Private)
 CSUAppcastItem()
 CSUHost()
 C<SUInstallerAgentInitiationProtocol>
 C<SUInstallerCommunicationProtocol>
 CSUUpdateValidator()
 C<SUVersionComparison>Provides version comparison facilities for Sparkle
 C<SUVersionDisplay>Applies special display formatting to version numbers
 CTerminationListener()
+
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/icon_32x32@2x.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/icon_32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aef9fc40cdf39f6e437b7d78c1b7af0e0c28f80d GIT binary patch literal 4689 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 S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/img/dash.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 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 literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/index.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/index.html new file mode 100644 index 0000000..2cfaea8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/index.html @@ -0,0 +1,228 @@ + + + + Sparkle Reference + + + + + + + + + + +
+
+

+ Sparkle 2.0.0-beta.1 Docs + (58% documented) +

+ + +
+
+ +
+
+
+
+
+ +

Sparkle 2 API Reference

+ +

These are the primary classes and protocols in Sparkle 2 you may be interested in:

+ + + +

If you are migrating from Sparkle 1, please refer to SPUStandardUpdaterController and SPUUpdater.

+ +

Please also visit the Basic Setup guide which shows how to instantiate an updater in a nib or how to create one programmatically.

+ +
+
+
+
+ + +
+ + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller-members.html new file mode 100644 index 0000000..85132cf --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
InstallerProgressAppController Member List
+
+
+ +

This is the complete list of members for InstallerProgressAppController, including all inherited members.

+ + + + +
cleanupAndExitWithStatus:error: (defined in InstallerProgressAppController)InstallerProgressAppController
initWithApplication:arguments:delegate: (defined in InstallerProgressAppController)InstallerProgressAppController
run (defined in InstallerProgressAppController)InstallerProgressAppController
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller.html new file mode 100644 index 0000000..53b071f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: InstallerProgressAppController Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
InstallerProgressAppController Class Reference
+
+
+
+Inheritance diagram for InstallerProgressAppController:
+
+
+ +
+ + + + + + + + +

+Instance Methods

+(instancetype) - initWithApplication:arguments:delegate:
 
+(void) - run
 
+(void) - cleanupAndExitWithStatus:error:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_installer_progress_app_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6253c27d6bc74d90d8e7b95866cc00ea1da7d4 GIT binary patch literal 1049 zcmeAS@N?(olHy`uVBq!ia0y~yV5|eO12~w0q~_IkHb6=uz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opvZupKx5^Zx%a zZ!Wu}h)WYzsJ)u*d5}e!cTh{EnEfg< zAO2E3+2j31KiFoU{Oq4ao8;DP&X+4X8tnh-z0395KQ`C6i>;?ExAb}H({=qt|FX#+ ze>qH&vRhd%eD}}QoypIqdIY&fhSfXQo5(&tWoj1Rm9Mz2{rLV}bt*3_&xO|u$6lJ> z)NT0f(3xacy{G=GXMei6(q{eD{b5ln>piuWh5enpMBHL=ePxYsZ0WsYJ2*F6oJ_xc z|H$HZKk914zy6a6yI54_^e5u8=50U0*lYV2@A6$8ZdtuEbmeoqJ>m~Tqx18YPkp>e zZ`#uzhJQ=fPOml0o9F&3cnkZl&-q1pmEGqb|JHvH_4lgU^_3G=S*g4fowwp&TnT&c zvMS@_SNBI=+B?TS;P1-UqT1^+)-T(;zjK|&{pVHnh1Gj2&Q#ZLebd#v^G%oP&NxdA zc2BF5l7H{M==v0U{&9iuv-7Ps(^AAdx9wcIIrY+&YL%6TRe!0zoKbG`WKEsttKwMY zKe@}+{Xg{J)1^sEjBDKfN6-7nzWRUtUbjhFb|HT!m6)yvhJQ3H{CTeHd#3HE^E67n zChx@I9Q1-;u|<)wLSFd51D-j}uh};w%{unozJPC?{DCgZPY?g{g9HtZY>#6wjPkW*-h5F?-kRa!>Si6fcGz~*oo zy3yM&-B+7@{`ul(Nfmz>ZCwBNy$gB!d6#+p`hWLRSS^mrG@8$(Zk3F`iJ^JLj zR&9jOxjMebt*Lt?z3%_qR(i>zJdQQ9qOxLMhV((*uk0CiET7U#1E%EIMAl!DT=o9! z_0OA&M7|c}FDiLB?`pip$~JSZV8yU<(=EcKb^9*fpPM6nu=nfpZ5tx`p3agw=yvPg z>y^;~rT_E4h#TLD{Gaz(vseCAzM6jcq3o;iS^M)pTfX}H``7BLf(w3Lxx2UK?%nO5 zo}NvQeD~Sm7T4;s`R{wh>*{XuP2HPQd!lOJy9JrjE2DyM-G7`ReDLiT<~^rouI!pC z@qjg^-njQQdqv;sO%c(|2L#v2YuI6ijQK@SOfr3l`^VU{@}7(L&zQZye9YkK>gTe~ HDWM4f`%(yY literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state-members.html new file mode 100644 index 0000000..6776f82 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUAppcastItemState Member List
+
+
+ +

This is the complete list of members for SPUAppcastItemState, including all inherited members.

+ + + + + + + + +
criticalUpdate (defined in SPUAppcastItemState)SPUAppcastItemState
informationalUpdate (defined in SPUAppcastItemState)SPUAppcastItemState
initWithMajorUpgrade:criticalUpdate:informationalUpdate:minimumOperatingSystemVersionIsOK:maximumOperatingSystemVersionIsOK: (defined in SPUAppcastItemState)SPUAppcastItemState
majorUpgrade (defined in SPUAppcastItemState)SPUAppcastItemState
maximumOperatingSystemVersionIsOK (defined in SPUAppcastItemState)SPUAppcastItemState
minimumOperatingSystemVersionIsOK (defined in SPUAppcastItemState)SPUAppcastItemState
NS_UNAVAILABLE (defined in SPUAppcastItemState)SPUAppcastItemState
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state.html new file mode 100644 index 0000000..e34ade9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state.html @@ -0,0 +1,119 @@ + + + + + + + +Sparkle: SPUAppcastItemState Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUAppcastItemState Class Reference
+
+
+
+Inheritance diagram for SPUAppcastItemState:
+
+
+ +
+ + + + + + +

+Instance Methods

+(instancetype) - NS_UNAVAILABLE
 
+(instancetype) - initWithMajorUpgrade:criticalUpdate:informationalUpdate:minimumOperatingSystemVersionIsOK:maximumOperatingSystemVersionIsOK:
 
+ + + + + + + + + + + +

+Properties

+BOOL majorUpgrade
 
+BOOL criticalUpdate
 
+BOOL informationalUpdate
 
+BOOL minimumOperatingSystemVersionIsOK
 
+BOOL maximumOperatingSystemVersionIsOK
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state.png new file mode 100644 index 0000000000000000000000000000000000000000..f44cdeff0e8eaf439d7685969b27664e31f9b7cd GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^EkGQ=!3-qdo9eCsQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;RSS%JsRKX2Ce`o~v= z>Y6gP-qt(km-b0iM}SZ9Vzi4(8h2pm+|>;n9HFIUa!O~T>#x`N@n16(m-b&CJHP$J z@2R!5?x9;Riz|Gpt8}#eZ!{&cDCe3QyHDuXfP9AtpQw(Ow1$0wp|wlBEd&2dYyMvS z>+XK0#ETili`zYR{;K7ezM$DdW=i*}R}SLdTVyVWACG@_5{orlOkoKBSp#M0p#yf_M24|M&vxbjP8 zhmJty<$Zev*2Ho=|Ezk1VVO_ltdd#jo8``#uH4-hbzRI%aE0^PCI76B3AmPBsEWJJ zu_Z0|t!+r{ZdOwU-<~$hiz_ql=$4ppT + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUAppcastItemStateResolver Member List
+
+
+ +

This is the complete list of members for SPUAppcastItemStateResolver, including all inherited members.

+ + + + + + + + +
applicationVersionComparator (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()
hostVersion (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()
initWithHostVersion:applicationVersionComparator:standardVersionComparator: (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver
isMinimumAutoupdateVersionOK:hostVersion:versionComparator: (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()static
NS_UNAVAILABLE (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver
resolveStateWithInformationalUpdateVersions:minimumOperatingSystemVersion:maximumOperatingSystemVersion:minimumAutoupdateVersion:criticalUpdateDictionary: (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()
standardVersionComparator (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state_resolver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state_resolver.html new file mode 100644 index 0000000..461e7f9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state_resolver.html @@ -0,0 +1,131 @@ + + + + + + + +Sparkle: SPUAppcastItemStateResolver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUAppcastItemStateResolver Class Reference
+
+
+ +

Private exposed class used to resolve Appcast Item properties that rely on external factors such as a host. + More...

+ +

#import <SPUAppcastItemStateResolver.h>

+
+Inheritance diagram for SPUAppcastItemStateResolver:
+
+
+ +
+ + + + + + + + +

+Instance Methods

+(instancetype) - NS_UNAVAILABLE
 
+(instancetype) - initWithHostVersion:applicationVersionComparator:standardVersionComparator:
 
+(SPUAppcastItemState *) - resolveStateWithInformationalUpdateVersions:minimumOperatingSystemVersion:maximumOperatingSystemVersion:minimumAutoupdateVersion:criticalUpdateDictionary: [implementation]
 
+ + + +

+Class Methods

+(BOOL) + isMinimumAutoupdateVersionOK:hostVersion:versionComparator: [implementation]
 
+ + + + + + + +

+Properties

+NSString * hostVersion [implementation]
 
+id< SUVersionComparisonapplicationVersionComparator [implementation]
 
+SUStandardVersionComparatorstandardVersionComparator [implementation]
 
+

Detailed Description

+

Private exposed class used to resolve Appcast Item properties that rely on external factors such as a host.

+

This resolver is used for constructing appcast items.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state_resolver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_appcast_item_state_resolver.png new file mode 100644 index 0000000000000000000000000000000000000000..86911a7bb8c1eeec7a4e64ce089a36ba5c53b4a5 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;^HF7-xhPhiBc za&?``Uq8k8ldoe{wyF4jWtVeWr0aQIYon^BSEsIL;I8D^Gj-J)_Fv*nuwC0(yIc3< zUbSy?t6bl?ZrnVX;fUr&Mxe790=;q?G*rzTrU*$Zcy;m$EIq>35tPL2f-2oGdFIWk zLkwZTP?;^s_OCaaO?&RLd+(l&zjqZeT6{HQpL|ySz>4DI(q)Hbj+^s65xIR+X5;>c z)uPo+`*nBnt0t*hn7Z8#kdxp1b>qGpu9fqPx?io`eC6y`)!Z`g23yZ(H-2|N{cpQ0 z&)~)SU0dqJ%Wl7G{aC`!=4O9(!s&*}JpNaEzwRu2we{TB!0*+!|9+k3w*eRkk6-fV zZ@I0X-TKDk^nSbRw|C#Z^6kl8nHt%q%BV^0_cw2O(a(G)zWs%N|Nk{H{WqK^?rZ#8 zm-oNpZ*iXgrcz)y?){eec+KQ1XRrJ!_C1u^_S#&(Y|>t{nB_HpwJlA&8vZW_2FRt? oHyGp>Lqq1}#h+)-gk2WzT%Y&iVw_$MFdZ>?y85}Sb4q9e0D$~OFaQ7m literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver-members.html new file mode 100644 index 0000000..ba7749d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUAutomaticUpdateDriver Member List
+
+
+ +

This is the complete list of members for SPUAutomaticUpdateDriver, including all inherited members.

+ + + + + + + + +
abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate: (defined in SPUAutomaticUpdateDriver)SPUAutomaticUpdateDriver
resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver.html new file mode 100644 index 0000000..17be91d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: SPUAutomaticUpdateDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUAutomaticUpdateDriver Class Reference
+
+
+
+Inheritance diagram for SPUAutomaticUpdateDriver:
+
+
+ + +<SPUUpdateDriver> + +
+ + + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate:
 
- Instance Methods inherited from <SPUUpdateDriver>
+(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
 
+(void) - resumeInstallingUpdateWithCompletion:
 
+(void) - resumeUpdate:completion:
 
+(void) - abortUpdate
 
+(void) - abortUpdateWithError:
 
+ + + + +

+Additional Inherited Members

- Properties inherited from <SPUUpdateDriver>
+BOOL showingUpdate
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_automatic_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..6c297b387b3098b7777e48dc7fa7a1ecb3297e8b GIT binary patch literal 1373 zcmeAS@N?(olHy`uVBq!ia0y~yU(n*gwZT&>o{BT_9ep?b zP1LH5uB+;gLXU(enurMw*7`5^xkJFHzg<?_r^r+Qu zmetsJUdo$y?bg13$D>|X$bDUXblbB+Tl=&BlD_3{Ej2P#eSYiFi_dqXmT#|(hz_46 zmvQ&b{cG}Ff0IwIlH9#!WA@su-G8;C+Rf+w`Lk;4sr9A{mcQ31)Dr7f`WUgs`Spce zW}8YqQao>+Uza0m@^4kC4%6yeRvEHh-=jBg4ZnEuNlecF-M4s-xn^rFt+C-=yZrLYFCQ6pSTf6WG~48Z6N&uk*N*edw=(V6Y4dd99=Ru#!P*C; zPfTM?P~XY~j5UU`Ank^^SGcfoE$5$q?#%dMZ_Urw%zK)#tHEc26VOq14DF8u{O6!1 z%Ho){Ywv&C_uDx3dRzIf|4q}URu&fieml4O;)SR3$Ji_c-gfS8|N65kV&9d?>;J8} zrao6T`gPkq&urg^^Pjx>X_NbUvhLk>15@eg-OfF(FXZz3jQ)D}$FOYMx^71N->j^a zNilB{pS6BHw=*lG|MgG1>Mzr_#zw!-j-7V7_qDDs|CYRW^7|AU4sXz!^E%0(V&CGe z?<(A0?=OS?H;t>+`X{0XXC21&DTm>nJh%Cx7@q3zxw9x_1pNq zKHK(7W^XF*{JRx*Z@F*39R5rxAo|~?_V2!bi|*V^-jbWWHh9W^*Id>QNnP`z8jr?9 qvZCEov`}Qu(p@^GpZ$UCALhn4uey!0l5YabLIzJ)KbLh*2~7YC&#vJB literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver-members.html new file mode 100644 index 0000000..bae5f33 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver-members.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUBasicUpdateDriver Member List
+
+
+ +

This is the complete list of members for SPUBasicUpdateDriver, including all inherited members.

+ + + + + + + +
abortUpdateAndShowNextUpdateImmediately:resumableUpdate:error: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
initWithHost:updater:updaterDelegate:delegate: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
prepareCheckForUpdatesWithCompletion: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
resumeInstallingUpdateWithCompletion: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
resumeUpdate:completion: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver.html new file mode 100644 index 0000000..db7165a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver.html @@ -0,0 +1,112 @@ + + + + + + + +Sparkle: SPUBasicUpdateDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUBasicUpdateDriver Class Reference
+
+
+
+Inheritance diagram for SPUBasicUpdateDriver:
+
+
+ +
+ + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:updater:updaterDelegate:delegate:
 
+(void) - prepareCheckForUpdatesWithCompletion:
 
+(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground:
 
+(void) - resumeInstallingUpdateWithCompletion:
 
+(void) - resumeUpdate:completion:
 
+(void) - abortUpdateAndShowNextUpdateImmediately:resumableUpdate:error:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_basic_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..ea647457470e8b5ef479e1ae480217e5b3ff3e42 GIT binary patch literal 583 zcmeAS@N?(olHy`uVBq!ia0vp^eLx(*!3-pSi0@4WQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;s|(|Hqg2 zz1y_$vD({T+kE(BWBbwFOW))~&7T!Kr*QMKTapFK7VYo;?Duwy%lm!bW}7a}wQHYe zJ7IC}+-dG*bEmec=?nY4UUPolDS4~g%s|ilSg$IyX6i1kzv>oxO4xKEC}l8s My85}Sb4q9e03vr0CjbBd literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver-members.html new file mode 100644 index 0000000..18f2a1c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver-members.html @@ -0,0 +1,92 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUCoreBasedUpdateDriver Member List
+
+
+ +

This is the complete list of members for SPUCoreBasedUpdateDriver, including all inherited members.

+ + + + + + + + + + + + + +
abortUpdateAndShowNextUpdateImmediately:error: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground:requiresSilentInstall: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
clearDownloadedUpdate (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
deferInformationalUpdate:secondaryUpdate: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
downloadUpdateFromAppcastItem:secondaryAppcastItem:inBackground: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
extractDownloadedUpdate (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
finishInstallationWithResponse:displayingUserInterface: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
initWithHost:applicationBundle:sparkleBundle:updater:updaterDelegate:delegate: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
preflightForUpdatePermissionPreventingInstallerInteraction:reply: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
prepareCheckForUpdatesWithCompletion: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
resumeInstallingUpdateWithCompletion: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
resumeUpdate:completion: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver.html new file mode 100644 index 0000000..ea1590b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: SPUCoreBasedUpdateDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUCoreBasedUpdateDriver Class Reference
+
+
+
+Inheritance diagram for SPUCoreBasedUpdateDriver:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:updaterDelegate:delegate:
 
+(void) - prepareCheckForUpdatesWithCompletion:
 
+(void) - preflightForUpdatePermissionPreventingInstallerInteraction:reply:
 
+(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground:requiresSilentInstall:
 
+(void) - resumeInstallingUpdateWithCompletion:
 
+(void) - resumeUpdate:completion:
 
+(void) - downloadUpdateFromAppcastItem:secondaryAppcastItem:inBackground:
 
+(void) - deferInformationalUpdate:secondaryUpdate:
 
+(void) - extractDownloadedUpdate
 
+(void) - clearDownloadedUpdate
 
+(void) - finishInstallationWithResponse:displayingUserInterface:
 
+(void) - abortUpdateAndShowNextUpdateImmediately:error:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_core_based_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..48dee7f7aed1378e37a77f00532405487aa4250b GIT binary patch literal 645 zcmeAS@N?(olHy`uVBq!ia0vp^>wq|bgBeI}_u97=NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~iFmp=hEy=VoqN0JwE~Z;xc<%m|BtKl znK$a^`mNb^X2s=PgM`e;X;Z?3yfS4cs$`0?u2ZShEKoh^E&u3Q`}Wsi+kP(d>AE}j z=lMUi9nmMH9$HLX;<>*o`sAvqa+jZnEnWBVUfVB0m6x@5TcaQ46n^%e5-!Q^`Affc z-tOK7ti{WuE$bz>yWDv8p=b8$_xca{RLceKc84i?-oGl_yQVeo4Ntvs`T5`P64O_h zYI?pu{Wtt=+~-E^mH+SO+_l{`sboG=_@q4|J0?9@s-EYisjJMuZ_9A)V$_cQ<3W3} zAKGPxKZ@lsw_NQM9k>2+Y>{*7e zK&Z+qh4H1~Qb)5F$9`fuu%t@tfyep1dB@hhOK)CUJezm>t+~gQ+naB4-!m`RzoDe3 zx-C}u!n_ PX})Uwnrr?M;^5W&NYx^R_-;^R#S{`eD;N^9#?u`N$oUu3qx~Jb#J) zu|1LNR~N68efCan`{}ehFFrr&J@ee=h^@{2y*GLcE3WUDd0EZ5yYZ&=@!a$^OEsl- zKbSl1R{0|9xtV-t?`gi9!4v$BZ%1%oUFYuPS^IAE?ySDhb8d1XS9SjO(o0=i&PKn> zb5@*b + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUDownloadData Member List
+
+
+ +

This is the complete list of members for SPUDownloadData, including all inherited members.

+ + + + + + +
dataSPUDownloadData
initWithData:URL:textEncodingName:MIMEType: (defined in SPUDownloadData)SPUDownloadData
MIMETypeSPUDownloadData
textEncodingNameSPUDownloadData
URLSPUDownloadData
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_data.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_data.html new file mode 100644 index 0000000..3017e66 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_data.html @@ -0,0 +1,196 @@ + + + + + + + +Sparkle: SPUDownloadData Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUDownloadData Class Reference
+
+
+ +

A class for containing downloaded data along with some information about it. + More...

+ +

#import <SPUDownloadData.h>

+
+Inheritance diagram for SPUDownloadData:
+
+
+ +
+ + + + +

+Instance Methods

+(instancetype) - initWithData:URL:textEncodingName:MIMEType:
 
+ + + + + + + + + + + + + +

+Properties

+NSData * data
 The raw data that was downloaded.
 
NSURL * URL
 The URL that was fetched from. More...
 
NSString * textEncodingName
 The IANA charset encoding name if available. More...
 
NSString * MIMEType
 The MIME type if available. More...
 
+

Detailed Description

+

A class for containing downloaded data along with some information about it.

+

Property Documentation

+ +

◆ MIMEType

+ +
+
+ + + + + +
+ + + + +
- (NSString*) MIMEType
+
+readnonatomiccopy
+
+ +

The MIME type if available.

+

Eg: "text/plain"

+ +
+
+ +

◆ textEncodingName

+ +
+
+ + + + + +
+ + + + +
- (NSString*) textEncodingName
+
+readnonatomiccopy
+
+ +

The IANA charset encoding name if available.

+

Eg: "utf-8"

+ +
+
+ +

◆ URL

+ +
+
+ + + + + +
+ + + + +
- (NSURL*) URL
+
+readnonatomiccopy
+
+ +

The URL that was fetched from.

+

This may be different from the URL in the request if there were redirects involved.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_data.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_data.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8726449b2973f4d1bd7e47b32442d697bf0eee GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w0B24VGS8wF+nzoyz4Be9$>O%j>rag;+IO7;Zhzk5`6*)VwESOl zdz%by->_K!_i?bwL~$M4$xk-21zy-5e#^uAL)N_2tEMH+d62PUN1p=EV?h_@d#}wG zn!9Y^kGT1{Ogi{t`=Ok=ez`RF=DJzjmp;gqCGIMDq{OtJb&hTR_AP-cn-}bM;yd)S zWX9v=9}Zr=xBUPwOXjYvdu58Z@^0t8J6)KgDCIAY(o?%k1j>qG!w}nqM zu@hj;JRYikD80xr_5AeE7ZbO5;RYT#VeD*arg_nAY0!)em zO$`Um-LR6v!^j6F#3LR=4f%?Xh{fUQS>~X^7q%L9ecg+-OZm{ z=ezr>z!FXQDGV1bD>ltCXm}JQa!|1A`roaq3?1J5^wf#kIh0?FTIQFa#7kKkQie=rc_bo>+KNL9lFJExW z(doG@icHJ}3ljBSY>T#(eJ1nZe(;xLE%$xS&gZahu>HNePOBq6Xj jS1TGA&sJgBvC{tRy-AzI4)4nZrdI|}S3j3^P6 + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUDownloadDriver Member List
+
+
+ +

This is the complete list of members for SPUDownloadDriver, including all inherited members.

+ + + + + + + + + +
cleanup: (defined in SPUDownloadDriver)SPUDownloadDriver
downloadFile (defined in SPUDownloadDriver)SPUDownloadDriver
inBackground (defined in SPUDownloadDriver)SPUDownloadDriver
initWithHost: (defined in SPUDownloadDriver)SPUDownloadDriver
initWithRequestURL:host:userAgent:httpHeaders:inBackground:delegate: (defined in SPUDownloadDriver)SPUDownloadDriver
initWithUpdateItem:secondaryUpdateItem:host:userAgent:httpHeaders:inBackground:delegate: (defined in SPUDownloadDriver)SPUDownloadDriver
removeDownloadedUpdate: (defined in SPUDownloadDriver)SPUDownloadDriver
request (defined in SPUDownloadDriver)SPUDownloadDriver
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_driver.html new file mode 100644 index 0000000..6d7afa7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_driver.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: SPUDownloadDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUDownloadDriver Class Reference
+
+
+
+Inheritance diagram for SPUDownloadDriver:
+
+
+ +
+ + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithRequestURL:host:userAgent:httpHeaders:inBackground:delegate:
 
+(instancetype) - initWithUpdateItem:secondaryUpdateItem:host:userAgent:httpHeaders:inBackground:delegate:
 
+(instancetype) - initWithHost:
 
+(void) - downloadFile
 
+(void) - removeDownloadedUpdate:
 
+(void) - cleanup:
 
+ + + + + +

+Properties

+NSMutableURLRequest * request
 
+BOOL inBackground
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_download_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..4192789907751a186de94e533b0fe377fa1bcca3 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^4L}^g!3-py-Rr#uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgyFFbTLn;{G&b>J4umXpxzW(0-|Bv5x z3G}?+yX$W1^20v)CZP{I6588%qy-DHZG+JCC?r|pBV#x!kDy)XM_e{i*)&-`K4 z%s*0U2kIFF1UW?*{&?^+bcC23cr556!298gyte?~gwP2LoTz9%g96Ce3`c;@UcmfD zGO{~KUW31uox%Uzjm*1uoR~BC)O8suW---lKF2Kcd0qKvE3nev$OeLcTIl$ z#B8zrK`Dpat#Los&wkfCX_b5Wv|YxYFP=BBHZ1s`^WJ3r#$60~qFY+^8AZNGHnip6 zd0@gho#C6$UgZcTnMvQJ8W?6|%w$gccymfUe^2~L#T4gX^ZK`iI~L}@W8^lNb#k=@ jqmTllRzru!f_)6P?)!WT@JP%6MiqmntDnm{r-UW|N|nxh literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update-members.html new file mode 100644 index 0000000..c534105 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update-members.html @@ -0,0 +1,85 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUDownloadedUpdate Member List
+
+
+ +

This is the complete list of members for SPUDownloadedUpdate, including all inherited members.

+ + + + + + +
downloadName (defined in SPUDownloadedUpdate)SPUDownloadedUpdate
initWithAppcastItem:secondaryAppcastItem:downloadName:temporaryDirectory: (defined in SPUDownloadedUpdate)SPUDownloadedUpdate
secondaryUpdateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
temporaryDirectory (defined in SPUDownloadedUpdate)SPUDownloadedUpdate
updateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update.html new file mode 100644 index 0000000..a4437c3 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: SPUDownloadedUpdate Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUDownloadedUpdate Class Reference
+
+
+
+Inheritance diagram for SPUDownloadedUpdate:
+
+
+ + +<SPUResumableUpdate> + +
+ + + + +

+Instance Methods

+(instancetype) - initWithAppcastItem:secondaryAppcastItem:downloadName:temporaryDirectory:
 
+ + + + + + + + + + +

+Properties

+NSString * downloadName
 
+NSString * temporaryDirectory
 
- Properties inherited from <SPUResumableUpdate>
+SUAppcastItemupdateItem
 
+SUAppcastItemsecondaryUpdateItem
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_downloaded_update.png new file mode 100644 index 0000000000000000000000000000000000000000..fbcefdb01133c60aadccb5df1249c6cecd03b398 GIT binary patch literal 1305 zcmeAS@N?(olHy`uVBq!ia0y~yU^D}=J2;quWYkr2Eg&Tk;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z_P;A#WAFU@$KB#lU6GTu+8=i-S@rz zv2b&TMw+qoc0SK#*TiK>-i5hE2GUyl*BF+)*81l4$Jdq9 z%d@JF|8m*%4J=_d7llSov((Pzn!mIE(zbi^o(9}@iFUuesoOT6Nn+M=`(-s{W}9v; zjLo(5-eUQvvT(j+Ze;XiDXWXyJlDoc<$le{mYd}xl|EagbY-PN{*kMP9o0&$e*5H3 z`ZDACavq=ypGj|>Yw$SSZMMo@w~Wau<_mo%-DxrNEE2w@a`LQnhPUR@hYUZ&)-f

(=>tYf!Y?v9h|ugc|eKTKvh)aKJ&@dTxud$ zT08ypQzJQ0@NP9T-h7cGH!Teq$TMfozL1voOl`}|nLB^BZu`^x(r)RVn3?j=c9sSI zx?i{=x9V!lozvCPYiG~=d&FiPpZ?@G$KTwFzYxZwyX+Rb=dFTy+gvX@W~O};{_h!W z7*ZFR{N`Hdo2fr$cL`0I^hKtBtL+8z)>yt%LG#z89=H=zeS5-L*~_&r*KFUs5e^5vx;+H zWJFtq|4h@1zj$p)o8J~&kF}G&bR5peHhX$8?QPptKX2j2zyHc^yuKLbw=q}k@8`{L zC38=%i94B7`}g|hwP~k|j-0LBJm1s%-Gn92EzT_Yd@hpRq4=2T%q?k6yFA}lmQMD3 zt+Lx^*6ed9mVncP&9$_&Z{az2X3UfoxYc&C>`+g?=d7EYPRG+fn)Ef z+5gYlcHXXcdN2NdP43c{;kPz@xODH@uUpd$b01Y+pYkCf`rqyB*GI1N-@2uF&wg^* zISZjLKfZ0wtzEYE_33Y#D+`zB&h^|pAy#ee=J!S~=fvDIoy_#d^88-CEsU?VA-SvG i1vM;Sxzl2Dz1N#dU-%DAyb3JG7(8A5T-G@yGywp$hH_^B literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update-members.html new file mode 100644 index 0000000..9b76905 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +

+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUInformationalUpdate Member List
+
+
+ +

This is the complete list of members for SPUInformationalUpdate, including all inherited members.

+ + + + +
initWithAppcastItem:secondaryAppcastItem: (defined in SPUInformationalUpdate)SPUInformationalUpdate
secondaryUpdateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
updateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update.html new file mode 100644 index 0000000..79be1f2 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: SPUInformationalUpdate Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUInformationalUpdate Class Reference
+
+
+
+Inheritance diagram for SPUInformationalUpdate:
+
+
+ + +<SPUResumableUpdate> + +
+ + + + +

+Instance Methods

+(instancetype) - initWithAppcastItem:secondaryAppcastItem:
 
+ + + + + + +

+Additional Inherited Members

- Properties inherited from <SPUResumableUpdate>
+SUAppcastItemupdateItem
 
+SUAppcastItemsecondaryUpdateItem
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_informational_update.png new file mode 100644 index 0000000000000000000000000000000000000000..dd758ff0009ae270eadf9188521476e53c4c08a3 GIT binary patch literal 1306 zcmeAS@N?(olHy`uVBq!ia0y~yU^D}=J2;quWYkr2Eg&Tk;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z_QZQ#WAFU@$KA)lU6J6xbeUA+5f%% zadbCFMCt6c*3-Amd@E?!QDrt^KZEn+Ag{-a1}2`9+?2O?PMUo|%`?www#rV<+(}QK zF>ie;z3g$wr=oPbna`_cT>8(`u<&Djkl~gYul!XqT{C9OoM}5X*YtSa!ld<2?q8X* zWXh7~KMZoqIlYsnszz;1ow@nax{ot|YvjKDq%-@L)@`#bx~p$|R%uvR`78NUdb;vi zuDe&Jt#*l5o+ti&=FMqaOP3}p-ws>))qC^Wce!^x!#$JpCol2Ml0Ct_(emcXC4TAi zSNcxstE@c*a^=3j+nmOAsoOj+Ww)4l775={Iq91*S;c&z@1#3>8n;aelHzN~f5;`k zP{EPQ5V!972et<)TNo>LMsnvf*f~ib(C5fx$a9izn09`^P_4o^6Ji5z%342Br&fDgC*)KcooA7_n zXv2_qYb?vSMXOc+FI%RvRK@oA#%;{C!MC0+(fRvwJI@UL>lyPmSsKVrPq3Y{H22)@ zu;^))+Ha*jt7iG;etz}G@O9DUl6O|S{$(B5bZPp5s#QfFm+s9q+^BN>R?z#`Jh`X6 z<=^G5?Qn0G&e}fr`{LKlr>y^MQhCyo{e8#QZ855Tm#?jzq?P#hXlVTV4Lv8k*Tt<9 z2S)V4W%tg!)xNds(uRq->`Ox@_1!qTEidq$?zOX9sxDkgeNeVX{#(_ysj)e+p8sp| ztKFiFR_{-__V3^8dts|nZ$5gqYiF#d_uC0ep5Iuzn)LcdnOmL2MepP4)9i`0Mj*)wkzx0o3l zn=d?j=8SKKv2n5Rtutrt+}W~p%B2F6TYA$^r&=(ad&Fg6(7Z1`gZV?z-oCfF7rt`? zlT2Q|>6Yz|_w~0h{%O+SBqnjZ{#qp~)o}i~x1I0;LeTf;&1;V!& z?zEUOm@ni#a8^2VHg|+(%Ji6;orks z+rBQXo~L_q2J_E+xv)p2F8h{$oAuLcLEpOe@|Y#NZ*}c$tFf%F7QI~ZE6zAx_NT!5 z_e=&RulHsr=VyOPb&Wm3f9us1?OgVc->+PIn<|%k^UJpfY9%uB|HrXeaK)jxqgw_rJt2oZ=M7eWDK6JelF{r5}E)nFnJpQ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver-members.html new file mode 100644 index 0000000..329a489 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUInstallerDriver Member List
+
+
+ +

This is the complete list of members for SPUInstallerDriver, including all inherited members.

+ + + + + + + + +
abortInstall (defined in SPUInstallerDriver)SPUInstallerDriver
cancelUpdate (defined in SPUInstallerDriver)SPUInstallerDriver
checkIfApplicationInstallationRequiresAuthorizationWithReply: (defined in SPUInstallerDriver)SPUInstallerDriver
extractDownloadedUpdate:silently:preventsInstallerInteraction:completion: (defined in SPUInstallerDriver)SPUInstallerDriver
initWithHost:applicationBundle:sparkleBundle:updater:updaterDelegate:delegate: (defined in SPUInstallerDriver)SPUInstallerDriver
installWithToolAndRelaunch:displayingUserInterface: (defined in SPUInstallerDriver)SPUInstallerDriver
resumeInstallingUpdateWithUpdateItem:systemDomain: (defined in SPUInstallerDriver)SPUInstallerDriver
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver.html new file mode 100644 index 0000000..e9f853d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: SPUInstallerDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUInstallerDriver Class Reference
+
+
+
+Inheritance diagram for SPUInstallerDriver:
+
+
+ +
+ + + + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:updaterDelegate:delegate:
 
+(void) - resumeInstallingUpdateWithUpdateItem:systemDomain:
 
+(void) - checkIfApplicationInstallationRequiresAuthorizationWithReply:
 
+(void) - extractDownloadedUpdate:silently:preventsInstallerInteraction:completion:
 
+(void) - installWithToolAndRelaunch:displayingUserInterface:
 
+(void) - cancelUpdate
 
+(void) - abortInstall
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_installer_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..da062ab353aa515174dc9aad02dc0b2631527ccf GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^B|sd&!3-q-S1vRKQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;IPS%JsZKd$Qk|NiY_ zO$`yR`yRZTBDroBW3k7MZR=;u>=je56Z?h}5&`uOICeIMV*(mD=INQ^_ly z`_K90I7us(;p?A$1#911KFwKQyR*_+W#vlY3lYV9ywRP~TKSWy^@9H6yjQFj_&=+7rF%iY=zR;*m&+|oB{;Cmi8DD{ z3>r4h3TVjNCHbo;)Z}xvQp_vcwI9na-CrBdbkySlQ_y|;)_v)39d3VkK1)FN{L4q( zNrm2vCMciTtCSzPZCT!Xy(#ndtY`tmGxd}d$-Np-E`qpPJajfb6X1Xt#57Hp5-Vu{cZ2N*t;*! xo!Ng`Xx93f`}Z=$nl5Cx`z18Mc=N$ujJ_PM#f^2h4g#Z&!PC{xWt~$(696xH_Amed literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory-members.html new file mode 100644 index 0000000..2333a5e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPULocalCacheDirectory Member List
+
+
+ +

This is the complete list of members for SPULocalCacheDirectory, including all inherited members.

+ + + + +
cachePathForBundleIdentifier: (defined in SPULocalCacheDirectory)SPULocalCacheDirectorystatic
createUniqueDirectoryInDirectory: (defined in SPULocalCacheDirectory)SPULocalCacheDirectorystatic
removeOldItemsInDirectory: (defined in SPULocalCacheDirectory)SPULocalCacheDirectorystatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory.html new file mode 100644 index 0000000..5a46c84 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SPULocalCacheDirectory Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPULocalCacheDirectory Class Reference
+
+
+
+Inheritance diagram for SPULocalCacheDirectory:
+
+
+ +
+ + + + + + + + +

+Class Methods

+(NSString *) + cachePathForBundleIdentifier:
 
+(void) + removeOldItemsInDirectory:
 
+(NSString *_Nullable) + createUniqueDirectoryInDirectory:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_local_cache_directory.png new file mode 100644 index 0000000000000000000000000000000000000000..694e894f5ff60bec8404c12ae9e9f40c6a55b330 GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^bAdR3gBeJg^tJZ^DTx4|5ZC|z{{xvX-h3_XKQsZz z0^51uZLAr*{o=SELjZNS4CZEyMe{zu;= zgK3p1ZYR%#UR}|3tU=ynQ)-=|u{XDxr>Ca1XIEg^BoXDb>%VNy^&iPHKYi5bPTrLO zfu^$69^#+GCz*VlUAFqft;+5jd$Xp-EdHr+O~Cuo^~%e6osTlE&k-+<_qep3WBu-b zhvZg89?Sl_?yk`O!oO$BbOZk_o_o5l`9`eDMwPvfdS#cgAA6qDRa(C9zU;F%v+O2) zDXn`I|8ZvE|0Q?Z+5WD);d$xzl({NLHGmE(+-_`qn(F}jPR1pwTkpP|7OB7WZmizM zxV+t`A{#VP*##EAVMv-H>(H}_xg)TQ!SEEHg4<2TBO2BX5=fH!Q`6I?iSa0CLd9~* z&Wl6_{fNBi7yfCjZ#F+qd;O-qN~0S;wRg?kJkz^@`Ph1fw&YFKPZ?^~GN^IKc=`eE9)Q+X2#UANE9+IH(+#$J2rv{iF9KgzoM*2(nt-d_^> zhUR7oY1219_KCZ-)qh5M+5MWD7fvRocGv7qc7>N+H?FSOKDnTEwM5wM?{CYFR-VAOo ni_NL*AJl+edYlLJ-qiX&%Xsm(EauI?^uXZh>gTe~DWM4f7la=_ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status-members.html new file mode 100644 index 0000000..0ba9688 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUProbeInstallStatus Member List
+
+
+ +

This is the complete list of members for SPUProbeInstallStatus, including all inherited members.

+ + + +
probeInstallerInProgressForHostBundleIdentifier:completion: (defined in SPUProbeInstallStatus)SPUProbeInstallStatusstatic
probeInstallerUpdateItemForHostBundleIdentifier:completion: (defined in SPUProbeInstallStatus)SPUProbeInstallStatusstatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status.html new file mode 100644 index 0000000..07ecc0c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: SPUProbeInstallStatus Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUProbeInstallStatus Class Reference
+
+
+
+Inheritance diagram for SPUProbeInstallStatus:
+
+
+ +
+ + + + + + +

+Class Methods

+(void) + probeInstallerInProgressForHostBundleIdentifier:completion:
 
+(void) + probeInstallerUpdateItemForHostBundleIdentifier:completion:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probe_install_status.png new file mode 100644 index 0000000000000000000000000000000000000000..3a172ccb57c507020e6447065176868139b6f20e GIT binary patch literal 568 zcmeAS@N?(olHy`uVBq!ia0vp^9Y7qw!3-q7a-LNJQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;_mcZ6FE_@n znfS0;B|-W+XB|(a@X1GFgAFxwEv> zPW;x={@TkwHTvJ*p8Wi>ESnM2{5$j64gK%4{A613chmf}s+n_2=0>PpKE;vHZR@Ih z`{z{~hL@dk{hDD1+V9Zi)VS67HvqrZao>E zwk=a*@8*@y5r1v&XmjjgTq*%?{%A|9{5~7|jfxu6{1-oD!M<5+(j_ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver-members.html new file mode 100644 index 0000000..d5bb7ad --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUProbingUpdateDriver Member List
+
+
+ +

This is the complete list of members for SPUProbingUpdateDriver, including all inherited members.

+ + + + + + + + +
abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
initWithHost:updater:updaterDelegate: (defined in SPUProbingUpdateDriver)SPUProbingUpdateDriver
resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver.html new file mode 100644 index 0000000..9e35d28 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: SPUProbingUpdateDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUProbingUpdateDriver Class Reference
+
+
+
+Inheritance diagram for SPUProbingUpdateDriver:
+
+
+ + +<SPUUpdateDriver> + +
+ + + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:updater:updaterDelegate:
 
- Instance Methods inherited from <SPUUpdateDriver>
+(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
 
+(void) - resumeInstallingUpdateWithCompletion:
 
+(void) - resumeUpdate:completion:
 
+(void) - abortUpdate
 
+(void) - abortUpdateWithError:
 
+ + + + +

+Additional Inherited Members

- Properties inherited from <SPUUpdateDriver>
+BOOL showingUpdate
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_probing_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..ab77c4697d9aaa45031260e1b27d8bc4bc58183a GIT binary patch literal 1321 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoJ2;qudc|yWIbKi;s25;LCYDw_)l7*$JsdPi2{q)q-FsPPd=vwDwaRu z8Y@r!t$086=OUg{dHl2A{hYloBB9jOBAb1Zi89MJv#!;<%6fL+Ui)g}u_u2+m_sL- zeV)tozl7&tm~e&2jIClj&%VrUzpqg+YtPmnXO#*ZA53`sUh|J#W2i%!@yYwHjXT$G ziG8Zu8ZX-znQ+-hOsU}7w0b+H<5D+xX6eb8226@GDC?WEZ1Ta$dVluqT`#8L`C4XE zCdU*Nc6*%WEnN&~ug1CwSlVn;PJc|T?0tX{mmQ4wo&+tbgyn!J>UQr;y{(80q z%MD)+mK*2K#sgX294rNbzZifz7}ymB4mbk20!)n5e_qdt*rxv{Vw&CTx{h6B&{O+HA z`To!RJRAS{F;Y`gKUW%WzWzoyB9`~utwxozKb9QWxuKl(-N$FW2Oh0jC;Rwa+3Kn_ zhL!eL9i}chyGOMkG^KCD?Tsw2z64Bre(}C==_Z!6xYV?5E&d6eM^_$Lv-L!-|D-Q` z(Ja&M#EQ>2{&+>4ublR=XP*zh32v{>e()fLW5>?**Y2dV@ZH}U#hmUG#-e8z|IR*e z$L`K28gs54+IiqkxShs^pUVy&@otPPKKDRs(%N;3SJgHD`7HE@MB`Fj?@Qd<+!B=E zEInY>nr^y5@WzxIhm|*k?XDF6$8Y*!=>cBT0t=fs-&Jd7-t76yl)ZfI(hXnkJk^WY z-K&zDmMyO5X=!%4$o8Cl$wQmayz9r)nU3q_quh#c=fats)>7uQG+;WN zIkWjZhfUh~_?D4ybAyt!Wx6tt+JT_8Lo$g9>!uwrM7UM*9BOnAe+mp@gV6%N#` zyDlv82Exo+e{KK4dGSUpOglQ%m>wvwFj;UkGVnPmG&BovVB_wHTYvo@;}6NY*V&AG zY6O*|8TP}qQFG}PO@_ah-)Fa>CdN5F37OSf|Niy8&*%MiLyUb*LhNRZM5C;2HS1o+ zFtI24pNrm?v-&`9nV&|1>yuuY{>q4^Ej{m!r=2Y^)0g6Zy8P9=)Vm)Nel9g$_JOlJ^N6)nd1xR znfil2(rq|&Ja7Lgf1an*&XqHN-qizc5B98J_;OyZF}YXz>7GdD*_$rJ%{6IF|M|Hh zRxLfYV#V*|O?su^7~5neY*F^`@->Hsy*}S8GfvA3-Dt_;V5yiqYqFxi0&%nuJ*NcB gFTYqGB>ZDs+j6UC&CiXDz;cbj)78&qol`;+00ONv?*IS* literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver-members.html new file mode 100644 index 0000000..2ca808e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver-members.html @@ -0,0 +1,88 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUReleaseNotesDriver Member List
+
+
+ +

This is the complete list of members for SPUReleaseNotesDriver, including all inherited members.

+ + + + + + + + + +
completionHandler (defined in SPUReleaseNotesDriver)SPUReleaseNotesDriver
downloadDriver (defined in SPUReleaseNotesDriver)SPUReleaseNotesDriver
downloadDriverDidDownloadData: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidDownloadUpdate: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidFailToDownloadFileWithError: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveDataOfLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverDidReceiveExpectedContentLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
downloadDriverWillBeginDownload (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver.html new file mode 100644 index 0000000..c23aeb1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver.html @@ -0,0 +1,124 @@ + + + + + + + +Sparkle: SPUReleaseNotesDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUReleaseNotesDriver Class Reference
+
+
+
+Inheritance diagram for SPUReleaseNotesDriver:
+
+
+ + +<SPUDownloadDriverDelegate> + +
+ + + + + + +

+Properties

+SPUDownloadDriverdownloadDriver
 
+void(^ completionHandler )(SPUDownloadData *_Nullable, NSError *_Nullable)
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <SPUDownloadDriverDelegate>
+(void) - downloadDriverDidFailToDownloadFileWithError:
 
+(void) - downloadDriverWillBeginDownload
 
+(void) - downloadDriverDidDownloadUpdate:
 
+(void) - downloadDriverDidDownloadData:
 
+(void) - downloadDriverDidReceiveExpectedContentLength:
 
+(void) - downloadDriverDidReceiveDataOfLength:
 
+
The documentation for this class was generated from the following file:
    +
  • Sparkle/SPUUIBasedUpdateDriver.m
  • +
+
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_release_notes_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..42f728bffcc75f055bf77557a50208b138badd27 GIT binary patch literal 1474 zcmeAS@N?(olHy`uVBq!ia0y~yVC(|2J2;qukok-ua~D7YB)~b{kzMfb$2z#l0$cGS%MzElVe(0 zP|n{NvZK1VXS0pnal3a=Rzyg$JT1lz&!IxT~;J*@IwEJ#ec-xbAb+OO1&YW4- z9WrBPs{@b)v^FgbXs_{R0hy&qbDn;j*>=6csB{@?*lU?BAC`3;{}uc>Xa4n9J7-4r zzuSAY_^;%&;{3Ij_twqmlKCq1ciZE4`yQl-s(z7P3sm4MYHwp6|2aSO$%^MMv-Ehj zZ<;tqyMIPcDsR8OdVC-%a8dN61j(P* z4rXedI{*55SKf}Q#He2FYrC{gIZJEZ(tI6$>i)MAn{3mL?Mc%K?V0)~M)dTqn|D{l z1si(Z37Qz3wQSe9Sh=-(%T7hM&cAgSmL`C9pG*tevhaTJ#dm-A@@9n}&H0!1E;WCz z+wbd^L9Xk#RDW%)_~W?tM(D&dIn8&YF529gpH;l>e}uNzlj4W-teiJpnPjIq`)Yal zck>skX4G7fGPKvXK73_e=oD*bw|$wE&OEH)w-0lYajk^I&}9hi{2K;nKR!aV$TDp z5ty~k=&&?*O$pj%U@W@*_S>>V2EV6#9|U9mO$R0`mUrL%3k!e7D*+Ru#J>OSJ9hlh zpUBmqup)<Fo(6T`Mzb;zx{$Q$g>BFp9>DIOr&c|~d zuh`xf*_WsOJ2zv$t1IVUx8Jk6A=;WiOs(Zt&c7H=5ZxCr^?*(%HkvYjKlx&G05&)k@NmqS7^cWRbh

-eatl#V}K21%n&R!h#B`afg_Ubh+ zmS2cD>V0rpSNzqkC^oZf*PjvdJ&%TH-m*;!G?shr`~Id)`GT5D)1C&+`P^{RZA(ZX y8)MF=(5*}gdT3rn&ggbtu3nn45)GGsvcFu#AL1sqJqK9eGI+ZBxvX + + + + + + +Sparkle: Member List + + + + + + + + + +

+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUScheduledUpdateDriver Member List
+
+
+ +

This is the complete list of members for SPUScheduledUpdateDriver, including all inherited members.

+ + + + + + + + +
abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate: (defined in SPUScheduledUpdateDriver)SPUScheduledUpdateDriver
resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_scheduled_update_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_scheduled_update_driver.html new file mode 100644 index 0000000..66c2f3a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_scheduled_update_driver.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: SPUScheduledUpdateDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUScheduledUpdateDriver Class Reference
+
+
+
+Inheritance diagram for SPUScheduledUpdateDriver:
+
+
+ + +<SPUUpdateDriver> + +
+ + + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate:
 
- Instance Methods inherited from <SPUUpdateDriver>
+(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
 
+(void) - resumeInstallingUpdateWithCompletion:
 
+(void) - resumeUpdate:completion:
 
+(void) - abortUpdate
 
+(void) - abortUpdateWithError:
 
+ + + + +

+Additional Inherited Members

- Properties inherited from <SPUUpdateDriver>
+BOOL showingUpdate
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_scheduled_update_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_scheduled_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..3cfac470955cf800b73ddac6ceae64e85b8ef182 GIT binary patch literal 1377 zcmeAS@N?(olHy`uVBq!ia0y~yU`znAJ2;quksSopSfAhr*FQzPuWviCt^~aSEk-=Dersp{7ld5E%CCTMN{=`ZGr9wp4C(Do9bKtQ#<(j(S@$}YR%;==S`oO9=)%;gLBrMwXY7Z zdyskmb@|@uBK4_k{!P2j=BYRDep1HfeaZRRni#9i`&C~_{n_+DRa))GOFlQ$r`=du|$CRLB3fBG_x{4 zDYUs|;2^Ppzay=%Fd)}7tpS8-K>p%27h?0KCJ@1$I`rfe1 zt1jl&^x2jC$>W_j_blh`uQzA^l|A_R|GwyE^F!}A?#+!qZy)gIo0@s*$6aFitp306 z>2tmN_c`a)!Ur!+eMA>6Em>czr@C6`lgGz&mh#zm{n*M+>U!#b%wa2clIMEoePkJ1 zdDCv8`ST90y>-rS`l3JUvp+Z=v|n-X^TVnwt3C+|npeaZe7(7C=PgUsZ<`peiEq5c ztNJo?o?wh_`TZhk{f}lj^Xqu8Ue5jHR$#kVM_RCO@^(ma_;I;OS?S#eV`o9Z`~*bQO+04%%Wbjohja_x`|C~ocPG)B0J zBh~1$J1=iMmwDFAZtLq8Ch3+}qOV*He|@%lZ5jj5u^^=~*7c9YRl84@F6dqN=&$Sc zwDs?{RwkYn?%99x?ezy@@oDjzH$u1l;!*AAMbvyQS^b%d+m?2bCN52RAbc{kWj3Bay%l m@&CX7X!#PFwG}%5GwkpFc$rBqbp^0IWbkzLb6Mw<&;$SiSYNIH literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update-members.html new file mode 100644 index 0000000..e977321 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update-members.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUSkippedUpdate Member List
+
+
+ +

This is the complete list of members for SPUSkippedUpdate, including all inherited members.

+ + + + + + + +
clearSkippedUpdateForHost: (defined in SPUSkippedUpdate)SPUSkippedUpdatestatic
initWithMinorVersion:majorVersion: (defined in SPUSkippedUpdate)SPUSkippedUpdate
majorVersion (defined in SPUSkippedUpdate)SPUSkippedUpdate
minorVersion (defined in SPUSkippedUpdate)SPUSkippedUpdate
skippedUpdateForHost: (defined in SPUSkippedUpdate)SPUSkippedUpdatestatic
skipUpdate:host: (defined in SPUSkippedUpdate)SPUSkippedUpdatestatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update.html new file mode 100644 index 0000000..35928b2 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update.html @@ -0,0 +1,120 @@ + + + + + + + +Sparkle: SPUSkippedUpdate Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUSkippedUpdate Class Reference
+
+
+
+Inheritance diagram for SPUSkippedUpdate:
+
+
+ +
+ + + + +

+Instance Methods

+(instancetype) - initWithMinorVersion:majorVersion:
 
+ + + + + + + +

+Class Methods

+(nullable SPUSkippedUpdate *) + skippedUpdateForHost:
 
+(void) + clearSkippedUpdateForHost:
 
+(void) + skipUpdate:host:
 
+ + + + + +

+Properties

+NSString * minorVersion
 
+NSString * majorVersion
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_skipped_update.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5d4d2b4bd7a952b2c7d52d5624fba4257a2186 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^6+j%o!3-pyx;pL#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;_*kh4m+tgX*uW5_P#q>{^!wUIoa9Y8km(g zo$6DOEfKabICN#o^UuK#+NE-QHF{J`zbJ1wZ_B>Bpe7(y*)z9vUf~^WwTdTGj@&+A z_xjJ8{)Fe-zc+AC4mH}hVW*1dt9^ckb1z+eZ}<3{?Ydo7I|3$2?Ru_%oxA!^?g#DY zHUIr4nYjEH%1JYGWYB-jXyCm0K>u--PdXnaTesWr{^5_^dw?N%%K-*w9Qdvg&=))j zd&DFXI_wzsSf8C;^Z$YT&)=z2&gT~f8dkj$eX!x#Cf1Bs<`2RcHtzmk!}={vyCeIQ z>(3RlC(A7l3O|^6N4zF}{w$GTKEK3i#X)U5cfLxOIlj4L-K@_Ufg7ZLMBLhRj(0=% zXDONIEo){yTQ#rL`gs0<)Rp?NvF4GLJGRd)ER4TgZTD{O?XuEYHAP#cSM8Kq;NJe4 qy&&lLJZ>HX7Z5f+n3g8|h1KG^hlrwp-+N%hF?hQAxvX + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUStandardUpdaterController Member List
+
+ + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_updater_controller.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_updater_controller.html new file mode 100644 index 0000000..2aaab35 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_updater_controller.html @@ -0,0 +1,347 @@ + + + + + + + +Sparkle: SPUStandardUpdaterController Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUStandardUpdaterController Class Reference
+
+
+ +

A controller class that instantiates a SPUUpdater and allows binding UI to it. + More...

+ +

#import <SPUStandardUpdaterController.h>

+
+Inheritance diagram for SPUStandardUpdaterController:
+
+
+ +
+ + + + + + + + + + + + + + + + + +

+Instance Methods

(instancetype) - NS_UNAVAILABLE
 Create a new SPUStandardUpdaterController from a nib. More...
 
(instancetype) - initWithUpdaterDelegate:userDriverDelegate:
 Create a new SPUStandardUpdaterController programmatically. More...
 
(instancetype) - initWithStartingUpdater:updaterDelegate:userDriverDelegate:
 Create a new SPUStandardUpdaterController programmatically allowing you to specify whether or not to start the updater immediately. More...
 
(void) - startUpdater
 Starts the updater if it has not already been started. More...
 
(IBAction) - checkForUpdates:
 Explicitly checks for updates and displays a progress dialog while doing so. More...
 
+ + + + + + + + + + + + + +

+Properties

IBOutlet id< SPUUpdaterDelegateupdaterDelegate
 Interface builder outlet for the updater's delegate. More...
 
IBOutlet id< SPUStandardUserDriverDelegateuserDriverDelegate
 Interface builder outlet for the user driver's delegate. More...
 
SPUUpdaterupdater
 Accessible property for the updater. More...
 
+SPUStandardUserDriveruserDriver
 Accessible property for the updater's user driver.
 
+

Detailed Description

+

A controller class that instantiates a SPUUpdater and allows binding UI to it.

+

This class can be instantiated in a nib or created programatically using initWithUpdaterDelegate:userDriverDelegate: or initWithStartingUpdater:updaterDelegate:userDriverDelegate:.

+

The controller's updater targets the application's main bundle and uses Sparkle's standard user interface. Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programatically too.

+

The controller creates an SPUUpdater instance and allows hooking up the check for updates action and handling menu item validation. It also allows hooking up the updater's and user driver's delegates.

+

If you need more control over what bundle you want to update or you want to provide a custom user interface (via SPUUserDriver), please use SPUUpdater directly instead.

+

Method Documentation

+ +

◆ checkForUpdates:

+ +
+
+ + + + + + + + +
- (IBAction) checkForUpdates: (nullable id) sender
+
+ +

Explicitly checks for updates and displays a progress dialog while doing so.

+

This method is meant for a main menu item. Connect any NSMenuItem to this action in Interface Builder or programmatically, and Sparkle will check for updates and report back its findings verbosely when it is invoked.

+

When the target/action of the menu item is set to this controller and this method, this controller also handles enabling/disabling the menu item by checking -[SPUUpdater canCheckForUpdates]

+

This action checks updates by invoking -[SPUUpdater checkForUpdates]

+ +
+
+ +

◆ initWithStartingUpdater:updaterDelegate:userDriverDelegate:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
- (instancetype) initWithStartingUpdater: (BOOL) startUpdater
updaterDelegate:(nullable id< SPUUpdaterDelegate >) updaterDelegate
userDriverDelegate:(nullable id< SPUStandardUserDriverDelegate >) userDriverDelegate 
+
+ +

Create a new SPUStandardUpdaterController programmatically allowing you to specify whether or not to start the updater immediately.

+

You can specify whether or not you want to start the updater immediately. If you do not start the updater, you must invoke -[SPUStandardUpdaterController startUpdater] at a later time to start it.

+ +
+
+ +

◆ initWithUpdaterDelegate:userDriverDelegate:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (instancetype) initWithUpdaterDelegate: (nullable id< SPUUpdaterDelegate >) updaterDelegate
userDriverDelegate:(nullable id< SPUStandardUserDriverDelegate >) userDriverDelegate 
+
+ +

Create a new SPUStandardUpdaterController programmatically.

+

The updater is started automatically. See -[SPUStandardUpdaterController startUpdater] for more information.

+ +
+
+ +

◆ NS_UNAVAILABLE

+ +
+
+ + + + + + + +
- (instancetype) NS_UNAVAILABLE
+
+ +

Create a new SPUStandardUpdaterController from a nib.

+

You cannot call this initializer directly. You must instantiate a SPUStandardUpdaterController inside of a nib (typically the MainMenu nib) to use it.

+

To create a SPUStandardUpdaterController programatically, use initWithUpdaterDelegate:userDriverDelegate: or initWithStartingUpdater:updaterDelegate:userDriverDelegate: instead.

+ +
+
+ +

◆ startUpdater

+ +
+
+ + + + + + + +
- (void) startUpdater
+
+ +

Starts the updater if it has not already been started.

+

You should only call this method yourself if you opted out of starting the updater on initialization. Hence, do not call this yourself if you are instantiating this controller from a nib.

+

This invokes -[SPUUpdater startUpdater:]. If the application is misconfigured with Sparkle, an error is logged and an alert is shown to the user (after a few seconds) to contact the developer. If you want more control over this behavior, you can create your own SPUUpdater instead.

+ +
+
+

Property Documentation

+ +

◆ updater

+ +
+
+ + + + + +
+ + + + +
- (SPUUpdater*) updater
+
+readnonatomicassign
+
+ +

Accessible property for the updater.

+

Some properties on the updater can be binded via KVO

+

When instantiated from a nib, don't perform update checks before the application has finished launching in a MainMenu nib (i.e applicationDidFinishLaunching:) or before the corresponding window/view controller has been loaded (i.e, windowDidLoad or viewDidLoad). The updater is not guaranteed to be started yet before these points.

+ +
+
+ +

◆ updaterDelegate

+ +
+
+ + + + + +
+ + + + +
- (IBOutlet id<SPUUpdaterDelegate>) updaterDelegate
+
+readwritenonatomicweak
+
+ +

Interface builder outlet for the updater's delegate.

+

This property should only be set using Interface Builder by creating a connection using the outlet.

+ +
+
+ +

◆ userDriverDelegate

+ +
+
+ + + + + +
+ + + + +
- (IBOutlet id<SPUStandardUserDriverDelegate>) userDriverDelegate
+
+readwritenonatomicweak
+
+ +

Interface builder outlet for the user driver's delegate.

+

This property should only be set using Interface Builder by creating a connection using the outlet.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_updater_controller.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_updater_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1bdf934c7fb11f1d3d85106899fe06d8e93e94 GIT binary patch literal 662 zcmeAS@N?(olHy`uVBq!ia0vp^yMZ`>gBeJco&6#Sq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0R6SiBLn;{G&b__vwE_?8asAl;|BvtH zozAfEYUb=8A}52w^jKyel=$2=^X8&MDw&?FyH$Q_-%vdnzkGwbc>nL@@5}rDOxi2Y zW~rR?e1rIzuG{-PE-kp9s6XTAb-A~{*BiBN66$x4l=J)*@qE*B(Ttmydp_;?)vi*z zc=M;dkFFT>udw~1zw!Bv?UnYMmcRYI`OV#VbC3LWeK>K6d1+kl8ppS<&oKS`w`ZUK zYoD7}CVkmB=iF6qHqJ87s-@Y-3c7Zy%w3l-U8Nr6sMqK6(zY#QSa+E>AyD^B-R`yA z`wf1})<*uAdUNqPhClqQ)(!icWDmq2id#3g_s%|j?wj)cTlouitMz_gmSy$2!rYE?^qcq;s2 zo$w9yx%SERX6?FGKff7x+E32qyZvqAtg_3=$B&&)yX3Q~a9)*af91vF3)|+*++_at zsCU)f`&rwUz05qm_@vzCbI&ra-0H0^o%ep}-sru@gcJ7OdMR(UjVHJ0%iMms_G8I& zGnpV^ir-NF^WM|f z`=9={ICtFA_}a&y^6b0*ziqDf?5hcRaO=ww1=G}&`@W@fA~}|oKKoVt^_8&o4aUBx nnX(VOV4=}}_|Tag&%cbdGDXaGCvLq0CL#t;S3j3^P6 + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUStandardUserDriver Member List
+
+ + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_user_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_user_driver.html new file mode 100644 index 0000000..acecca6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_user_driver.html @@ -0,0 +1,212 @@ + + + + + + + +Sparkle: SPUStandardUserDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUStandardUserDriver Class Reference
+
+
+ +

Sparkle's standard built-in user driver for updater interactions. + More...

+ +

#import <SPUStandardUserDriver.h>

+
+Inheritance diagram for SPUStandardUserDriver:
+
+
+ + +<SPUUserDriver> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Instance Methods

(instancetype) - initWithHostBundle:delegate:
 Initializes a Sparkle's standard user driver for user update interactions. More...
 
+(instancetype) - NS_UNAVAILABLE
 Use initWithHostBundle:delegate: instead.
 
- Instance Methods inherited from <SPUUserDriver>
(void) - showUpdatePermissionRequest:reply:
 Show an updater permission request to the user. More...
 
(void) - showUserInitiatedUpdateCheckWithCancellation:
 Show the user initating an update check. More...
 
(void) - showUpdateFoundWithAppcastItem:state:reply:
 Show the user a new update is found. More...
 
(void) - showUpdateReleaseNotesWithDownloadData:
 Show the user the release notes for the new update. More...
 
(void) - showUpdateReleaseNotesFailedToDownloadWithError:
 Show the user that the new update's release notes could not be downloaded. More...
 
(void) - showUpdateNotFoundWithError:acknowledgement:
 Show the user a new update was not found. More...
 
(void) - showUpdaterError:acknowledgement:
 Show the user an update error occurred. More...
 
(void) - showDownloadInitiatedWithCancellation:
 Show the user that downloading the new update initiated. More...
 
(void) - showDownloadDidReceiveExpectedContentLength:
 Show the user the content length of the new update that will be downloaded. More...
 
(void) - showDownloadDidReceiveDataOfLength:
 Show the user that the update download received more data. More...
 
(void) - showDownloadDidStartExtractingUpdate
 Show the user that the update finished downloading and started extracting. More...
 
(void) - showExtractionReceivedProgress:
 Show the user that the update is extracting with progress. More...
 
(void) - showInstallingUpdate
 Show the user that the update is installing. More...
 
(void) - showReadyToInstallAndRelaunch:
 Show the user that the update is ready to install & relaunch. More...
 
(void) - showSendingTerminationSignal
 Show or dismiss progress while a termination signal is being sent to the application from Sparkle's installer. More...
 
(void) - showUpdateInstalledAndRelaunched:acknowledgement:
 Show the user that the update installation finished. More...
 
(void) - showUpdateInFocus
 Show the user the current presented update or its progress in utmost focus. More...
 
(void) - dismissUpdateInstallation
 Dismiss the current update installation. More...
 
+(void) - showUpdateNotFoundWithAcknowledgement:
 
+(void) - showUpdateInstallationDidFinishWithAcknowledgement:
 
+("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.") - __deprecated_msg
 
+

Detailed Description

+

Sparkle's standard built-in user driver for updater interactions.

+

Method Documentation

+ +

◆ initWithHostBundle:delegate:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (instancetype) initWithHostBundle: (NSBundle *) hostBundle
delegate:(nullable id< SPUStandardUserDriverDelegate >) delegate 
+
+ +

Initializes a Sparkle's standard user driver for user update interactions.

+
Parameters
+ + + +
hostBundleThe target bundle of the host that is being updated.
delegateThe delegate to this user driver. Pass nil if you don't want to provide one.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_user_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_standard_user_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..dec33ffd7521f70ff56faf2462dd43d266c26749 GIT binary patch literal 1296 zcmeAS@N?(olHy`uVBq!ia0y~yU^D@;J2;quWSqitaUdlT;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z%t*{#WAFU@$KA;n+|CRu+H9i>hu5l zJy}jnhP&jxzFXuM8_ndH_kzcGJ%e(vm*!zc10&Z-Y|2YLCwY2JR+&6S%~MU&caqOO zzgs5%|J3Rg2dD3wF@0Cm#X9}_>T7>R+I$tCv_*00)K|;@74)vZy!O?)WA}EhWYqNR z{}_5nk89e3Rqe%7%~sB7E$e;$wtLA|_RVUWeV4rTh(5P|;oIybSAG5MW^LZ7ox6&+ zHnk$=wz=Cam9^R&))TjBF1MG=%=UY&x9inROW#Rl5u5*)u*~k3zIxf@Tkj>6mv-yd z&$y&=^2zrldlL`J_n3HA^}^g5G)raX5))4&$@nPEr9Es1@(Wlz806HKGFHg+XYw9U z0y5^zS!&AAK7}n|@+k(NAgKmVFJ=SJOa?Vg-UBL28D}gpVVDe*oOFp2$$Oe>rv$Yn z*X}v|ut0*ZONG}>TURN`ASlYE#nY?118AS1pqi$x(xD^M&Cc4_&p&M zx!!y(SZP`M}Toou*&28qA87l=40|ZLxe7l{xuTWX64u zONVVVa_y%77b~1QebvsFXU%t8mhZKldRdI$J0Vy0>$ZPxw>E9uZMn90_0)CSr(Rnx zC%Ez9PA3D`=-IcoU0QbQL;Iy&zPd$uvggBI&O4_4wtVYe1#rBTEuZ6c$+pMiwQ|;W zft+{urd&%s`Q1J0Y~1ZvKkc7vsh_;CYd5(S7{oLbq*Z z&mJ!|VVJGMLO9x=RM^P5vpu-|v(uMp52-1`UImm6m=jXmY7U?#s-F^>#TQo{eQgxO zp7%C6{e#JtKOzejukYD@wWe#!uFJc1FVyB_@=N{H$lU%UHYw$wRj<#*qF?ir3ujf$ zyx_U|^EA%ONuQNUUzJTfZ#8fCrCA><+r?|&UNu@PxoAV(Eza35@1FWvUmK)&<9uf6 z9_!k(ZjF~Nv%h@y?CX`VTk2uw)yhj>E`OJ8wdD4Th$VSTV)wV&_J-%b3g$jomv_6j zk0~dkc}x6FM@yDLO+S%q7Y%3o8 zIx{-^bdcor + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUIBasedUpdateDriver Member List
+
+
+ +

This is the complete list of members for SPUUIBasedUpdateDriver, including all inherited members.

+ + + + + + + + +
abortUpdateWithError: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
initWithHost:applicationBundle:sparkleBundle:updater:userDriver:userInitiated:updaterDelegate:delegate: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
preflightForUpdatePermissionPreventingInstallerInteraction:reply: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
prepareCheckForUpdatesWithCompletion: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
resumeInstallingUpdateWithCompletion: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
resumeUpdate:completion: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_i_based_update_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_i_based_update_driver.html new file mode 100644 index 0000000..ae4876d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_i_based_update_driver.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: SPUUIBasedUpdateDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUIBasedUpdateDriver Class Reference
+
+
+
+Inheritance diagram for SPUUIBasedUpdateDriver:
+
+
+ +
+ + + + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:userDriver:userInitiated:updaterDelegate:delegate:
 
+(void) - prepareCheckForUpdatesWithCompletion:
 
+(void) - preflightForUpdatePermissionPreventingInstallerInteraction:reply:
 
+(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground:
 
+(void) - resumeInstallingUpdateWithCompletion:
 
+(void) - resumeUpdate:completion:
 
+(void) - abortUpdateWithError:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_i_based_update_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_i_based_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..807c54582b6171ee123cc4a99983157a2e8c24de GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^bAdR3gBeJg^tJZ^DTx4|5ZC|z{{xvX-h3_XKQsZz z0^*PbqpAr*{o=lV`sZNS48J-g=n{*Tpu*yi?!H(+Dlypc&We zkD3PlUvk&g@%^c}Ds$D}sGM}a;W?>)`P`W|*D%DKU`~iywyoMG?b_^H?=;Of-n&y4 zxS1jD5Z?j!8;n0VtQq7J*&issVW?@5ZRp>?{6Vmc!465X{`5JJ7aKe|Au1Q&`a8u# z>*0Ly?8`BqwHs__U95foZC&>ltF(=`H{QG<+y3j=JKrU>yOU1~8UOuo=UIDR$?e^J zD}AGK_G*8=bt2W}?oI!-)Y@lR{#WSlrrTHf-jp4` z9(wDozVQ8bIX_!Hf8JQvlj-(d?!HS@UQAD|$E0JE~&EO{=Ql&Dr7q17+W4oxS%fzA*3t(0hfGWe>1Iy}GeR e`Rp0Br}8^b#amf@(|im}3JjjEelF{r5}E*|FCv-% literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request-members.html new file mode 100644 index 0000000..7f1fee6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUURLRequest Member List
+
+
+ +

This is the complete list of members for SPUURLRequest, including all inherited members.

+ + + +
request (defined in SPUURLRequest)SPUURLRequest
URLRequestWithRequest: (defined in SPUURLRequest)SPUURLRequeststatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request.html new file mode 100644 index 0000000..a5b92c4 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request.html @@ -0,0 +1,104 @@ + + + + + + + +Sparkle: SPUURLRequest Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUURLRequest Class Reference
+
+
+
+Inheritance diagram for SPUURLRequest:
+
+
+ +
+ + + + +

+Class Methods

+(instancetype) + URLRequestWithRequest:
 
+ + + +

+Properties

+NSURLRequest * request
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_u_r_l_request.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0b20a78fca5a377cc8d9cabb3c7e1a885bd6ac GIT binary patch literal 752 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w0D*o9sGxhS8^8#DyPEJ>8&vIXP_F}%dQpalF)q3(Cn=To$Y@NT{chdQ*l0P4n zM{ibGW5##xecfNJNhkDmY$rb{=H0a5eR$Q9@B;aHyH`z2oF|a+;zqxM&tpLsX8Et( zSEQ9Hd?J2U-an>wEa1kovK|9=sV{lD9+#_cw3bR9@nfmuwy=L6T@~_5;l(~h_QYz- zGe3imJjk@)c7Ty3bLZChb31Pxe(Uu8EE|jE=6lWoQ7MdXrV4bfxayy(zyv)^M${ z6ue}8yI5($lZf4Em0b-g`&ZQW9k|+iUg?JU$tgM=($5}8I!wyXzUHRzQcqEUNl~Dw z;lP=kNis~vn?0Etn4=gHb}e&LWI0{L#umI-py}#w79J2^tKCU~1%Vh8;!khVQ5Rr{ zi3snPXW;V!hdeOwkr2a^*XjZ@W}X#dnByS)7-SWbqJ?==!0P0)`}ia5FWvqAT#bR} zsv%Q@@QTjGk)K}7o6TTw<*GoA>qCK-lnDF$|E2LYdrrCCXjWMBYhT3m2E}-WKc&x# zb}SbYS)C^kldXK@-o>^L97X5uf8OgbLF;wv>4&R%FXoCxUQqa(%d$`G$&?)lx*FfB zvc&&dp5CqQq}BP;r6cs4(N+eAvh3GWfWEQsWnkC_Ni`2bIL@3=<7D7_#jm?_(nPoU SzRkeo$>8bg=d#Wzp$Pzg^F)CF literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request-members.html new file mode 100644 index 0000000..92a601c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdatePermissionRequest Member List
+
+
+ +

This is the complete list of members for SPUUpdatePermissionRequest, including all inherited members.

+ + + +
initWithSystemProfile:SPUUpdatePermissionRequest
systemProfileSPUUpdatePermissionRequest
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request.html new file mode 100644 index 0000000..3a4f06c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request.html @@ -0,0 +1,139 @@ + + + + + + + +Sparkle: SPUUpdatePermissionRequest Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdatePermissionRequest Class Reference
+
+
+ +

This class represents information needed to make a permission request for checking updates. + More...

+ +

#import <SPUUpdatePermissionRequest.h>

+
+Inheritance diagram for SPUUpdatePermissionRequest:
+
+
+ +
+ + + + + +

+Instance Methods

(instancetype) - initWithSystemProfile:
 Initializes a new update permission request instance. More...
 
+ + + + +

+Properties

+NSArray< NSDictionary< NSString *, NSString * > * > * systemProfile
 A read-only property for the user's system profile.
 
+

Detailed Description

+

This class represents information needed to make a permission request for checking updates.

+

Method Documentation

+ +

◆ initWithSystemProfile:

+ +
+
+ + + + + + + + +
- (instancetype) initWithSystemProfile: (NSArray<NSDictionary<NSString *, NSString *> *> *) systemProfile
+
+ +

Initializes a new update permission request instance.

+
Parameters
+ + +
systemProfileThe system profile information.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_update_permission_request.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c9e801fac16a24019f1b7bfe7251c9e8ce95c9 GIT binary patch literal 992 zcmeAS@N?(olHy`uVBq!ia0y~yU@QW%12~w0r149>O+ZQ_z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-op z=ee$>$g}8a@zegF@%Q6be|+qI@8tA*cOE{DmJ8f>HuAIACGTy@@9q2Tj&h#rzMHl4 z{=_AX^^0rHWUh9aG|yP_=RxH;flqJd?F?A`_V>!9eWGD^r!PsCS@Ws#oL#i;)b|hH zUNA6ivQ?P*CxxAxR-YwY}#srq(G-MLRU@2%F`y|&BU`zQOU)%Oh3tHqD! zER&vPY(3@uq`F0)@*-!YypCh=v^sN9YyOitX`4%Y|MQ1dzO8xo?(K{CmrtGjcFV?j zdS)hAr&J%d ziZO=sDFZNG7{Z+_8?+b79GDuw_rOboy+CyeGgx}(-MsCsj2sQ$IMwm0!)=U@hvw3& z3=uO}KewY=b1HPo^560IYVtqt+%(s2A|EcwhlD$$`-x9e=H|9P?aotszVq-y#MXg_}dSU zewe;6E^UL6I`JWYA2(X_|>aFZIt_`f2#aT zk-}G%if@(s1g^yG+j;q@RQKD5&&sXiqMhF{{=86jYs;zM$CA<{pOzL0-jjbly`sVO z=FIy)4dd_WO<|tntHJ-2A$?=QKeT|3jH~q0)MY!M|4Bac_|4!GdvjQU*^$B1)z4*} HQ$iB}q^Iql literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater-members.html new file mode 100644 index 0000000..a2d4465 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater-members.html @@ -0,0 +1,101 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdater Member List
+
+ + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater.html new file mode 100644 index 0000000..fc30835 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater.html @@ -0,0 +1,645 @@ + + + + + + + +Sparkle: SPUUpdater Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdater Class Reference
+
+
+ +

The main API in Sparkle for controlling the update mechanism. + More...

+ +

#import <SPUUpdater.h>

+
+Inheritance diagram for SPUUpdater:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Instance Methods

(instancetype) - initWithHostBundle:applicationBundle:userDriver:delegate:
 Initializes a new SPUUpdater instance. More...
 
(instancetype) - NS_UNAVAILABLE
 Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standard adapter instead. More...
 
(BOOL) - startUpdater:
 Starts the updater. More...
 
(void) - checkForUpdates
 Checks for updates, and displays progress while doing so if needed. More...
 
(void) - checkForUpdatesInBackground
 Checks for updates, but does not display any UI unless an update is found. More...
 
(void) - checkForUpdateInformation
 Begins a "probing" check for updates which will not actually offer to update to that version. More...
 
(void) - setFeedURL:
 Set the URL of the appcast used to download update information. More...
 
(void) - resetUpdateCycle
 Appropriately schedules or cancels the update checking timer according to the preferences for time interval and automatic checks. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

BOOL canCheckForUpdates
 A property indicating whether or not updates can be checked by the user. More...
 
BOOL sessionInProgress
 A property indicating whether or not an update session is in progress. More...
 
BOOL automaticallyChecksForUpdates
 A property indicating whether or not to check for updates automatically. More...
 
NSTimeInterval updateCheckInterval
 A property indicating the current automatic update check interval. More...
 
BOOL automaticallyDownloadsUpdates
 A property indicating whether or not updates can be automatically downloaded in the background. More...
 
NSURL * feedURL
 The URL of the appcast used to download update information. More...
 
+NSBundle * hostBundle
 The host bundle that is being updated.
 
+NSBundle * sparkleBundle
 The bundle this class (SPUUpdater) is loaded into.
 
NSString * userAgentString
 The user agent used when checking for updates. More...
 
NSDictionary * httpHeaders
 The HTTP headers used when checking for updates. More...
 
BOOL sendsSystemProfile
 A property indicating whether or not the user's system profile information is sent when checking for updates. More...
 
NSDate * lastUpdateCheckDate
 Returns the date of last update check. More...
 
+NSArray< NSDictionary< NSString *, NSString * > * > * systemProfileArray
 The system profile information that is sent when checking for updates.
 
+

Detailed Description

+

The main API in Sparkle for controlling the update mechanism.

+

This class is used to configure the update parameters as well as manually and automatically schedule and control checks for updates.

+

Method Documentation

+ +

◆ checkForUpdateInformation

+ +
+
+ + + + + + + +
- (void) checkForUpdateInformation
+
+ +

Begins a "probing" check for updates which will not actually offer to update to that version.

+

However, the delegate methods updater:didFindValidUpdate: (SPUUpdaterDelegate-p) and updaterDidNotFindUpdate: (SPUUpdaterDelegate-p) will be called, so you can use that information in your UI.

+

Updates that have been skipped by the user will not be found.

+ +
+
+ +

◆ checkForUpdates

+ +
+
+ + + + + + + +
- (void) checkForUpdates
+
+ +

Checks for updates, and displays progress while doing so if needed.

+

This is meant for users initiating a new update check or checking the current update progress.

+

If an update hasn't started, the user may be shown that a new check for updates is occurring. If an update has already been downloaded or begun installing, the user may be presented to install that update. If the user is already being presented with an update, that update will be shown to the user in active focus.

+

This will find updates that the user has previously opted into skipping.

+

See canCheckForUpdates property which can determine if this method may be invoked.

+ +
+
+ +

◆ checkForUpdatesInBackground

+ +
+
+ + + + + + + +
- (void) checkForUpdatesInBackground
+
+ +

Checks for updates, but does not display any UI unless an update is found.

+

This is meant for programmatically initating a check for updates. That is, it will display no UI unless it finds an update, in which case it proceeds as usual. This will not find updates that the user has opted into skipping.

+

Note if there is no resumable update found, and automated updating is turned on, the update will be downloaded in the background without disrupting the user.

+ +
+
+ +

◆ initWithHostBundle:applicationBundle:userDriver:delegate:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- (instancetype) initWithHostBundle: (NSBundle *) hostBundle
applicationBundle:(NSBundle *) applicationBundle
userDriver:(id< SPUUserDriver >) userDriver
delegate:(id< SPUUpdaterDelegate > _Nullable) delegate 
+
+ +

Initializes a new SPUUpdater instance.

+

This does not start the updater. To start it, see -[SPUUpdater startUpdater:]

+

Note that this is a normal initializer and doesn't implement the singleton pattern (i.e, instances aren't cached, so no surprises) This also means that updater instances can be deallocated, and that they will be torn down properly.

+

Related: See SPUStandardUpdaterController which wraps a SPUUpdater instance and is suitable for instantiating in nib files

+
Parameters
+ + + + + +
hostBundleThe bundle that should be targetted for updating. This must not be nil.
applicationBundleThe application bundle that should be waited for termination and relaunched (unless overridden). Usually this can be the same as hostBundle. This may differ when updating a plug-in or other non-application bundle.
userDriverThe user driver that Sparkle uses for user update interaction
delegateThe delegate for SPUUpdater. This may be nil.
+
+
+ +
+
+ +

◆ NS_UNAVAILABLE

+ +
+
+ + + + + + + +
- (instancetype) NS_UNAVAILABLE
+
+ +

Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standard adapter instead.

+

If you want to drop an updater into a nib, use SPUStandardUpdaterController.

+ +
+
+ +

◆ resetUpdateCycle

+ +
+
+ + + + + + + +
- (void) resetUpdateCycle
+
+ +

Appropriately schedules or cancels the update checking timer according to the preferences for time interval and automatic checks.

+

This call does not change the date of the next check, but only the internal timer.

+ +
+
+ +

◆ setFeedURL:

+ +
+
+ + + + + + + + +
- (void) setFeedURL: (NSURL *_Nullable) feedURL
+
+ +

Set the URL of the appcast used to download update information.

+

Using this method is discouraged.

+

Setting this property will persist in the host bundle's user defaults. To avoid this, you should consider instead implementing -[SPUUpdaterDelegate feedURLStringForUpdater:]

+

Passing nil will remove any feed URL that has been set in the host bundle's user defaults.

+

For beta updates, you may consider migrating to -[SPUUpdaterDelegate allowedChannelsForUpdater:] in the future.

+

This method must be called on the main thread; calls from background threads will have no effect.

+ +
+
+ +

◆ startUpdater:

+ +
+
+ + + + + + + + +
- (BOOL) startUpdater: (NSError *__autoreleasing *) error
+
+ +

Starts the updater.

+

This method checks if Sparkle is configured properly. A valid feed URL should be set before this method is invoked. Other properties of this SPUUpdater instance can be set before this method is invoked as well, such as automatic update checks.

+

If the configuration is valid, an update cycle is started in the next main runloop cycle. During this cycle, a permission prompt may be brought up (if needed) for checking if the user wants automatic update checking. Otherwise if automatic update checks are enabled, a scheduled update alert may be brought up if enough time has elapsed since the last check.

+

After starting the updater and before the next runloop cycle, one of -checkForUpdates, -checkForUpdatesInBackground, or -checkForUpdateInformation can be invoked. This may be useful if you want to check for updates immediately or without showing a permission prompt.

+

If the updater cannot be started (i.e, due to a configuration issue in the application), you may want to fall back appropriately. For example, the standard updater controller (SPUStandardUpdaterController) alerts the user that the app is misconfigured and to contact the developer.

+

This must be called on the main thread.

+
Parameters
+ + +
errorThe error that is populated if this method fails. Pass NULL if not interested in the error information.
+
+
+
Returns
YES if the updater started otherwise NO with a populated error
+ +
+
+

Property Documentation

+ +

◆ automaticallyChecksForUpdates

+ +
+
+ + + + + +
+ + + + +
- (BOOL) automaticallyChecksForUpdates
+
+readwritenonatomicassign
+
+ +

A property indicating whether or not to check for updates automatically.

+

Setting this property will persist in the host bundle's user defaults. The update schedule cycle will be reset in a short delay after the property's new value is set. This is to allow reverting this property without kicking off a schedule change immediately

+ +
+
+ +

◆ automaticallyDownloadsUpdates

+ +
+
+ + + + + +
+ + + + +
- (BOOL) automaticallyDownloadsUpdates
+
+readwritenonatomicassign
+
+ +

A property indicating whether or not updates can be automatically downloaded in the background.

+

Note that the developer can disallow automatic downloading of updates from being enabled. In this case, -automaticallyDownloadsUpdates will return NO regardless of how this property is set.

+

Setting this property will persist in the host bundle's user defaults.

+ +
+
+ +

◆ canCheckForUpdates

+ +
+
+ + + + + +
+ + + + +
- (BOOL) canCheckForUpdates
+
+readnonatomicassign
+
+ +

A property indicating whether or not updates can be checked by the user.

+

An update check can be made by the user when an update session isn't in progress, or when an update or its progress is being shown to the user.

+

This property is suitable to use for menu item validation for seeing if -checkForUpdates can be invoked.

+

Note this property does not reflect whether or not an update session is in progress. Please see sessionInProgress property instead.

+ +
+
+ +

◆ feedURL

+ +
+
+ + + + + +
+ + + + +
- (NSURL*) feedURL
+
+readnonatomicassign
+
+ +

The URL of the appcast used to download update information.

+

If the updater's delegate implements -[SPUUpdaterDelegate feedURLStringForUpdater:], this will return that feed URL. Otherwise if the feed URL has been set before, the feed URL returned will be retrieved from the host bundle's user defaults. Otherwise the feed URL in the host bundle's Info.plist will be returned. If no feed URL can be retrieved, returns nil.

+

This property must be called on the main thread; calls from background threads will return nil.

+ +
+
+ +

◆ httpHeaders

+ +
+
+ + + + + +
+ + + + +
- (NSDictionary*) httpHeaders
+
+readwritenonatomiccopy
+
+ +

The HTTP headers used when checking for updates.

+

The keys of this dictionary are HTTP header fields (NSString) and values are corresponding values (NSString)

+ +
+
+ +

◆ lastUpdateCheckDate

+ +
+
+ + + + + +
+ + + + +
- (NSDate*) lastUpdateCheckDate
+
+readnonatomiccopy
+
+ +

Returns the date of last update check.

+
Returns
nil if no check has been performed.
+ +
+
+ +

◆ sendsSystemProfile

+ +
+
+ + + + + +
+ + + + +
- (BOOL) sendsSystemProfile
+
+readwritenonatomicassign
+
+ +

A property indicating whether or not the user's system profile information is sent when checking for updates.

+

Setting this property will persist in the host bundle's user defaults.

+ +
+
+ +

◆ sessionInProgress

+ +
+
+ + + + + +
+ + + + +
- (BOOL) sessionInProgress
+
+readnonatomicassign
+
+ +

A property indicating whether or not an update session is in progress.

+

An update session is in progress when the appcast is being downloaded, an update is being downloaded, an update is being shown, update permission is being requested, or the installer is being started. An active session is when Sparkle's fired scheduler is running.

+

Note an update session may be inactive even though Sparkle's installer (ran as a separate process) may be running, or even though the update has been downloaded but the installation has been deferred. In both of these cases, a new update session may be activated with the update resumed at a later point (automatically or manually).

+

See also canCheckForUpdates property which is more suited for menu item validation.

+ +
+
+ +

◆ updateCheckInterval

+ +
+
+ + + + + +
+ + + + +
- (NSTimeInterval) updateCheckInterval
+
+readwritenonatomicassign
+
+ +

A property indicating the current automatic update check interval.

+

Setting this property will persist in the host bundle's user defaults. The update schedule cycle will be reset in a short delay after the property's new value is set. This is to allow reverting this property without kicking off a schedule change immediately

+ +
+
+ +

◆ userAgentString

+ +
+
+ + + + + +
+ + + + +
- (NSString*) userAgentString
+
+readwritenonatomiccopy
+
+ +

The user agent used when checking for updates.

+

The default implementation can be overrided.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa808f76b6ed52c7467738ca006dda563aed724 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBBm#UwT>t<74`jZ0^R=}9&;%e0 zj1L?*z}k679?0b=3GxeO04f53tEWPY7#J8mJY5_^Dj46+Jw2&KfydR~?AibS6;XWb8AC$n2J`zY-Wn_G-F)XHH$P`dgIvZ&>&0(Z ztSXaY(7m?IJ8pgWv8{8iw~HDvJ&VasxTThV%`WeJLHuU*E62AlQ8Y-8oS(|?W4D(* z=Zxja52wCe&fc7Vf7hRvl5zJB2Twn{w}1bXgTL;x_f0$g-aE9^?><9UhXvPziDC@? zmCVzR&V0dJ^RcG$-2wXtMGTB;q7Ds~tO5ysj4U&P85p05I5ZS@c2saNegN@88fH7+ z{PNZ{>&?w0GS%)0{2v(aHElm~-Ap{loHb;64ZqLdOPd4xPCo3_+@2mG5bA6C;YuoV zPh;lokV4M~m!>Fg(B1jAy^**L`@LU6iGlQqApUXO@geCyF1HhpG literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle-members.html new file mode 100644 index 0000000..31cc075 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterCycle Member List
+
+
+ +

This is the complete list of members for SPUUpdaterCycle, including all inherited members.

+ + + + +
cancelNextUpdateCycle (defined in SPUUpdaterCycle)SPUUpdaterCycle
initWithDelegate: (defined in SPUUpdaterCycle)SPUUpdaterCycle
resetUpdateCycleAfterDelay (defined in SPUUpdaterCycle)SPUUpdaterCycle
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle.html new file mode 100644 index 0000000..5277dbc --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SPUUpdaterCycle Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterCycle Class Reference
+
+
+
+Inheritance diagram for SPUUpdaterCycle:
+
+
+ +
+ + + + + + + + +

+Instance Methods

+(instancetype) - initWithDelegate:
 
+(void) - resetUpdateCycleAfterDelay
 
+(void) - cancelNextUpdateCycle
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_cycle.png new file mode 100644 index 0000000000000000000000000000000000000000..b1aea47d7ba0f2e2c9f23c2957c18925bffbc1f8 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^g+Ls@!3-oN1F}FIi2$Dv*Z=?j1DP-0d@b!iGy%v0 z;{yi{uy)>&2XZ+|g8YIRfQmri>ZuST1_s7Oo-U3d6^w7^-rlrYLBQquo+bbP_xlUw zF+2K{aa7Oe3f;EokWO007g6KQOAo1JE;I|Al=k|);Njc1f2M6N5SA`{aQMe$5x-8& zinc4fo>^b?3|al}dZk?t=bW=?Uu=-3%F5--I}M}#c|Lb+Ua3E+WP$oML-v!JTN|Xl z+8I83d401go3XE27~iWW76$88%5An<7cp%Ox8K%x{P)J!S5pij&jnhG|)rAB!S;WBm3oi7Q_h-hXKIYz~81Adbe43sgY9U=Yg^ zW=wl+-dQf~`ubjcOYp9+WVz^4fdjH{UsT)|s&jc$VyDP=GVxoX{oP{Czopr0B-H;uK)l5 literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings-members.html new file mode 100644 index 0000000..2343386 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings-members.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterSettings Member List
+
+ + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings.html new file mode 100644 index 0000000..9316f6d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings.html @@ -0,0 +1,154 @@ + + + + + + + +Sparkle: SPUUpdaterSettings Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterSettings Class Reference
+
+
+ +

This class can be used for reading certain updater settings. + More...

+ +

#import <SPUUpdaterSettings.h>

+
+Inheritance diagram for SPUUpdaterSettings:
+
+
+ +
+ + + + +

+Instance Methods

+(instancetype) - initWithHostBundle:
 
+ + + + + + + + + + + + + + + + +

+Properties

+BOOL automaticallyChecksForUpdates
 Indicates whether or not automatic update checks are enabled.
 
+NSTimeInterval updateCheckInterval
 The regular update check interval.
 
+BOOL allowsAutomaticUpdates
 Indicates whether or not automatically downloading updates is allowed to be turned on by the user.
 
BOOL automaticallyDownloadsUpdates
 Indicates whether or not automatically downloading updates is enabled by the user or developer. More...
 
+BOOL sendsSystemProfile
 Indicates whether or not anonymous system profile information is sent when checking for updates.
 
+

Detailed Description

+

This class can be used for reading certain updater settings.

+

It retrieves the settings by first looking into the host's user defaults. If the setting is not found in there, then the host's Info.plist file is looked at.

+

Property Documentation

+ +

◆ automaticallyDownloadsUpdates

+ +
+
+ + + + + +
+ + + + +
- (BOOL) automaticallyDownloadsUpdates
+
+readnonatomicassign
+
+ +

Indicates whether or not automatically downloading updates is enabled by the user or developer.

+

Note this does not indicate whether or not automatic downloading of updates is allowable. See -allowsAutomaticUpdates property for that.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..81b77729b49fb82225a0c17a502ff23352791915 GIT binary patch literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^H9#D|!3-qdtb2G6NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~uJ&|s45?szJNI^3vx0!@_dQSk{FgW9 z6yMp|x%GnCnx}zE2D2sko{1W7jy$B2*(Vk=sqHoYfx9z~|9u$v{jm9;FIuO(6XToN z{hmDK_0%d+v?)0BK=*!ic!cwcqmKo-R6KWA3BSvpaOm!&KZicGt9d+jn98S-}Ca@10T;@S3~1>1PA_O z{u49d>v}cM!(T5J7;pAu`q7rhu-QboZny7}^DXypetr@BQ2xy~R(6T?K)en+won9l zgW*}mLB_V%(+|vl_xV|U*^cOnwBlD`V#%+085y!%D>$v0^^bi!DY|Dj$Mh-obIyxw zpUo{2xbU$2)2zJ3Z)z)a7Uipk_6kmxV7q-aV`|&$cR$4pR)%u`P1{JSgp^Jj+_2hpl-|aqcY83tZsZ>Rdevz!`i21-?etx z&VSrqwf%V2`yH|i7I)jVM9!G_Va$!y^iNiXtR^bOEdF~-@D6ea@;&c31Cz* Nc)I$ztaD0e0szLi{Hy=~ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer-members.html new file mode 100644 index 0000000..166fa40 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUpdaterTimer Member List
+
+
+ +

This is the complete list of members for SPUUpdaterTimer, including all inherited members.

+ + + + +
initWithDelegate: (defined in SPUUpdaterTimer)SPUUpdaterTimer
invalidate (defined in SPUUpdaterTimer)SPUUpdaterTimer
startAndFireAfterDelay: (defined in SPUUpdaterTimer)SPUUpdaterTimer
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer.html new file mode 100644 index 0000000..8049091 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SPUUpdaterTimer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUpdaterTimer Class Reference
+
+
+
+Inheritance diagram for SPUUpdaterTimer:
+
+
+ +
+ + + + + + + + +

+Instance Methods

+(instancetype) - initWithDelegate:
 
+(void) - startAndFireAfterDelay:
 
+(void) - invalidate
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_updater_timer.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b06093579a41aebbbfae562c99e5e7afb97c72 GIT binary patch literal 509 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004uNklhjjw)iqSGrQ_vNmO+v_dX|?vZF#ART#LU* zQeVgWS5wq>w&^|SU0&|7-N!92Styj}eADS~$FP#tE#CX{oA&SV@2~66Vk}AO z=n)H@MLzAr(ap~(Y?)8qlf=>t47vvK+Y>RLivf93KK00000NkvXXu0mjfYIFh= literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver-members.html new file mode 100644 index 0000000..6cf8f9f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUserInitiatedUpdateDriver Member List
+
+
+ +

This is the complete list of members for SPUUserInitiatedUpdateDriver, including all inherited members.

+ + + + + + + + +
abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate: (defined in SPUUserInitiatedUpdateDriver)SPUUserInitiatedUpdateDriver
resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver.html new file mode 100644 index 0000000..3f23423 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: SPUUserInitiatedUpdateDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUserInitiatedUpdateDriver Class Reference
+
+
+
+Inheritance diagram for SPUUserInitiatedUpdateDriver:
+
+
+ + +<SPUUpdateDriver> + +
+ + + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate:
 
- Instance Methods inherited from <SPUUpdateDriver>
+(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
 
+(void) - resumeInstallingUpdateWithCompletion:
 
+(void) - resumeUpdate:completion:
 
+(void) - abortUpdate
 
+(void) - abortUpdateWithError:
 
+ + + + +

+Additional Inherited Members

- Properties inherited from <SPUUpdateDriver>
+BOOL showingUpdate
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_initiated_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..60543dae8fe836833e9239e3b0d5aa4666ffe516 GIT binary patch literal 1398 zcmeAS@N?(olHy`uVBq!ia0y~yU@QW%J2;qu%M1VR{e18JB<*l1 zv+h*QAJf-vwV9PRe=5+f(x;QQoPVj^Qsj9{c?$E}_m5AVk5|C(iPKJ%okn{;O$n0X zX<$e=DyqQnL1_weMbX~2Vg`37%Lety9}D;%xNEQ%sI@Tf5IV&O3rFqMF+n9$C+cZhTC(7&vuA*orlkRGH8u`+ z+BtKk_IvH~*YEdb{(9oJa>~m0VHMRUl~3iHhjz{Xv^-z)_QdF|MK^cdKl8@bFCgyi zxoN+wi1H zTfScY@6C>Xy1Dai%)X!Dc*Ko=4Gy5y!LtPSM~w-B4^yS z4VfqJb57gzP4&TIrYxcJ!I%6)?&U6)4!pOQVN%Hq<-mKIbu0Gx>#UBsr}=&x*Kv*Y zk=5JwsC@tLtyjO|PiKss{JZG0d5LM;j(eW!ez>b~+9{Dgr>{lH`EEY%bxAQUG;UA1 zqsD)?r_c2T zPN|-p>aSsL{8@3z?3p`-P{Uje6fqLLpH4q5lH_UNFJzUNrug0toJ{)O)STGO|CC{# z&v%;*pTVLQ!nf6lN*b@fR>?{bF$rj&!2t2G+DeAp7q`SUUnk? z$lBd|l;1vlzAA6iw(of*``V3?_vXpXsNS!=(WdL$ImbM;h`;Z$->RHG5%0GCS^Tf* z%m4Y_ex9e7uUznU(dnnrn{IhZwOXGtKVF`%bYQ`j@Aq?>Zg(!NRfs;B zZvDRa`goN%Tl}utJk9;qyBF^97yY~A?T!7?dso)XWoBf1=J|AW%)g#b$vbN**S?Fo zKP@6mKR?$zH8a=!=NzWIi8G5`cV>AiKE1MjaW+$=c7FKZZ83ZwJpH1yr!d>NYXHOI lA5X=9w9E<1<@}%ISsnj + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SPUUserUpdateState Member List
+
+
+ +

This is the complete list of members for SPUUserUpdateState, including all inherited members.

+ + + + + +
initWithStage:userInitiated: (defined in SPUUserUpdateState)SPUUserUpdateState(Private)
NS_UNAVAILABLE (defined in SPUUserUpdateState)SPUUserUpdateState
stage (defined in SPUUserUpdateState)SPUUserUpdateState
userInitiated (defined in SPUUserUpdateState)SPUUserUpdateState
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_update_state.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_update_state.html new file mode 100644 index 0000000..eb36762 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_update_state.html @@ -0,0 +1,109 @@ + + + + + + + +Sparkle: SPUUserUpdateState Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SPUUserUpdateState Class Reference
+
+
+
+Inheritance diagram for SPUUserUpdateState:
+
+
+ +
+ + + + + + +

+Instance Methods

+(instancetype) - NS_UNAVAILABLE
 
+(instancetype) - initWithStage:userInitiated:
 
+ + + + + +

+Properties

+SPUUserUpdateStage stage
 
+BOOL userInitiated
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_update_state.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_p_u_user_update_state.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2a23c266a09ceb41d0eccb6974dbfd587b2834 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^jX)g0!3-ohWuCnNQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;=QCBUeUp*5a2n1C7h${dfDAm+ikAQmP!zResZm?uR`}$ z*SEY37I%TH&g%O=vxEdro-*@T#gMSfV9tOW(3R@Mv$I`ytNa^KqaMtqC+egA;Z z3tk@-p7Q8VI#ck(W*MJZ%naXlUFpqj-X?Ar#(w;LbE3Y-Nu~on-}ef~_kMO}(QiMQ zpDa|v%V=D@q@&~BB_|h=RRv9{oo*cJ5sXcOk2p7pPg39np@xnt`d|i-{op#sjG4}^ zJ}x3FR6LlxKWLo3CB^T&^Mr>>is^Za?Nt7fZx(7xxEz%*CL$K%@CE4(M~?`og1 z>b}`^J>7kC*A?E;obz;%9jD*slI-sV`)sFe-RU*wn&b1!n+iki&bFL9+H*kW`VSG4 z`;3ksH9Esq+HL98F1*8i&Pr{=%x!trw^f{h5fyrA6!|^oSFEGxkSfzV;uX>E5P_-@O1TaS?83{1ON`N-!lLJ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast-members.html new file mode 100644 index 0000000..1e0f26b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcast Member List
+
+
+ +

This is the complete list of members for SUAppcast, including all inherited members.

+ + + + +
copyByFilteringItems: (defined in SUAppcast)SUAppcast(Private)
initWithXMLData:relativeToURL:stateResolver:error: (defined in SUAppcast)SUAppcast(Private)
items (defined in SUAppcast)SUAppcast
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast.html new file mode 100644 index 0000000..50c6329 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: SUAppcast Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcast Class Reference
+
+
+
+Inheritance diagram for SUAppcast:
+
+
+ +
+ + + + + + +

+Instance Methods

+(nullable instancetype) - initWithXMLData:relativeToURL:stateResolver:error:
 
+(SUAppcast *) - copyByFilteringItems:
 
+ + + +

+Properties

+NSArray< SUAppcastItem * > * items
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast.png new file mode 100644 index 0000000000000000000000000000000000000000..da34501ce6ca3a165a1d1982c46d99f3a4f3a41b GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^UO*hc!3-ojorU)SDTx4|5ZC|z{{xvX-h3_XKQsZz z0^Myr{JPhQVV;7Lcg9|@X5qB*zwbJBhBS?(C{Ht5vJ-xH)$SY&stAC_I|J)6J5Ejg zu*m0^`nqMRwPw!Tnc6=p*IlbMU7N7>JpZo0Z$GSG7t}Q;1w_b6kx%2E<;#*cM%h}3zw>nxPHuQ$DY23cO z(@(DSJz*REbNdFTt7pajs=n2IAaa#+vUtp5yYrzNbAD;d$AoTRdBOU7U1eJuDxBeP!jVaPkZv(@c!PC{xWt~$(698Kw#l!#r literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver-members.html new file mode 100644 index 0000000..554ab1b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcastDriver Member List
+
+
+ +

This is the complete list of members for SUAppcastDriver, including all inherited members.

+ + + + +
cleanup: (defined in SUAppcastDriver)SUAppcastDriver
initWithHost:updater:updaterDelegate:delegate: (defined in SUAppcastDriver)SUAppcastDriver
loadAppcastFromURL:userAgent:httpHeaders:inBackground: (defined in SUAppcastDriver)SUAppcastDriver
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver.html new file mode 100644 index 0000000..b028ac5 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SUAppcastDriver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcastDriver Class Reference
+
+
+
+Inheritance diagram for SUAppcastDriver:
+
+
+ +
+ + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:updater:updaterDelegate:delegate:
 
+(void) - loadAppcastFromURL:userAgent:httpHeaders:inBackground:
 
+(void) - cleanup:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..61cdf86800018bfb4960e53a8d2c16f3b402c85e GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^c|aV%!3-qNf88Jgq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgXM4IhhEy=VoqIQ_S%JsRKkv`I|Gmqf zo^Qy_P0e||7VEm~HyT~W44Wvf+pcjdc6#SV!sd6ky|=d-8VK1s=XKd)F& z-1yG*4aZvFz3eR3EuL_2>~Z-`(GR_?(Zes^?n0`p~%B|Be^vznfR@ z0JK`Z-`H4Mt)YAiL(k=iJDYf(_8wikW#XQLJNVz9>12Mf6o{8#$176P%={z{X!y!F zsQ;CCcg_5^OVu2{l&##c+h;Ra1RPWKIXKtv&ReD(`u)W>k1j3ch;09mELO>}{;9>b z? + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUAppcastItem Member List
+
+
+ +

This is the complete list of members for SUAppcastItem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
channel (defined in SUAppcastItem)SUAppcastItem
contentLength (defined in SUAppcastItem)SUAppcastItem
criticalUpdate (defined in SUAppcastItem)SUAppcastItem
date (defined in SUAppcastItem)SUAppcastItem
dateString (defined in SUAppcastItem)SUAppcastItem
deltaUpdate (defined in SUAppcastItem)SUAppcastItem
deltaUpdates (defined in SUAppcastItem)SUAppcastItem
displayVersionString (defined in SUAppcastItem)SUAppcastItem
emptyAppcastItem (defined in SUAppcastItem)SUAppcastItemstatic
fileURL (defined in SUAppcastItem)SUAppcastItem
informationOnlyUpdate (defined in SUAppcastItem)SUAppcastItem
infoURL (defined in SUAppcastItem)SUAppcastItem
initWithDictionary: (defined in SUAppcastItem)SUAppcastItem
initWithDictionary:failureReason: (defined in SUAppcastItem)SUAppcastItem
initWithDictionary:relativeToURL:failureReason: (defined in SUAppcastItem)SUAppcastItem
initWithDictionary:relativeToURL:stateResolver:failureReason:SUAppcastItem(Private)
installationType (defined in SUAppcastItem)SUAppcastItem
itemDescription (defined in SUAppcastItem)SUAppcastItem
macOsUpdate (defined in SUAppcastItem)SUAppcastItem
majorUpgrade (defined in SUAppcastItem)SUAppcastItem
maximumOperatingSystemVersionIsOK (defined in SUAppcastItem)SUAppcastItem
maximumSystemVersion (defined in SUAppcastItem)SUAppcastItem
minimumAutoupdateVersion (defined in SUAppcastItem)SUAppcastItem
minimumOperatingSystemVersionIsOK (defined in SUAppcastItem)SUAppcastItem
minimumSystemVersion (defined in SUAppcastItem)SUAppcastItem
NS_UNAVAILABLE (defined in SUAppcastItem)SUAppcastItem
osString (defined in SUAppcastItem)SUAppcastItem
phasedRolloutInterval (defined in SUAppcastItem)SUAppcastItem
propertiesDictionary (defined in SUAppcastItem)SUAppcastItem
releaseNotesURL (defined in SUAppcastItem)SUAppcastItem
signatures (defined in SUAppcastItem)SUAppcastItem
title (defined in SUAppcastItem)SUAppcastItem
versionString (defined in SUAppcastItem)SUAppcastItem
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_item.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_item.html new file mode 100644 index 0000000..e74258c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_item.html @@ -0,0 +1,247 @@ + + + + + + + +Sparkle: SUAppcastItem Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUAppcastItem Class Reference
+
+
+
+Inheritance diagram for SUAppcastItem:
+
+
+ +
+ + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - NS_UNAVAILABLE
 
+(nullable instancetype) - initWithDictionary:
 
+(nullable instancetype) - initWithDictionary:failureReason:
 
+(nullable instancetype) - initWithDictionary:relativeToURL:failureReason:
 
(nullable instancetype) - initWithDictionary:relativeToURL:stateResolver:failureReason:
 Initializes with data from a dictionary provided by the RSS class and state resolver. More...
 
+ + + +

+Class Methods

+(instancetype) + emptyAppcastItem
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Properties

+NSString * title
 
+NSString * dateString
 
+NSDate * date
 
+NSString * itemDescription
 
+NSURL * releaseNotesURL
 
+SUSignaturessignatures
 
+NSString * minimumSystemVersion
 
+NSString * maximumSystemVersion
 
+NSURL * fileURL
 
+uint64_t contentLength
 
+NSString * versionString
 
+NSString * osString
 
+NSString * displayVersionString
 
+NSDictionary * deltaUpdates
 
+NSURL * infoURL
 
+NSNumber * phasedRolloutInterval
 
+NSString * installationType
 
+NSString * minimumAutoupdateVersion
 
+NSString * channel
 
+BOOL deltaUpdate
 
+BOOL criticalUpdate
 
+BOOL majorUpgrade
 
+BOOL macOsUpdate
 
+BOOL informationOnlyUpdate
 
+BOOL minimumOperatingSystemVersionIsOK
 
+BOOL maximumOperatingSystemVersionIsOK
 
+NSDictionary * propertiesDictionary
 
+

Method Documentation

+ +

◆ initWithDictionary:relativeToURL:stateResolver:failureReason:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- (nullable instancetype) initWithDictionary: (NSDictionary *) dict
relativeToURL:(NSURL *_Nullable) appcastURL
stateResolver:(SPUAppcastItemStateResolver *) stateResolver
failureReason:(NSString *_Nullable __autoreleasing *_Nullable) error 
+
+ +

Initializes with data from a dictionary provided by the RSS class and state resolver.

+

This initializer method is intended to be marked "private" and discouraged from public usage. This method is available however. Talk to us to describe your use case and if you need to construct appcast items yourself.

+ +

Provided by category SUAppcastItem(Private).

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_item.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_appcast_item.png new file mode 100644 index 0000000000000000000000000000000000000000..a7cf3386c91933ea838c087dfc189e621af17f97 GIT binary patch literal 772 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w0DKpsNzMlHF1-l>@r)Fa5FA{ao)k~ifR$JXO){4|2$a8QYqEHK;lE( ze$KtVESZNA&flIpQ_HR-?RM?Q4VJUMX6miDTzzBi%X^*89Df80zU{et&+P(J(^1(X zfp5zXi`mcRpI2tZq%Lsfsav(~vqik+Tz6;7azv%nwk`1X=QcC*V)10lbv@X$*Ht<$ z_Ra6`p;(E^zn>)jbW>(&IaH!jI`QeXih z$;O#C6)aiO(wbQq)J+%<6!3m^;#l^Qi>Iwhk%j-Zc!I$dZp8pA5hg_e1Y%h0d)Xw` zfuSJz?%jF@3r%D>D4XHJt@#cKX=Yvw1&q93oH<$?I9eY3;waizx7SDc+ppge)1?@4 zUSHxkbxE4(_UjMxoi4aKx_x*NRI+5zyzJ_?m!5vk-FHTQU5gY$j6*j2Lid2F<~!e( zUYC3jE%$2?6N6*8e|xPSM^UW!|3+4xwTuqyUx%~I=brbnP}Z^X=6WmJz1mGP`2Mn; z7rau@xG+2a(qmu2nt9ysssxHMt_$Q#?+Oz%nla~hjq8p=J%$Di@m~xDe!$QucV%FR npA1P!O9f`k + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUApplicationInfo Member List
+
+
+ +

This is the complete list of members for SUApplicationInfo, including all inherited members.

+ + + +
bestIconForHost: (defined in SUApplicationInfo)SUApplicationInfostatic
isBackgroundApplication: (defined in SUApplicationInfo)SUApplicationInfostatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_application_info.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_application_info.html new file mode 100644 index 0000000..4837181 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_application_info.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: SUApplicationInfo Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUApplicationInfo Class Reference
+
+
+
+Inheritance diagram for SUApplicationInfo:
+
+
+ +
+ + + + + + +

+Class Methods

+(BOOL) + isBackgroundApplication:
 
+(NSImage *) + bestIconForHost:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_application_info.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_application_info.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5ebdd8f5f1f9982bddfcee8175858107ce5cd9 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^1wb6Y!3-q7O=9#1QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;^ijoyI=JOB!DN^uC;$ z*i%$LZL7hP!1%<8HoYA3OV%#=V_B+u>C{fNf}55-eniZFdid&cSCGTD75!1!YDboFyt=akR{07s_a#Q*>R literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon-members.html new file mode 100644 index 0000000..c155df9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUBundleIcon Member List
+
+
+ +

This is the complete list of members for SUBundleIcon, including all inherited members.

+ + +
iconURLForHost: (defined in SUBundleIcon)SUBundleIconstatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon.html new file mode 100644 index 0000000..b53188c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: SUBundleIcon Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUBundleIcon Class Reference
+
+
+
+Inheritance diagram for SUBundleIcon:
+
+
+ +
+ + + + +

+Class Methods

+(NSURL *_Nullable) + iconURLForHost:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_bundle_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..344791bbd1aafd53b3382912c6faaa48a7fab29f GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^(Lfx)!3-oF^?zmnDTx4|5ZC|z{{xvX-h3_XKQsZz z0^1Wy;okP61Pb8q(@R^V~zk2m`N|M=}G z4hF3qy|1!XyPjf6dhj6nchAho2?m~A7n8gvT|a*FE5$trf+}LUbL8Q8!_io?WeYy{@=TAtM7a<>D=>Y?~7htxSxD}Zsh-slb(D% znq$0Kg7Hi?Ge?j@_3cLw8sD&6@yMP0cgrp^r@^h8_rca13~{K`|CZb|F%=#K7ohN0 z$#0uC>{i?xw2(3CZTDAphw#?e8D}{jluowY@z`>SM$l!uUez1z)68(``|8}z9zVeP*8phChR+tDnm{r-UW|WU=DY literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager-members.html new file mode 100644 index 0000000..6631d40 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager-members.html @@ -0,0 +1,91 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUFileManager Member List
+
+ + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager.html new file mode 100644 index 0000000..896629a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager.html @@ -0,0 +1,552 @@ + + + + + + + +Sparkle: SUFileManager Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUFileManager Class Reference
+
+
+ +

#import <SUFileManager.h>

+
+Inheritance diagram for SUFileManager:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Instance Methods

(instancetype) - init
 
(NSURL *_Nullable) - makeTemporaryDirectoryWithPreferredName:appropriateForDirectoryURL:error:
 
(BOOL) - makeDirectoryAtURL:error:
 
(BOOL) - moveItemAtURL:toURL:error:
 
(BOOL) - replaceItemAtURL:withItemAtURL:error:
 
(BOOL) - copyItemAtURL:toURL:error:
 
(BOOL) - removeItemAtURL:error:
 
(BOOL) - changeOwnerAndGroupOfItemAtRootURL:toMatchURL:error:
 
(BOOL) - updateModificationAndAccessTimeOfItemAtURL:error:
 
(BOOL) - updateAccessTimeOfItemAtRootURL:error:
 
(BOOL) - releaseItemFromQuarantineAtRootURL:error:
 
+

Detailed Description

+

A class used for performing file operations more suitable than NSFileManager for performing installation work. All operations on this class may be used on thread other than the main thread. This class provides just basic file operations and stays away from including much application-level logic.

+

Method Documentation

+ +

◆ changeOwnerAndGroupOfItemAtRootURL:toMatchURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
- (BOOL) changeOwnerAndGroupOfItemAtRootURL: (NSURL *) targetURL
toMatchURL:(NSURL *) matchURL
error:(NSError **) error 
+
+

Changes the owner and group IDs of an item at a specified target URL to match another URL

Parameters
+ + + + +
targetURLA URL pointing to the target item whose owner and group IDs to alter. This will be applied recursively if the item is a directory. The item at this URL must exist.
matchURLA URL pointing to the item whose owner and group IDs will be used for changing on the targetURL. The item at this URL must exist.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if the target item's owner and group IDs have changed to match the origin's ones, otherwise NO along with a populated error object
+

If the owner and group IDs match on the root items of targetURL and matchURL, this method stops and assumes that nothing needs to be done. Otherwise this method recursively changes the IDs if the target is a directory. If an item in the directory is encountered that is unable to be changed, then this method stops and returns NO. While this method will try to change the group ID, being unable to change the group ID does not result in a failure if the owner ID can be changed or matched.

+

This is not an atomic operation.

+ +
+
+ +

◆ copyItemAtURL:toURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
- (BOOL) copyItemAtURL: (NSURL *) sourceURL
toURL:(NSURL *) destinationURL
error:(NSError **) error 
+
+

Copies an item from a source to a destination

Parameters
+ + + + +
sourceURLA URL pointing to the item to move. The item at this URL must exist.
destinationURLA URL pointing to the destination the item will be moved at. An item must not already exist at this URL.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if the item was copied successfully, otherwise NO along with a populated error object
+

This is not an atomic operation.

+ +
+
+ +

◆ init

+ +
+
+ + + + + + + +
- (instancetype) init
+
+Initial value:
{
+
NSFileManager *_fileManager
+

Initializes a new file manager

+
Returns
A new file manager instance
+ +
+
+ +

◆ makeDirectoryAtURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (BOOL) makeDirectoryAtURL: (NSURL *) targetURL
error:(NSError **) error 
+
+

Creates a directory at the target URL

Parameters
+ + + +
targetURLA URL pointing to the directory to create. The item at this URL must not exist, and the parent directory of this URL must already exist.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if the item was created successfully, otherwise NO along with a populated error object
+

This is an atomic operation.

+ +
+
+ +

◆ makeTemporaryDirectoryWithPreferredName:appropriateForDirectoryURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
- (NSURL *) makeTemporaryDirectoryWithPreferredName: (NSString *) preferredName
appropriateForDirectoryURL:(NSURL *) appropriateURL
error:(NSError * __autoreleasing *) error 
+
+

Creates a temporary directory on the same volume as a provided URL

Parameters
+ + + + +
preferredNameA name that may be used when creating the temporary directory. Note that in the uncothirdStageErrormmon case this name is used, the temporary directory will be created inside the directory pointed by appropriateURL
appropriateURLA URL to a directory that resides on the volume that the temporary directory will be created on. In the uncommon case, the temporary directory may be created inside this directory.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
A URL pointing to the newly created temporary directory, or nil with a populated error object if an error occurs.
+

When moving an item from a source to a destination, it is desirable to create a temporary intermediate destination on the same volume as the destination to ensure that the item will be moved, and not copied, from the intermediate point to the final destination. This ensures file atomicity.

+ +
+
+ +

◆ moveItemAtURL:toURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
- (BOOL) moveItemAtURL: (NSURL *) sourceURL
toURL:(NSURL *) destinationURL
error:(NSError **) error 
+
+

Moves an item from a source to a destination

Parameters
+ + + + +
sourceURLA URL pointing to the item to move. The item at this URL must exist.
destinationURLA URL pointing to the destination the item will be moved at. An item must not already exist at this URL.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if the item was moved successfully, otherwise NO along with a populated error object
+

If sourceURL and destinationURL reside on the same volume, this operation will be an atomic move operation. Otherwise this will be equivalent to a copy & remove which will be a nonatomic operation.

+ +
+
+ +

◆ releaseItemFromQuarantineAtRootURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (BOOL) releaseItemFromQuarantineAtRootURL: (NSURL *) rootURL
error:(NSError **) error 
+
+

Releases Apple's quarantine extended attribute from the item at the specified root URL

Parameters
+ + + +
rootURLA URL pointing to the item to release from Apple's quarantine. This will be applied recursively if the item is a directory. The item at this URL must exist.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if all the items at the target could be released from quarantine, otherwise NO if any items couldn't along with a populated error object
+

This method removes quarantine attributes from an item, ideally an application, so that when the user launches a new application themselves, they don't have to witness the system dialog alerting them that they downloaded an application from the internet and asking if they want to continue. Note that this may not exactly mimic the system behavior when a user opens an application for the first time (i.e, the xattr isn't deleted), but this should be sufficient enough for our purposes.

+

This method may return NO even if some items do get released from quarantine if the target URL is pointing to a directory. Thus if an item cannot be released from quarantine, this method still continues on to the next enumerated item.

+

This is not an atomic operation.

+ +
+
+ +

◆ removeItemAtURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (BOOL) removeItemAtURL: (NSURL *) url
error:(NSError **) error 
+
+

Removes an item at a URL

Parameters
+ + + +
urlA URL pointing to the item to remove. The item at this URL must exist.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if the item was removed successfully, otherwise NO along with a populated error object
+

This is not an atomic operation.

+ +
+
+ +

◆ replaceItemAtURL:withItemAtURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
- (BOOL) replaceItemAtURL: (NSURL *) originalItemURL
withItemAtURL:(NSURL *) newItemURL
error:(10.13) __OSX_AVAILABLE 
+
+

Replaces an original item with a new item atomically.

Parameters
+ + + + +
originalItemURLA URL pointing to the original item to replace. The item at this URL must exist.
newItemURLA URL pointing to the new item that will replace the original item.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if the original item was replaced with the new item successfully, otherwise NO along with a populated error object
+

originalItemURL and newItemURL must reside on the same volume. If the operation succeeds, this will be be an atomic operation. Otherwise on failure you may need to re-try using move operations. This operation will fail on non-apfs volumes or volumes that don't support rename swapping. Both originalItemURL and newItemURL must exist.

+ +
+
+ +

◆ updateAccessTimeOfItemAtRootURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (BOOL) updateAccessTimeOfItemAtRootURL: (NSURL *) targetURL
error:(NSError * __autoreleasing *) error 
+
+

Updates the access time of an item at a specified root URL to the current time

Parameters
+ + + +
targetURLA URL pointing to the target item whose access time to update to the current time. This will be applied recursively if the item is a directory. The item at this URL must exist.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if the target item's access times have been updated, otherwise NO along with a populated error object
+

This method updates the access time of an item to the current time, ideal for letting the system know not to remove a file or directory when placing it at a temporary directory.

+

This is not an atomic operation.

+ +
+
+ +

◆ updateModificationAndAccessTimeOfItemAtURL:error:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (BOOL) updateModificationAndAccessTimeOfItemAtURL: (NSURL *) targetURL
error:(NSError **) error 
+
+

Updates the modification and access time of an item at a specified target URL to the current time

Parameters
+ + + +
targetURLA URL pointing to the target item whose modification and access time to update. The item at this URL must exist.
errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
+
+
+
Returns
YES if the target item's modification and access times have been updated, otherwise NO along with a populated error object
+

This method updates the modification and access time of an item to the current time, ideal for letting the system know we installed a new file or application.

+

This is not an atomic operation.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_file_manager.png new file mode 100644 index 0000000000000000000000000000000000000000..84dd966b54224519abe2d1d12f61263a3c86da7a GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^DL@>+!3-pCTvxaYq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgJ3L(+Ln;{G&b>M5wE~Yzf83@2|BnmL zKFXoL)U)Y*h+b&sW{Vdd7k)?@Z@zd)C3B6M%cMiUj!!VzZzEp6#PQt|)!kEUdeW7btR9`=|291RUlSU!blXx*R_{r{43o066glS#f9O^Dy31zru61hnj(@or z-}EHw*5;RrC%NA{&tc@#+PNY6%pp_X_v`%Uo&0HQSrT5@p<=nW`0-)w|5hsd3hG{| zYOYz|G-D>O*a7{o3=(Ut75b0!PO(<-KUQ%{cY=P=^%jOBriu)Sz8nq_!b}3!S{Pbj z-2bLW&g5({XxKPQpkYH^+Zw$HwM)vklir&B|EBBUAR5%XJy*WScd;3RVxI=`@YX9T!%ovATTE7EZWp=%O;Nw*{n|m8? ziKqEuwSzYfS~r^t%>T0Q<8zs|AGH?QF_r1xkKCO;cX!lUzfX(j?smKTqq$;!>y~JP scekg0=gg@89Lz6pE!^?U8MfE#76+}X8|OD)2F4SEr>mdKI;Vst0HU(vga7~l literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host-members.html new file mode 100644 index 0000000..d5d880e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host-members.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUHost Member List
+
+
+ +

This is the complete list of members for SUHost, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
boolForInfoDictionaryKey: (defined in SUHost)SUHost
boolForKey: (defined in SUHost)SUHost
boolForUserDefaultsKey: (defined in SUHost)SUHost
bundle (defined in SUHost)SUHost
bundlePath (defined in SUHost)SUHost
displayVersion (defined in SUHost)SUHost
initWithBundle: (defined in SUHost)SUHost
name (defined in SUHost)SUHost
objectForInfoDictionaryKey: (defined in SUHost)SUHost
objectForKey: (defined in SUHost)SUHost
objectForUserDefaultsKey: (defined in SUHost)SUHost
publicDSAKeyFileKey (defined in SUHost)SUHost
publicKeys (defined in SUHost)SUHost
runningOnReadOnlyVolume (defined in SUHost)SUHost
runningTranslocated (defined in SUHost)SUHost
setBool:forUserDefaultsKey: (defined in SUHost)SUHost
setObject:forUserDefaultsKey: (defined in SUHost)SUHost
validVersion (defined in SUHost)SUHost
version (defined in SUHost)SUHost
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host.html new file mode 100644 index 0000000..a31a80b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host.html @@ -0,0 +1,155 @@ + + + + + + + +Sparkle: SUHost Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUHost Class Reference
+
+
+
+Inheritance diagram for SUHost:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + +

+Instance Methods

+(instancetype) - initWithBundle:
 
+(nullable id) - objectForInfoDictionaryKey:
 
+(BOOL) - boolForInfoDictionaryKey:
 
+(nullable id) - objectForUserDefaultsKey:
 
+(void) - setObject:forUserDefaultsKey:
 
+(BOOL) - boolForUserDefaultsKey:
 
+(void) - setBool:forUserDefaultsKey:
 
+(nullable id) - objectForKey:
 
+(BOOL) - boolForKey:
 
+ + + + + + + + + + + + + + + + + + + + + +

+Properties

+NSBundle * bundle
 
+NSString * bundlePath
 
+NSString * name
 
+NSString * version
 
+BOOL validVersion
 
+NSString * displayVersion
 
+SUPublicKeyspublicKeys
 
+BOOL runningOnReadOnlyVolume
 
+BOOL runningTranslocated
 
+NSString * publicDSAKeyFileKey
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_host.png new file mode 100644 index 0000000000000000000000000000000000000000..71bb1862d8967f7000ec5fdfebcf711ae152582f GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^PCy*M!3-p4O$qh_QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;EVJn`!tMbt-Dj44msEKvJR`_Ujy0)ig5v$nCqD(KWx2{{3zn94Uz$86$Vf_{ zw3K(pH#_^#ptIWix;GgEKfM%W(yOqQ(7$zi+sa;pjl$NdlkW+43$&MWq`p?^Ug)xG zMJ{*j#OHBqekVmueD?eEyO?dq%>_@Feysm!)}#{4)KD$U@L;lhp-f(ze4)^u9&v&C zB}$DPEDStcE(#0>v;_VOIZm=`WOxv$aIHhW{d4xtlkU5_IWL~qy3#l!P4VVj=h^G{ zjohbP-un8Q-&@z0`}sCnd+dLy)1B8Gf4kE49p5Hrn~#gWw7%kxp7^Tr&lv^>O#v>) cNqV&ma&>A<{PI680E3Ld)78&qol`;+0Pp;rg8%>k literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system-members.html new file mode 100644 index 0000000..c311394 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUOperatingSystem Member List
+
+
+ +

This is the complete list of members for SUOperatingSystem, including all inherited members.

+ + + + +
isOperatingSystemAtLeastVersion: (defined in SUOperatingSystem)SUOperatingSystemstatic
operatingSystemVersion (defined in SUOperatingSystem)SUOperatingSystemstatic
systemVersionString (defined in SUOperatingSystem)SUOperatingSystemstatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system.html new file mode 100644 index 0000000..a546b8f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SUOperatingSystem Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUOperatingSystem Class Reference
+
+
+
+Inheritance diagram for SUOperatingSystem:
+
+
+ +
+ + + + + + + + +

+Class Methods

+(NSOperatingSystemVersion+ operatingSystemVersion
 
+(BOOL) + isOperatingSystemAtLeastVersion:
 
+(NSString *) + systemVersionString
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_operating_system.png new file mode 100644 index 0000000000000000000000000000000000000000..aa71c7522cbec1069d64be8554fcc36c13190703 GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^H9#D|!3-qdtb2G6NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~9`kf@45?szJNNFkM+!Wx`|s?y|G)S6 zDSuAZwSN3_BqLAfuAETQ^5$CfnKNmelb2XV6?jUmt7nkAmUDl$`(a<1BOjcn1!tZ= zD6IbZkHaLbSPuU=TPoInx10KH!nvf~OPD7uS$D7HxUt5=MDN1ne@dR`OLjfCjMv+e zR{3h_hltvnzoq1CeiRp^?{RzT|3=?)>b;69MUnU3Dp%dBKQ}wi|J;-%>(*5ruATC< zzM+0v%HP$VmkMf4@0`h*#PH9_ydiQH=l;8Dm(mZte^dEoiY`V7m-(t`fp8YNP{lUX?PfxqPz*}t z4#ytu|Li(%&a(~or`_(JC;#x=#D^-k3)(#l4fpV_=e@q>j_GDzeV*4rTk_*}?R{4% zKkrSzf#}sz$LGyE|7XrK`K;~73pe>aJW`;!cK2)p^R?HD8=CJ`u221M tWr + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUPhasedUpdateGroupInfo Member List
+
+
+ +

This is the complete list of members for SUPhasedUpdateGroupInfo, including all inherited members.

+ + + +
setNewUpdateGroupIdentifierForHost: (defined in SUPhasedUpdateGroupInfo)SUPhasedUpdateGroupInfostatic
updateGroupForHost: (defined in SUPhasedUpdateGroupInfo)SUPhasedUpdateGroupInfostatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_phased_update_group_info.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_phased_update_group_info.html new file mode 100644 index 0000000..9cfa3f8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_phased_update_group_info.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: SUPhasedUpdateGroupInfo Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUPhasedUpdateGroupInfo Class Reference
+
+
+
+Inheritance diagram for SUPhasedUpdateGroupInfo:
+
+
+ +
+ + + + + + +

+Class Methods

+(NSUInteger) + updateGroupForHost:
 
+(NSNumber *) + setNewUpdateGroupIdentifierForHost:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_phased_update_group_info.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_phased_update_group_info.png new file mode 100644 index 0000000000000000000000000000000000000000..0a4585f8d9ea8a3e22b4194e22187652f228b849 GIT binary patch literal 624 zcmeAS@N?(olHy`uVBq!ia0vp^OMy6mgBeKruX1$)QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;#2nJ=Y!gmUN303I9CK zX_+vywJV}t(UZA8ab{~#!>oh97wgR4yn9a3Db-AQzG<4P*FJqUFYLm6l}z*YeW#5I zJ@0B{`R6)a zk7%E^`pX8DEwzt}Pk-ITBAK_$w)pjp-7{Ba&f(1sGYC6>`TeG4yVs@6s536i&AGjM zLiA1F37t>BRO|fx9DSmG)p{N8`OC~DWUF=Ohn`h){(5u!w7*B*zBnH(_d_qZ$$VP& z);+(Eea=@rHnFj*wOnarIrZK$#*gcIw k9u^wY{$4rr=1C2s+oTk`zX8RGz~sT;>FVdQ&MBb@0Oph+d;kCd literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys-members.html new file mode 100644 index 0000000..4226042 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUPublicKeys Member List
+
+
+ +

This is the complete list of members for SUPublicKeys, including all inherited members.

+ + + + + + + + +
dsaPubKey (defined in SUPublicKeys)SUPublicKeys
dsaPubKeyStatus (defined in SUPublicKeys)SUPublicKeys
ed25519_public_key (defined in SUPublicKeys)SUPublicKeysprotected
ed25519PubKey (defined in SUPublicKeys)SUPublicKeys
ed25519PubKeyStatus (defined in SUPublicKeys)SUPublicKeys
hasAnyKeysSUPublicKeys
initWithDsa:ed: (defined in SUPublicKeys)SUPublicKeys
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys.html new file mode 100644 index 0000000..1adaf6d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys.html @@ -0,0 +1,124 @@ + + + + + + + +Sparkle: SUPublicKeys Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUPublicKeys Class Reference
+
+
+
+Inheritance diagram for SUPublicKeys:
+
+
+ +
+ + + + +

+Instance Methods

+(instancetype) - initWithDsa:ed:
 
+ + + +

+Protected Attributes

+unsigned char ed25519_public_key [32]
 
+ + + + + + + + + + + + +

+Properties

+NSString * dsaPubKey
 
+SUSigningInputStatus dsaPubKeyStatus
 
+const unsigned char * ed25519PubKey
 
+SUSigningInputStatus ed25519PubKeyStatus
 
+BOOL hasAnyKeys
 Returns YES if either key is present (though they may be invalid).
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_public_keys.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c972137102aa9c71e69bf2fa6b92dd929a8150 GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^(Lfx)!3-oF^?zmnDTx4|5ZC|z{{xvX-h3_XKQsZz z0^5>FS$kP61Pb8iGM+q~@peX2 zxBjFnFRgAH{##pB{r^dLh05%YA5^Xuo;xSFE~}Y5n`& zv%TrdKiQq-GnM^Od&y$CZN!|e+D}b2^54I2@Za-d(yNM3<&`fl+)s|T-uy3FRr6Kz z&9t;)mV#LG2G3b1_T7DUP<_+;7nvVszUhBE`6%0qEjJhfyLkn+qEKJ`Z=|J7ZejGf zn8fU|w|%d8S+qxg$cwc3vv<9SW^~hfbLh<*X6t+9Vx=kacQ#7*XPLiUGV@t~^PD-G zcyCR7pZ$0JvK_aN*q-|SV!`~}JDkyNwU?g%mfrT>FYn6BrBQXK`M$o%E^pmyoqD0q z(bFhXasD(AhE?oN(7QOB_Me?-Fy{RJz&K&>boFyt=akR{0Er0ifdBvi literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures-members.html new file mode 100644 index 0000000..88c4376 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures-members.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUSignatures Member List
+
+
+ +

This is the complete list of members for SUSignatures, including all inherited members.

+ + + + + + + +
dsaSignature (defined in SUSignatures)SUSignatures
dsaSignatureStatus (defined in SUSignatures)SUSignatures
ed25519_signature (defined in SUSignatures)SUSignaturesprotected
ed25519Signature (defined in SUSignatures)SUSignatures
ed25519SignatureStatus (defined in SUSignatures)SUSignatures
initWithDsa:ed: (defined in SUSignatures)SUSignatures
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures.html new file mode 100644 index 0000000..86e1719 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures.html @@ -0,0 +1,120 @@ + + + + + + + +Sparkle: SUSignatures Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUSignatures Class Reference
+
+
+
+Inheritance diagram for SUSignatures:
+
+
+ +
+ + + + +

+Instance Methods

+(instancetype) - initWithDsa:ed:
 
+ + + +

+Protected Attributes

+unsigned char ed25519_signature [64]
 
+ + + + + + + + + +

+Properties

+NSData * dsaSignature
 
+SUSigningInputStatus dsaSignatureStatus
 
+const unsigned char * ed25519Signature
 
+SUSigningInputStatus ed25519SignatureStatus
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_signatures.png new file mode 100644 index 0000000000000000000000000000000000000000..51488e559322b4a1dadd99826fdc48fb60f7b866 GIT binary patch literal 772 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w0ElK}Yw5@4M%lSWd4xL#ueZ!xbGrtP;sQf;mtZ>p!h)Gd^NztM&A@1{^ z|7#X}Re8 z=2nEdKIRVGkP`EPZ+*YN^})I!*@P-U%F{Oy+g62AcA>Y@dqf zi7|vpEtI*obwSVT*^ikHWWCMfXE498PktlYk@xRjrMOI3{ro`ZhETq64yn$7x7K+| zZ + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUStandardVersionComparator Member List
+
+
+ +

This is the complete list of members for SUStandardVersionComparator, including all inherited members.

+ + + + +
compareVersion:toVersion:SUStandardVersionComparator
defaultComparatorSUStandardVersionComparatorstatic
initSUStandardVersionComparator
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_standard_version_comparator.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_standard_version_comparator.html new file mode 100644 index 0000000..6a8ddfe --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_standard_version_comparator.html @@ -0,0 +1,173 @@ + + + + + + + +Sparkle: SUStandardVersionComparator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUStandardVersionComparator Class Reference
+
+
+ +

Sparkle's default version comparator. + More...

+ +

#import <SUStandardVersionComparator.h>

+
+Inheritance diagram for SUStandardVersionComparator:
+
+
+ + +<SUVersionComparison> + +
+ + + + + + + + +

+Instance Methods

+(instancetype) - init
 Initializes a new instance of the standard version comparator.
 
(NSComparisonResult) - compareVersion:toVersion:
 Compares version strings through textual analysis. More...
 
+ + + + +

+Class Methods

(SUStandardVersionComparator *) + defaultComparator
 Returns a singleton instance of the comparator. More...
 
+

Detailed Description

+

Sparkle's default version comparator.

+

This comparator is adapted from MacPAD, by Kevin Ballard. It's "dumb" in that it does essentially string comparison, in components split by character type.

+

Method Documentation

+ +

◆ compareVersion:toVersion:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (NSComparisonResult) compareVersion: (NSString *) versionA
toVersion:(NSString *) versionB 
+
+ +

Compares version strings through textual analysis.

+

See the implementation for more details.

+ +

Reimplemented from <SUVersionComparison>.

+ +
+
+ +

◆ defaultComparator

+ +
+
+ + + + + + + +
+ (SUStandardVersionComparator *) defaultComparator
+
+ +

Returns a singleton instance of the comparator.

+

It is usually preferred to alloc/init new a comparator instead.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_standard_version_comparator.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_standard_version_comparator.png new file mode 100644 index 0000000000000000000000000000000000000000..17ded2bc0d9b23c2fb017e5b2f03c856ddca4d76 GIT binary patch literal 1078 zcmeAS@N?(olHy`uVBq!ia0y~yU~B=h12~w0q~7jNIY3Gxz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opQ7iV}ep_a(yJSwWo#tK^Pb*DD$4PTIIVU~w z@tB~J?$o4WS=`g2c`SKu+x;)g-%R{U6({%+FE_WZlaFhXzI67e@S zzCqD^lMJ5kes=fWlR2N8^1TgC*6TS=()sK<=?i1us+LLbEhB#aYj@t6&L-)pkS7pzUM6e z3tOxD+z~n$vXs*TeD8?xg*%7JBu2_Phlu zxk*Mh{A1^~xGoY`oc;FS6m_Y->@&fpU-l+yCce5FKP}hlGJs-3SV-mM%n1sf=UP}ii_#`c2=Yo_I=Nu?-Mn-38VCDpd2RFtkzwfnDVQny>#W2msdWv zWUh$I@4tE}D=_NUs}D7QYo^<^L{7b!?dSfDJNLi$rDG~zs=t~{el?HfZ_?r|x5ay} z-n81&YiNI4RC@DU&cF4OU88L|D~=v}s?B-YX7=fDp>?-ri0?h{BySeinwE8i<)5Cd zTq3;d+&?)^vm=}A{>3H#GwinaifFBic4881VX-z{zxhh}l(%nkQ_2NPZyNub*Ru29 z^xKA-$>-nfN}8!ZYfTW-)eO!=tM0k`e*KQ%&)v}~|2}@+lUKID(B3YmuEHSW4+-!& mooIo-v#$jhZrTj + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUStatusController Member List
+
+
+ +

This is the complete list of members for SUStatusController, including all inherited members.

+ + + + + + + + + + + +
actionButton (defined in SUStatusController)SUStatusController
beginActionWithTitle:maxProgressValue:statusText: (defined in SUStatusController)SUStatusController
buttonEnabled (defined in SUStatusController)SUStatusController
initWithHost: (defined in SUStatusController)SUStatusController
maxProgressValue (defined in SUStatusController)SUStatusController
progressBar (defined in SUStatusController)SUStatusController
progressValue (defined in SUStatusController)SUStatusController
setButtonTitle:target:action:isDefault: (defined in SUStatusController)SUStatusController
statusText (defined in SUStatusController)SUStatusController
statusTextField (defined in SUStatusController)SUStatusController
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_status_controller.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_status_controller.html new file mode 100644 index 0000000..7e21edc --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_status_controller.html @@ -0,0 +1,128 @@ + + + + + + + +Sparkle: SUStatusController Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUStatusController Class Reference
+
+
+
+Inheritance diagram for SUStatusController:
+
+
+ +
+ + + + + + + + +

+Instance Methods

+(instancetype) - initWithHost:
 
+(void) - beginActionWithTitle:maxProgressValue:statusText:
 
+(void) - setButtonTitle:target:action:isDefault:
 
+ + + + + + + + + + + + + + + +

+Properties

+IBOutlet NSButton * actionButton
 
+IBOutlet NSProgressIndicator * progressBar
 
+IBOutlet NSTextField * statusTextField
 
+NSString * statusText
 
+double progressValue
 
+double maxProgressValue
 
+BOOL buttonEnabled
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_status_controller.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_status_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..99274ec18cf2f6f6aa8dc982d118527e26104649 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^jX)g0!3-ohWuCnNQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;XLn;{G&b{4tRDr|QT>t6+{}ok& zJ3Z8wFP}NV$74ZO_pSrE^BrA6UMZwKbINa0D_{vPw&Ab!`d-98Q>owcOpeZ;$S^LJ zbZy7QqUmW{dmPjZH*aibF-(ka{`-0B=?-f*sfFC$f6u)SpYSCuYSJ5x-%bYGF0Eak z)>rbrC85*oVV&dMV=ofK928?yHy!i)e29~Mr%;O5m6Vh(;w)}2EgQSCj@=dJIkwz% zgVERRfqZYxnbsc^`2S7h&VL2fg7SmwR3_iq?;`B=-s%6;*$X&lHO%aN%i`iPm5*V4 z4Rb?~zWR-ASuI6PvI`^@&Rg)_N!Y{@gcuC2vG`s9qYw8vIy$^$Sr}UHvG`69m~+eK zUSGRxe+9!iHx7p6hiC2f_+Ak{aV~SVuulX-)_V@6lQWl9dITnw9*ammFRGFiVshJf zPLsdS@m&*MpS}6%+L4rvX&0?kt7L!pC^xQc^c7XG;AdgDGHG|hx%;9CQ@%YDu~UpF z`RmbnT9c)*HljIn*?qy5tToZ~^;|_eomXFf@XB&()(fQ*yLVrxPh~hZ3+Sf=ApybA aU;OrwUM3dOLK?uhWbkzLb6Mw<&;$TE6z5O? literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler-members.html new file mode 100644 index 0000000..109eaa0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUSystemProfiler Member List
+
+
+ +

This is the complete list of members for SUSystemProfiler, including all inherited members.

+ + +
systemProfileArrayForHost: (defined in SUSystemProfiler)SUSystemProfilerstatic
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler.html new file mode 100644 index 0000000..61a9789 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: SUSystemProfiler Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUSystemProfiler Class Reference
+
+
+
+Inheritance diagram for SUSystemProfiler:
+
+
+ +
+ + + + +

+Class Methods

+(NSArray< NSDictionary< NSString *, NSString * > * > *) + systemProfileArrayForHost:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_system_profiler.png new file mode 100644 index 0000000000000000000000000000000000000000..14dca2bae8575f17b719d31507a7a4b47b25aef4 GIT binary patch literal 529 zcmV+s0`C2ZP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004?Nkl~4xG+Kw^kNYKHrn3=5;CP}Nbagr3Ie+!ph z9@oQG=^_8f^G?&B$GgCl$d%xKNYbFUa3yjX)oS{FRj8%j<5m_ylFqt|%XRj+ltfO& z-y~_O>%FTHYB6JU&v_G#!pWhR@bP<^o!}U?Vb(#mg4p+ zR`Y48y3r+=vx?ul?zt8_hDxQB0-oWf&K&ow&8h4h-c{>Y-Qjuz-m*$RqJ_VU8$5Ow zciOxAxcOq%Js9q8BRgl#aP8&EnYT}s$YbXk7kbED;$n}~{Q&|9(#PY>%$Dg3pnE~J TzDd`V00000NkvXXu0mjfv`Pkr literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group-members.html new file mode 100644 index 0000000..754d9ee --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUTouchBarButtonGroup Member List
+
+
+ +

This is the complete list of members for SUTouchBarButtonGroup, including all inherited members.

+ + + +
buttons (defined in SUTouchBarButtonGroup)SUTouchBarButtonGroup
initByReferencingButtons: (defined in SUTouchBarButtonGroup)SUTouchBarButtonGroup
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group.html new file mode 100644 index 0000000..1c2c0a9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group.html @@ -0,0 +1,104 @@ + + + + + + + +Sparkle: SUTouchBarButtonGroup Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUTouchBarButtonGroup Class Reference
+
+
+
+Inheritance diagram for SUTouchBarButtonGroup:
+
+
+ +
+ + + + +

+Instance Methods

+(instancetype) - initByReferencingButtons:
 
+ + + +

+Properties

+NSArray< NSButton * > * buttons
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_touch_bar_button_group.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e8d0532113f7da5522d9ac69963d97fcb20b75 GIT binary patch literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^Gl4jOgBeKLrmBAdQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;r&HeOqBkg+zJh$em z>|DJ$=BQWD>gr8jBYn$M_I9lBn{?-E|A}o?J5#n6RLkx?`02{8b?42OSA|c0d-ZGJ zq*CU{*6K{6T_Fs@@zWK|i@Wp1H#xtJl-e&yQc{!){eLdh!IOL@C3zWncD?it^U^ftda(W_v%%73s=sT}TxU;v!)>N{Yfp;h zY=%HpNe3TKHi6(tj7O%VFc{+Ie%U`^YS5`Eix_-Xs4#bEo@7We+Egkdb~x?sbLIz2 z?%I5Mk#qmHW8dpD%A4lCh-lZe-qaYLEN^0ebja9TEd68=aXMd|C}@L z_nT>F<}SPcVpE#k$?8qroE6U3az8yzXV!Z literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response-members.html new file mode 100644 index 0000000..2864cf0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUUpdatePermissionResponse Member List
+
+ + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response.html new file mode 100644 index 0000000..cca0313 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response.html @@ -0,0 +1,157 @@ + + + + + + + +Sparkle: SUUpdatePermissionResponse Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUUpdatePermissionResponse Class Reference
+
+
+ +

This class represents a response for permission to check updates. + More...

+ +

#import <SUUpdatePermissionResponse.h>

+
+Inheritance diagram for SUUpdatePermissionResponse:
+
+
+ +
+ + + + + + + +

+Instance Methods

(instancetype) - initWithAutomaticUpdateChecks:sendSystemProfile:
 Initializes a new update permission response instance. More...
 
+(instancetype) - NS_UNAVAILABLE
 
+ + + + + + + +

+Properties

+BOOL automaticUpdateChecks
 A read-only property indicating whether automatic update checks are allowed or not.
 
+BOOL sendSystemProfile
 A read-only property indicating if system profile should be sent or not.
 
+

Detailed Description

+

This class represents a response for permission to check updates.

+

Method Documentation

+ +

◆ initWithAutomaticUpdateChecks:sendSystemProfile:

+ +
+
+ + + + + + + + + + + + + + + + + + +
- (instancetype) initWithAutomaticUpdateChecks: (BOOL) automaticUpdateChecks
sendSystemProfile:(BOOL) sendSystemProfile 
+
+ +

Initializes a new update permission response instance.

+
Parameters
+ + + +
automaticUpdateChecksFlag for whether to allow automatic update checks.
sendSystemProfileFlag for if system profile information should be sent to the server hosting the appcast.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_permission_response.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f6923a16c3071748d6b260f521a0eccea53b1d GIT binary patch literal 1002 zcmeAS@N?(olHy`uVBq!ia0y~yV5|VL12~w0q{``e)j&!jz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opr_+PHn4KmqdAQ+`YNmzL9u-T0N2(_q1@t}n zS}Ht?9x!~o%q(~Nc#`ehGwh!?hp(@=f7R~e>wxJKRA0JZ(|y1EH+xabk2e*CvGN{4 z&9i@)h0KFsWX9>>o2eV*(!?|y#jf7Qd&l09#ozSr}6WEw^1CvRr1%WiuoZh!PrOO|t->&(OJmGquh7NqtVPx_*L{K^ki zquH{dS4#gp@80fu45(z?;p`V3@0VRk`^v7nE_GJu!`okGboKQAa4nL~nmH@CVwuY< zYw08TA@xgsWF39g67I|9S=D@3@;>KQ>3K_|c=l;Oo?eu}q!GS<#WC}Rw`z@@RhPDv zPX5|joV{n}w92RRnRS^@Wbco?rIIOMFMgl@>YLSb&pt@=+2*-d=znSmd&l%8^M4-D z{?<8t3BS-I)t4z}suVo;7q$KH-}CUdk==9^&szsHCG|boKTloiHfbAB2_j$>j(AUE zF8`>x)I`p$#!Iu8{lM}aj6G*oFmrrlcwW4lH?QsrV@pND=bi1g+kOVJ3p`?s={PES zpizMTfkOv-fx;1H3!s<`P&F`~7}%X`8kiO3z|sfamhJB4bzle(jAOtiPe40Ry28~< zlb7SbjULMuH0yRu_)+rz>E+*Q?{_zwx)+-_h@R~Y-7Rm;yyuzKqv(gxNB1W`>^&zg zeE%;)aL~Q&=Q%%GXwQC>ckZtH>h#k!#V>PbpXHA&HT(W*+SRS6r_S2<E5n6 zKk|C>kNB_ZGTCkN{fPO}WxKWK&R%~ZOlPx1e0^bU>YD8)UyfXVdGBQM=dX1?%zStM zcl^^P#lK`0%ld!o#XItP + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
SUUpdateValidator Member List
+
+
+ +

This is the complete list of members for SUUpdateValidator, including all inherited members.

+ + + + +
initWithDownloadPath:signatures:host: (defined in SUUpdateValidator)SUUpdateValidator
validateDownloadPathWithError: (defined in SUUpdateValidator)SUUpdateValidator
validateWithUpdateDirectory:error: (defined in SUUpdateValidator)SUUpdateValidator
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_validator.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_validator.html new file mode 100644 index 0000000..9706628 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_validator.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SUUpdateValidator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
SUUpdateValidator Class Reference
+
+
+
+Inheritance diagram for SUUpdateValidator:
+
+
+ +
+ + + + + + + + +

+Instance Methods

+(instancetype) - initWithDownloadPath:signatures:host:
 
+(BOOL) - validateDownloadPathWithError:
 
+(BOOL) - validateWithUpdateDirectory:error:
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_validator.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_s_u_update_validator.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1924b5922f0014c2100acfbb9c98470dc7af50 GIT binary patch literal 517 zcmeAS@N?(olHy`uVBq!ia0vp^Wk4Lj!3-pS_Y`sfDTx4|5ZC|z{{xvX-h3_XKQsZz z0^DV{ElAr*{o=ia^aN`c2UJnzo?|HtNw zW;8a19Y0{HYB*XUacP-th1mx;bh!O_`?BMDdfWlE zLw;Jko~yoy<|wJ0S3dSTY|-)`+ci~PC*7)ImwtS1_%z;x-8 zT25)@bJ;P;&eJOsy02xq{9dwERrLB*@eKZ@Z&L2x`gZ?zn)>p4lb3AU_i1X?|Bn9> zzYlW0miL%6=WB6<@#cq2KSInKKF(_1dv{sE^MvRY)O@A$gsaHQRX){reb?GcfiT#%G;oBJ$rc8Oy2AA(#mefEcude0^^Lq)78&qol`;+ E0Kp*h + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
ShowInstallerProgress Member List
+
+
+ +

This is the complete list of members for ShowInstallerProgress, including all inherited members.

+ + + +
installerProgressShouldDisplayWithHost: (defined in <InstallerProgressDelegate>)<InstallerProgressDelegate>
installerProgressShouldStop (defined in <InstallerProgressDelegate>)<InstallerProgressDelegate>
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_show_installer_progress.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_show_installer_progress.html new file mode 100644 index 0000000..8c4ef91 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_show_installer_progress.html @@ -0,0 +1,102 @@ + + + + + + + +Sparkle: ShowInstallerProgress Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
ShowInstallerProgress Class Reference
+
+
+
+Inheritance diagram for ShowInstallerProgress:
+
+
+ + +<InstallerProgressDelegate> + +
+ + + + + + + +

+Additional Inherited Members

- Instance Methods inherited from <InstallerProgressDelegate>
+(void) - installerProgressShouldDisplayWithHost:
 
+(void) - installerProgressShouldStop
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_show_installer_progress.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_show_installer_progress.png new file mode 100644 index 0000000000000000000000000000000000000000..58adadb2e8e3feaa2b1866ebd1f2207d3174899c GIT binary patch literal 1427 zcmeAS@N?(olHy`uVBq!ia0y~yU`znAJ2;qu=BDn`uS#xDSkeeob$(LU=}m6kw^LVC=o!{pPH~vN z#Qt-1)B0Um8>X>bWLbY}^PjU1Q;+Xg+2PNp`jbzvMq$UZ3D-sb_dQU`D82r)-T7el z-P>V%r;GegVOif~e)OF}lleheK^;&2m4P>v(?u`Qnjc#H4L43GoN#$6B*^Pf`YQWjGH`dg8$`O~oDLAEVU|rUcDm zZg}v^nwf>ct|fuN{@il|o(FCmY#)+8O1ClY;W)^!t|gAa-N~RqSyAG^L;;=$9vo~1 zDlE(vLQRZ7(-?qZL8mLey?b8eeJqcA?tAd$nO|$?>aR`w@TuYP*R-^9iRE`@)!q0% z@4=%@R(H)*G9UaGukoKa^X9z5Q}!Y;G1E+=?&vumE$)1IdLhd$U}#l0T^35u-V&>< z_rB|aOygZg*fje-?=OcT`|WXiE2{cemdeKb!cV=&fVdiR9VW z3O0xFfBt9;i+^2D{f{mz^0kM3Uj;X{&oW)sv2knvo3p#?;|or1yPD~J>c0v5`{3oO z*|*~!gndvuH2LNR*`B|PWnyZl8BLe=PT0;gBi<#PSM}w287?~?!JTvBy=&q>yB{ol zQ1$f2)oI%IYo}*!6TUwC>FrsOx9wI?-p^Pe+6c+Sa9UQ*m1@1^O> zbfD(U=No7V{8MUE@y&gPHf7sCFE!UTiS9PNK_13>ztX?lz{f^OXpPuU#=g{4va}sWNY|*WLr?jKmz4G6U()Wvh z?o$dc{;;tnZ^^n%;&+}u_*<2HJ+?buz2eG@gd15gVH0(2qI=hr?@-+l^E+5`k$%x% zMfI!aE}j*+XuVgvqGH;855eP2{4%yD4sK`7SF&;3&-muYE~V|J1=hXSlD59_s_4I7 zuD>>|$?Dp!It^C_i_h1s+Y=hpZ$67_INp-bkbW|g@j)b(91SfF7}WnU&-(e{$Cdd> Re}E+@gQu&X%Q~loCIFa>lOzBD literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener-members.html new file mode 100644 index 0000000..d644770 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TerminationListener Member List
+
+
+ +

This is the complete list of members for TerminationListener, including all inherited members.

+ + + + +
initWithProcessIdentifier: (defined in TerminationListener)TerminationListener
startListeningWithCompletion: (defined in TerminationListener)TerminationListener
terminated (defined in TerminationListener)TerminationListener
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener.html new file mode 100644 index 0000000..78c86e5 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: TerminationListener Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
Sparkle +  2.0.0 +
+
A software update framework for macOS
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
TerminationListener Class Reference
+
+
+
+Inheritance diagram for TerminationListener:
+
+
+ +
+ + + + + + +

+Instance Methods

+(instancetype) - initWithProcessIdentifier:
 
+(void) - startListeningWithCompletion:
 
+ + + +

+Properties

+BOOL terminated
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/interface_termination_listener.png new file mode 100644 index 0000000000000000000000000000000000000000..27b30573fcb89bceb61113b8ded171119e5df780 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^RX`lT!3-oHZkX5xq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgXL!0ehEy=VoqN0JumX=uf83`3|Bv?` zR^`}`oi60D{7gkN{-35t?%pf7aJDt(7o?*sqx&s(sR?g*LcqR z=~l94&z{dxvU9#`ZrL2Y{1x+Q?@8Bx_G?dnBKz;>?tA~&?dJ2Zo3g}q@5}W!wLSmY z{8}pW+J3qU@0I!Z)Aj>fEZdHlbM@l&brMz rqi?%2_grye<^kiFEi-S5{AHLH+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jazzy.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jazzy.js new file mode 100755 index 0000000..1e55d6e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jazzy.js @@ -0,0 +1,70 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jazzy.search.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jazzy.search.js new file mode 100644 index 0000000..e3d1ab9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jazzy.search.js @@ -0,0 +1,70 @@ +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
'; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
'; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jquery.min.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jquery.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/typeahead.jquery.js new file mode 100644 index 0000000..3a2d2ab --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
"); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
"); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
"); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
"); + $menu = this.menu.$node || $("
"); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/menu.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/menudata.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/menudata.js new file mode 100644 index 0000000..7eff031 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/menudata.js @@ -0,0 +1,63 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"f",url:"functions.html#index_f"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"v",url:"functions.html#index_v"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"n",url:"functions_func.html#index_n"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"u",url:"functions_func.html#index_u"}, +{text:"v",url:"functions_func.html#index_v"}]}, +{text:"Properties",url:"functions_prop.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/nav_f.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/nav_g.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <InstallerProgressDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <InstallerProgressDelegate>, including all inherited members.

    + + + +
    installerProgressShouldDisplayWithHost: (defined in <InstallerProgressDelegate>)<InstallerProgressDelegate>
    installerProgressShouldStop (defined in <InstallerProgressDelegate>)<InstallerProgressDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_installer_progress_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_installer_progress_delegate-p.html new file mode 100644 index 0000000..e383859 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_installer_progress_delegate-p.html @@ -0,0 +1,102 @@ + + + + + + + +Sparkle: <InstallerProgressDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <InstallerProgressDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <InstallerProgressDelegate>:
    +
    +
    + + +ShowInstallerProgress + +
    + + + + + + +

    +Instance Methods

    +(void) - installerProgressShouldDisplayWithHost:
     
    +(void) - installerProgressShouldStop
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_installer_progress_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_installer_progress_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..259bf7fd504feb966fb2472c0af6a0b93af8ec8b GIT binary patch literal 1008 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~*L%7+hEy=Vo%{CEW-AWY@PcJ`{>#d* zeHLB2=IC~H6=%ry7gN7+SQVuajQ!HZuB)< zKlgLK(r4N1BVH9>T|&2Bd>^44_GRK?%Y4@-5-(Fb9)^ehjo2P}Uwyg2F`g4^UJK`( z59Hlmn7?USzP(zO@O9a1Q&hfZ(dzEEVsEz>#zwA|y4{(5S>j)6 zO!2<3$*cJP)PMTwRDbs^^LNMj|L+@>zFX73z)m(iG}PE~^{Q2S=Y)n{jWf>XQ0!4; zsNT!KcF|$Y`s)@Om^YqVari*rkyo`04>&Eg8}`l-JrH+}D?vYHX2TV{m+k0O9`ORs?YkeC|XZiM>DZjoy$<~^8L3s8j-Pe1z z?238zQhQTgVdR@j2j6GjiMT#{>5si~)BaA8Ge7+72J^M=yprrL zGV8k^_u;y|HJc0N9*5qU7w>jHN-ch)M1$MX#lhF!ZP1nKG?*3seQAd3vOjN*p4Q%+ z-EVqt_hjbVai-aPr&D+I9xuFG?K$(kPo z+3D{e*VvwDT&r+>m)>uO!?(URW@+y3*8jGKf6d$%Tlg6wUTiyV&$Bl2wGHcz72Ivl z3jhAd|Gw*?uqDHX7HBxFU;4I9;E({*hU?r30=!3lRrNAk3%u^J;(6n-<{mr4yb1Wi z5Iu;OWzIVDb=I;>Bk{={Cj^SZ1O=-tS9f&m?TbA8Cz4HYV%*!Jf41jmojrQFQCe`~ zX{(f4>-XpP9^I9$p!8|sxybvEr6!kWBrSM;v`GEkG4YRb+s=NycS$Gmt1Dk}TVVEN@O1TaS?83{1OV5?^4I_X literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p-members.html new file mode 100644 index 0000000..bb83719 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUBasicUpdateDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUBasicUpdateDriverDelegate>, including all inherited members.

    + + + + +
    basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
    basicDriverDidFinishLoadingAppcast (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
    basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p.html new file mode 100644 index 0000000..d66e2fc --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: <SPUBasicUpdateDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUBasicUpdateDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUBasicUpdateDriverDelegate>:
    +
    +
    + + +SPUCoreBasedUpdateDriver() +SPUProbingUpdateDriver() + +
    + + + + + + + + +

    +Instance Methods

    +(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain:
     
    +(void) - basicDriverIsRequestingAbortUpdateWithError:
     
    +(void) - basicDriverDidFinishLoadingAppcast
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_basic_update_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0913bd54158034ebec38c665dd4f28028b46e7 GIT binary patch literal 1525 zcmb`HX;4#F6vtm!9I#TEp;{yYS}prx$qTqJEOjAhA6h~RD2SsZA|KTO*DL9A-poiX$9#Mz~02p5h+~*&Xf>D>KnYB*lYx?dxozv4V);K$CVZ=Tk z5l{J)CxvVgc6q!pUbJl8v2Fn~ShP-~q5H#1RqHlLqZul&qc6-7SWRgu{5I7}etB)x zz|a!cMh00?@yfbkLnZSJ#}Uizkb7w~W-_C*e?Dz;+|<_WmNpSy7&p42O>X0Ls#X@z z49ji<***!y#d8}W)+2tkAcA@jRiQg{NBXc~m0Su^pH@&XXAilB|ME!8%KTzD8K0hh z8VbF^M6X~yrUGeBy6@;-BrMcqdZIL2f=p8CtJ#yW28+8muF{&lcFwfd^Bw0{gHU27a*4phBHO+kTO z#)P-coRRrvn!)wXZl*Wp_X9AnirH?u#am`%ZbLIL$pbN00$||DHV8n!DPxvk;g`by z2;te?|B_HTdHhdi2?t*tw~uV8Di36=DVhn+=f#C~mMn<+OxgHj&I7J`XPDxO4bAwJ ziZ2Nh)#re5w3kw?w&w86MeQSyS1~Rcwb%Nn(i_Us+HO_c=6;?q*T64uj)OydWq~sI_k-cT56d&eP?0sIZqOtCEbm! zTSTM24|s{y_V|^t*rT3fljTl53VAO(!j&4lR6O6_`=vW{r);&zc3f0m_Ue`tTnKIm zUoTT9@3G9_oux%5L?J(5_@;yT4Q|A`cFc2vg>dUkBtptHEX#i%h9n1X*1AKv2Efc( ztp_mXo8D3#-g+4L?Hy>>HVeO4G?}d*^Fw&LzfSSCX)qe}QEJUN?~8pvVT=>M&l%py z$auChcX+umF5*|NBGLiR<*JNn9=K2PKrZ*k09Y(WYl}h|dUeL?=hCF576xa-1`5Tj zv635}M^(w7a6wDOg_o1HzAwTdEJk;kAgLJgG4IGkQlG2;K9AJn&ft!<_;w|A5qnCw zg##?O-eB6Sxv^#@Z|oK zbQgq0B}tYIrJL=W)1mew^XUqT&BGK2o{Ls(Tl8&~CVMWi>v;4yt3MMt`Qm(iY4#X_ zn02a95DIS;ZH|z{KZ`C{Y|2dTn;{R>qWWV0qyT*i_zZS(Ma!j2#ODk!YvT7*H$n=c z#epW|ac|OYq3vmb2aKb3)1WEOd3lzgLpVu}sY%@shFf$8SGEgFX#x=b9A6m$N+VJ{ zE3bmsyJJLn^>Iut^EkIAdwdij4839mPDu{I^RjrwME8`Ojod_TdtMn+E<& + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUCoreBasedUpdateDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUCoreBasedUpdateDriverDelegate>, including all inherited members.

    + + + + + + + + + + + + + + +
    basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    basicDriverDidFinishLoadingAppcast (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    coreDriverDidStartExtractingUpdate (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    downloadDriverDidReceiveDataOfLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    downloadDriverDidReceiveExpectedContentLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    downloadDriverWillBeginDownload (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerDidExtractUpdateWithProgress: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerDidStartInstalling (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerIsSendingAppTerminationSignal (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_core_based_update_driver_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_core_based_update_driver_delegate-p.html new file mode 100644 index 0000000..79c435f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_core_based_update_driver_delegate-p.html @@ -0,0 +1,136 @@ + + + + + + + +Sparkle: <SPUCoreBasedUpdateDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUCoreBasedUpdateDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUCoreBasedUpdateDriverDelegate>:
    +
    +
    + + +SPUAutomaticUpdateDriver() +SPUUIBasedUpdateDriver() + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    +(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:
     
    +(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
     
    +(void) - coreDriverIsRequestingAbortUpdateWithError:
     
    +(void) - basicDriverIsRequestingAbortUpdateWithError:
     
    +(void) - basicDriverDidFinishLoadingAppcast
     
    +(void) - downloadDriverWillBeginDownload
     
    +(void) - downloadDriverDidReceiveExpectedContentLength:
     
    +(void) - downloadDriverDidReceiveDataOfLength:
     
    +(void) - coreDriverDidStartExtractingUpdate
     
    +(void) - installerDidStartInstalling
     
    +(void) - installerDidExtractUpdateWithProgress:
     
    +(void) - installerIsSendingAppTerminationSignal
     
    +(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_core_based_update_driver_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_core_based_update_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa657cf7b1aeb21d6b54201f4ab1b45ec5604f4 GIT binary patch literal 1591 zcmb`HdoLg!p@jf z*pZPtp&<%8nE5I9h8bls6o$+}vxC`R``=#v*t2KfbKd8D-pltq=XpQRd9u&CyJ)ED zsR96?fp&HB1ONpQnm$onKr_$bFFqd4J4~jt-@4fdRBt ziT8BJ0??yRW26sf0jYmMJDtKMDJaGQ?wlLPq{tD^mP}N#E=`A#&q6|N#T~nwVo|=ky7*3 z5XbpBBJ}p=E?nmH88_(kvttDd4aX28f&qrlS_xh$7OhEnh#m^7@vUXk4ch%B9>qWN zgJvc7gX22yn=+O#@Bh>uk7g#v5N^#JpVujDKB&Tv2rn2S}^0;p7c+PoloRbA^K zNja-uScg>Xa;7VoryWvEccCl1FaiNcm$u>x|2nBu*AO|VuBA^>R>`&eAFlgD_h(Gm zKtJmiZvNLW4D;o7=?a+_C{j+#7}j~f*_zzLgh$7Dquz6(Tqg8dCd|QZuc^bbcUckl z73M!&69qpa%3R?c*xz976}DbO!|TLKQ+wg*5r<%0NZ)Ar%heeDa2xK+yVSB#R;_-s zju*Y~Fx+;0w6&FgC1{INpmJM6y|%@zd&z>MG3Fy^lUVqY~$T$(Sx`;9mvC^I=397=#q~b-(BayMh4bp^5e4wJ~&i8&U2paju$0V%()DkX%>MMma~8 z4kT11TQANCmV&`9-r}y9h{>Lm(3t2sVJd%)xmhQQs66UZ&X8q@$~iHXFgpp2rm^qd zsoXIEm=ZeRZsl{Nwo*EO=gsTFCeOg$#^)@D15wh6(Etwd1j}UZJ8e$nB-q9#`fMdy z85FI~Syi97UHLxsLJ4a9?`@ z5GDx~GKimatl{;>P6L~ceODbJg4vr&ARbRJf(+D5{sc1-oIZK8;NdIe&FLiFZ3WrD W>f7w}<1(nr189`HQ + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUDownloadDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUDownloadDriverDelegate>, including all inherited members.

    + + + + + + + +
    downloadDriverDidDownloadData: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidDownloadUpdate: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidFailToDownloadFileWithError: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidReceiveDataOfLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidReceiveExpectedContentLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverWillBeginDownload (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_download_driver_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_download_driver_delegate-p.html new file mode 100644 index 0000000..456dd90 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_download_driver_delegate-p.html @@ -0,0 +1,116 @@ + + + + + + + +Sparkle: <SPUDownloadDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUDownloadDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUDownloadDriverDelegate>:
    +
    +
    + + +SPUCoreBasedUpdateDriver() +SPUReleaseNotesDriver +SUAppcastDriver() + +
    + + + + + + + + + + + + + + +

    +Instance Methods

    +(void) - downloadDriverDidFailToDownloadFileWithError:
     
    +(void) - downloadDriverWillBeginDownload
     
    +(void) - downloadDriverDidDownloadUpdate:
     
    +(void) - downloadDriverDidDownloadData:
     
    +(void) - downloadDriverDidReceiveExpectedContentLength:
     
    +(void) - downloadDriverDidReceiveDataOfLength:
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_download_driver_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_download_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ca4903d82c78ae46b368799e5e12a8e4dd9b0 GIT binary patch literal 1988 zcmcgtZBSEJ8je(u4WhVhSwJdQT)MJ_DilF60Tu#5NpO;Tsfh&?+1RE5gc80&2unu+ zEriHGgf!@OBQ!SI8$m!IYycRS*uMcs=igtYz>~|_7yz@iwFSeOIU}9@ zT?LG`p9c>f*p`laz)Sl~0-lI~N!FqK9`HjTb`hf^!hoC|devs!de3j8v<-6die+K# zo57*#B6~x2k%rxovR<9+*ICKZvXAbTFFp+|EO+Tmch_*Sw%z-L2Sfc2y}k33NI?-| zpagKbgRop zuO>!*8UZ@ddx>HDAEoF217qsrc@xiNI#6fZa_%yLepfARtp6sdCpn)}KY=7y7o z&j;W4rc8ewP(HC{!$IavNE`8lukuNA%uWK+(s(zIB!biY&`975$UiozPD{O$guvpi z+yK#g$0*^>*KuXfzInJBSS3z(f5a^T2KP5l8wpJO9zIy(=3z^_N$bey7)<`jnj;c| zIUDAoAh?VtA*_&Mjv{Q19JLmeLBK>%xhxdE*>>j~q|Jxhln8J8!7nemT+6nzF^9Xq z8(QdW-MKz-EH11tavSb#NP9IdhF3M=4EpzsTkhP!(%>e-2Vz z`;IX6iP5+vf?_bVH8VdJZ=|4U>W%g8uG|7$CY_$H98KysB?^k_NHlzdS;eI;T}tJP z<1^dcy*9jXS#{(PNsbY!G#VGO0Q<$Qi(;IpHwtr0)LRbNab@&bUHdaxyl{$}ij~eU z`P~JhuOj$Y@UQ$%NOs3Y(}xVz0I}vgmhp;FU>qW6pXhEoB6Pa*=13LQ=LeJ!FAEg) zWfOeX6OG*|@$43%$mx!!FR6wq#|iDmFDUB&%F9;v=?N*Y%xBAw7(|;?A0@=YX+%9!61IlOI%mds&y=YpO9SRZZ?8luNF-& zv`l`LNVO*}0)88)IQ{=~Nym$vQwQXRoKsmlyZl+x8~DS6w$ZjL7(tOQ_E&(5PQ`NV zBF}vzl==gJ<~WOcQ6>&*|ujv z=_3gtep099G{0nB84yA9E!ETnU6W%lnWhm!V-vdwsMdqT?2wp;O^=UXD)3YW#)iBV z3MzeLPt)IdvN+?uN+g0(O6L>^zWygi7l*7@B-Op1a;QngRq69vb(CD=O8=zhrT<13 zt03*!vT1CXpxUHO9qA{^kkhC1eBtc_j6W1YP<#T1+AZoYUIs=C{mYv)wA7mN+cC@h z8MIb)L-n$n>LT9wgm|DN@zutIgoV+8l_t02+n$9u4NEPcs5s9&?=xIrPQnqWXf>IF$M(^|eXGTr&W3QEfqqxT(mXVDBc6 z4PW>w%(^Nn$*UL|yH~3P&&4+7f=ZNFKpuF}12p8nA6Q}f{NwRXAEmj!wE-7&eqTa` zj*>k48^zyL$jihME*s?p>w{LDp-VYwJ(b{#S<}zGoI4|}nt6U&T3I*gkbRfTntz?q z>S}fs&PTS@ewU{U9$l@s;I37F5eMp*1i%JoPP~f$cl866x^;Qa<^CyR!hFDU(J14w zvH}cmGWiI_UXnMT>V+XL)|vx%$v(!idv)Yx2x8FMWGQ^~?L@a>?NA+Za`e@SlD^Nm zNqOt`$3IeVkE2q;NxRoqR + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUInstallerAgentProtocol> Member List
    +
    +
    + +

    This is the complete list of members for <SPUInstallerAgentProtocol>, including all inherited members.

    + + + + + + + +
    registerApplicationBundlePath:reply: (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    registerInstallationInfoData: (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    relaunchApplication (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    sendTerminationSignal (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    showProgress (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    stopProgress (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_agent_protocol-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_agent_protocol-p.html new file mode 100644 index 0000000..edf2e98 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_agent_protocol-p.html @@ -0,0 +1,114 @@ + + + + + + + +Sparkle: <SPUInstallerAgentProtocol> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUInstallerAgentProtocol> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUInstallerAgentProtocol>:
    +
    +
    + + +InstallerProgressAppController() + +
    + + + + + + + + + + + + + + +

    +Instance Methods

    +(void) - registerApplicationBundlePath:reply:
     
    +(void) - registerInstallationInfoData:
     
    +(void) - sendTerminationSignal
     
    +(void) - showProgress
     
    +(void) - stopProgress
     
    +(void) - relaunchApplication
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_agent_protocol-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_agent_protocol-p.png new file mode 100644 index 0000000000000000000000000000000000000000..ba75681cf2985dec7ff376d31086b39b04cd4de7 GIT binary patch literal 795 zcmeAS@N?(olHy`uVBq!ia0vp^hk!VMgBeKHOpNjdQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;CEhI+5O!=7#qeKD&2_;Z7tsW5PBurUN;=0`q3q?zesa`%6|`O@2*I zZ_4MnpTl*2J$B}n53Q`1ObmH?BJeOlf6AP*ZdNW8`T8RJxxZH5^LSXG>A$38yNLQEehudj@&1+*8T_t?a@TSu zPH}DU|FTwV$210u==dC!2JI~Z3~AYl3}>#jCG;3>7dx=Eis4T5clQdLyz>S1Exixk z@%(2zWHpiD8Ca1M!;H1932T z$!}WRik>&#|NqfOLtvG#rnJ{@BinC(UW(U=e=_5?-d3qpDxmT*c<-m+iEr{etHReh zhfcB!+{do6a;<&OgVQ>m%5z&D{QmI9ZPJqW*@_;Qa=_ujdoU_He{FsF3ymqN7rwp# Prep?BS3j3^P6 + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUInstallerDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUInstallerDriverDelegate>, including all inherited members.

    + + + + + + + + + + +
    installerDidExtractUpdateWithProgress: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidFailToApplyDeltaUpdate (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidStartExtracting (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidStartInstalling (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerIsRequestingAbortInstallWithError: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerIsSendingAppTerminationSignal (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerWillFinishInstallationAndRelaunch: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_driver_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_driver_delegate-p.html new file mode 100644 index 0000000..68efcd7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_driver_delegate-p.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: <SPUInstallerDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUInstallerDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUInstallerDriverDelegate>:
    +
    +
    + + +SPUCoreBasedUpdateDriver() + +
    + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    +(void) - installerDidStartInstalling
     
    +(void) - installerDidStartExtracting
     
    +(void) - installerDidExtractUpdateWithProgress:
     
    +(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
     
    +(void) - installerIsSendingAppTerminationSignal
     
    +(void) - installerWillFinishInstallationAndRelaunch:
     
    +(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
     
    +(void) - installerIsRequestingAbortInstallWithError:
     
    +(void) - installerDidFailToApplyDeltaUpdate
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_driver_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_installer_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..0e2b043a9001ac09d6dab87b71c046f77efc76a5 GIT binary patch literal 1045 zcmeAS@N?(olHy`uVBq!ia0vp^+km)(gBeKH#yxxuq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0mw383hEy=Vo%_1)kpYjJe+=jT|I+!2 zXKj~mX0GVGrffH>d!xVX@z2u*oFe>LLa$zZa%0u1u%evMQ0={p)>b>}@2{_zBh!5N zyTGHbGx87kwanZiyJA(@FRnK(Gi;{HypQg*d;0&MNBg2xzpVFm{B1bV>8l#F;qhsi z^;c}-l-C3RiQT4tV`o=f=b!2~B4$FNqDDviwr|Zs?`}cOipHwIJuE=&667pK<_YUTbeaYm61N+ z)yJEldYo;;BoyfeH^r6>^Een*!*ob(l>h!E!+^i}hv|%~i}Q^CZrg6N-Ey(9j z)LzcFKU#OJFzGYj8_R!r(&^s||9QE&e|pEaxPQm@8B3FA-+mJ8d%JLZOUC)s19qz( zi+R}8Ro-|*$t)irgy?=Aay$?es(*_%&J-cu8HJM=@1mU7v>)oHe6xyFa(_Q*@L znnss=PY%*4-E_%N?9D4v_BYCBt~`s#ahvNl3V1|9a>m~Q5qwEFHh zkzH5#w$}F62Hy6aKI8nXtKr$ZU*CSbM|aZWw&{L>eyitXb=M|+UNZT}v(k&64EvnJ z1L8aG&M`gUa(~9#jcN>1wV4wcY+xZ)^8Pt6G-ff_EtNh{6(#(;EP7J4@0+<*uJ2qo z?w!nV0~SUELlqS04vTYdZ{vTtE%){}$&H;IYt)X532vN}+}#neGNJwN`wE+R{adq~ zU6urI5*3`8d0#v4)z!i)6;_`keT>RJ-M3F~l>Y9&<3H2yL&1;p4%i*`m+Z{`e)XHn zr7)|x$(MGl3}5W~(`wO?z<;rCe?~}exXd{xN!-0M=61^Vt4qu@fB)t8nsTakYaF|; z#n-8Gu6^r>4GB+?{(W+`YJd8T;NSbAZuTCYiiucpfbB|+ge?RVc zrF7DxvKK0aD?eXh4s$%89qsbOc-O0wN=o6g%p3$Ko_}e7Y~J5ualuIUK3%0GRZuWo h>e~wpoH_p(el}0ce<>vX515A;JYD@<);T3K0RRqY3J?GQ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p-members.html new file mode 100644 index 0000000..95a99cd --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUResumableUpdate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUResumableUpdate>, including all inherited members.

    + + + +
    secondaryUpdateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
    updateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p.html new file mode 100644 index 0000000..6915d5a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: <SPUResumableUpdate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUResumableUpdate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUResumableUpdate>:
    +
    +
    + + +SPUDownloadedUpdate +SPUInformationalUpdate + +
    + + + + + + +

    +Properties

    +SUAppcastItemupdateItem
     
    +SUAppcastItemsecondaryUpdateItem
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_resumable_update-p.png new file mode 100644 index 0000000000000000000000000000000000000000..cd637d7993faf994693fdc561cdb6efdd4ef3ace GIT binary patch literal 1314 zcmeAS@N?(olHy`uVBq!ia0y~yU^D}=J2;quWYkr2Eg&Tk;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z_QWP#WAFU@$KBV(-v6?xSAi0y7qhj z$Izc1O^&vAzr|cJe$3`{Y2l5KpnAr*QwBVTKQdUDIHx_kxMABFAIa>~XQpg~F@8Ga zUY3vPn?A|h^jUZ1y4jjv(-~x>{!SHhUcK_0l5uhK)>xS{ZPWJaSeCtudZYWZ+)~$b z=FFcm^2^?8CHk&O?G($Md?qrp_|lo$DchmO#NZx`F-Wx$osyxS7kou`OuMnwaop#>f2>YVs1^pZE39&D;kC&}_`s{XQbo0L5+pj9+$(CLDHh25t)6KI|*e!H6 zH(Fg#O8kAyHU4#hq@nK4qTP31WJFu9t_oJSK9HEXd2QsB>h7(x!_1>*@x1xI{qQ}5 z+tU`zzi8(0lQ-c1zP$YCyHjm*Z{G{M6vTN-Y45eGzN)&D?}S`>c`Z6TsKNf}Pxr{# zTN(ebWi$V9Uc>8f>=r``l)C3|8<@5pGW-zpV_(=?q&-Ia3T2Lq7fKy3tl@3%&+qB5klMPf zqhoPmuArdNH8DZOWEdkjTl(DpXP3X$>B zvwq^ctnB48?v+)2487~S=JtuD47Vp0q`_nJKa^KpQ$$dUf^=KkMeDP)ps-8{@J6!|lDgN{{?A#gkoJ`uBp^{gqk{+1(w_ z(m|nm{EC?1#~J?vqg{?TuhCU + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUStandardUserDriverDelegate> Member List
    +
    + + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_standard_user_driver_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_standard_user_driver_delegate-p.html new file mode 100644 index 0000000..976f8b5 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_standard_user_driver_delegate-p.html @@ -0,0 +1,141 @@ + + + + + + + +Sparkle: <SPUStandardUserDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUStandardUserDriverDelegate> Protocol Reference
    +
    +
    + +

    A protocol for Sparkle's standard user driver's delegate. + More...

    + +

    #import <SPUStandardUserDriverDelegate.h>

    +
    +Inheritance diagram for <SPUStandardUserDriverDelegate>:
    +
    +
    + +
    + + + + + + + + + + + +

    +Instance Methods

    +(void) - standardUserDriverWillShowModalAlert
     Called before showing a modal alert window, to give the opportunity to hide attached windows that may get in the way.
     
    +(void) - standardUserDriverDidShowModalAlert
     Called after showing a modal alert window, to give the opportunity to hide attached windows that may get in the way.
     
    (_Nullable id< SUVersionDisplay >) - standardUserDriverRequestsVersionDisplayer
     Returns an object that formats version numbers for display to the user. More...
     
    +

    Detailed Description

    +

    A protocol for Sparkle's standard user driver's delegate.

    +

    This includes methods related to UI interactions

    +

    Method Documentation

    + +

    ◆ standardUserDriverRequestsVersionDisplayer

    + +
    +
    + + + + + +
    + + + + + + + +
    - (_Nullable id <SUVersionDisplay>) standardUserDriverRequestsVersionDisplayer
    +
    +optional
    +
    + +

    Returns an object that formats version numbers for display to the user.

    +

    If you don't implement this method or return nil, the standard version formatter will be used.

    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_standard_user_driver_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_standard_user_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..be4fca4f7609c9dcd62a1d94f2ece88428903716 GIT binary patch literal 736 zcmeAS@N?(olHy`uVBq!ia0vp^SAjTygBeKfe0<;*kdg@S332`Z|38rV;?396{zDUh zEHFNB-~emq9eE&^qa?^Lm;tB=1g@S6F=Aj~%J+0}45?szJNNFSCkh;H{N`tW@Bdhq z)RW-zE&a{Rql>iSw+AkgaopqTl47a2YE`%9%8<}x4G@uG7dkWl_ua0*N=vEZLDNN- z=f7cJp>=@sk@TunbCm)@8>|YuFI2BMboE7Uz3GxwtBOsgXMO+3<9&9&TWAD-(sy(5 z9JQ%u_f{>~6~VjWoXFf0rv0m`LS@WenlI5}Ju;uz0fnwfTncT(;|JP8f{}h42a>$B8YDn?SHN4* zCo6h>|M-}EpYc17)&1D#%NhJiKiyuhZ&n_*o$u$nSEnA^KbW_FSyj>JW6xfPl$ZSG zle51)J#~Xm;hQ)Af_C}LIPc%>IP=YnC9}#VOUyR*e6=C+qD6^w>5_XBPJNNjeslTe zwam0#0=JTRt%}VzZ_i9#X8LBkXRX_DQ@!V_zU^i)p2zU$>ES!PalX1!w@L<9n$McA zd%5TI--RzO?>-lB=-&H$?X3oQMTvVJN7e`Y)bql zd@rasr>3muQ8n8Wq1Cs3>WAbp-(ART*nfVV*s0UA_Xq7OS-0!=s_Ojj5t^2{#lEgq zfl*E~buvy~2zpjj;%>%ox + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUIBasedUpdateDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUIBasedUpdateDriverDelegate>, including all inherited members.

    + + + + + + +
    basicDriverDidFinishLoadingAppcast (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    uiDriverDidShowUpdate (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    uiDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_u_i_based_update_driver_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_u_i_based_update_driver_delegate-p.html new file mode 100644 index 0000000..5e780b3 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_u_i_based_update_driver_delegate-p.html @@ -0,0 +1,112 @@ + + + + + + + +Sparkle: <SPUUIBasedUpdateDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUIBasedUpdateDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUUIBasedUpdateDriverDelegate>:
    +
    +
    + + +SPUScheduledUpdateDriver() +SPUUserInitiatedUpdateDriver() + +
    + + + + + + + + + + + + +

    +Instance Methods

    +(void) - basicDriverIsRequestingAbortUpdateWithError:
     
    +(void) - coreDriverIsRequestingAbortUpdateWithError:
     
    +(void) - uiDriverIsRequestingAbortUpdateWithError:
     
    +(void) - uiDriverDidShowUpdate
     
    +(void) - basicDriverDidFinishLoadingAppcast
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_u_i_based_update_driver_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_u_i_based_update_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..fea82edff73d5ed8ea925f56792f2c1dbb1384e7 GIT binary patch literal 1550 zcmb_cX;4#F6n;Ta)M4qxh-;EN?^qT0~ zX$pg(QKn11((kP5$Wwm&xc+_A1%3Ovjw3&`HoS_icY|=2-XTUH!o7SX4w&) z%zX(jCVt}9U+#VY=byflu9>hs!)T$(5x(y4C+Se(fE!%kL~bbcDS={gqJ{&YFWl?^ z2yh@GRC!HkhzA7MNg!_Vv|rDO#A8dV=)Ysv5aA*!AuNj51mIce*9zzi&%&x?xX zsXYo(dIJ@F&dFq6|599B4QZYlAvSi8Z5(>ixTIBL+_EN}wQ`-VWccC(ia8Go8mo%H zE`L^!z$p}y6!!g;FRs4#k)Uw7*LY0^VYhvlsLh!rs(*4|M5ZGndi_#gJ>i-6SGhHW z)|96c`z#7E6U{0HSku#qQ6jmoWYeR7TnJGrcsY9O@J4+5OS48uz4d&Mp#I6FCs5EX z-{@)hkN<;dDx1d7wX(TpfZ8}d2v9RLhtEpIu1JIv%xOciZ6PkR17o$_nNuzK5doSy)e)zsyjz5Y6SkubPy zmWu8Z&8ZI|$3!tYej6d^;Bc}@2~;kW)Sj$@BtkqaTwcU>i0ayJquBSC5@EJ_-eefT zPDE6n=xZ!JG6JbjutaaBej#)EV1r_LjU5gy^Aw8Cj8*Em@-(~sFx + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUpdateDriver> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUpdateDriver>, including all inherited members.

    + + + + + + + +
    abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_update_driver-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_update_driver-p.html new file mode 100644 index 0000000..fb08441 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_update_driver-p.html @@ -0,0 +1,121 @@ + + + + + + + +Sparkle: <SPUUpdateDriver> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUpdateDriver> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUUpdateDriver>:
    +
    +
    + + +SPUAutomaticUpdateDriver +SPUProbingUpdateDriver +SPUScheduledUpdateDriver +SPUUserInitiatedUpdateDriver + +
    + + + + + + + + + + + + +

    +Instance Methods

    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - abortUpdate
     
    +(void) - abortUpdateWithError:
     
    + + + +

    +Properties

    +BOOL showingUpdate
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_update_driver-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_update_driver-p.png new file mode 100644 index 0000000000000000000000000000000000000000..520fa17dd10849c49599ca3cd5c2a9cb6f04a1f9 GIT binary patch literal 2042 zcmb_d2~bjL97i*=($(D#GfS;at*mJBs!VLtG%M6nGV@+5rZ%IzFcq-PBD%;9%{<5> zO*FLAc!sz#W@ToIhD!J{GY}Dv#AhI|51Msnnw@5LrZ@Ax_kZvE{jcBe|IMTL`FI)4 zS~v@VKp1&%^Vp3*=t^Pxtid#RrHfufI|H_=)oR!jNo4WVy34Soy=!Z0r&Hcp z!mkE#yM6o-Fi3N?zYJK1K+K?cd;AuVs52{G6sO5rGR_tZ4bObrA~p1UI(IOvF?#n(N8)~wGRMG zsTu+$ByujX5GOAnmsF=Abmk8~Og`1=#VIil<;7z)eooDSP`4yM-yaRq7M5FzmF)K6 zpG5#eF%OQls?SVD{OCG=wEIK4l$?2sG|#526&Ey_o5kJnq4?}f$V9NDcDJ@|98W1* ztm)<&6bQkzWd1U>HO0v0I5NWg)}fo9_^AjTm8ryPb1EARe z%dz}L(XuL5ZHERtTInK8Lbfa83p_Qn900&Jl^+XIE4?Bnc_6Vv&is9ShpCbidMr~5 zzw9z2()ZbGF|h*`ZIoQtn8a?TT2fIqF)%ATPSoZWo@U7kV+h5{ZJ;^O90t-z9(@|e z7+x;rq!(^TOiWxs+&*4;`e0o>|MQJut%f~fREvTkEom=pE6iHkvZ;Ns?o%rH-G&Td zFkm@o!9ew+07;P|Zpg2{XN}h5IR2&*m*UPQZA3}N#j0TS4bpno5MpsMDT%_-A`VE) zZ6h^BQKnS*4nJtF1E{ZOFwBmap`$w)4a+*AkR*)25}){LM^lGP-dD_lskJ#P`9HEw z?2sf>hjt7mR9Er`6K1F4daGyeZRKFkN-I}-8`G8m9QrcXlry5A%C3wJn-#c}Z~u{- z&c!(XV}fz@<7j@><*{h~ZE zUBn|VD-0vMUKEv`w*apy4$A+SBEqH$$MAT>UKlE8bF%WACOyrCZN+FompF^kl1w%5EDtH z?%O>FP+?AsB%sXOo}7tGiD`Xyr$3+NZ-=eu`V|0^VvSu5dlZb~nQ#>hDQ~wW7C%?C zYOpd1TFwv=V{2?F7#RU3uR(^{6Pmu2mgkIfu2HL`tOvB{MidHA)( z`xR|bK)89`ez|W?3Da|CI1TQqY>pf8TBb6jQO3~pWDj0-qJ}zPu#F4dpS)qYJtEoJ z^nE!a?Op2dz>TN4`0xRb78L6R*|{$m7b=*N2^n*!h(?>}nK-ls%Vjv8>m2+1+4T!5 zRPK+?&FJ*2u&lcvy^0gvd7h&myA|Thql$>Y=o1X4Deb&j$SsA$d_ET&X=G~{UkFP=SG*L~NsWMx8DLe7U>0-SM= znSj^4AQ~mzyjQ8>I>c?v*+8JGSOE>q&p(bw z;*& zv8BQ-EUbYk5Qt&rbqd2UGCQdVUJVN?E1Fo_;Yqa*+i*_CWycu6Q|#H;+28^Mw(qA% zF&O+ro*0!fw=fygZmpegltUi|gS7f)roTV@oG=JJF~}%~KKS^Ad$v|Z^NDBF2))s1 WDE-n`tKlCt!h5Ta2V+abpML{53m{1V literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p-members.html new file mode 100644 index 0000000..6a1c254 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUpdaterCycleDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUpdaterCycleDelegate>, including all inherited members.

    + + +
    resetUpdateCycle (defined in <SPUUpdaterCycleDelegate>)<SPUUpdaterCycleDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p.html new file mode 100644 index 0000000..2aac2f2 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: <SPUUpdaterCycleDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUpdaterCycleDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUUpdaterCycleDelegate>:
    +
    +
    + + +SPUUpdater() + +
    + + + + +

    +Instance Methods

    +(void) - resetUpdateCycle
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_cycle_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..695d0aceac3bc05d6b404f7092ab3a9c208b52d1 GIT binary patch literal 931 zcmeAS@N?(olHy`uVBq!ia0vp^8-cikgBeK9Z~8R}NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~8+p1ohEy=Vo%{OIDgz#d?TN?s{Fj#B z`h`t&i`3sLwZ79!TQ@Dq{Nc@^=)>w5TB>v>BJ`@5d06Pyr?HPKzUNj)AN!bM8^M0B z_kUW)Ju|7{~mFF z+0DJmws|qnoxL9T_E;aY%x#Tv zCm%msuu`;Mw}1YM<9DMzPJ0)=uX4WJ{oc?}X*;_;wLPJs_MOtJSKWGaY}Kl5F}=XYI_K17$@o_F;Cbh7WV1Gy=J6zSOEceibc|u!4#NgrJlw*ctpbNa z1Q^r~^)luZCNo5r9s7QDN7#hw`a4T%i(mg+Ax4TVcXBVx_cvWbZo9+D4eue1S9gpwt5#K*SS^mo8>YUzqvApSw2l#>?H*$Qp zd++eI{;I@-?a%-^z1F8);E)T$i~`0PT`zm|r{A2i+;|_C|1z8T8?SRQWZ#iEAZE_C z;V3ki@Ngf0ik_Cb@xdmY(@Bio9Vc9NZ0zXJ&C^jzIz6Ls$G>ZLYwPp1fB!mlE>OHoMp@A}FW=HLJ6OE2fF&6v}AZSg6CeNN?eE-vRJV=LP$ zV`L^@KDJ|*yUP>RW7)2ztJRNv+?y2i#Qe{?!sLpqJ87=F{`E`FfBNzJ=0)f3zuL3q zeU@v^sjZLHD|M7UH7s}87k$^oh3|)d@BUv?#RPv!f*jT@-Q97c$TV(R>demiJ(_(E U>mskH0do|Cr>mdKI;Vst0PU{I?*IS* literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p-members.html new file mode 100644 index 0000000..848e908 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p-members.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUpdaterDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUpdaterDelegate>, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    allowedChannelsForUpdater:<SPUUpdaterDelegate>
    allowedSystemProfileKeysForUpdater:<SPUUpdaterDelegate>
    bestValidUpdateInAppcast:forUpdater:<SPUUpdaterDelegate>
    decryptionPasswordForUpdater:<SPUUpdaterDelegate>
    feedParametersForUpdater:sendingSystemProfile:<SPUUpdaterDelegate>
    feedURLStringForUpdater:<SPUUpdaterDelegate>
    updater:didAbortWithError:<SPUUpdaterDelegate>
    updater:didDownloadUpdate:<SPUUpdaterDelegate>
    updater:didExtractUpdate:<SPUUpdaterDelegate>
    updater:didFindValidUpdate:<SPUUpdaterDelegate>
    updater:didFinishLoadingAppcast:<SPUUpdaterDelegate>
    updater:failedToDownloadUpdate:error:<SPUUpdaterDelegate>
    updater:shouldAllowInstallerInteractionForUpdateCheck:<SPUUpdaterDelegate>
    updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:<SPUUpdaterDelegate>
    updater:userDidSkipThisVersion:<SPUUpdaterDelegate>
    updater:willDownloadUpdate:withRequest:<SPUUpdaterDelegate>
    updater:willExtractUpdate:<SPUUpdaterDelegate>
    updater:willInstallUpdate:<SPUUpdaterDelegate>
    updater:willInstallUpdateOnQuit:immediateInstallationBlock:<SPUUpdaterDelegate>
    updater:willScheduleUpdateCheckAfterDelay:<SPUUpdaterDelegate>
    updaterDidNotFindUpdate:<SPUUpdaterDelegate>
    updaterDidNotFindUpdate:error:<SPUUpdaterDelegate>
    updaterMayCheckForUpdates:<SPUUpdaterDelegate>
    updaterShouldDownloadReleaseNotes:<SPUUpdaterDelegate>
    updaterShouldPromptForPermissionToCheckForUpdates:<SPUUpdaterDelegate>
    updaterShouldRelaunchApplication:<SPUUpdaterDelegate>
    updaterWillIdleSchedulingUpdates:<SPUUpdaterDelegate>
    updaterWillRelaunchApplication:<SPUUpdaterDelegate>
    userDidCancelDownload:<SPUUpdaterDelegate>
    versionComparatorForUpdater:<SPUUpdaterDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p.html new file mode 100644 index 0000000..2a0749d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p.html @@ -0,0 +1,1460 @@ + + + + + + + +Sparkle: <SPUUpdaterDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUpdaterDelegate> Protocol Reference
    +
    +
    + +

    Provides methods to control the behavior of an SPUUpdater object. + More...

    + +

    #import <SPUUpdaterDelegate.h>

    +
    +Inheritance diagram for <SPUUpdaterDelegate>:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    (void) - updater:willScheduleUpdateCheckAfterDelay:
     Called when a background update will be scheduled after a delay. More...
     
    (void) - updaterWillIdleSchedulingUpdates:
     Called when no updates will be scheduled in the future. More...
     
    (BOOL) - updaterMayCheckForUpdates:
     Returns whether to allow Sparkle to pop up. More...
     
    (NSArray *) - feedParametersForUpdater:sendingSystemProfile:
     Returns additional parameters to append to the appcast URL's query string. More...
     
    (NSArray *) - allowedSystemProfileKeysForUpdater:
     Returns a list of system profile keys to be appended to the appcast URL's query string. More...
     
    (nullable NSString *) - feedURLStringForUpdater:
     Returns a custom appcast URL. More...
     
    (BOOL) - updaterShouldPromptForPermissionToCheckForUpdates:
     Returns whether Sparkle should prompt the user about automatic update checks. More...
     
    (void) - updater:didFinishLoadingAppcast:
     Called after Sparkle has downloaded the appcast from the remote server. More...
     
    (NSSet< NSString * > *) - allowedChannelsForUpdater:
     Returns the set of Sparkle channels the updater is allowed to find new updates from. More...
     
    (nullable SUAppcastItem *) - bestValidUpdateInAppcast:forUpdater:
     Returns the item in the appcast corresponding to the update that should be installed. More...
     
    (void) - updater:didFindValidUpdate:
     Called when a valid update is found by the update driver. More...
     
    (void) - updaterDidNotFindUpdate:error:
     Called when a valid update is not found. More...
     
    (void) - updaterDidNotFindUpdate:
     Called when a valid update is not found. More...
     
    (void) - updater:userDidSkipThisVersion:
     Called when an update is skipped by the user. More...
     
    (BOOL) - updaterShouldDownloadReleaseNotes:
     Returns whether the release notes (if available) should be downloaded after an update is found and shown. More...
     
    (void) - updater:willDownloadUpdate:withRequest:
     Called immediately before downloading the specified update. More...
     
    (void) - updater:didDownloadUpdate:
     Called immediately after succesfull download of the specified update. More...
     
    (void) - updater:failedToDownloadUpdate:error:
     Called after the specified update failed to download. More...
     
    (void) - userDidCancelDownload:
     Called when the user clicks the cancel button while and update is being downloaded. More...
     
    (void) - updater:willExtractUpdate:
     Called immediately before extracting the specified downloaded update. More...
     
    (void) - updater:didExtractUpdate:
     Called immediately after extracting the specified downloaded update. More...
     
    (void) - updater:willInstallUpdate:
     Called immediately before installing the specified update. More...
     
    (BOOL) - updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:
     Returns whether the relaunch should be delayed in order to perform other tasks. More...
     
    (BOOL) - updaterShouldRelaunchApplication:
     Returns whether the application should be relaunched at all. More...
     
    (void) - updaterWillRelaunchApplication:
     Called immediately before relaunching. More...
     
    (nullable id< SUVersionComparison >) - versionComparatorForUpdater:
     Returns an object that compares version numbers to determine their arithmetic relation to each other. More...
     
    (BOOL) - updater:shouldAllowInstallerInteractionForUpdateCheck:
     Returns whether or not the updater should allow interaction from the installer. More...
     
    (nullable NSString *) - decryptionPasswordForUpdater:
     Returns the decryption password (if any) which is used to extract the update archive DMG. More...
     
    (BOOL) - updater:willInstallUpdateOnQuit:immediateInstallationBlock:
     Called when an update is scheduled to be silently installed on quit after downloading the update automatically. More...
     
    (void) - updater:didAbortWithError:
     Called after an update is aborted due to an error. More...
     
    +

    Detailed Description

    +

    Provides methods to control the behavior of an SPUUpdater object.

    +

    Method Documentation

    + +

    ◆ allowedChannelsForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (NSSet<NSString *> *) allowedChannelsForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns the set of Sparkle channels the updater is allowed to find new updates from.

    +

    An appcast item can specify a channel the update is posted to. Without specifying a channel, the appcast item is posted to the default channel. For instance: <sparkle:version>2.0 Beta 1</sparkle:version> <sparkle:channel>beta</sparkle:channel>

    +

    This example posts an update to the 'beta' channel, so only updaters that are allowed to use the 'beta' channel can find this update.

    +

    If the <sparkle:channel> is not present, the update item is posted to the default channel and can be found by any updater.

    +

    You can pick any name you'd like for the channel. The valid characters for channel names are letters, numbers, dashes, underscores, and periods.

    +

    Note to use this feature, all app versions that your users may update from in your feed must use a version of Sparkle that supports this feature. This feature was added in Sparkle 2.

    +
    Returns
    The set of channel names the updater is allowed to find new updates in. An empty set is the default behavior, which means the updater will only look for updates in the default channel.
    + +
    +
    + +

    ◆ allowedSystemProfileKeysForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (NSArray *) allowedSystemProfileKeysForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns a list of system profile keys to be appended to the appcast URL's query string.

    +

    If this is unimplemented then all keys will be included.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    An array of system profile keys to include in the appcast URL's query string. Elements must be one of the SUSystemProfiler*Key constants
    + +
    +
    + +

    ◆ bestValidUpdateInAppcast:forUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (nullable SUAppcastItem *) bestValidUpdateInAppcast: (SUAppcast *) appcast
    forUpdater:(SPUUpdater *) updater 
    +
    +optional
    +
    + +

    Returns the item in the appcast corresponding to the update that should be installed.

    +

    Please consider using or migrating to other supported features before adopting this method. Specifically: If you want to filter out certain tagged updates (like beta updates), consider -[SPUUpdaterDelegate allowedChannelsForUpdater:] instead. If you want to treat certain updates as informational-only, consider supplying <sparkle:informationalUpdate> with a set of affected versions users are updating from.

    +

    If you're using special logic or extensions in your appcast, implement this to use your own logic for finding a valid update, if any, in the given appcast.

    +

    Do not base your logic by filtering out items with a minimum or maximum OS version or minimum autoupdate version, because Sparkle already has logic for determining whether or not those items should be filtered out. Also do not return a non-top level item from the appcast such as a delta item. Delta items will be ignored. Sparkle picks the delta item from your selection if the appropriate one is available.

    +

    This method will not be invoked with an appcast that has zero items. Pick the best item from the appcast. If an item is available that has the same version as the application or bundle to update, do not pick an item that is worse than that version.

    +

    This method may be called multiple times for different selections and filters. This method should be efficient.

    +
    Parameters
    + + + +
    appcastThe appcast that was downloaded from the remote server.
    updaterThe updater instance.
    +
    +
    +
    Returns
    The best valid appcast item. Return SUAppcastItem.emptyAppcastItem if no appcast item is valid. Return nil if you don't want to be delegated this task and want to let Sparkle handle picking the best valid update.
    + +
    +
    + +

    ◆ decryptionPasswordForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (nullable NSString *) decryptionPasswordForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns the decryption password (if any) which is used to extract the update archive DMG.

    +

    Return nil if no password should be used.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    The password used for decrypting the archive, or nil if no password should be used.
    + +
    +
    + +

    ◆ feedParametersForUpdater:sendingSystemProfile:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (NSArray *) feedParametersForUpdater: (SPUUpdater *) updater
    sendingSystemProfile:(BOOL) sendingProfile 
    +
    +optional
    +
    + +

    Returns additional parameters to append to the appcast URL's query string.

    +

    This is potentially based on whether or not Sparkle will also be sending along the system profile.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    sendingProfileWhether the system profile will also be sent.
    +
    +
    +
    Returns
    An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user.
    + +
    +
    + +

    ◆ feedURLStringForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (nullable NSString *) feedURLStringForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns a custom appcast URL.

    +

    Override this to dynamically specify the entire URL. Alternatively you may want to consider adding a feed parameter using -feedParametersForUpdater:sendingSystemProfile: and having the server which appcast to serve.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updater:didAbortWithError:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didAbortWithError:(NSError *) error 
    +
    +optional
    +
    + +

    Called after an update is aborted due to an error.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    errorThe error that caused the abort
    +
    +
    + +
    +
    + +

    ◆ updater:didDownloadUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didDownloadUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called immediately after succesfull download of the specified update.

    +
    Parameters
    + + + +
    updaterThe SUUpdater instance.
    itemThe appcast item corresponding to the update that has been downloaded.
    +
    +
    + +
    +
    + +

    ◆ updater:didExtractUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didExtractUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called immediately after extracting the specified downloaded update.

    +
    Parameters
    + + + +
    updaterThe SUUpdater instance.
    itemThe appcast item corresponding to the update that has been extracted.
    +
    +
    + +
    +
    + +

    ◆ updater:didFindValidUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didFindValidUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called when a valid update is found by the update driver.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be installed.
    +
    +
    + +
    +
    + +

    ◆ updater:didFinishLoadingAppcast:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didFinishLoadingAppcast:(SUAppcast *) appcast 
    +
    +optional
    +
    + +

    Called after Sparkle has downloaded the appcast from the remote server.

    +

    Implement this if you want to do some special handling with the appcast once it finishes loading.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    appcastThe appcast that was downloaded from the remote server.
    +
    +
    + +
    +
    + +

    ◆ updater:failedToDownloadUpdate:error:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    failedToDownloadUpdate:(SUAppcastItem *) item
    error:(NSError *) error 
    +
    +optional
    +
    + +

    Called after the specified update failed to download.

    +
    Parameters
    + + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that failed to download.
    errorThe error generated by the failed download.
    +
    +
    + +
    +
    + +

    ◆ updater:shouldAllowInstallerInteractionForUpdateCheck:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (BOOL) updater: (SPUUpdater *) updater
    shouldAllowInstallerInteractionForUpdateCheck:(SPUUpdateCheck) updateCheck 
    +
    +optional
    +
    + +

    Returns whether or not the updater should allow interaction from the installer.

    +

    Use this to override the default behavior which is to allow interaction with the installer.

    +

    If interaction is allowed, then an authorization prompt may show up to the user if they do not curently have sufficient privileges to perform the installation of the new update. The installer may also show UI and progress when interaction is allowed.

    +

    On the other hand, if interaction is not allowed, then an installation may fail if the user does not have sufficient privileges to perform the installation. In this case, the feed and update may not even be downloaded.

    +

    Note this has no effect if the update has already been downloaded in the background silently and ready to be resumed.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    updateCheckThe type of update check being performed.
    +
    +
    + +
    +
    + +

    ◆ updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (BOOL) updater: (SPUUpdater *) updater
    shouldPostponeRelaunchForUpdate:(SUAppcastItem *) item
    untilInvokingBlock:(void(^)(void)) installHandler 
    +
    +optional
    +
    + +

    Returns whether the relaunch should be delayed in order to perform other tasks.

    +

    This is not called if the user didn't relaunch on the previous update, in that case it will immediately restart.

    +

    This may also not be called if the application is not going to relaunch after it terminates.

    +
    Parameters
    + + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be installed.
    installHandlerThe install handler that must be completed before continuing with the relaunch.
    +
    +
    +
    Returns
    YES to delay the relaunch until installHandler is invoked.
    + +
    +
    + +

    ◆ updater:userDidSkipThisVersion:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    userDidSkipThisVersion:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called when an update is skipped by the user.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that the user skipped.
    +
    +
    + +
    +
    + +

    ◆ updater:willDownloadUpdate:withRequest:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    willDownloadUpdate:(SUAppcastItem *) item
    withRequest:(NSMutableURLRequest *) request 
    +
    +optional
    +
    + +

    Called immediately before downloading the specified update.

    +
    Parameters
    + + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be downloaded.
    requestThe mutable URL request that will be used to download the update.
    +
    +
    + +
    +
    + +

    ◆ updater:willExtractUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    willExtractUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called immediately before extracting the specified downloaded update.

    +
    Parameters
    + + + +
    updaterThe SUUpdater instance.
    itemThe appcast item corresponding to the update that is proposed to be extracted.
    +
    +
    + +
    +
    + +

    ◆ updater:willInstallUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    willInstallUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called immediately before installing the specified update.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be installed.
    +
    +
    + +
    +
    + +

    ◆ updater:willInstallUpdateOnQuit:immediateInstallationBlock:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (BOOL) updater: (SPUUpdater *) updater
    willInstallUpdateOnQuit:(SUAppcastItem *) item
    immediateInstallationBlock:(void(^)(void)) immediateInstallHandler 
    +
    +optional
    +
    + +

    Called when an update is scheduled to be silently installed on quit after downloading the update automatically.

    +
    Parameters
    + + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be installed.
    immediateInstallHandlerThe install handler to immediately install the update. No UI interaction will be shown and the application will be relaunched after installation.
    +
    +
    +
    Returns
    Return YES if the delegate will handle installing the update or NO if the updater should be given responsibility.
    +

    If the updater is given responsibility, it can later remind the user an update is available if they have not terminated the application for a long time. Also if the updater is given responsibility and the update item is marked critical, the new update will be presented to the user immediately after. Even if the immediateInstallHandler is not invoked, the installer will attempt to install the update on termination.

    + +
    +
    + +

    ◆ updater:willScheduleUpdateCheckAfterDelay:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    willScheduleUpdateCheckAfterDelay:(NSTimeInterval) delay 
    +
    +optional
    +
    + +

    Called when a background update will be scheduled after a delay.

    +

    Automatic update checks need to be enabled for this to trigger.

    +
    Parameters
    + + + +
    delayThe delay until the next scheduled update will occur.
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterDidNotFindUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (void) updaterDidNotFindUpdate: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Called when a valid update is not found.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterDidNotFindUpdate:error:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updaterDidNotFindUpdate: (SPUUpdater *) updater
    error:(NSError *) error 
    +
    +optional
    +
    + +

    Called when a valid update is not found.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    errorAn error containing information on why a new valid update was not found There are various reasons a new update is unavailable and can't be installed. The userInfo dictionary on the error is also populated with three keys: SPULatestAppcastItemFoundKey: if available, this may provide the latest SUAppcastItem that was found. This will be nil if it's unavailable. SPUNoUpdateFoundReasonKey: This will provide the SUNoUpdateFoundReason. For example the reason could be because the latest version in the feed requires a newer OS version or could be because the user is already on the latest version. SPUNoUpdateFoundUserInitiatedKey: A boolean that indicates if a new update was not found when the user intitiated an update check manually.
    +
    +
    + +
    +
    + +

    ◆ updaterMayCheckForUpdates:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (BOOL) updaterMayCheckForUpdates: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns whether to allow Sparkle to pop up.

    +

    For example, this may be used to prevent Sparkle from interrupting a setup assistant. Alternatively, you may want to consider starting the updater after eg: the setup assistant finishes

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterShouldDownloadReleaseNotes:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (BOOL) updaterShouldDownloadReleaseNotes: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns whether the release notes (if available) should be downloaded after an update is found and shown.

    +

    This is specifically for the releaseNotesLink element in the appcast.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    YES to download and show the release notes if available, otherwise NO. The default behavior is YES.
    + +
    +
    + +

    ◆ updaterShouldPromptForPermissionToCheckForUpdates:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (BOOL) updaterShouldPromptForPermissionToCheckForUpdates: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns whether Sparkle should prompt the user about automatic update checks.

    +

    Use this to override the default behavior.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterShouldRelaunchApplication:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (BOOL) updaterShouldRelaunchApplication: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns whether the application should be relaunched at all.

    +

    Some apps cannot be relaunched under certain circumstances. This method can be used to explicitly prevent a relaunch.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    YES if the updater should be relaunched, otherwise NO if it shouldn't.
    + +
    +
    + +

    ◆ updaterWillIdleSchedulingUpdates:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (void) updaterWillIdleSchedulingUpdates: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Called when no updates will be scheduled in the future.

    +

    This may later change if automatic update checks become enabled.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterWillRelaunchApplication:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (void) updaterWillRelaunchApplication: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Called immediately before relaunching.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ userDidCancelDownload:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (void) userDidCancelDownload: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Called when the user clicks the cancel button while and update is being downloaded.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ versionComparatorForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (nullable id<SUVersionComparison>) versionComparatorForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns an object that compares version numbers to determine their arithmetic relation to each other.

    +

    This method allows you to provide a custom version comparator. If you don't implement this method or return nil, the standard version comparator will be used. Note that the standard version comparator may be used during installation for preventing a downgrade, even if you provide a custom comparator here.

    +
    See also
    SUStandardVersionComparator
    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    The custom version comparator or nil if you don't want to be delegated this task.
    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e5958b287e3a3609d1771bb5fa580c8aa4f1c9 GIT binary patch literal 596 zcmeAS@N?(olHy`uVBq!ia0vp^6M#5?gBeI3Ea0&NQW60^A+G=b{|7Q(y!l$%e+Z-k zj1L?*z}k679?0b=3GxeO04f53tEWPY7#J8Id%8G=R4~4sdwWx}0*`BW+^qlqA7Acz zsOGkIx$LsZGxJTaBx-mh&^;yq6aC=u?c5UiZz{X^lWV3$-1(f6MTAM=*NL(9S8|eV{~c zh2Jz$fANKk0q0)6%=KfMd3a0s)b)x1t3Gc#<*&3?a3RYTk?#slvA6$Lw|McIHZME9 zFUDE@+``1^u?v5m@T|Rj|2^~FQt|le&`^KIC97U#x+w@w>}2_%U&U}{$;}42{*xVP z%vGPxxSGfYlt?zLXJGmu;=nMEiQ_;p17ii30)syz%LB~@1{+p^hUEy!%kP;wJI<)E zB*;O|=k$c#rATvvO{yB-$b*D=G zN%y#QZoAWx7np|I1xQVwX#2GH?NYbX)oG%kjHf2&@ruT$-C%s$D!X7~5BgQSyxwPDqmrcVcM#AV(R6+p~h0PbCpvjw>!9-hLqpjEA{H!!go8* zDeX6(m^MlgJi&-Tu WY}Stpy9IzrfWgz%&t;ucLK6VwDFn0t literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p-members.html new file mode 100644 index 0000000..81e0b85 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUpdaterTimerDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUpdaterTimerDelegate>, including all inherited members.

    + + +
    updaterTimerDidFire (defined in <SPUUpdaterTimerDelegate>)<SPUUpdaterTimerDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p.html new file mode 100644 index 0000000..3183d01 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: <SPUUpdaterTimerDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUpdaterTimerDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUUpdaterTimerDelegate>:
    +
    +
    + + +SPUUpdater() + +
    + + + + +

    +Instance Methods

    +(void) - updaterTimerDidFire
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_updater_timer_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..edd3a924323bfbd0e3b272dee9b2a5cc18e4c4b5 GIT binary patch literal 914 zcmeAS@N?(olHy`uVBq!ia0vp^>w&m~gBeIJd+L1>NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~D|)&(hEy=VoqPAvY6TvK=@ysw{Fj#3 zRot4Z9M9#eJDR*XD!e%qc~~4nOC|1vhhF9T9vZs!vFrUCKkD|Zzgw|U>{?y< z-Th+o!)qtsS{5N55-Pp#_3SG_`j)FcuU#@%sm^|BWzKzxhHcPp0(N(H* z^(E`my!%GNL66Kn+J3kzwCwth%jSFaSBab~cp*JKVK0MqZ+w6Lm$ldKI@ZkQeSG=j z*`Lv(tNuRR{^>ja@AnV?edv0lzAr!j-M!k-tv~kfF8};v)vA4hAeSAk4Gn!eqt=-t zQHDWh2P4msgnip@M;vPYd2W|8XaBR;znL3U-*G3j|7N=Ja34e24*dpMJlyxcxD{I( z6&QG$q3Yk%OgG)}PU`gE3XkWjUhWIYvEXN(xXUiDHt>Gg?O&xo=4phiubBUSWqHq8 zsr{-!KPUXsp64h2v#jRmwOtyvZ@%6r_iZV@A8~GJ$=1C)vi9<<-??{h!u4N)>sw2{ z-PQ8{Z2o4@EWX`;NYSb9-Cejcm*Jr8V07 zz3*E&S^npLygM~lc=D=}JFo5bt^9Q9yH@@G8T?0G)Bl8k*~FLa&a%u|JPAUA zl5F2a1veh9b#;03;uG)Zd|Tb;OZDcTR_FJMR##Fwf9WwW41X?r?&>mc!R_x?tdHf{ zt-Bl`H|@9lSKr{D7s@Y3dbh^Q9C#Sh(GhcL=RLpA=F)15k8RITR{F$q_qVg*eDQsS zA%?QsKGt5^{%QA@wVxGj{|E02|M~l6jmGC~JI;OG{Z}z8_xEA(PvI_480#$C=W&SbBeCb)RlF?xiFat4oy85}Sb4q9e E09zi-v;Y7A literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p-members.html new file mode 100644 index 0000000..51388aa --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p-members.html @@ -0,0 +1,101 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUserDriver> Member List
    +
    + + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p.html new file mode 100644 index 0000000..4310776 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p.html @@ -0,0 +1,706 @@ + + + + + + + +Sparkle: <SPUUserDriver> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUserDriver> Protocol Reference
    +
    +
    + +

    The API in Sparkle for controlling the user interaction. + More...

    + +

    #import <SPUUserDriver.h>

    +
    +Inheritance diagram for <SPUUserDriver>:
    +
    +
    + + +SPUStandardUserDriver + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    (void) - showUpdatePermissionRequest:reply:
     Show an updater permission request to the user. More...
     
    (void) - showUserInitiatedUpdateCheckWithCancellation:
     Show the user initating an update check. More...
     
    (void) - showUpdateFoundWithAppcastItem:state:reply:
     Show the user a new update is found. More...
     
    (void) - showUpdateReleaseNotesWithDownloadData:
     Show the user the release notes for the new update. More...
     
    (void) - showUpdateReleaseNotesFailedToDownloadWithError:
     Show the user that the new update's release notes could not be downloaded. More...
     
    (void) - showUpdateNotFoundWithError:acknowledgement:
     Show the user a new update was not found. More...
     
    (void) - showUpdaterError:acknowledgement:
     Show the user an update error occurred. More...
     
    (void) - showDownloadInitiatedWithCancellation:
     Show the user that downloading the new update initiated. More...
     
    (void) - showDownloadDidReceiveExpectedContentLength:
     Show the user the content length of the new update that will be downloaded. More...
     
    (void) - showDownloadDidReceiveDataOfLength:
     Show the user that the update download received more data. More...
     
    (void) - showDownloadDidStartExtractingUpdate
     Show the user that the update finished downloading and started extracting. More...
     
    (void) - showExtractionReceivedProgress:
     Show the user that the update is extracting with progress. More...
     
    (void) - showInstallingUpdate
     Show the user that the update is installing. More...
     
    (void) - showReadyToInstallAndRelaunch:
     Show the user that the update is ready to install & relaunch. More...
     
    (void) - showSendingTerminationSignal
     Show or dismiss progress while a termination signal is being sent to the application from Sparkle's installer. More...
     
    (void) - showUpdateInstalledAndRelaunched:acknowledgement:
     Show the user that the update installation finished. More...
     
    (void) - showUpdateInFocus
     Show the user the current presented update or its progress in utmost focus. More...
     
    (void) - dismissUpdateInstallation
     Dismiss the current update installation. More...
     
    +(void) - showUpdateNotFoundWithAcknowledgement:
     
    +(void) - showUpdateInstallationDidFinishWithAcknowledgement:
     
    +("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.") - __deprecated_msg
     
    +

    Detailed Description

    +

    The API in Sparkle for controlling the user interaction.

    +

    This protocol is used for implementing a user interface for the Sparkle updater. Sparkle's internal drivers tell an object that implements this protocol what actions to take and show to the user.

    +

    Every method in this protocol can be assumed to be called from the main thread.

    +

    Method Documentation

    + +

    ◆ dismissUpdateInstallation

    + +
    +
    + + + + + + + +
    - (void) dismissUpdateInstallation
    +
    + +

    Dismiss the current update installation.

    +

    Stop and tear down everything. Dismiss all update windows, alerts, progress, etc from the user. Basically, stop everything that could have been started. Sparkle may invoke this when aborting or finishing an update.

    + +
    +
    + +

    ◆ showDownloadDidReceiveDataOfLength:

    + +
    +
    + + + + + + + + +
    - (void) showDownloadDidReceiveDataOfLength: (uint64_t) length
    +
    + +

    Show the user that the update download received more data.

    +

    This may be an appropriate time to advance a visible progress indicator of the download

    Parameters
    + + +
    lengthThe length of the data that was just downloaded
    +
    +
    + +
    +
    + +

    ◆ showDownloadDidReceiveExpectedContentLength:

    + +
    +
    + + + + + + + + +
    - (void) showDownloadDidReceiveExpectedContentLength: (uint64_t) expectedContentLength
    +
    + +

    Show the user the content length of the new update that will be downloaded.

    +
    Parameters
    + + +
    expectedContentLengthThe expected content length of the new update being downloaded. An implementor should be able to handle if this value is invalid (more or less than actual content length downloaded). Additionally, this method may be called more than once for the same download in rare scenarios.
    +
    +
    + +
    +
    + +

    ◆ showDownloadDidStartExtractingUpdate

    + +
    +
    + + + + + + + +
    - (void) showDownloadDidStartExtractingUpdate
    +
    + +

    Show the user that the update finished downloading and started extracting.

    +

    Sparkle uses this to show an indeterminate progress bar.

    +

    Note that an update can resume at this point after having been downloaded before, so this may be called without any of the download callbacks being invoked prior.

    + +
    +
    + +

    ◆ showDownloadInitiatedWithCancellation:

    + +
    +
    + + + + + + + + +
    - (void) showDownloadInitiatedWithCancellation: (void(^)(void)) cancellation
    +
    + +

    Show the user that downloading the new update initiated.

    +

    Let the user know that downloading the new update started.

    +
    Parameters
    + + +
    cancellationInvoke this cancellation block to cancel the download at any point before -showDownloadDidStartExtractingUpdate is invoked.
    +
    +
    + +
    +
    + +

    ◆ showExtractionReceivedProgress:

    + +
    +
    + + + + + + + + +
    - (void) showExtractionReceivedProgress: (double) progress
    +
    + +

    Show the user that the update is extracting with progress.

    +

    Let the user know how far along the update extraction is.

    +

    Before this point, -showDownloadDidStartExtractingUpdate is called.

    +
    Parameters
    + + +
    progressThe progress of the extraction from a 0.0 to 1.0 scale
    +
    +
    + +
    +
    + +

    ◆ showInstallingUpdate

    + +
    +
    + + + + + + + +
    - (void) showInstallingUpdate
    +
    + +

    Show the user that the update is installing.

    +

    Let the user know that the update is currently installing. Sparkle uses this to show an indeterminate progress bar.

    +

    Before this point, -showExtractionReceivedProgress: may be called.

    + +
    +
    + +

    ◆ showReadyToInstallAndRelaunch:

    + +
    +
    + + + + + + + + +
    - (void) showReadyToInstallAndRelaunch: (void(^)(SPUUserUpdateChoice)) reply
    +
    + +

    Show the user that the update is ready to install & relaunch.

    +

    Let the user know that the update is ready to install and relaunch, and ask them whether they want to proceed. Note if the target application has already terminated, this method may not be invoked.

    +
    Parameters
    + + +
    replyA reply of SPUUserUpdateChoiceInstall installs the update the new update immediately. The application is relaunched only if it is still running by the time this reply is invoked. If the application terminates on its own, Sparkle will attempt to automatically install the update.
    +
    +
    +

    A reply of SPUUserUpdateChoiceDismiss dismisses the update installation for the time being. Note the update may still be installed automatically after the application terminates.

    +

    A reply of SPUUserUpdateChoiceSkip cancels the current update that has begun installing and dismisses the update. In this circumstance, the update is canceled but this update version is not skipped in the future.

    +

    Before this point, -showInstallingUpdate will be called.

    + +
    +
    + +

    ◆ showSendingTerminationSignal

    + +
    +
    + + + + + + + +
    - (void) showSendingTerminationSignal
    +
    + +

    Show or dismiss progress while a termination signal is being sent to the application from Sparkle's installer.

    +

    Terminating and relaunching the application (if requested to be relaunched) may happen quickly, or it may take some time to perform the final installation, or the termination signal can be canceled or delayed by the application or user.

    +

    It is up to the implementor whether or not to decide to continue showing installation progress or dismissing UI that won't remain obscuring other parts of the user interface.

    +

    This will not be invoked if the application that is being updated is already terminated.

    + +
    +
    + +

    ◆ showUpdateFoundWithAppcastItem:state:reply:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (void) showUpdateFoundWithAppcastItem: (SUAppcastItem *) appcastItem
    state:(SPUUserUpdateState *) state
    reply:(void(^)(SPUUserUpdateChoice)) reply 
    +
    + +

    Show the user a new update is found.

    +

    Let the user know a new update is found and ask them what they want to do. Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.

    +
    Parameters
    + + + +
    appcastItemThe Appcast Item containing information that reflects the new update.
    stateThe current state of the user update. The state.stage values are: SPUUpdateStateNotDownloaded - Update has not been downloaded yet. SPUUpdateStateDownloaded - Update has already been downloaded but not started installing yet. SPUUpdateStateInstalling - Update has been downloaded and already started installing.
    +
    +
    +

    state.userInitiated indicates if the update was initiated by the user or if it was automatically scheduled in the background.

    +

    Additionally, these properties on the appcastItem are of importance: appcastItem.informationOnlyUpdate indicates if the update is only informational and should not be downloaded. You can direct the user to the infoURL property of the appcastItem in their web browser. Sometimes information only updates are used as a fallback in case a bad update is shipped, so you'll want to support this case. appcastItem.majorUpgrade indicates if the update is a major or paid upgrade. appcastItem.criticalUpdate indicates if the update is a critical update.

    +
    Parameters
    + + +
    replyA reply of SPUUserUpdateChoiceInstall begins or resumes downloading or installing the update. If the state.stage is SPUUserUpdateStateInstalling, this may send a quit event to the application and relaunch it immediately (in this state, this behaves as a fast "install and Relaunch"). Do not use this reply if appcastItem.informationOnlyUpdate is YES.
    +
    +
    +

    A reply of SPUUserUpdateChoiceDismiss dismisses the update for the time being. The user may be reminded of the update at a later point. If the state.stage is SPUUserUpdateStateDownloaded, the downloaded update is kept after dismissing until the next time an update is shown to the user. If the state.stage is SPUUserUpdateStateInstalling, the installing update is also preserved after dismissing. In this state however, the update will also still be installed after the application is terminated.

    +

    A reply of SPUUserUpdateChoiceSkip skips this particular version and won't notify the user again, unless they initiate an update check themselves. If appcastItem.majorUpgrade is YES, the major update and any future minor updates to that major release are skipped. If the state.stage is SPUUpdateStateInstalling, the installation is also canceled when the update is skipped.

    + +
    +
    + +

    ◆ showUpdateInFocus

    + +
    +
    + + + + + + + +
    - (void) showUpdateInFocus
    +
    + +

    Show the user the current presented update or its progress in utmost focus.

    +

    The user wishes to check for updates while the user is being shown update progress. Bring whatever is on screen to frontmost focus (permission request, update information, downloading or extraction status, choice to install update, etc).

    + +
    +
    + +

    ◆ showUpdateInstalledAndRelaunched:acknowledgement:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) showUpdateInstalledAndRelaunched: (BOOL) relaunched
    acknowledgement:(void(^)(void)) acknowledgement 
    +
    + +

    Show the user that the update installation finished.

    +

    Let the user know that the update finished installing.

    +

    This will only be invoked if the updater process is still alive, which is typically not the case if the updater's lifetime is tied to the application it is updating. This implementation must not try to reference the old bundle prior to the installation, which will no longer be around.

    +

    Before this point, -showSendingTerminationSignal or -showReadyToInstallAndRelaunch: may be called.

    +
    Parameters
    + + + +
    relaunchedIndicates if the update was relaunched.
    acknowledgementAcknowledge to the updater that the finished installation was shown.
    +
    +
    + +
    +
    + +

    ◆ showUpdateNotFoundWithError:acknowledgement:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) showUpdateNotFoundWithError: (NSError *) error
    acknowledgement:(void(^)(void)) acknowledgement 
    +
    + +

    Show the user a new update was not found.

    +

    Let the user know a new update was not found after they tried initiating an update check. Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.

    +
    Parameters
    + + +
    errorThe error associated with why a new update was not found. There are various reasons a new update is unavailable and can't be installed. This error object is populated with recovery and suggestion strings suitable to be shown in an alert.
    +
    +
    +

    The userInfo dictionary is also populated with two keys: SPULatestAppcastItemFoundKey: if available, this may provide the latest SUAppcastItem that was found. SPUNoUpdateFoundReasonKey: if available, this will provide the SUNoUpdateFoundReason. For example the reason could be because the latest version in the feed requires a newer OS version or could be because the user is already on the latest version.

    +
    Parameters
    + + +
    acknowledgementAcknowledge to the updater that no update found error was shown.
    +
    +
    + +
    +
    + +

    ◆ showUpdatePermissionRequest:reply:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) showUpdatePermissionRequest: (SPUUpdatePermissionRequest *) request
    reply:(void(^)(SUUpdatePermissionResponse *)) reply 
    +
    + +

    Show an updater permission request to the user.

    +

    Ask the user for their permission regarding update checks. This is typically only called once per app installation.

    +
    Parameters
    + + + +
    requestThe update permission request.
    replyA reply with a update permission response.
    +
    +
    + +
    +
    + +

    ◆ showUpdateReleaseNotesFailedToDownloadWithError:

    + +
    +
    + + + + + + + + +
    - (void) showUpdateReleaseNotesFailedToDownloadWithError: (NSError *) error
    +
    + +

    Show the user that the new update's release notes could not be downloaded.

    +

    This will be called after showing the new update. This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.

    +
    Parameters
    + + +
    errorThe error associated with why the new update's release notes could not be downloaded.
    +
    +
    + +
    +
    + +

    ◆ showUpdateReleaseNotesWithDownloadData:

    + +
    +
    + + + + + + + + +
    - (void) showUpdateReleaseNotesWithDownloadData: (SPUDownloadData *) downloadData
    +
    + +

    Show the user the release notes for the new update.

    +

    Display the release notes to the user. This will be called after showing the new update. This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.

    +
    Parameters
    + + +
    downloadDataThe data for the release notes that was downloaded from the new update's appcast.
    +
    +
    + +
    +
    + +

    ◆ showUpdaterError:acknowledgement:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) showUpdaterError: (NSError *) error
    acknowledgement:(void(^)(void)) acknowledgement 
    +
    + +

    Show the user an update error occurred.

    +

    Let the user know that the updater failed with an error. This will not be invoked without the user having been aware that an update was in progress.

    +

    Before this point, any of the non-error user driver methods may have been invoked.

    +
    Parameters
    + + + +
    errorThe error associated with what update error occurred..
    acknowledgementAcknowledge to the updater that the error was shown.
    +
    +
    + +
    +
    + +

    ◆ showUserInitiatedUpdateCheckWithCancellation:

    + +
    +
    + + + + + + + + +
    - (void) showUserInitiatedUpdateCheckWithCancellation: (void(^)(void)) cancellation
    +
    + +

    Show the user initating an update check.

    +

    Respond to the user initiating an update check. Sparkle uses this to show the user a window with an indeterminate progress bar.

    +
    Parameters
    + + +
    cancellationInvoke this cancellation block to cancel the update check before the update check is completed.
    +
    +
    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_p_u_user_driver-p.png new file mode 100644 index 0000000000000000000000000000000000000000..ff05e94dcedb08828d7af2cd09ef80a01010922f GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^Q-QdHgBeKPG>NnTQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Cd%W%k_hU^RJheCNH~ZXsN*=uh6UR5i3{ys>qvqyIyvGmuh^D{kDaE z%69X9NQb#5h;OtH36=iW7AmMA+s~of-xbq&@A}G?kkG5gjaPq_t&TYLOE&Cgsj=De z^d$c^ueNG)UOloZd8__MX8rx4lBWANMD1G_s>d+cAhub7$tO{-52y*giQO-N`hPxjOxuf>cX6w?|W zN?gjC=YB=%Qr1MNfNY=DD;yd06ImZ9uVJWZ5pC$-!1O^djKS^@*8%qk#vdHo4Dv{l z_w#|q9Cl=q=z%Je3Cs4)*}Ci7iS{D44O6B)}o3`_GhcMZd%N25)(Z$ z?)UBWVH?WcRnB`>`ueL?n3>w$ocwulQ8RsN^~07v*Iuo*-iP&!y={seoSy%2mUD%zPx68~RZ0X&53jEu6gJx}O zHqpMZb=A9k=QVX-*YAxi^`0bif0yIsJ3TS?QaA0LAO3V-7SAtXp+3_G!d~#SPznt@^$?_|>eQ&UzU^LHR^grANwZ oTwH2ergn7nAI$=K-sB%c`I9o+`z|f~z+A)N>FVdQ&MBb@09v`ABLDyZ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p-members.html new file mode 100644 index 0000000..f66ac21 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUAppcastDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SUAppcastDriverDelegate>, including all inherited members.

    + + + + + +
    didFailToFetchAppcastWithError: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
    didFindValidUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
    didFinishLoadingAppcast: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
    didNotFindUpdateWithLatestAppcastItem:hostToLatestAppcastItemComparisonResult:background: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p.html new file mode 100644 index 0000000..cb9f359 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p.html @@ -0,0 +1,108 @@ + + + + + + + +Sparkle: <SUAppcastDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUAppcastDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SUAppcastDriverDelegate>:
    +
    +
    + + +SPUBasicUpdateDriver() + +
    + + + + + + + + + + +

    +Instance Methods

    +(void) - didFailToFetchAppcastWithError:
     
    +(void) - didFinishLoadingAppcast:
     
    +(void) - didFindValidUpdateWithAppcastItem:secondaryAppcastItem:
     
    +(void) - didNotFindUpdateWithLatestAppcastItem:hostToLatestAppcastItemComparisonResult:background:
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_appcast_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..ebbca789c373d43e9ecbe2b989625d060628bf21 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0vp^>wvg}gBeJAsw;d4QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;OU%0IDzj>T? zk!bbCvw1UpkNXQGS+q^~r`jU$Owcj3RLpYSs#Q~E!b7im$v-+a{r&gf8+-Yy)4x|2 z{J&Wx|440<&yBK>Q0u?JcU-3JnKENtaHrML-}jdI287ne%Rk8Le(ta=L}SNCig`A*Z*T5q`%_t>oLBsW?c!Unqw#%t zC+{x19MU%b)Lrpc?=~3K9QbAa@9MtS_X9WilZy?#`u=2LXz1D}J65dSy2pwwxwRfR2lIDUVYpNs>fM3OnS@| zak7wc&66DrVJOnO|2lCb$_X;0O@yi_IdHe{eyz>jxPSAm>dD>9VptHIUHq=j;@)Gm zGflsX{>*e)H|hJLd`> z-wtI<$?sfYqB@K5)oSDXHxeIK(! z`>oHO$q%bi88%GD6_8lM`Oe$zI;WEs+}@;f`ukBOC8KVcaF-)qecDP%OAYfP>Z>Jmw7MO zI;klY#r{`(XI+0tNol|4aZ$mIlOA_ + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUInstallerAgentInitiationProtocol> Member List
    +
    +
    + +

    This is the complete list of members for <SUInstallerAgentInitiationProtocol>, including all inherited members.

    + + + +
    connectionDidInitiateWithReply: (defined in <SUInstallerAgentInitiationProtocol>)<SUInstallerAgentInitiationProtocol>
    connectionWillInvalidateWithError: (defined in <SUInstallerAgentInitiationProtocol>)<SUInstallerAgentInitiationProtocol>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_agent_initiation_protocol-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_agent_initiation_protocol-p.html new file mode 100644 index 0000000..4e7b353 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_agent_initiation_protocol-p.html @@ -0,0 +1,93 @@ + + + + + + + +Sparkle: <SUInstallerAgentInitiationProtocol> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUInstallerAgentInitiationProtocol> Protocol Reference
    +
    +
    + + + + + + +

    +Instance Methods

    +(void) - connectionDidInitiateWithReply:
     
    +(void) - connectionWillInvalidateWithError:
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p-members.html new file mode 100644 index 0000000..b2794d1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUInstallerProtocol> Member List
    +
    +
    + +

    This is the complete list of members for <SUInstallerProtocol>, including all inherited members.

    + + + + + +
    canInstallSilently (defined in <SUInstallerProtocol>)<SUInstallerProtocol>
    installationPath (defined in <SUInstallerProtocol>)<SUInstallerProtocol>
    performFinalInstallationProgressBlock:error: (defined in <SUInstallerProtocol>)<SUInstallerProtocol>
    performInitialInstallation: (defined in <SUInstallerProtocol>)<SUInstallerProtocol>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p.html new file mode 100644 index 0000000..83dc76c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: <SUInstallerProtocol> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUInstallerProtocol> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SUInstallerProtocol>:
    +
    +
    + +
    + + + + + + + + + + +

    +Instance Methods

    +(BOOL) - performInitialInstallation:
     
    +(BOOL) - performFinalInstallationProgressBlock:error:
     
    +(BOOL) - canInstallSilently
     
    +(NSString *) - installationPath
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_installer_protocol-p.png new file mode 100644 index 0000000000000000000000000000000000000000..7b127fdd47cf08592386873eb020cde9b5d91aed GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^tw0>W!3-oBzPn8Vk`e(vA+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;F1Wv71?Ow-yN%Bma|Pdx)VpdFdiA}j+sCe(%VMuD4i?!q^+N112RDs3 zQCFHc;@$*oQI&pRv3y0K7t>~$-6Bg9YIn{nj`_4GV29S-k4ibS&R1M~eaQ5V+|TY^ z5t zy?F1=HT|#FQNLT}8a8K(Jzna*En6k>`pa~S-bYv8IKLLCwp^ys?|narqlI~)ymrsW zMP-kEeAxDN>)CszbHtDRE4?u7(6!c`lK0E^&fDa+UF_$s4VQCo{%YBESoerVYvH}> zjlpwm4<78gab&uNS=^RS)=Ml_b}M#$-u2-=_vgDGv^QO=xye@6&(gI^T<^VLgQZv3 k5{3@1F6p3-jx*Q9Ig9*fJa+i-78th-p00i_>zopr0NSeoIsgCw literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p-members.html new file mode 100644 index 0000000..a059b4a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUVersionComparison> Member List
    +
    +
    + +

    This is the complete list of members for <SUVersionComparison>, including all inherited members.

    + + +
    compareVersion:toVersion:<SUVersionComparison>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p.html new file mode 100644 index 0000000..7469c5e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p.html @@ -0,0 +1,140 @@ + + + + + + + +Sparkle: <SUVersionComparison> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUVersionComparison> Protocol Reference
    +
    +
    + +

    Provides version comparison facilities for Sparkle. + More...

    + +

    #import <SUVersionComparisonProtocol.h>

    +
    +Inheritance diagram for <SUVersionComparison>:
    +
    +
    + + +SUStandardVersionComparator + +
    + + + + + +

    +Instance Methods

    (NSComparisonResult) - compareVersion:toVersion:
     An abstract method to compare two version strings. More...
     
    +

    Detailed Description

    +

    Provides version comparison facilities for Sparkle.

    +

    Method Documentation

    + +

    ◆ compareVersion:toVersion:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (NSComparisonResult) compareVersion: (NSString *) versionA
    toVersion:(NSString *) versionB 
    +
    + +

    An abstract method to compare two version strings.

    +

    Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent.

    + +

    Reimplemented in SUStandardVersionComparator.

    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_comparison-p.png new file mode 100644 index 0000000000000000000000000000000000000000..b0805395abe9c741473bc5acb6e01e2bad489144 GIT binary patch literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^dx1EBgBeIxUv7y5QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;HH-2DYn9*k3I6Y*+-rULA55LgP`6(eCkWJD%)bpx?Ld9cO`t`PQ{Y&i4h(6knU&R22X7 z{L8tMS86|chHstw$Z{`d;H5j4;y={i`~B@oSXI42&8_zr?|a;r|88gf?qzLTd5Z2d z^XpmnF3aZ~h=08=^XAsl=`FKrw%9KJrh47|RPfoeFYmT8SOhNL{mpx_UsXf9)NHv2 z+_Szg)SA3x{Pm(Xw?*L40;V4e;}{NSW&FCHo$_blOYt9#ACE7aZ_B=5x|*$nyl+*5 z9ZW;UCFU;|VIebFZb3hqf^#CtJ^L?fACst8U!=mj%2VGHXpid3ey!SwfA{2He}A@J z<-3f8c<`osWgZ_@U(Vxm6aVE?`$O}jZU0NvldIoMQn`D{{a2ajYrfp|M<yU+Fgt9{cpubupN3wwm`m2WXN3-teP|9M9J zZpqYJ#iz82g*VJywQ|m-m>5fm;<{Bk+v1;Zw|#EEH(NfIadO + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUVersionDisplay> Member List
    +
    +
    + +

    This is the complete list of members for <SUVersionDisplay>, including all inherited members.

    + + +
    formatVersion:andVersion:<SUVersionDisplay>
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_display-p.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_display-p.html new file mode 100644 index 0000000..416112a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/protocol_s_u_version_display-p.html @@ -0,0 +1,129 @@ + + + + + + + +Sparkle: <SUVersionDisplay> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUVersionDisplay> Protocol Reference
    +
    +
    + +

    Applies special display formatting to version numbers. + More...

    + +

    #import <SUVersionDisplayProtocol.h>

    + + + + + +

    +Instance Methods

    (void) - formatVersion:andVersion:
     Formats two version strings. More...
     
    +

    Detailed Description

    +

    Applies special display formatting to version numbers.

    +

    Method Documentation

    + +

    ◆ formatVersion:andVersion:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) formatVersion: (NSString *_Nonnull *_Nonnull) inOutVersionA
    andVersion:(NSString *_Nonnull *_Nonnull) inOutVersionB 
    +
    + +

    Formats two version strings.

    +

    Both versions are provided so that important distinguishing information can be displayed while also leaving out unnecessary/confusing parts.

    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search.json b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search.json new file mode 100644 index 0000000..8a0cad3 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search.json @@ -0,0 +1 @@ +{"Protocols/SUVersionDisplay.html#/c:objc(pl)SUVersionDisplay(im)formatVersion:andVersion:":{"name":"-formatVersion:andVersion:","abstract":"

    Formats two version strings.

    ","parent_name":"SUVersionDisplay"},"Protocols/SUVersionComparison.html#/c:objc(pl)SUVersionComparison(im)compareVersion:toVersion:":{"name":"-compareVersion:toVersion:","abstract":"

    An abstract method to compare two version strings.

    ","parent_name":"SUVersionComparison"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterMayCheckForUpdates:":{"name":"-updaterMayCheckForUpdates:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)feedParametersForUpdater:sendingSystemProfile:":{"name":"-feedParametersForUpdater:sendingSystemProfile:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)feedURLStringForUpdater:":{"name":"-feedURLStringForUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterShouldPromptForPermissionToCheckForUpdates:":{"name":"-updaterShouldPromptForPermissionToCheckForUpdates:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didFinishLoadingAppcast:":{"name":"-updater:didFinishLoadingAppcast:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)bestValidUpdateInAppcast:forUpdater:":{"name":"-bestValidUpdateInAppcast:forUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didFindValidUpdate:":{"name":"-updater:didFindValidUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterDidNotFindUpdate:":{"name":"-updaterDidNotFindUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willDownloadUpdate:withRequest:":{"name":"-updater:willDownloadUpdate:withRequest:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didDownloadUpdate:":{"name":"-updater:didDownloadUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:failedToDownloadUpdate:error:":{"name":"-updater:failedToDownloadUpdate:error:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)userDidCancelDownload:":{"name":"-userDidCancelDownload:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willExtractUpdate:":{"name":"-updater:willExtractUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didExtractUpdate:":{"name":"-updater:didExtractUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willInstallUpdate:":{"name":"-updater:willInstallUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:userDidSkipThisVersion:":{"name":"-updater:userDidSkipThisVersion:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:shouldPostponeRelaunchForUpdate:untilInvoking:":{"name":"-updater:shouldPostponeRelaunchForUpdate:untilInvoking:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:shouldPostponeRelaunchForUpdate:":{"name":"-updater:shouldPostponeRelaunchForUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterShouldRelaunchApplication:":{"name":"-updaterShouldRelaunchApplication:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterWillRelaunchApplication:":{"name":"-updaterWillRelaunchApplication:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterDidRelaunchApplication:":{"name":"-updaterDidRelaunchApplication:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)versionComparatorForUpdater:":{"name":"-versionComparatorForUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)versionDisplayerForUpdater:":{"name":"-versionDisplayerForUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)pathToRelaunchForUpdater:":{"name":"-pathToRelaunchForUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterWillShowModalAlert:":{"name":"-updaterWillShowModalAlert:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterDidShowModalAlert:":{"name":"-updaterDidShowModalAlert:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willInstallUpdateOnQuit:immediateInstallationInvocation:":{"name":"-updater:willInstallUpdateOnQuit:immediateInstallationInvocation:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willInstallUpdateOnQuit:immediateInstallationBlock:":{"name":"-updater:willInstallUpdateOnQuit:immediateInstallationBlock:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didCancelInstallUpdateOnQuit:":{"name":"-updater:didCancelInstallUpdateOnQuit:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didAbortWithError:":{"name":"-updater:didAbortWithError:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdatePermissionRequest:reply:":{"name":"-showUpdatePermissionRequest:reply:","abstract":"

    Show an updater permission request to the user

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUserInitiatedUpdateCheckWithCancellation:":{"name":"-showUserInitiatedUpdateCheckWithCancellation:","abstract":"

    Show the user initating an update check

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateFoundWithAppcastItem:state:reply:":{"name":"-showUpdateFoundWithAppcastItem:state:reply:","abstract":"

    Show the user a new update is found.

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateReleaseNotesWithDownloadData:":{"name":"-showUpdateReleaseNotesWithDownloadData:","abstract":"

    Show the user the release notes for the new update

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateReleaseNotesFailedToDownloadWithError:":{"name":"-showUpdateReleaseNotesFailedToDownloadWithError:","abstract":"

    Show the user that the new update’s release notes could not be downloaded

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateNotFoundWithError:acknowledgement:":{"name":"-showUpdateNotFoundWithError:acknowledgement:","abstract":"

    Show the user a new update was not found

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdaterError:acknowledgement:":{"name":"-showUpdaterError:acknowledgement:","abstract":"

    Show the user an update error occurred

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showDownloadInitiatedWithCancellation:":{"name":"-showDownloadInitiatedWithCancellation:","abstract":"

    Show the user that downloading the new update initiated

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showDownloadDidReceiveExpectedContentLength:":{"name":"-showDownloadDidReceiveExpectedContentLength:","abstract":"

    Show the user the content length of the new update that will be downloaded

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showDownloadDidReceiveDataOfLength:":{"name":"-showDownloadDidReceiveDataOfLength:","abstract":"

    Show the user that the update download received more data

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showDownloadDidStartExtractingUpdate":{"name":"-showDownloadDidStartExtractingUpdate","abstract":"

    Show the user that the update finished downloading and started extracting

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showExtractionReceivedProgress:":{"name":"-showExtractionReceivedProgress:","abstract":"

    Show the user that the update is extracting with progress

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showInstallingUpdate":{"name":"-showInstallingUpdate","abstract":"

    Show the user that the update is installing

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showReadyToInstallAndRelaunch:":{"name":"-showReadyToInstallAndRelaunch:","abstract":"

    Show the user that the update is ready to install & relaunch

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showSendingTerminationSignal":{"name":"-showSendingTerminationSignal","abstract":"

    Show or dismiss progress while a termination signal is being sent to the application from Sparkle’s installer

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateInstalledAndRelaunched:acknowledgement:":{"name":"-showUpdateInstalledAndRelaunched:acknowledgement:","abstract":"

    Show the user that the update installation finished

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateInFocus":{"name":"-showUpdateInFocus","abstract":"

    Show the user the current presented update or its progress in utmost focus

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)dismissUpdateInstallation":{"name":"-dismissUpdateInstallation","abstract":"

    Dismiss the current update installation

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateNotFoundWithAcknowledgement:":{"name":"-showUpdateNotFoundWithAcknowledgement:","abstract":"

    Undocumented

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateInstallationDidFinishWithAcknowledgement:":{"name":"-showUpdateInstallationDidFinishWithAcknowledgement:","abstract":"

    Undocumented

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)dismissUserInitiatedUpdateCheck":{"name":"-dismissUserInitiatedUpdateCheck","abstract":"

    Undocumented

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:mayPerformUpdateCheck:error:":{"name":"-updater:mayPerformUpdateCheck:error:","abstract":"

    Returns whether to allow Sparkle to check for updates.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)allowedChannelsForUpdater:":{"name":"-allowedChannelsForUpdater:","abstract":"

    Returns the set of Sparkle channels the updater is allowed to find new updates from.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)feedURLStringForUpdater:":{"name":"-feedURLStringForUpdater:","abstract":"

    Returns a custom appcast URL used for checking for new updates.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)feedParametersForUpdater:sendingSystemProfile:":{"name":"-feedParametersForUpdater:sendingSystemProfile:","abstract":"

    Returns additional parameters to append to the appcast URL’s query string.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterShouldPromptForPermissionToCheckForUpdates:":{"name":"-updaterShouldPromptForPermissionToCheckForUpdates:","abstract":"

    Returns whether Sparkle should prompt the user about checking for new updates automatically.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)allowedSystemProfileKeysForUpdater:":{"name":"-allowedSystemProfileKeysForUpdater:","abstract":"

    Returns an allowed list of system profile keys to be appended to the appcast URL’s query string.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFinishLoadingAppcast:":{"name":"-updater:didFinishLoadingAppcast:","abstract":"

    Called after Sparkle has downloaded the appcast from the remote server.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFindValidUpdate:":{"name":"-updater:didFindValidUpdate:","abstract":"

    Called when a new valid update is found by the update driver.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:error:":{"name":"-updaterDidNotFindUpdate:error:","abstract":"

    Called when a valid new update is not found.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:":{"name":"-updaterDidNotFindUpdate:","abstract":"

    Called when a valid new update is not found.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)bestValidUpdateInAppcast:forUpdater:":{"name":"-bestValidUpdateInAppcast:forUpdater:","abstract":"

    Returns the item in the appcast corresponding to the update that should be installed.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldProceedWithUpdate:updateCheck:error:":{"name":"-updater:shouldProceedWithUpdate:updateCheck:error:","abstract":"

    Returns whether or not the updater should proceed with the new chosen update from the appcast.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:userDidSkipThisVersion:":{"name":"-updater:userDidSkipThisVersion:","abstract":"

    Called when an update is skipped by the user.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldDownloadReleaseNotesForUpdate:":{"name":"-updater:shouldDownloadReleaseNotesForUpdate:","abstract":"

    Returns whether the release notes (if available) should be downloaded after an update is found and shown.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willDownloadUpdate:withRequest:":{"name":"-updater:willDownloadUpdate:withRequest:","abstract":"

    Called immediately before downloading the specified update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didDownloadUpdate:":{"name":"-updater:didDownloadUpdate:","abstract":"

    Called immediately after succesfull download of the specified update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:failedToDownloadUpdate:error:":{"name":"-updater:failedToDownloadUpdate:error:","abstract":"

    Called after the specified update failed to download.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)userDidCancelDownload:":{"name":"-userDidCancelDownload:","abstract":"

    Called when the user cancels an update while it is being downloaded.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willExtractUpdate:":{"name":"-updater:willExtractUpdate:","abstract":"

    Called immediately before extracting the specified downloaded update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didExtractUpdate:":{"name":"-updater:didExtractUpdate:","abstract":"

    Called immediately after extracting the specified downloaded update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willInstallUpdate:":{"name":"-updater:willInstallUpdate:","abstract":"

    Called immediately before installing the specified update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:":{"name":"-updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:","abstract":"

    Returns whether the relaunch should be delayed in order to perform other tasks.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterShouldRelaunchApplication:":{"name":"-updaterShouldRelaunchApplication:","abstract":"

    Returns whether the application should be relaunched at all.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterWillRelaunchApplication:":{"name":"-updaterWillRelaunchApplication:","abstract":"

    Called immediately before relaunching.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)versionComparatorForUpdater:":{"name":"-versionComparatorForUpdater:","abstract":"

    Returns an object that compares version numbers to determine their arithmetic relation to each other.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willScheduleUpdateCheckAfterDelay:":{"name":"-updater:willScheduleUpdateCheckAfterDelay:","abstract":"

    Called when a background update will be scheduled after a delay.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterWillNotScheduleUpdateCheck:":{"name":"-updaterWillNotScheduleUpdateCheck:","abstract":"

    Called when no update checks will be scheduled in the future.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)decryptionPasswordForUpdater:":{"name":"-decryptionPasswordForUpdater:","abstract":"

    Returns the decryption password (if any) which is used to extract the update archive DMG.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willInstallUpdateOnQuit:immediateInstallationBlock:":{"name":"-updater:willInstallUpdateOnQuit:immediateInstallationBlock:","abstract":"

    Called when an update is scheduled to be silently installed on quit after downloading the update automatically.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didAbortWithError:":{"name":"-updater:didAbortWithError:","abstract":"

    Called after the update driver aborts due to an error.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFinishUpdateCycleForUpdateCheck:error:":{"name":"-updater:didFinishUpdateCycleForUpdateCheck:error:","abstract":"

    Called after the update driver finishes.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterMayCheckForUpdates:":{"name":"-updaterMayCheckForUpdates:","abstract":"

    Undocumented

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUStandardUserDriverDelegate.html#/c:objc(pl)SPUStandardUserDriverDelegate(im)standardUserDriverWillShowModalAlert":{"name":"-standardUserDriverWillShowModalAlert","abstract":"

    Called before showing a modal alert window,","parent_name":"SPUStandardUserDriverDelegate"},"Protocols/SPUStandardUserDriverDelegate.html#/c:objc(pl)SPUStandardUserDriverDelegate(im)standardUserDriverDidShowModalAlert":{"name":"-standardUserDriverDidShowModalAlert","abstract":"

    Called after showing a modal alert window,","parent_name":"SPUStandardUserDriverDelegate"},"Protocols/SPUStandardUserDriverDelegate.html#/c:objc(pl)SPUStandardUserDriverDelegate(im)standardUserDriverRequestsVersionDisplayer":{"name":"-standardUserDriverRequestsVersionDisplayer","abstract":"

    Returns an object that formats version numbers for display to the user.","parent_name":"SPUStandardUserDriverDelegate"},"Protocols/SPUStandardUserDriverDelegate.html":{"name":"SPUStandardUserDriverDelegate","abstract":"

    A protocol for Sparkle’s standard user driver’s delegate

    "},"Protocols/SPUUpdaterDelegate.html":{"name":"SPUUpdaterDelegate","abstract":"

    Provides delegation methods to control the behavior of an SPUUpdater object.

    "},"Protocols/SPUUserDriver.html":{"name":"SPUUserDriver","abstract":"

    The API in Sparkle for controlling the user interaction.

    "},"Protocols/SUUpdaterDelegate.html":{"name":"SUUpdaterDelegate","abstract":"

    Undocumented

    "},"Protocols/SUVersionComparison.html":{"name":"SUVersionComparison","abstract":"

    Provides version comparison facilities for Sparkle.

    "},"Protocols/SUVersionDisplay.html":{"name":"SUVersionDisplay","abstract":"

    Applies special display formatting to version numbers.

    "},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonUnknown":{"name":"SPUNoUpdateFoundReasonUnknown","abstract":"

    A new update is unavailable for an unknown reason.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonOnLatestVersion":{"name":"SPUNoUpdateFoundReasonOnLatestVersion","abstract":"

    A new update is unavailable because the user is on the latest known version in the appcast feed.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonOnNewerThanLatestVersion":{"name":"SPUNoUpdateFoundReasonOnNewerThanLatestVersion","abstract":"

    A new update is unavailable because the user is on a version newer than the latest known version in the appcast feed.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonSystemIsTooOld":{"name":"SPUNoUpdateFoundReasonSystemIsTooOld","abstract":"

    A new update is unavailable because the user’s operating system version is too old for the update.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonSystemIsTooNew":{"name":"SPUNoUpdateFoundReasonSystemIsTooNew","abstract":"

    A new update is unavailable because the user’s operating system version is too new for the update.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SUError.html#/c:@E@SUError@SUNoPublicDSAFoundError":{"name":"SUNoPublicDSAFoundError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInsufficientSigningError":{"name":"SUInsufficientSigningError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInsecureFeedURLError":{"name":"SUInsecureFeedURLError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInvalidFeedURLError":{"name":"SUInvalidFeedURLError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInvalidUpdaterError":{"name":"SUInvalidUpdaterError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInvalidHostBundleIdentifierError":{"name":"SUInvalidHostBundleIdentifierError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInvalidHostVersionError":{"name":"SUInvalidHostVersionError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUAppcastParseError":{"name":"SUAppcastParseError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUNoUpdateError":{"name":"SUNoUpdateError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUAppcastError":{"name":"SUAppcastError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SURunningFromDiskImageError":{"name":"SURunningFromDiskImageError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUResumeAppcastError":{"name":"SUResumeAppcastError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SURunningTranslocated":{"name":"SURunningTranslocated","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUWebKitTerminationError":{"name":"SUWebKitTerminationError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUTemporaryDirectoryError":{"name":"SUTemporaryDirectoryError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUDownloadError":{"name":"SUDownloadError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUUnarchivingError":{"name":"SUUnarchivingError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUSignatureError":{"name":"SUSignatureError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUValidationError":{"name":"SUValidationError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUFileCopyFailure":{"name":"SUFileCopyFailure","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUAuthenticationFailure":{"name":"SUAuthenticationFailure","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUMissingUpdateError":{"name":"SUMissingUpdateError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUMissingInstallerToolError":{"name":"SUMissingInstallerToolError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SURelaunchError":{"name":"SURelaunchError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInstallationError":{"name":"SUInstallationError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUDowngradeError":{"name":"SUDowngradeError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInstallationCanceledError":{"name":"SUInstallationCanceledError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInstallationAuthorizeLaterError":{"name":"SUInstallationAuthorizeLaterError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUNotValidUpdateError":{"name":"SUNotValidUpdateError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUAgentInvalidationError":{"name":"SUAgentInvalidationError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUIncorrectAPIUsageError":{"name":"SUIncorrectAPIUsageError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SPUUserUpdateStage.html#/c:@E@SPUUserUpdateStage@SPUUserUpdateStageNotDownloaded":{"name":"SPUUserUpdateStageNotDownloaded","abstract":"

    The update has not been downloaded.

    ","parent_name":"SPUUserUpdateStage"},"Enums/SPUUserUpdateStage.html#/c:@E@SPUUserUpdateStage@SPUUserUpdateStageDownloaded":{"name":"SPUUserUpdateStageDownloaded","abstract":"

    The update has already been downloaded but not begun installing.

    ","parent_name":"SPUUserUpdateStage"},"Enums/SPUUserUpdateStage.html#/c:@E@SPUUserUpdateStage@SPUUserUpdateStageInstalling":{"name":"SPUUserUpdateStageInstalling","abstract":"

    The update has already been downloaded and began installing in the background.

    ","parent_name":"SPUUserUpdateStage"},"Enums/SPUUserUpdateChoice.html#/c:@E@SPUUserUpdateChoice@SPUUserUpdateChoiceSkip":{"name":"SPUUserUpdateChoiceSkip","abstract":"

    Dismisses the update and skips being notified of it in the future.

    ","parent_name":"SPUUserUpdateChoice"},"Enums/SPUUserUpdateChoice.html#/c:@E@SPUUserUpdateChoice@SPUUserUpdateChoiceInstall":{"name":"SPUUserUpdateChoiceInstall","abstract":"

    Downloads (if needed) and installs the update.

    ","parent_name":"SPUUserUpdateChoice"},"Enums/SPUUserUpdateChoice.html#/c:@E@SPUUserUpdateChoice@SPUUserUpdateChoiceDismiss":{"name":"SPUUserUpdateChoiceDismiss","abstract":"

    Dismisses the update until Sparkle reminds the user of it at a later time.

    ","parent_name":"SPUUserUpdateChoice"},"Enums/SPUUpdateCheck.html#/c:@E@SPUUpdateCheck@SPUUpdateCheckUpdates":{"name":"SPUUpdateCheckUpdates","abstract":"

    The user-initiated update check corresponding to -[SPUUpdater checkForUpdates].

    ","parent_name":"SPUUpdateCheck"},"Enums/SPUUpdateCheck.html#/c:@E@SPUUpdateCheck@SPUUpdateCheckUpdatesInBackground":{"name":"SPUUpdateCheckUpdatesInBackground","abstract":"

    The background scheduled update check corresponding to -[SPUUpdater checkForUpdatesInBackground].

    ","parent_name":"SPUUpdateCheck"},"Enums/SPUUpdateCheck.html#/c:@E@SPUUpdateCheck@SPUUpdateCheckUpdateInformation":{"name":"SPUUpdateCheckUpdateInformation","abstract":"

    The informational probe update check corresponding to -[SPUUpdater checkForUpdateInformation].

    ","parent_name":"SPUUpdateCheck"},"Enums/SPUUpdateCheck.html":{"name":"SPUUpdateCheck","abstract":"

    Describes the type of update check being performed.

    "},"Enums/SPUUserUpdateChoice.html":{"name":"SPUUserUpdateChoice","abstract":"

    A choice made by the user when prompted with a new update.

    "},"Enums/SPUUserUpdateStage.html":{"name":"SPUUserUpdateStage","abstract":"

    Describes the current stage an update is undergoing.

    "},"Enums/SUError.html":{"name":"SUError","abstract":"

    Undocumented

    "},"Enums/SPUNoUpdateFoundReason.html":{"name":"SPUNoUpdateFoundReason","abstract":"

    The reason why a new update is not available.

    "},"Constants.html#/c:@SUUpdaterDidFinishLoadingAppCastNotification":{"name":"SUUpdaterDidFinishLoadingAppCastNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterDidFindValidUpdateNotification":{"name":"SUUpdaterDidFindValidUpdateNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterDidNotFindUpdateNotification":{"name":"SUUpdaterDidNotFindUpdateNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterWillRestartNotification":{"name":"SUUpdaterWillRestartNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterAppcastItemNotificationKey":{"name":"SUUpdaterAppcastItemNotificationKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterAppcastNotificationKey":{"name":"SUUpdaterAppcastNotificationKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerApplicationNameKey":{"name":"SUSystemProfilerApplicationNameKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerApplicationVersionKey":{"name":"SUSystemProfilerApplicationVersionKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPU64bitKey":{"name":"SUSystemProfilerCPU64bitKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPUCountKey":{"name":"SUSystemProfilerCPUCountKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPUFrequencyKey":{"name":"SUSystemProfilerCPUFrequencyKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPUTypeKey":{"name":"SUSystemProfilerCPUTypeKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPUSubtypeKey":{"name":"SUSystemProfilerCPUSubtypeKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerHardwareModelKey":{"name":"SUSystemProfilerHardwareModelKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerMemoryKey":{"name":"SUSystemProfilerMemoryKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerOperatingSystemVersionKey":{"name":"SUSystemProfilerOperatingSystemVersionKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerPreferredLanguageKey":{"name":"SUSystemProfilerPreferredLanguageKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSparkleErrorDomain":{"name":"SUSparkleErrorDomain","abstract":"

    Error domain used by Sparkle

    "},"Constants.html#/c:@SPUNoUpdateFoundReasonKey":{"name":"SPUNoUpdateFoundReasonKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SPULatestAppcastItemFoundKey":{"name":"SPULatestAppcastItemFoundKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SPUNoUpdateFoundUserInitiatedKey":{"name":"SPUNoUpdateFoundUserInitiatedKey","abstract":"

    Undocumented

    "},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)delegate":{"name":"delegate","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(cm)sharedUpdater":{"name":"+sharedUpdater","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(cm)updaterForBundle:":{"name":"+updaterForBundle:","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)initForBundle:":{"name":"-initForBundle:","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)checkForUpdates:":{"name":"-checkForUpdates:","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)validateMenuItem:":{"name":"-validateMenuItem:","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)checkForUpdatesInBackground":{"name":"-checkForUpdatesInBackground","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)automaticallyChecksForUpdates":{"name":"automaticallyChecksForUpdates","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)automaticallyDownloadsUpdates":{"name":"automaticallyDownloadsUpdates","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)updateCheckInterval":{"name":"updateCheckInterval","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)checkForUpdateInformation":{"name":"-checkForUpdateInformation","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)feedURL":{"name":"feedURL","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)hostBundle":{"name":"hostBundle","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)sparkleBundle":{"name":"sparkleBundle","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)userAgentString":{"name":"userAgentString","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)httpHeaders":{"name":"httpHeaders","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)sendsSystemProfile":{"name":"sendsSystemProfile","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)decryptionPassword":{"name":"decryptionPassword","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)lastUpdateCheckDate":{"name":"lastUpdateCheckDate","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)resetUpdateCycle":{"name":"-resetUpdateCycle","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)updateInProgress":{"name":"updateInProgress","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdatePermissionResponse.html#/c:objc(cs)SUUpdatePermissionResponse(im)initWithAutomaticUpdateChecks:sendSystemProfile:":{"name":"-initWithAutomaticUpdateChecks:sendSystemProfile:","abstract":"

    Initializes a new update permission response instance.

    ","parent_name":"SUUpdatePermissionResponse"},"Classes/SUUpdatePermissionResponse.html#/c:objc(cs)SUUpdatePermissionResponse(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SUUpdatePermissionResponse"},"Classes/SUUpdatePermissionResponse.html#/c:objc(cs)SUUpdatePermissionResponse(py)automaticUpdateChecks":{"name":"automaticUpdateChecks","abstract":"

    A read-only property indicating whether automatic update checks are allowed or not.

    ","parent_name":"SUUpdatePermissionResponse"},"Classes/SUUpdatePermissionResponse.html#/c:objc(cs)SUUpdatePermissionResponse(py)sendSystemProfile":{"name":"sendSystemProfile","abstract":"

    A read-only property indicating if system profile should be sent or not.

    ","parent_name":"SUUpdatePermissionResponse"},"Classes/SUStandardVersionComparator.html#/c:objc(cs)SUStandardVersionComparator(im)init":{"name":"-init","abstract":"

    Initializes a new instance of the standard version comparator.

    ","parent_name":"SUStandardVersionComparator"},"Classes/SUStandardVersionComparator.html#/c:objc(cs)SUStandardVersionComparator(cpy)defaultComparator":{"name":"defaultComparator","abstract":"

    A singleton instance of the comparator.

    ","parent_name":"SUStandardVersionComparator"},"Classes/SUStandardVersionComparator.html#/c:objc(cs)SUStandardVersionComparator(im)compareVersion:toVersion:":{"name":"-compareVersion:toVersion:","abstract":"

    Compares two version strings through textual analysis.

    ","parent_name":"SUStandardVersionComparator"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)versionString":{"name":"versionString","abstract":"

    The version of the update item.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)displayVersionString":{"name":"displayVersionString","abstract":"

    The human-readable display version of the update item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)fileURL":{"name":"fileURL","abstract":"

    The file URL to the update item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)contentLength":{"name":"contentLength","abstract":"

    The content length of the download in bytes.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)infoURL":{"name":"infoURL","abstract":"

    The info URL to the update item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)informationOnlyUpdate":{"name":"informationOnlyUpdate","abstract":"

    Indicates whether or not the update item is only informational and has no download.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)title":{"name":"title","abstract":"

    The title of the appcast item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)dateString":{"name":"dateString","abstract":"

    The date string of the appcast item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)date":{"name":"date","abstract":"

    The date constructed from the dateString property if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)releaseNotesURL":{"name":"releaseNotesURL","abstract":"

    The release notes URL of the appcast item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)itemDescription":{"name":"itemDescription","abstract":"

    The description of the appcast item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)minimumSystemVersion":{"name":"minimumSystemVersion","abstract":"

    The required minimum system operating version string for this update if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)minimumOperatingSystemVersionIsOK":{"name":"minimumOperatingSystemVersionIsOK","abstract":"

    Indicates whether or not the current running system passes the minimumSystemVersion requirement.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)maximumSystemVersion":{"name":"maximumSystemVersion","abstract":"

    The required maximum system operating version string for this update if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)maximumOperatingSystemVersionIsOK":{"name":"maximumOperatingSystemVersionIsOK","abstract":"

    Indicates whether or not the current running system passes the maximumSystemVersion requirement.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)channel":{"name":"channel","abstract":"

    The channel the update item is on if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)installationType":{"name":"installationType","abstract":"

    The installation type of the update at fileURL

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)phasedRolloutInterval":{"name":"phasedRolloutInterval","abstract":"

    The phased rollout interval of the update item in seconds if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)minimumAutoupdateVersion":{"name":"minimumAutoupdateVersion","abstract":"

    The minimum bundle version string this update requires for automatically downloading and installing updates if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)majorUpgrade":{"name":"majorUpgrade","abstract":"

    Indicates whether or not the update item is a major upgrade.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)criticalUpdate":{"name":"criticalUpdate","abstract":"

    Indicates whether or not the update item is critical.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)osString":{"name":"osString","abstract":"

    Specifies the operating system the download update is available for if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)macOsUpdate":{"name":"macOsUpdate","abstract":"

    Indicates whether or not this update item is for macOS.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)deltaUpdates":{"name":"deltaUpdates","abstract":"

    The delta updates for this update item.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)deltaUpdate":{"name":"deltaUpdate","abstract":"

    Indicates whether or not the update item is a delta update.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)propertiesDictionary":{"name":"propertiesDictionary","abstract":"

    The dictionary representing the entire appcast item.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(cm)emptyAppcastItem":{"name":"+emptyAppcastItem","abstract":"

    An empty appcast item.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(im)initWithDictionary:":{"name":"-initWithDictionary:","abstract":"

    Undocumented

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(im)initWithDictionary:failureReason:":{"name":"-initWithDictionary:failureReason:","abstract":"

    Undocumented

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(im)initWithDictionary:relativeToURL:failureReason:":{"name":"-initWithDictionary:relativeToURL:failureReason:","abstract":"

    Undocumented

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcast.html#/c:objc(cs)SUAppcast(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SUAppcast"},"Classes/SUAppcast.html#/c:objc(cs)SUAppcast(py)items":{"name":"items","abstract":"

    The collection of update items.

    ","parent_name":"SUAppcast"},"Classes/SPUUserUpdateState.html#/c:objc(cs)SPUUserUpdateState(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SPUUserUpdateState"},"Classes/SPUUserUpdateState.html#/c:objc(cs)SPUUserUpdateState(py)stage":{"name":"stage","abstract":"

    The current update stage.

    ","parent_name":"SPUUserUpdateState"},"Classes/SPUUserUpdateState.html#/c:objc(cs)SPUUserUpdateState(py)userInitiated":{"name":"userInitiated","abstract":"

    Indicates whether or not the update check was initiated by the user.

    ","parent_name":"SPUUserUpdateState"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(im)initWithHostBundle:":{"name":"-initWithHostBundle:","abstract":"

    Undocumented

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)automaticallyChecksForUpdates":{"name":"automaticallyChecksForUpdates","abstract":"

    Indicates whether or not automatic update checks are enabled.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)updateCheckInterval":{"name":"updateCheckInterval","abstract":"

    The regular update check interval.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)allowsAutomaticUpdates":{"name":"allowsAutomaticUpdates","abstract":"

    Indicates whether or not automatically downloading updates is allowed to be turned on by the user.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)automaticallyDownloadsUpdates":{"name":"automaticallyDownloadsUpdates","abstract":"

    Indicates whether or not automatically downloading updates is enabled by the user or developer.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)sendsSystemProfile":{"name":"sendsSystemProfile","abstract":"

    Indicates whether or not anonymous system profile information is sent when checking for updates.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)initWithHostBundle:applicationBundle:userDriver:delegate:":{"name":"-initWithHostBundle:applicationBundle:userDriver:delegate:","abstract":"

    Initializes a new SPUUpdater instance

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)init":{"name":"-init","abstract":"

    Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standard adapter instead.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)startUpdater:":{"name":"-startUpdater:","abstract":"

    Starts the updater.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)checkForUpdates":{"name":"-checkForUpdates","abstract":"

    Checks for updates, and displays progress while doing so if needed.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)checkForUpdatesInBackground":{"name":"-checkForUpdatesInBackground","abstract":"

    Checks for updates, but does not display any UI unless an update is found.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)checkForUpdateInformation":{"name":"-checkForUpdateInformation","abstract":"

    Begins a “probing” check for updates which will not actually offer to","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)canCheckForUpdates":{"name":"canCheckForUpdates","abstract":"

    A property indicating whether or not updates can be checked by the user.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)sessionInProgress":{"name":"sessionInProgress","abstract":"

    A property indicating whether or not an update session is in progress.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)automaticallyChecksForUpdates":{"name":"automaticallyChecksForUpdates","abstract":"

    A property indicating whether or not to check for updates automatically.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)updateCheckInterval":{"name":"updateCheckInterval","abstract":"

    A property indicating the current automatic update check interval in seconds.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)automaticallyDownloadsUpdates":{"name":"automaticallyDownloadsUpdates","abstract":"

    A property indicating whether or not updates can be automatically downloaded in the background.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)feedURL":{"name":"feedURL","abstract":"

    The URL of the appcast used to download update information.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)hostBundle":{"name":"hostBundle","abstract":"

    The host bundle that is being updated.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)userAgentString":{"name":"userAgentString","abstract":"

    The user agent used when checking for updates.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)httpHeaders":{"name":"httpHeaders","abstract":"

    The HTTP headers used when checking for updates, downloading release notes, and downloading updates.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)sendsSystemProfile":{"name":"sendsSystemProfile","abstract":"

    A property indicating whether or not the user’s system profile information is sent when checking for updates.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)lastUpdateCheckDate":{"name":"lastUpdateCheckDate","abstract":"

    The date of the last update check or nil if no check has been performed yet.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)resetUpdateCycle":{"name":"-resetUpdateCycle","abstract":"

    Appropriately schedules or cancels the update checking timer according to the preferences for time interval and automatic checks.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)systemProfileArray":{"name":"systemProfileArray","abstract":"

    The system profile information that is sent when checking for updates.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdatePermissionRequest.html#/c:objc(cs)SPUUpdatePermissionRequest(im)initWithSystemProfile:":{"name":"-initWithSystemProfile:","abstract":"

    Initializes a new update permission request instance.

    ","parent_name":"SPUUpdatePermissionRequest"},"Classes/SPUUpdatePermissionRequest.html#/c:objc(cs)SPUUpdatePermissionRequest(py)systemProfile":{"name":"systemProfile","abstract":"

    A read-only property for the user’s system profile.

    ","parent_name":"SPUUpdatePermissionRequest"},"Classes/SPUStandardUserDriver.html#/c:objc(cs)SPUStandardUserDriver(im)initWithHostBundle:delegate:":{"name":"-initWithHostBundle:delegate:","abstract":"

    Initializes a Sparkle’s standard user driver for user update interactions

    ","parent_name":"SPUStandardUserDriver"},"Classes/SPUStandardUserDriver.html#/c:objc(cs)SPUStandardUserDriver(im)init":{"name":"-init","abstract":"

    Use initWithHostBundle:delegate: instead.

    ","parent_name":"SPUStandardUserDriver"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(py)updaterDelegate":{"name":"updaterDelegate","abstract":"

    Interface builder outlet for the updater’s delegate.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(py)userDriverDelegate":{"name":"userDriverDelegate","abstract":"

    Interface builder outlet for the user driver’s delegate.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(py)updater":{"name":"updater","abstract":"

    Accessible property for the updater. Some properties on the updater can be binded via KVO

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(py)userDriver":{"name":"userDriver","abstract":"

    Accessible property for the updater’s user driver.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)init":{"name":"-init","abstract":"

    Create a new SPUStandardUpdaterController from a nib.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)initWithUpdaterDelegate:userDriverDelegate:":{"name":"-initWithUpdaterDelegate:userDriverDelegate:","abstract":"

    Create a new SPUStandardUpdaterController programmatically.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)initWithStartingUpdater:updaterDelegate:userDriverDelegate:":{"name":"-initWithStartingUpdater:updaterDelegate:userDriverDelegate:","abstract":"

    Create a new SPUStandardUpdaterController programmatically allowing you to specify whether or not to start the updater immediately.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)startUpdater":{"name":"-startUpdater","abstract":"

    Starts the updater if it has not already been started.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)checkForUpdates:":{"name":"-checkForUpdates:","abstract":"

    Explicitly checks for updates and displays a progress dialog while doing so.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUDownloadData.html#/c:objc(cs)SPUDownloadData(py)data":{"name":"data","abstract":"

    The raw data that was downloaded.

    ","parent_name":"SPUDownloadData"},"Classes/SPUDownloadData.html#/c:objc(cs)SPUDownloadData(py)URL":{"name":"URL","abstract":"

    The URL that was fetched from.

    ","parent_name":"SPUDownloadData"},"Classes/SPUDownloadData.html#/c:objc(cs)SPUDownloadData(py)textEncodingName":{"name":"textEncodingName","abstract":"

    The IANA charset encoding name if available. Eg: “utf-8”

    ","parent_name":"SPUDownloadData"},"Classes/SPUDownloadData.html#/c:objc(cs)SPUDownloadData(py)MIMEType":{"name":"MIMEType","abstract":"

    The MIME type if available. Eg: “text/plain”

    ","parent_name":"SPUDownloadData"},"Classes/SPUDownloadData.html":{"name":"SPUDownloadData","abstract":"

    A class for containing downloaded data along with some information about it.

    "},"Classes/SPUStandardUpdaterController.html":{"name":"SPUStandardUpdaterController","abstract":"

    A controller class that instantiates a SPUUpdater and allows binding UI to its updater settings.

    "},"Classes/SPUStandardUserDriver.html":{"name":"SPUStandardUserDriver","abstract":"

    Sparkle’s standard built-in user driver for updater interactions

    "},"Classes/SPUUpdatePermissionRequest.html":{"name":"SPUUpdatePermissionRequest","abstract":"

    This class represents information needed to make a permission request for checking updates.

    "},"Classes/SPUUpdater.html":{"name":"SPUUpdater","abstract":"

    The main API in Sparkle for controlling the update mechanism.

    "},"Classes/SPUUpdaterSettings.html":{"name":"SPUUpdaterSettings","abstract":"

    This class can be used for reading certain updater settings.

    "},"Classes/SPUUserUpdateState.html":{"name":"SPUUserUpdateState","abstract":"

    This represents the user’s current update state.

    "},"Classes/SUAppcast.html":{"name":"SUAppcast","abstract":"

    The appcast representing a collection of SUAppcastItem items in the feed.

    "},"Classes/SUAppcastItem.html":{"name":"SUAppcastItem","abstract":"

    The appcast item describing an update in the application’s appcast feed.

    "},"Classes/SUStandardVersionComparator.html":{"name":"SUStandardVersionComparator","abstract":"

    Sparkle’s default version comparator.

    "},"Classes/SUUpdatePermissionResponse.html":{"name":"SUUpdatePermissionResponse","abstract":"

    This class represents a response for permission to check updates.

    "},"Classes/SUUpdater.html":{"name":"SUUpdater","abstract":"

    The legacy API in Sparkle for controlling the update mechanism.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Constants.html":{"name":"Constants","abstract":"

    The following constants are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "}} \ No newline at end of file diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_0.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_0.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_0.js new file mode 100644 index 0000000..605bdd6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['allowedchannelsforupdater_3a_0',['allowedChannelsForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a717db8ad85d47309e3f4deebdc09e7b4',1,'SPUUpdaterDelegate-p']]], + ['allowedsystemprofilekeysforupdater_3a_1',['allowedSystemProfileKeysForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#aec7e4b19a2fc4afdcc86286c3bbf06b1',1,'SPUUpdaterDelegate-p']]], + ['allowsautomaticupdates_2',['allowsAutomaticUpdates',['../interface_s_p_u_updater_settings.html#ae9b58785573e4d3e2abea0c57544681f',1,'SPUUpdaterSettings']]], + ['automaticallychecksforupdates_3',['automaticallyChecksForUpdates',['../interface_s_p_u_updater.html#a9a154002bdbe3306e763d000502a0980',1,'SPUUpdater::automaticallyChecksForUpdates()'],['../interface_s_p_u_updater_settings.html#a41e4d0f0e10e9afa92fe5c81d21bfde3',1,'SPUUpdaterSettings::automaticallyChecksForUpdates()']]], + ['automaticallydownloadsupdates_4',['automaticallyDownloadsUpdates',['../interface_s_p_u_updater.html#aa5f5578c29e6496cb90546aca35804e6',1,'SPUUpdater::automaticallyDownloadsUpdates()'],['../interface_s_p_u_updater_settings.html#af1a1fba7d6dcd05b52339f173c7a0a8d',1,'SPUUpdaterSettings::automaticallyDownloadsUpdates()']]], + ['automaticupdatechecks_5',['automaticUpdateChecks',['../interface_s_u_update_permission_response.html#a84a21b766bcbbe1fff16c26b8689aa56',1,'SUUpdatePermissionResponse']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_1.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_1.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_1.js new file mode 100644 index 0000000..797ad91 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bestvalidupdateinappcast_3aforupdater_3a_6',['bestValidUpdateInAppcast:forUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a0f38585740c428ce8904bf38f712396d',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_2.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_2.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_2.js new file mode 100644 index 0000000..712d85e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_2.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['cancheckforupdates_7',['canCheckForUpdates',['../interface_s_p_u_updater.html#aa8ec4e87308007ae49228165534e683c',1,'SPUUpdater']]], + ['changeownerandgroupofitematrooturl_3atomatchurl_3aerror_3a_8',['changeOwnerAndGroupOfItemAtRootURL:toMatchURL:error:',['../interface_s_u_file_manager.html#af0defc82017c43bd1f0eab5540c05f09',1,'SUFileManager']]], + ['checkforupdateinformation_9',['checkForUpdateInformation',['../interface_s_p_u_updater.html#ad38751e23aa42be220206e7e671c697d',1,'SPUUpdater']]], + ['checkforupdates_10',['checkForUpdates',['../interface_s_p_u_updater.html#a7df56bb150d327beb72b7b050799790d',1,'SPUUpdater']]], + ['checkforupdates_3a_11',['checkForUpdates:',['../interface_s_p_u_standard_updater_controller.html#af2d2c860e3f3ae9d8feba95d196c4dc9',1,'SPUStandardUpdaterController']]], + ['checkforupdatesinbackground_12',['checkForUpdatesInBackground',['../interface_s_p_u_updater.html#a2e1e3ca715f29bae7ee0b16e15e34850',1,'SPUUpdater']]], + ['compareversion_3atoversion_3a_13',['compareVersion:toVersion:',['../interface_s_u_standard_version_comparator.html#a50d145ce078dd80d55346f17e946d282',1,'SUStandardVersionComparator::compareVersion:toVersion:()'],['../protocol_s_u_version_comparison-p.html#a0f94aedcc244ce41757e1fa620d0eb40',1,'SUVersionComparison-p::compareVersion:toVersion:()']]], + ['copyitematurl_3atourl_3aerror_3a_14',['copyItemAtURL:toURL:error:',['../interface_s_u_file_manager.html#ac33297bd6dfbf11a23c3c0ded059f4d0',1,'SUFileManager']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_3.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_3.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_3.js new file mode 100644 index 0000000..6409f82 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['data_15',['data',['../interface_s_p_u_download_data.html#ae8c680d14f0213633c117684e58fbef2',1,'SPUDownloadData']]], + ['decryptionpasswordforupdater_3a_16',['decryptionPasswordForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#aaf8dbbcdef45b16d2fc43a4cc5487051',1,'SPUUpdaterDelegate-p']]], + ['defaultcomparator_17',['defaultComparator',['../interface_s_u_standard_version_comparator.html#a67be5d5bf36c4774432d912261cb3048',1,'SUStandardVersionComparator']]], + ['dismissupdateinstallation_18',['dismissUpdateInstallation',['../protocol_s_p_u_user_driver-p.html#a5df3b42fd77ab1b5c971c8df9ef35048',1,'SPUUserDriver-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_4.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_4.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_4.js new file mode 100644 index 0000000..62f3039 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['feedparametersforupdater_3asendingsystemprofile_3a_19',['feedParametersForUpdater:sendingSystemProfile:',['../protocol_s_p_u_updater_delegate-p.html#a43cee9820784cffdffc3b48d8b07407e',1,'SPUUpdaterDelegate-p']]], + ['feedurl_20',['feedURL',['../interface_s_p_u_updater.html#af49bc6a058dc0e758943a4b4b1ff98dc',1,'SPUUpdater']]], + ['feedurlstringforupdater_3a_21',['feedURLStringForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#afd1a89b0133a35faf849b58944349516',1,'SPUUpdaterDelegate-p']]], + ['formatversion_3aandversion_3a_22',['formatVersion:andVersion:',['../protocol_s_u_version_display-p.html#afb8728137859a22c1ed795637e654dbd',1,'SUVersionDisplay-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_5.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_5.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_5.js new file mode 100644 index 0000000..96e99e0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hasanykeys_23',['hasAnyKeys',['../interface_s_u_public_keys.html#ae2a53f6befe084d9a6fa7369a0dbe78a',1,'SUPublicKeys']]], + ['hostbundle_24',['hostBundle',['../interface_s_p_u_updater.html#aeae19dba9dc83ae9098279b0eed76d47',1,'SPUUpdater']]], + ['httpheaders_25',['httpHeaders',['../interface_s_p_u_updater.html#a2e2747823e204ebc07800ae31c201ad1',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_6.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_6.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_6.js new file mode 100644 index 0000000..550eedf --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_6.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['init_26',['init',['../interface_s_u_file_manager.html#a972da7c2fb112d09d4903ada3564126a',1,'SUFileManager::init()'],['../interface_s_u_standard_version_comparator.html#aef2dc178fc9895961ccb8ba966c1446b',1,'SUStandardVersionComparator::init()']]], + ['initwithautomaticupdatechecks_3asendsystemprofile_3a_27',['initWithAutomaticUpdateChecks:sendSystemProfile:',['../interface_s_u_update_permission_response.html#a09be7ccbcaf1521fc9a3f5dd420785ee',1,'SUUpdatePermissionResponse']]], + ['initwithdictionary_3arelativetourl_3astateresolver_3afailurereason_3a_28',['initWithDictionary:relativeToURL:stateResolver:failureReason:',['../category_s_u_appcast_item_07_private_08.html#a0687fe14843337befdfa749e77de60a0',1,'SUAppcastItem(Private)::initWithDictionary:relativeToURL:stateResolver:failureReason:()'],['../interface_s_u_appcast_item.html#a0687fe14843337befdfa749e77de60a0',1,'SUAppcastItem::initWithDictionary:relativeToURL:stateResolver:failureReason:()']]], + ['initwithhostbundle_3aapplicationbundle_3auserdriver_3adelegate_3a_29',['initWithHostBundle:applicationBundle:userDriver:delegate:',['../interface_s_p_u_updater.html#aed247e3fde0667e50b8d2345e84033e1',1,'SPUUpdater']]], + ['initwithhostbundle_3adelegate_3a_30',['initWithHostBundle:delegate:',['../interface_s_p_u_standard_user_driver.html#a153eafa16df66af096947673762c2deb',1,'SPUStandardUserDriver']]], + ['initwithstartingupdater_3aupdaterdelegate_3auserdriverdelegate_3a_31',['initWithStartingUpdater:updaterDelegate:userDriverDelegate:',['../interface_s_p_u_standard_updater_controller.html#a5612aa1955b41cd306200dc451c2079c',1,'SPUStandardUpdaterController']]], + ['initwithsystemprofile_3a_32',['initWithSystemProfile:',['../interface_s_p_u_update_permission_request.html#a111cc1f6605e481954f1ea57f833b6ab',1,'SPUUpdatePermissionRequest']]], + ['initwithupdaterdelegate_3auserdriverdelegate_3a_33',['initWithUpdaterDelegate:userDriverDelegate:',['../interface_s_p_u_standard_updater_controller.html#a696072b114786259d2e6744914b55850',1,'SPUStandardUpdaterController']]], + ['installerprogressappcontroller_34',['InstallerProgressAppController',['../interface_installer_progress_app_controller.html',1,'']]], + ['installerprogressappcontroller_28_29_35',['InstallerProgressAppController()',['../category_installer_progress_app_controller_07_08.html',1,'']]], + ['installerprogressdelegate_2dp_36',['InstallerProgressDelegate-p',['../protocol_installer_progress_delegate-p.html',1,'']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_7.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_7.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_7.js new file mode 100644 index 0000000..a25460b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lastupdatecheckdate_37',['lastUpdateCheckDate',['../interface_s_p_u_updater.html#a22a62559c6938c7a34b1787f22043010',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_8.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_8.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_8.js new file mode 100644 index 0000000..2402d38 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['makedirectoryaturl_3aerror_3a_38',['makeDirectoryAtURL:error:',['../interface_s_u_file_manager.html#ace4c529974dc1b64360db12689c2e9aa',1,'SUFileManager']]], + ['maketemporarydirectorywithpreferredname_3aappropriatefordirectoryurl_3aerror_3a_39',['makeTemporaryDirectoryWithPreferredName:appropriateForDirectoryURL:error:',['../interface_s_u_file_manager.html#a055d2ef9910e85c90a7d0dc34b34ce92',1,'SUFileManager']]], + ['mimetype_40',['MIMEType',['../interface_s_p_u_download_data.html#a108d9dec279550089dbea559e449321c',1,'SPUDownloadData']]], + ['moveitematurl_3atourl_3aerror_3a_41',['moveItemAtURL:toURL:error:',['../interface_s_u_file_manager.html#a8f9d15f622a08284e2d5157ebea440f3',1,'SUFileManager']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_9.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_9.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_9.js new file mode 100644 index 0000000..ee69966 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ns_5funavailable_42',['NS_UNAVAILABLE',['../interface_s_p_u_standard_updater_controller.html#a3c582fd7f0de322edc97915c9405eced',1,'SPUStandardUpdaterController::NS_UNAVAILABLE()'],['../interface_s_p_u_standard_user_driver.html#a9ad2b659b5760b2f4274e5c63b1f8094',1,'SPUStandardUserDriver::NS_UNAVAILABLE()'],['../interface_s_p_u_updater.html#ac2907583983833ce9f09bee2867d7654',1,'SPUUpdater::NS_UNAVAILABLE()']]], + ['nsbutton_28sierrasdk_29_43',['NSButton(SierraSDK)',['../category_n_s_button_07_sierra_s_d_k_08.html',1,'']]], + ['nsdata_28susignatureverifier_29_44',['NSData(SUSignatureVerifier)',['../category_n_s_data_07_s_u_signature_verifier_08.html',1,'']]], + ['nsobject_28privatedelegatemethods_29_45',['NSObject(PrivateDelegateMethods)',['../category_n_s_object_07_private_delegate_methods_08.html',1,'']]], + ['nsoperatingsystemversion_46',['NSOperatingSystemVersion',['../struct_n_s_operating_system_version.html',1,'']]], + ['nsprocessinfo_28_29_47',['NSProcessInfo()',['../category_n_s_process_info_07_08.html',1,'']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_a.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_a.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_a.js new file mode 100644 index 0000000..9bbc556 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['releaseitemfromquarantineatrooturl_3aerror_3a_48',['releaseItemFromQuarantineAtRootURL:error:',['../interface_s_u_file_manager.html#a8599b8160422edbb38f34e547889f727',1,'SUFileManager']]], + ['removeitematurl_3aerror_3a_49',['removeItemAtURL:error:',['../interface_s_u_file_manager.html#aea79ee52a31937c33f5e00e60f873b4b',1,'SUFileManager']]], + ['replaceitematurl_3awithitematurl_3aerror_3a_50',['replaceItemAtURL:withItemAtURL:error:',['../interface_s_u_file_manager.html#aec3de47f6e37353f905b855951b37c65',1,'SUFileManager']]], + ['resetupdatecycle_51',['resetUpdateCycle',['../interface_s_p_u_updater.html#aefe1e7f5ae5b8e02f1d7beab189b51af',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_b.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_b.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_b.js new file mode 100644 index 0000000..ec526d6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_b.js @@ -0,0 +1,121 @@ +var searchData= +[ + ['sendssystemprofile_52',['sendsSystemProfile',['../interface_s_p_u_updater.html#a521d2f6d09ceec6af979f6116bc58f7f',1,'SPUUpdater::sendsSystemProfile()'],['../interface_s_p_u_updater_settings.html#a97b5102512608a905bda83b33dd0bb5d',1,'SPUUpdaterSettings::sendsSystemProfile()']]], + ['sendsystemprofile_53',['sendSystemProfile',['../interface_s_u_update_permission_response.html#af9436f4e07219513c68dbad51daf9c8d',1,'SUUpdatePermissionResponse']]], + ['sessioninprogress_54',['sessionInProgress',['../interface_s_p_u_updater.html#aebc820be90ea36d0d97c6f11e80f3a4f',1,'SPUUpdater']]], + ['setfeedurl_3a_55',['setFeedURL:',['../interface_s_p_u_updater.html#adfaabdc767d7a7668c8e472e45abd635',1,'SPUUpdater']]], + ['showdownloaddidreceivedataoflength_3a_56',['showDownloadDidReceiveDataOfLength:',['../protocol_s_p_u_user_driver-p.html#ac86c11d9dd8f66cc54bc3f3dd303fb6c',1,'SPUUserDriver-p']]], + ['showdownloaddidreceiveexpectedcontentlength_3a_57',['showDownloadDidReceiveExpectedContentLength:',['../protocol_s_p_u_user_driver-p.html#abf58b5974797500618b7745f1987833a',1,'SPUUserDriver-p']]], + ['showdownloaddidstartextractingupdate_58',['showDownloadDidStartExtractingUpdate',['../protocol_s_p_u_user_driver-p.html#a19ada57d6b77c7ea3ed402833dcda44c',1,'SPUUserDriver-p']]], + ['showdownloadinitiatedwithcancellation_3a_59',['showDownloadInitiatedWithCancellation:',['../protocol_s_p_u_user_driver-p.html#a3c6cd7f7b93f6d2777b04f3c9f0bb62c',1,'SPUUserDriver-p']]], + ['showextractionreceivedprogress_3a_60',['showExtractionReceivedProgress:',['../protocol_s_p_u_user_driver-p.html#a3ffb49c0f51864011685049b7225dfbf',1,'SPUUserDriver-p']]], + ['showinstallerprogress_61',['ShowInstallerProgress',['../interface_show_installer_progress.html',1,'']]], + ['showinstallerprogress_28_29_62',['ShowInstallerProgress()',['../category_show_installer_progress_07_08.html',1,'']]], + ['showinstallingupdate_63',['showInstallingUpdate',['../protocol_s_p_u_user_driver-p.html#ab774cef0a00dbc7c074f8850c1e6c21f',1,'SPUUserDriver-p']]], + ['showreadytoinstallandrelaunch_3a_64',['showReadyToInstallAndRelaunch:',['../protocol_s_p_u_user_driver-p.html#a91ad34f8469dc022c7b1ed42b0f1575d',1,'SPUUserDriver-p']]], + ['showsendingterminationsignal_65',['showSendingTerminationSignal',['../protocol_s_p_u_user_driver-p.html#a3eb11e826fe5c1f68112a73600c23bf2',1,'SPUUserDriver-p']]], + ['showupdatefoundwithappcastitem_3astate_3areply_3a_66',['showUpdateFoundWithAppcastItem:state:reply:',['../protocol_s_p_u_user_driver-p.html#ac0f8e99c60962476ea55729833a0e3f2',1,'SPUUserDriver-p']]], + ['showupdateinfocus_67',['showUpdateInFocus',['../protocol_s_p_u_user_driver-p.html#ac6d613d4689dbc6415774d0ab63afd55',1,'SPUUserDriver-p']]], + ['showupdateinstalledandrelaunched_3aacknowledgement_3a_68',['showUpdateInstalledAndRelaunched:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#aa8b7ae192288db21ab43b4413b2d80c3',1,'SPUUserDriver-p']]], + ['showupdatenotfoundwitherror_3aacknowledgement_3a_69',['showUpdateNotFoundWithError:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#abf3ca2a6bb84fe26a4ce53ae5b6f2233',1,'SPUUserDriver-p']]], + ['showupdatepermissionrequest_3areply_3a_70',['showUpdatePermissionRequest:reply:',['../protocol_s_p_u_user_driver-p.html#a6382048832f06216f505659c251dc1e0',1,'SPUUserDriver-p']]], + ['showupdatereleasenotesfailedtodownloadwitherror_3a_71',['showUpdateReleaseNotesFailedToDownloadWithError:',['../protocol_s_p_u_user_driver-p.html#ab304bc81459aa83fc617eb5047cd93a1',1,'SPUUserDriver-p']]], + ['showupdatereleasenoteswithdownloaddata_3a_72',['showUpdateReleaseNotesWithDownloadData:',['../protocol_s_p_u_user_driver-p.html#ae5fe75d599aae6597d81bd2449919be8',1,'SPUUserDriver-p']]], + ['showupdatererror_3aacknowledgement_3a_73',['showUpdaterError:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#ac10bbf2fbe588106bf3a8c951caa2d53',1,'SPUUserDriver-p']]], + ['showuserinitiatedupdatecheckwithcancellation_3a_74',['showUserInitiatedUpdateCheckWithCancellation:',['../protocol_s_p_u_user_driver-p.html#a797fb61eacdd1fba10a232d7b2b5ceac',1,'SPUUserDriver-p']]], + ['sparklebundle_75',['sparkleBundle',['../interface_s_p_u_updater.html#aa0e335f7212dbd90668ea0bbef0f00c2',1,'SPUUpdater']]], + ['spuappcastitemstate_76',['SPUAppcastItemState',['../interface_s_p_u_appcast_item_state.html',1,'']]], + ['spuappcastitemstate_28_29_77',['SPUAppcastItemState()',['../category_s_p_u_appcast_item_state_07_08.html',1,'']]], + ['spuappcastitemstateresolver_78',['SPUAppcastItemStateResolver',['../interface_s_p_u_appcast_item_state_resolver.html',1,'']]], + ['spuautomaticupdatedriver_79',['SPUAutomaticUpdateDriver',['../interface_s_p_u_automatic_update_driver.html',1,'']]], + ['spuautomaticupdatedriver_28_29_80',['SPUAutomaticUpdateDriver()',['../category_s_p_u_automatic_update_driver_07_08.html',1,'']]], + ['spubasicupdatedriver_81',['SPUBasicUpdateDriver',['../interface_s_p_u_basic_update_driver.html',1,'']]], + ['spubasicupdatedriver_28_29_82',['SPUBasicUpdateDriver()',['../category_s_p_u_basic_update_driver_07_08.html',1,'']]], + ['spubasicupdatedriverdelegate_2dp_83',['SPUBasicUpdateDriverDelegate-p',['../protocol_s_p_u_basic_update_driver_delegate-p.html',1,'']]], + ['spucorebasedupdatedriver_84',['SPUCoreBasedUpdateDriver',['../interface_s_p_u_core_based_update_driver.html',1,'']]], + ['spucorebasedupdatedriver_28_29_85',['SPUCoreBasedUpdateDriver()',['../category_s_p_u_core_based_update_driver_07_08.html',1,'']]], + ['spucorebasedupdatedriverdelegate_2dp_86',['SPUCoreBasedUpdateDriverDelegate-p',['../protocol_s_p_u_core_based_update_driver_delegate-p.html',1,'']]], + ['spudownloaddata_87',['SPUDownloadData',['../interface_s_p_u_download_data.html',1,'']]], + ['spudownloaddriver_88',['SPUDownloadDriver',['../interface_s_p_u_download_driver.html',1,'']]], + ['spudownloaddriver_28_29_89',['SPUDownloadDriver()',['../category_s_p_u_download_driver_07_08.html',1,'']]], + ['spudownloaddriverdelegate_2dp_90',['SPUDownloadDriverDelegate-p',['../protocol_s_p_u_download_driver_delegate-p.html',1,'']]], + ['spudownloadedupdate_91',['SPUDownloadedUpdate',['../interface_s_p_u_downloaded_update.html',1,'']]], + ['spuinformationalupdate_92',['SPUInformationalUpdate',['../interface_s_p_u_informational_update.html',1,'']]], + ['spuinstalleragentprotocol_2dp_93',['SPUInstallerAgentProtocol-p',['../protocol_s_p_u_installer_agent_protocol-p.html',1,'']]], + ['spuinstallerdriver_94',['SPUInstallerDriver',['../interface_s_p_u_installer_driver.html',1,'']]], + ['spuinstallerdriver_28_29_95',['SPUInstallerDriver()',['../category_s_p_u_installer_driver_07_08.html',1,'']]], + ['spuinstallerdriverdelegate_2dp_96',['SPUInstallerDriverDelegate-p',['../protocol_s_p_u_installer_driver_delegate-p.html',1,'']]], + ['spulocalcachedirectory_97',['SPULocalCacheDirectory',['../interface_s_p_u_local_cache_directory.html',1,'']]], + ['spuprobeinstallstatus_98',['SPUProbeInstallStatus',['../interface_s_p_u_probe_install_status.html',1,'']]], + ['spuprobingupdatedriver_99',['SPUProbingUpdateDriver',['../interface_s_p_u_probing_update_driver.html',1,'']]], + ['spuprobingupdatedriver_28_29_100',['SPUProbingUpdateDriver()',['../category_s_p_u_probing_update_driver_07_08.html',1,'']]], + ['spureleasenotesdriver_101',['SPUReleaseNotesDriver',['../interface_s_p_u_release_notes_driver.html',1,'']]], + ['spuresumableupdate_2dp_102',['SPUResumableUpdate-p',['../protocol_s_p_u_resumable_update-p.html',1,'']]], + ['spuscheduledupdatedriver_103',['SPUScheduledUpdateDriver',['../interface_s_p_u_scheduled_update_driver.html',1,'']]], + ['spuscheduledupdatedriver_28_29_104',['SPUScheduledUpdateDriver()',['../category_s_p_u_scheduled_update_driver_07_08.html',1,'']]], + ['spuskippedupdate_105',['SPUSkippedUpdate',['../interface_s_p_u_skipped_update.html',1,'']]], + ['spustandardupdatercontroller_106',['SPUStandardUpdaterController',['../interface_s_p_u_standard_updater_controller.html',1,'']]], + ['spustandarduserdriver_107',['SPUStandardUserDriver',['../interface_s_p_u_standard_user_driver.html',1,'']]], + ['spustandarduserdriverdelegate_2dp_108',['SPUStandardUserDriverDelegate-p',['../protocol_s_p_u_standard_user_driver_delegate-p.html',1,'']]], + ['spuuibasedupdatedriver_109',['SPUUIBasedUpdateDriver',['../interface_s_p_u_u_i_based_update_driver.html',1,'']]], + ['spuuibasedupdatedriver_28_29_110',['SPUUIBasedUpdateDriver()',['../category_s_p_u_u_i_based_update_driver_07_08.html',1,'']]], + ['spuuibasedupdatedriverdelegate_2dp_111',['SPUUIBasedUpdateDriverDelegate-p',['../protocol_s_p_u_u_i_based_update_driver_delegate-p.html',1,'']]], + ['spuupdatedriver_2dp_112',['SPUUpdateDriver-p',['../protocol_s_p_u_update_driver-p.html',1,'']]], + ['spuupdatepermissionrequest_113',['SPUUpdatePermissionRequest',['../interface_s_p_u_update_permission_request.html',1,'']]], + ['spuupdater_114',['SPUUpdater',['../interface_s_p_u_updater.html',1,'']]], + ['spuupdater_28_29_115',['SPUUpdater()',['../category_s_p_u_updater_07_08.html',1,'']]], + ['spuupdatercycle_116',['SPUUpdaterCycle',['../interface_s_p_u_updater_cycle.html',1,'']]], + ['spuupdatercycle_28_29_117',['SPUUpdaterCycle()',['../category_s_p_u_updater_cycle_07_08.html',1,'']]], + ['spuupdatercycledelegate_2dp_118',['SPUUpdaterCycleDelegate-p',['../protocol_s_p_u_updater_cycle_delegate-p.html',1,'']]], + ['spuupdaterdelegate_2dp_119',['SPUUpdaterDelegate-p',['../protocol_s_p_u_updater_delegate-p.html',1,'']]], + ['spuupdatersettings_120',['SPUUpdaterSettings',['../interface_s_p_u_updater_settings.html',1,'']]], + ['spuupdatersettings_28_29_121',['SPUUpdaterSettings()',['../category_s_p_u_updater_settings_07_08.html',1,'']]], + ['spuupdatertimer_122',['SPUUpdaterTimer',['../interface_s_p_u_updater_timer.html',1,'']]], + ['spuupdatertimer_28_29_123',['SPUUpdaterTimer()',['../category_s_p_u_updater_timer_07_08.html',1,'']]], + ['spuupdatertimerdelegate_2dp_124',['SPUUpdaterTimerDelegate-p',['../protocol_s_p_u_updater_timer_delegate-p.html',1,'']]], + ['spuurlrequest_125',['SPUURLRequest',['../interface_s_p_u_u_r_l_request.html',1,'']]], + ['spuurlrequest_28_29_126',['SPUURLRequest()',['../category_s_p_u_u_r_l_request_07_08.html',1,'']]], + ['spuuserdriver_2dp_127',['SPUUserDriver-p',['../protocol_s_p_u_user_driver-p.html',1,'']]], + ['spuuserinitiatedupdatedriver_128',['SPUUserInitiatedUpdateDriver',['../interface_s_p_u_user_initiated_update_driver.html',1,'']]], + ['spuuserinitiatedupdatedriver_28_29_129',['SPUUserInitiatedUpdateDriver()',['../category_s_p_u_user_initiated_update_driver_07_08.html',1,'']]], + ['spuuserupdatestate_130',['SPUUserUpdateState',['../interface_s_p_u_user_update_state.html',1,'']]], + ['spuuserupdatestate_28_29_131',['SPUUserUpdateState()',['../category_s_p_u_user_update_state_07_08.html',1,'']]], + ['spuuserupdatestate_28private_29_132',['SPUUserUpdateState(Private)',['../category_s_p_u_user_update_state_07_private_08.html',1,'']]], + ['standarduserdriverdidshowmodalalert_133',['standardUserDriverDidShowModalAlert',['../protocol_s_p_u_standard_user_driver_delegate-p.html#aaaafb308354867990fed28c308dc881d',1,'SPUStandardUserDriverDelegate-p']]], + ['standarduserdriverrequestsversiondisplayer_134',['standardUserDriverRequestsVersionDisplayer',['../protocol_s_p_u_standard_user_driver_delegate-p.html#ae96836bc3c2fb3104d6586e5067001b3',1,'SPUStandardUserDriverDelegate-p']]], + ['standarduserdriverwillshowmodalalert_135',['standardUserDriverWillShowModalAlert',['../protocol_s_p_u_standard_user_driver_delegate-p.html#ad3bbc4db85bf302e8d6db6b4f030969a',1,'SPUStandardUserDriverDelegate-p']]], + ['startupdater_136',['startUpdater',['../interface_s_p_u_standard_updater_controller.html#a13632a2dd07a4d49333ec23091a3c6a5',1,'SPUStandardUpdaterController']]], + ['startupdater_3a_137',['startUpdater:',['../interface_s_p_u_updater.html#a30c0f163e0fbc7b100f84c64b491b353',1,'SPUUpdater']]], + ['suappcast_138',['SUAppcast',['../interface_s_u_appcast.html',1,'']]], + ['suappcast_28_29_139',['SUAppcast()',['../category_s_u_appcast_07_08.html',1,'']]], + ['suappcast_28private_29_140',['SUAppcast(Private)',['../category_s_u_appcast_07_private_08.html',1,'']]], + ['suappcastdriver_141',['SUAppcastDriver',['../interface_s_u_appcast_driver.html',1,'']]], + ['suappcastdriver_28_29_142',['SUAppcastDriver()',['../category_s_u_appcast_driver_07_08.html',1,'']]], + ['suappcastdriverdelegate_2dp_143',['SUAppcastDriverDelegate-p',['../protocol_s_u_appcast_driver_delegate-p.html',1,'']]], + ['suappcastitem_144',['SUAppcastItem',['../interface_s_u_appcast_item.html',1,'']]], + ['suappcastitem_28_29_145',['SUAppcastItem()',['../category_s_u_appcast_item_07_08.html',1,'']]], + ['suappcastitem_28private_29_146',['SUAppcastItem(Private)',['../category_s_u_appcast_item_07_private_08.html',1,'']]], + ['suapplicationinfo_147',['SUApplicationInfo',['../interface_s_u_application_info.html',1,'']]], + ['subundleicon_148',['SUBundleIcon',['../interface_s_u_bundle_icon.html',1,'']]], + ['sufilemanager_149',['SUFileManager',['../interface_s_u_file_manager.html',1,'']]], + ['suhost_150',['SUHost',['../interface_s_u_host.html',1,'']]], + ['suhost_28_29_151',['SUHost()',['../category_s_u_host_07_08.html',1,'']]], + ['suinstalleragentinitiationprotocol_2dp_152',['SUInstallerAgentInitiationProtocol-p',['../protocol_s_u_installer_agent_initiation_protocol-p.html',1,'']]], + ['suinstallerprotocol_2dp_153',['SUInstallerProtocol-p',['../protocol_s_u_installer_protocol-p.html',1,'']]], + ['suoperatingsystem_154',['SUOperatingSystem',['../interface_s_u_operating_system.html',1,'']]], + ['suphasedupdategroupinfo_155',['SUPhasedUpdateGroupInfo',['../interface_s_u_phased_update_group_info.html',1,'']]], + ['supublickeys_156',['SUPublicKeys',['../interface_s_u_public_keys.html',1,'']]], + ['susignatures_157',['SUSignatures',['../interface_s_u_signatures.html',1,'']]], + ['sustandardversioncomparator_158',['SUStandardVersionComparator',['../interface_s_u_standard_version_comparator.html',1,'']]], + ['sustatuscontroller_159',['SUStatusController',['../interface_s_u_status_controller.html',1,'']]], + ['sustatuscontroller_28_29_160',['SUStatusController()',['../category_s_u_status_controller_07_08.html',1,'']]], + ['susystemprofiler_161',['SUSystemProfiler',['../interface_s_u_system_profiler.html',1,'']]], + ['sutouchbarbuttongroup_162',['SUTouchBarButtonGroup',['../interface_s_u_touch_bar_button_group.html',1,'']]], + ['suupdatepermissionresponse_163',['SUUpdatePermissionResponse',['../interface_s_u_update_permission_response.html',1,'']]], + ['suupdatevalidator_164',['SUUpdateValidator',['../interface_s_u_update_validator.html',1,'']]], + ['suupdatevalidator_28_29_165',['SUUpdateValidator()',['../category_s_u_update_validator_07_08.html',1,'']]], + ['suversioncomparison_2dp_166',['SUVersionComparison-p',['../protocol_s_u_version_comparison-p.html',1,'']]], + ['suversiondisplay_2dp_167',['SUVersionDisplay-p',['../protocol_s_u_version_display-p.html',1,'']]], + ['systemprofile_168',['systemProfile',['../interface_s_p_u_update_permission_request.html#a318086878d3e1ec1efa9b8d2424f9844',1,'SPUUpdatePermissionRequest']]], + ['systemprofilearray_169',['systemProfileArray',['../interface_s_p_u_updater.html#a90e21876539a0dab3eacfccad863aaa2',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_c.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_c.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_c.js new file mode 100644 index 0000000..cc57e5f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['terminationlistener_170',['TerminationListener',['../interface_termination_listener.html',1,'']]], + ['terminationlistener_28_29_171',['TerminationListener()',['../category_termination_listener_07_08.html',1,'']]], + ['textencodingname_172',['textEncodingName',['../interface_s_p_u_download_data.html#a8316fe998bf3afa7bc4d6df7dc0ac070',1,'SPUDownloadData']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_d.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_d.html new file mode 100644 index 0000000..af7f2f0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_d.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_d.js new file mode 100644 index 0000000..1d6772a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_d.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['updateaccesstimeofitematrooturl_3aerror_3a_173',['updateAccessTimeOfItemAtRootURL:error:',['../interface_s_u_file_manager.html#ae7b47ef3936d2ab36d32d1f496c9b133',1,'SUFileManager']]], + ['updatecheckinterval_174',['updateCheckInterval',['../interface_s_p_u_updater.html#a1b2a4bc575d1f9de57e189ca93bda22a',1,'SPUUpdater::updateCheckInterval()'],['../interface_s_p_u_updater_settings.html#affb7ac205324036803bda21826bde524',1,'SPUUpdaterSettings::updateCheckInterval()']]], + ['updatemodificationandaccesstimeofitematurl_3aerror_3a_175',['updateModificationAndAccessTimeOfItemAtURL:error:',['../interface_s_u_file_manager.html#ad81e3246bf42d50c7c0ed2df06ff41de',1,'SUFileManager']]], + ['updater_176',['updater',['../interface_s_p_u_standard_updater_controller.html#afa35dd9683576ac1126d1ebbb6d0f3d3',1,'SPUStandardUpdaterController']]], + ['updater_3adidabortwitherror_3a_177',['updater:didAbortWithError:',['../protocol_s_p_u_updater_delegate-p.html#a71df9732bf67636a1b61a76a54d57878',1,'SPUUpdaterDelegate-p']]], + ['updater_3adiddownloadupdate_3a_178',['updater:didDownloadUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a3f8066b02a7a3c1c215bee70458e6db0',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidextractupdate_3a_179',['updater:didExtractUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a8d7a087d6f25ded00f80acfd3555e504',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidfindvalidupdate_3a_180',['updater:didFindValidUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a155defe95c694f91c46f81baff2c99d9',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidfinishloadingappcast_3a_181',['updater:didFinishLoadingAppcast:',['../protocol_s_p_u_updater_delegate-p.html#a67f5d81863a898df881ddbbaed9371a8',1,'SPUUpdaterDelegate-p']]], + ['updater_3afailedtodownloadupdate_3aerror_3a_182',['updater:failedToDownloadUpdate:error:',['../protocol_s_p_u_updater_delegate-p.html#ab446fa17e9b9adfda488ca48641c203a',1,'SPUUpdaterDelegate-p']]], + ['updater_3ashouldallowinstallerinteractionforupdatecheck_3a_183',['updater:shouldAllowInstallerInteractionForUpdateCheck:',['../protocol_s_p_u_updater_delegate-p.html#a232aa864ac8c86b266bc043dfd1136b4',1,'SPUUpdaterDelegate-p']]], + ['updater_3ashouldpostponerelaunchforupdate_3auntilinvokingblock_3a_184',['updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:',['../protocol_s_p_u_updater_delegate-p.html#aeef90220bddc5727c5e6529b58e48164',1,'SPUUpdaterDelegate-p']]], + ['updater_3auserdidskipthisversion_3a_185',['updater:userDidSkipThisVersion:',['../protocol_s_p_u_updater_delegate-p.html#a1f8fcf730b45b3b650b19627dd1ac36c',1,'SPUUpdaterDelegate-p']]], + ['updater_3awilldownloadupdate_3awithrequest_3a_186',['updater:willDownloadUpdate:withRequest:',['../protocol_s_p_u_updater_delegate-p.html#a2255ef7b18b135306e871e1471a4a399',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillextractupdate_3a_187',['updater:willExtractUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a2573857b492ea895f099407a92321a3f',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillinstallupdate_3a_188',['updater:willInstallUpdate:',['../protocol_s_p_u_updater_delegate-p.html#acf34be619b8fb7f66693837849d5e228',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillinstallupdateonquit_3aimmediateinstallationblock_3a_189',['updater:willInstallUpdateOnQuit:immediateInstallationBlock:',['../protocol_s_p_u_updater_delegate-p.html#a64585159f4bef97e47de8359e202f3ad',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillscheduleupdatecheckafterdelay_3a_190',['updater:willScheduleUpdateCheckAfterDelay:',['../protocol_s_p_u_updater_delegate-p.html#aafac150db4d32c06c84ee3ad01b0f036',1,'SPUUpdaterDelegate-p']]], + ['updaterdelegate_191',['updaterDelegate',['../interface_s_p_u_standard_updater_controller.html#a8ee554e7555314565b582ea7ddfb91fe',1,'SPUStandardUpdaterController']]], + ['updaterdidnotfindupdate_3a_192',['updaterDidNotFindUpdate:',['../protocol_s_p_u_updater_delegate-p.html#ad112453ce92617e3356a7cd5c4d0658b',1,'SPUUpdaterDelegate-p']]], + ['updaterdidnotfindupdate_3aerror_3a_193',['updaterDidNotFindUpdate:error:',['../protocol_s_p_u_updater_delegate-p.html#a5ad88d4c57d19fe73080273b13ded22d',1,'SPUUpdaterDelegate-p']]], + ['updatermaycheckforupdates_3a_194',['updaterMayCheckForUpdates:',['../protocol_s_p_u_updater_delegate-p.html#a1745cb021956a38c2439b370e9cda904',1,'SPUUpdaterDelegate-p']]], + ['updatershoulddownloadreleasenotes_3a_195',['updaterShouldDownloadReleaseNotes:',['../protocol_s_p_u_updater_delegate-p.html#a8b966f752f5a19942534698d5271544a',1,'SPUUpdaterDelegate-p']]], + ['updatershouldpromptforpermissiontocheckforupdates_3a_196',['updaterShouldPromptForPermissionToCheckForUpdates:',['../protocol_s_p_u_updater_delegate-p.html#a5cd8012b35bec5de906e70c4dabce602',1,'SPUUpdaterDelegate-p']]], + ['updatershouldrelaunchapplication_3a_197',['updaterShouldRelaunchApplication:',['../protocol_s_p_u_updater_delegate-p.html#a703e4aa94c2b4fe835c99b1f2b8f1c48',1,'SPUUpdaterDelegate-p']]], + ['updaterwillidleschedulingupdates_3a_198',['updaterWillIdleSchedulingUpdates:',['../protocol_s_p_u_updater_delegate-p.html#afccc281852fd4f497d815cda9b4695bb',1,'SPUUpdaterDelegate-p']]], + ['updaterwillrelaunchapplication_3a_199',['updaterWillRelaunchApplication:',['../protocol_s_p_u_updater_delegate-p.html#a6fa486e14d915cd18ac3791a905647f2',1,'SPUUpdaterDelegate-p']]], + ['url_200',['URL',['../interface_s_p_u_download_data.html#a5eabdc79a39c2de6e0c79b2d6d4e5b0e',1,'SPUDownloadData']]], + ['useragentstring_201',['userAgentString',['../interface_s_p_u_updater.html#a62757b3c7dea957c737527e854408e96',1,'SPUUpdater']]], + ['userdidcanceldownload_3a_202',['userDidCancelDownload:',['../protocol_s_p_u_updater_delegate-p.html#a06e1e03dea92513fd284e263b9f80d02',1,'SPUUpdaterDelegate-p']]], + ['userdriver_203',['userDriver',['../interface_s_p_u_standard_updater_controller.html#a22c96bbd966c2d92884a2cfc6fb4f6f6',1,'SPUStandardUpdaterController']]], + ['userdriverdelegate_204',['userDriverDelegate',['../interface_s_p_u_standard_updater_controller.html#a4afcf2d6fc104bf1186a0e757aa267d7',1,'SPUStandardUpdaterController']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_e.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_e.html new file mode 100644 index 0000000..e25df42 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_e.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_e.js new file mode 100644 index 0000000..9e8d984 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/all_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['versioncomparatorforupdater_3a_205',['versionComparatorForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a8bea6508b8e81a51c1087a1f3b501c1d',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_0.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_0.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_0.js new file mode 100644 index 0000000..9e35133 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['installerprogressappcontroller_206',['InstallerProgressAppController',['../interface_installer_progress_app_controller.html',1,'']]], + ['installerprogressappcontroller_28_29_207',['InstallerProgressAppController()',['../category_installer_progress_app_controller_07_08.html',1,'']]], + ['installerprogressdelegate_2dp_208',['InstallerProgressDelegate-p',['../protocol_installer_progress_delegate-p.html',1,'']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_1.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_1.html new file mode 100644 index 0000000..576e916 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_1.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_1.js new file mode 100644 index 0000000..8da5fe2 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['nsbutton_28sierrasdk_29_209',['NSButton(SierraSDK)',['../category_n_s_button_07_sierra_s_d_k_08.html',1,'']]], + ['nsdata_28susignatureverifier_29_210',['NSData(SUSignatureVerifier)',['../category_n_s_data_07_s_u_signature_verifier_08.html',1,'']]], + ['nsobject_28privatedelegatemethods_29_211',['NSObject(PrivateDelegateMethods)',['../category_n_s_object_07_private_delegate_methods_08.html',1,'']]], + ['nsoperatingsystemversion_212',['NSOperatingSystemVersion',['../struct_n_s_operating_system_version.html',1,'']]], + ['nsprocessinfo_28_29_213',['NSProcessInfo()',['../category_n_s_process_info_07_08.html',1,'']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_2.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_2.html new file mode 100644 index 0000000..956405e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_2.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_2.js new file mode 100644 index 0000000..be0d489 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_2.js @@ -0,0 +1,92 @@ +var searchData= +[ + ['showinstallerprogress_214',['ShowInstallerProgress',['../interface_show_installer_progress.html',1,'']]], + ['showinstallerprogress_28_29_215',['ShowInstallerProgress()',['../category_show_installer_progress_07_08.html',1,'']]], + ['spuappcastitemstate_216',['SPUAppcastItemState',['../interface_s_p_u_appcast_item_state.html',1,'']]], + ['spuappcastitemstate_28_29_217',['SPUAppcastItemState()',['../category_s_p_u_appcast_item_state_07_08.html',1,'']]], + ['spuappcastitemstateresolver_218',['SPUAppcastItemStateResolver',['../interface_s_p_u_appcast_item_state_resolver.html',1,'']]], + ['spuautomaticupdatedriver_219',['SPUAutomaticUpdateDriver',['../interface_s_p_u_automatic_update_driver.html',1,'']]], + ['spuautomaticupdatedriver_28_29_220',['SPUAutomaticUpdateDriver()',['../category_s_p_u_automatic_update_driver_07_08.html',1,'']]], + ['spubasicupdatedriver_221',['SPUBasicUpdateDriver',['../interface_s_p_u_basic_update_driver.html',1,'']]], + ['spubasicupdatedriver_28_29_222',['SPUBasicUpdateDriver()',['../category_s_p_u_basic_update_driver_07_08.html',1,'']]], + ['spubasicupdatedriverdelegate_2dp_223',['SPUBasicUpdateDriverDelegate-p',['../protocol_s_p_u_basic_update_driver_delegate-p.html',1,'']]], + ['spucorebasedupdatedriver_224',['SPUCoreBasedUpdateDriver',['../interface_s_p_u_core_based_update_driver.html',1,'']]], + ['spucorebasedupdatedriver_28_29_225',['SPUCoreBasedUpdateDriver()',['../category_s_p_u_core_based_update_driver_07_08.html',1,'']]], + ['spucorebasedupdatedriverdelegate_2dp_226',['SPUCoreBasedUpdateDriverDelegate-p',['../protocol_s_p_u_core_based_update_driver_delegate-p.html',1,'']]], + ['spudownloaddata_227',['SPUDownloadData',['../interface_s_p_u_download_data.html',1,'']]], + ['spudownloaddriver_228',['SPUDownloadDriver',['../interface_s_p_u_download_driver.html',1,'']]], + ['spudownloaddriver_28_29_229',['SPUDownloadDriver()',['../category_s_p_u_download_driver_07_08.html',1,'']]], + ['spudownloaddriverdelegate_2dp_230',['SPUDownloadDriverDelegate-p',['../protocol_s_p_u_download_driver_delegate-p.html',1,'']]], + ['spudownloadedupdate_231',['SPUDownloadedUpdate',['../interface_s_p_u_downloaded_update.html',1,'']]], + ['spuinformationalupdate_232',['SPUInformationalUpdate',['../interface_s_p_u_informational_update.html',1,'']]], + ['spuinstalleragentprotocol_2dp_233',['SPUInstallerAgentProtocol-p',['../protocol_s_p_u_installer_agent_protocol-p.html',1,'']]], + ['spuinstallerdriver_234',['SPUInstallerDriver',['../interface_s_p_u_installer_driver.html',1,'']]], + ['spuinstallerdriver_28_29_235',['SPUInstallerDriver()',['../category_s_p_u_installer_driver_07_08.html',1,'']]], + ['spuinstallerdriverdelegate_2dp_236',['SPUInstallerDriverDelegate-p',['../protocol_s_p_u_installer_driver_delegate-p.html',1,'']]], + ['spulocalcachedirectory_237',['SPULocalCacheDirectory',['../interface_s_p_u_local_cache_directory.html',1,'']]], + ['spuprobeinstallstatus_238',['SPUProbeInstallStatus',['../interface_s_p_u_probe_install_status.html',1,'']]], + ['spuprobingupdatedriver_239',['SPUProbingUpdateDriver',['../interface_s_p_u_probing_update_driver.html',1,'']]], + ['spuprobingupdatedriver_28_29_240',['SPUProbingUpdateDriver()',['../category_s_p_u_probing_update_driver_07_08.html',1,'']]], + ['spureleasenotesdriver_241',['SPUReleaseNotesDriver',['../interface_s_p_u_release_notes_driver.html',1,'']]], + ['spuresumableupdate_2dp_242',['SPUResumableUpdate-p',['../protocol_s_p_u_resumable_update-p.html',1,'']]], + ['spuscheduledupdatedriver_243',['SPUScheduledUpdateDriver',['../interface_s_p_u_scheduled_update_driver.html',1,'']]], + ['spuscheduledupdatedriver_28_29_244',['SPUScheduledUpdateDriver()',['../category_s_p_u_scheduled_update_driver_07_08.html',1,'']]], + ['spuskippedupdate_245',['SPUSkippedUpdate',['../interface_s_p_u_skipped_update.html',1,'']]], + ['spustandardupdatercontroller_246',['SPUStandardUpdaterController',['../interface_s_p_u_standard_updater_controller.html',1,'']]], + ['spustandarduserdriver_247',['SPUStandardUserDriver',['../interface_s_p_u_standard_user_driver.html',1,'']]], + ['spustandarduserdriverdelegate_2dp_248',['SPUStandardUserDriverDelegate-p',['../protocol_s_p_u_standard_user_driver_delegate-p.html',1,'']]], + ['spuuibasedupdatedriver_249',['SPUUIBasedUpdateDriver',['../interface_s_p_u_u_i_based_update_driver.html',1,'']]], + ['spuuibasedupdatedriver_28_29_250',['SPUUIBasedUpdateDriver()',['../category_s_p_u_u_i_based_update_driver_07_08.html',1,'']]], + ['spuuibasedupdatedriverdelegate_2dp_251',['SPUUIBasedUpdateDriverDelegate-p',['../protocol_s_p_u_u_i_based_update_driver_delegate-p.html',1,'']]], + ['spuupdatedriver_2dp_252',['SPUUpdateDriver-p',['../protocol_s_p_u_update_driver-p.html',1,'']]], + ['spuupdatepermissionrequest_253',['SPUUpdatePermissionRequest',['../interface_s_p_u_update_permission_request.html',1,'']]], + ['spuupdater_254',['SPUUpdater',['../interface_s_p_u_updater.html',1,'']]], + ['spuupdater_28_29_255',['SPUUpdater()',['../category_s_p_u_updater_07_08.html',1,'']]], + ['spuupdatercycle_256',['SPUUpdaterCycle',['../interface_s_p_u_updater_cycle.html',1,'']]], + ['spuupdatercycle_28_29_257',['SPUUpdaterCycle()',['../category_s_p_u_updater_cycle_07_08.html',1,'']]], + ['spuupdatercycledelegate_2dp_258',['SPUUpdaterCycleDelegate-p',['../protocol_s_p_u_updater_cycle_delegate-p.html',1,'']]], + ['spuupdaterdelegate_2dp_259',['SPUUpdaterDelegate-p',['../protocol_s_p_u_updater_delegate-p.html',1,'']]], + ['spuupdatersettings_260',['SPUUpdaterSettings',['../interface_s_p_u_updater_settings.html',1,'']]], + ['spuupdatersettings_28_29_261',['SPUUpdaterSettings()',['../category_s_p_u_updater_settings_07_08.html',1,'']]], + ['spuupdatertimer_262',['SPUUpdaterTimer',['../interface_s_p_u_updater_timer.html',1,'']]], + ['spuupdatertimer_28_29_263',['SPUUpdaterTimer()',['../category_s_p_u_updater_timer_07_08.html',1,'']]], + ['spuupdatertimerdelegate_2dp_264',['SPUUpdaterTimerDelegate-p',['../protocol_s_p_u_updater_timer_delegate-p.html',1,'']]], + ['spuurlrequest_265',['SPUURLRequest',['../interface_s_p_u_u_r_l_request.html',1,'']]], + ['spuurlrequest_28_29_266',['SPUURLRequest()',['../category_s_p_u_u_r_l_request_07_08.html',1,'']]], + ['spuuserdriver_2dp_267',['SPUUserDriver-p',['../protocol_s_p_u_user_driver-p.html',1,'']]], + ['spuuserinitiatedupdatedriver_268',['SPUUserInitiatedUpdateDriver',['../interface_s_p_u_user_initiated_update_driver.html',1,'']]], + ['spuuserinitiatedupdatedriver_28_29_269',['SPUUserInitiatedUpdateDriver()',['../category_s_p_u_user_initiated_update_driver_07_08.html',1,'']]], + ['spuuserupdatestate_270',['SPUUserUpdateState',['../interface_s_p_u_user_update_state.html',1,'']]], + ['spuuserupdatestate_28_29_271',['SPUUserUpdateState()',['../category_s_p_u_user_update_state_07_08.html',1,'']]], + ['spuuserupdatestate_28private_29_272',['SPUUserUpdateState(Private)',['../category_s_p_u_user_update_state_07_private_08.html',1,'']]], + ['suappcast_273',['SUAppcast',['../interface_s_u_appcast.html',1,'']]], + ['suappcast_28_29_274',['SUAppcast()',['../category_s_u_appcast_07_08.html',1,'']]], + ['suappcast_28private_29_275',['SUAppcast(Private)',['../category_s_u_appcast_07_private_08.html',1,'']]], + ['suappcastdriver_276',['SUAppcastDriver',['../interface_s_u_appcast_driver.html',1,'']]], + ['suappcastdriver_28_29_277',['SUAppcastDriver()',['../category_s_u_appcast_driver_07_08.html',1,'']]], + ['suappcastdriverdelegate_2dp_278',['SUAppcastDriverDelegate-p',['../protocol_s_u_appcast_driver_delegate-p.html',1,'']]], + ['suappcastitem_279',['SUAppcastItem',['../interface_s_u_appcast_item.html',1,'']]], + ['suappcastitem_28_29_280',['SUAppcastItem()',['../category_s_u_appcast_item_07_08.html',1,'']]], + ['suappcastitem_28private_29_281',['SUAppcastItem(Private)',['../category_s_u_appcast_item_07_private_08.html',1,'']]], + ['suapplicationinfo_282',['SUApplicationInfo',['../interface_s_u_application_info.html',1,'']]], + ['subundleicon_283',['SUBundleIcon',['../interface_s_u_bundle_icon.html',1,'']]], + ['sufilemanager_284',['SUFileManager',['../interface_s_u_file_manager.html',1,'']]], + ['suhost_285',['SUHost',['../interface_s_u_host.html',1,'']]], + ['suhost_28_29_286',['SUHost()',['../category_s_u_host_07_08.html',1,'']]], + ['suinstalleragentinitiationprotocol_2dp_287',['SUInstallerAgentInitiationProtocol-p',['../protocol_s_u_installer_agent_initiation_protocol-p.html',1,'']]], + ['suinstallerprotocol_2dp_288',['SUInstallerProtocol-p',['../protocol_s_u_installer_protocol-p.html',1,'']]], + ['suoperatingsystem_289',['SUOperatingSystem',['../interface_s_u_operating_system.html',1,'']]], + ['suphasedupdategroupinfo_290',['SUPhasedUpdateGroupInfo',['../interface_s_u_phased_update_group_info.html',1,'']]], + ['supublickeys_291',['SUPublicKeys',['../interface_s_u_public_keys.html',1,'']]], + ['susignatures_292',['SUSignatures',['../interface_s_u_signatures.html',1,'']]], + ['sustandardversioncomparator_293',['SUStandardVersionComparator',['../interface_s_u_standard_version_comparator.html',1,'']]], + ['sustatuscontroller_294',['SUStatusController',['../interface_s_u_status_controller.html',1,'']]], + ['sustatuscontroller_28_29_295',['SUStatusController()',['../category_s_u_status_controller_07_08.html',1,'']]], + ['susystemprofiler_296',['SUSystemProfiler',['../interface_s_u_system_profiler.html',1,'']]], + ['sutouchbarbuttongroup_297',['SUTouchBarButtonGroup',['../interface_s_u_touch_bar_button_group.html',1,'']]], + ['suupdatepermissionresponse_298',['SUUpdatePermissionResponse',['../interface_s_u_update_permission_response.html',1,'']]], + ['suupdatevalidator_299',['SUUpdateValidator',['../interface_s_u_update_validator.html',1,'']]], + ['suupdatevalidator_28_29_300',['SUUpdateValidator()',['../category_s_u_update_validator_07_08.html',1,'']]], + ['suversioncomparison_2dp_301',['SUVersionComparison-p',['../protocol_s_u_version_comparison-p.html',1,'']]], + ['suversiondisplay_2dp_302',['SUVersionDisplay-p',['../protocol_s_u_version_display-p.html',1,'']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_3.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_3.html new file mode 100644 index 0000000..d33343b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_3.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_3.js new file mode 100644 index 0000000..5ee7f50 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['terminationlistener_303',['TerminationListener',['../interface_termination_listener.html',1,'']]], + ['terminationlistener_28_29_304',['TerminationListener()',['../category_termination_listener_07_08.html',1,'']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/close.svg b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_0.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_0.html new file mode 100644 index 0000000..eb4c501 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_0.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_0.js new file mode 100644 index 0000000..a7361fe --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['allowedchannelsforupdater_3a_305',['allowedChannelsForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a717db8ad85d47309e3f4deebdc09e7b4',1,'SPUUpdaterDelegate-p']]], + ['allowedsystemprofilekeysforupdater_3a_306',['allowedSystemProfileKeysForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#aec7e4b19a2fc4afdcc86286c3bbf06b1',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_1.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_1.html new file mode 100644 index 0000000..ef4088b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_1.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_1.js new file mode 100644 index 0000000..107de75 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bestvalidupdateinappcast_3aforupdater_3a_307',['bestValidUpdateInAppcast:forUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a0f38585740c428ce8904bf38f712396d',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_2.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_2.html new file mode 100644 index 0000000..ca5aa10 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_2.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_2.js new file mode 100644 index 0000000..15be9ff --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['changeownerandgroupofitematrooturl_3atomatchurl_3aerror_3a_308',['changeOwnerAndGroupOfItemAtRootURL:toMatchURL:error:',['../interface_s_u_file_manager.html#af0defc82017c43bd1f0eab5540c05f09',1,'SUFileManager']]], + ['checkforupdateinformation_309',['checkForUpdateInformation',['../interface_s_p_u_updater.html#ad38751e23aa42be220206e7e671c697d',1,'SPUUpdater']]], + ['checkforupdates_310',['checkForUpdates',['../interface_s_p_u_updater.html#a7df56bb150d327beb72b7b050799790d',1,'SPUUpdater']]], + ['checkforupdates_3a_311',['checkForUpdates:',['../interface_s_p_u_standard_updater_controller.html#af2d2c860e3f3ae9d8feba95d196c4dc9',1,'SPUStandardUpdaterController']]], + ['checkforupdatesinbackground_312',['checkForUpdatesInBackground',['../interface_s_p_u_updater.html#a2e1e3ca715f29bae7ee0b16e15e34850',1,'SPUUpdater']]], + ['compareversion_3atoversion_3a_313',['compareVersion:toVersion:',['../interface_s_u_standard_version_comparator.html#a50d145ce078dd80d55346f17e946d282',1,'SUStandardVersionComparator::compareVersion:toVersion:()'],['../protocol_s_u_version_comparison-p.html#a0f94aedcc244ce41757e1fa620d0eb40',1,'SUVersionComparison-p::compareVersion:toVersion:()']]], + ['copyitematurl_3atourl_3aerror_3a_314',['copyItemAtURL:toURL:error:',['../interface_s_u_file_manager.html#ac33297bd6dfbf11a23c3c0ded059f4d0',1,'SUFileManager']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_3.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_3.html new file mode 100644 index 0000000..d79f55b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_3.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_3.js new file mode 100644 index 0000000..2b2a29f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['decryptionpasswordforupdater_3a_315',['decryptionPasswordForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#aaf8dbbcdef45b16d2fc43a4cc5487051',1,'SPUUpdaterDelegate-p']]], + ['defaultcomparator_316',['defaultComparator',['../interface_s_u_standard_version_comparator.html#a67be5d5bf36c4774432d912261cb3048',1,'SUStandardVersionComparator']]], + ['dismissupdateinstallation_317',['dismissUpdateInstallation',['../protocol_s_p_u_user_driver-p.html#a5df3b42fd77ab1b5c971c8df9ef35048',1,'SPUUserDriver-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_4.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_4.html new file mode 100644 index 0000000..1657cad --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_4.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_4.js new file mode 100644 index 0000000..cfb2484 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['feedparametersforupdater_3asendingsystemprofile_3a_318',['feedParametersForUpdater:sendingSystemProfile:',['../protocol_s_p_u_updater_delegate-p.html#a43cee9820784cffdffc3b48d8b07407e',1,'SPUUpdaterDelegate-p']]], + ['feedurlstringforupdater_3a_319',['feedURLStringForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#afd1a89b0133a35faf849b58944349516',1,'SPUUpdaterDelegate-p']]], + ['formatversion_3aandversion_3a_320',['formatVersion:andVersion:',['../protocol_s_u_version_display-p.html#afb8728137859a22c1ed795637e654dbd',1,'SUVersionDisplay-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_5.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_5.html new file mode 100644 index 0000000..9301d6b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_5.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_5.js new file mode 100644 index 0000000..f86fe25 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['init_321',['init',['../interface_s_u_file_manager.html#a972da7c2fb112d09d4903ada3564126a',1,'SUFileManager::init()'],['../interface_s_u_standard_version_comparator.html#aef2dc178fc9895961ccb8ba966c1446b',1,'SUStandardVersionComparator::init()']]], + ['initwithautomaticupdatechecks_3asendsystemprofile_3a_322',['initWithAutomaticUpdateChecks:sendSystemProfile:',['../interface_s_u_update_permission_response.html#a09be7ccbcaf1521fc9a3f5dd420785ee',1,'SUUpdatePermissionResponse']]], + ['initwithdictionary_3arelativetourl_3astateresolver_3afailurereason_3a_323',['initWithDictionary:relativeToURL:stateResolver:failureReason:',['../category_s_u_appcast_item_07_private_08.html#a0687fe14843337befdfa749e77de60a0',1,'SUAppcastItem(Private)::initWithDictionary:relativeToURL:stateResolver:failureReason:()'],['../interface_s_u_appcast_item.html#a0687fe14843337befdfa749e77de60a0',1,'SUAppcastItem::initWithDictionary:relativeToURL:stateResolver:failureReason:()']]], + ['initwithhostbundle_3aapplicationbundle_3auserdriver_3adelegate_3a_324',['initWithHostBundle:applicationBundle:userDriver:delegate:',['../interface_s_p_u_updater.html#aed247e3fde0667e50b8d2345e84033e1',1,'SPUUpdater']]], + ['initwithhostbundle_3adelegate_3a_325',['initWithHostBundle:delegate:',['../interface_s_p_u_standard_user_driver.html#a153eafa16df66af096947673762c2deb',1,'SPUStandardUserDriver']]], + ['initwithstartingupdater_3aupdaterdelegate_3auserdriverdelegate_3a_326',['initWithStartingUpdater:updaterDelegate:userDriverDelegate:',['../interface_s_p_u_standard_updater_controller.html#a5612aa1955b41cd306200dc451c2079c',1,'SPUStandardUpdaterController']]], + ['initwithsystemprofile_3a_327',['initWithSystemProfile:',['../interface_s_p_u_update_permission_request.html#a111cc1f6605e481954f1ea57f833b6ab',1,'SPUUpdatePermissionRequest']]], + ['initwithupdaterdelegate_3auserdriverdelegate_3a_328',['initWithUpdaterDelegate:userDriverDelegate:',['../interface_s_p_u_standard_updater_controller.html#a696072b114786259d2e6744914b55850',1,'SPUStandardUpdaterController']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_6.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_6.html new file mode 100644 index 0000000..9c4f5fc --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_6.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_6.js new file mode 100644 index 0000000..04d86f2 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['makedirectoryaturl_3aerror_3a_329',['makeDirectoryAtURL:error:',['../interface_s_u_file_manager.html#ace4c529974dc1b64360db12689c2e9aa',1,'SUFileManager']]], + ['maketemporarydirectorywithpreferredname_3aappropriatefordirectoryurl_3aerror_3a_330',['makeTemporaryDirectoryWithPreferredName:appropriateForDirectoryURL:error:',['../interface_s_u_file_manager.html#a055d2ef9910e85c90a7d0dc34b34ce92',1,'SUFileManager']]], + ['moveitematurl_3atourl_3aerror_3a_331',['moveItemAtURL:toURL:error:',['../interface_s_u_file_manager.html#a8f9d15f622a08284e2d5157ebea440f3',1,'SUFileManager']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_7.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_7.html new file mode 100644 index 0000000..46b5c0f --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_7.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_7.js new file mode 100644 index 0000000..5631163 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ns_5funavailable_332',['NS_UNAVAILABLE',['../interface_s_p_u_standard_updater_controller.html#a3c582fd7f0de322edc97915c9405eced',1,'SPUStandardUpdaterController::NS_UNAVAILABLE()'],['../interface_s_p_u_standard_user_driver.html#a9ad2b659b5760b2f4274e5c63b1f8094',1,'SPUStandardUserDriver::NS_UNAVAILABLE()'],['../interface_s_p_u_updater.html#ac2907583983833ce9f09bee2867d7654',1,'SPUUpdater::NS_UNAVAILABLE()']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_8.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_8.html new file mode 100644 index 0000000..31a1d95 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_8.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_8.js new file mode 100644 index 0000000..c761fdd --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['releaseitemfromquarantineatrooturl_3aerror_3a_333',['releaseItemFromQuarantineAtRootURL:error:',['../interface_s_u_file_manager.html#a8599b8160422edbb38f34e547889f727',1,'SUFileManager']]], + ['removeitematurl_3aerror_3a_334',['removeItemAtURL:error:',['../interface_s_u_file_manager.html#aea79ee52a31937c33f5e00e60f873b4b',1,'SUFileManager']]], + ['replaceitematurl_3awithitematurl_3aerror_3a_335',['replaceItemAtURL:withItemAtURL:error:',['../interface_s_u_file_manager.html#aec3de47f6e37353f905b855951b37c65',1,'SUFileManager']]], + ['resetupdatecycle_336',['resetUpdateCycle',['../interface_s_p_u_updater.html#aefe1e7f5ae5b8e02f1d7beab189b51af',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_9.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_9.html new file mode 100644 index 0000000..9a8e429 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_9.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_9.js new file mode 100644 index 0000000..0aeed47 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_9.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['setfeedurl_3a_337',['setFeedURL:',['../interface_s_p_u_updater.html#adfaabdc767d7a7668c8e472e45abd635',1,'SPUUpdater']]], + ['showdownloaddidreceivedataoflength_3a_338',['showDownloadDidReceiveDataOfLength:',['../protocol_s_p_u_user_driver-p.html#ac86c11d9dd8f66cc54bc3f3dd303fb6c',1,'SPUUserDriver-p']]], + ['showdownloaddidreceiveexpectedcontentlength_3a_339',['showDownloadDidReceiveExpectedContentLength:',['../protocol_s_p_u_user_driver-p.html#abf58b5974797500618b7745f1987833a',1,'SPUUserDriver-p']]], + ['showdownloaddidstartextractingupdate_340',['showDownloadDidStartExtractingUpdate',['../protocol_s_p_u_user_driver-p.html#a19ada57d6b77c7ea3ed402833dcda44c',1,'SPUUserDriver-p']]], + ['showdownloadinitiatedwithcancellation_3a_341',['showDownloadInitiatedWithCancellation:',['../protocol_s_p_u_user_driver-p.html#a3c6cd7f7b93f6d2777b04f3c9f0bb62c',1,'SPUUserDriver-p']]], + ['showextractionreceivedprogress_3a_342',['showExtractionReceivedProgress:',['../protocol_s_p_u_user_driver-p.html#a3ffb49c0f51864011685049b7225dfbf',1,'SPUUserDriver-p']]], + ['showinstallingupdate_343',['showInstallingUpdate',['../protocol_s_p_u_user_driver-p.html#ab774cef0a00dbc7c074f8850c1e6c21f',1,'SPUUserDriver-p']]], + ['showreadytoinstallandrelaunch_3a_344',['showReadyToInstallAndRelaunch:',['../protocol_s_p_u_user_driver-p.html#a91ad34f8469dc022c7b1ed42b0f1575d',1,'SPUUserDriver-p']]], + ['showsendingterminationsignal_345',['showSendingTerminationSignal',['../protocol_s_p_u_user_driver-p.html#a3eb11e826fe5c1f68112a73600c23bf2',1,'SPUUserDriver-p']]], + ['showupdatefoundwithappcastitem_3astate_3areply_3a_346',['showUpdateFoundWithAppcastItem:state:reply:',['../protocol_s_p_u_user_driver-p.html#ac0f8e99c60962476ea55729833a0e3f2',1,'SPUUserDriver-p']]], + ['showupdateinfocus_347',['showUpdateInFocus',['../protocol_s_p_u_user_driver-p.html#ac6d613d4689dbc6415774d0ab63afd55',1,'SPUUserDriver-p']]], + ['showupdateinstalledandrelaunched_3aacknowledgement_3a_348',['showUpdateInstalledAndRelaunched:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#aa8b7ae192288db21ab43b4413b2d80c3',1,'SPUUserDriver-p']]], + ['showupdatenotfoundwitherror_3aacknowledgement_3a_349',['showUpdateNotFoundWithError:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#abf3ca2a6bb84fe26a4ce53ae5b6f2233',1,'SPUUserDriver-p']]], + ['showupdatepermissionrequest_3areply_3a_350',['showUpdatePermissionRequest:reply:',['../protocol_s_p_u_user_driver-p.html#a6382048832f06216f505659c251dc1e0',1,'SPUUserDriver-p']]], + ['showupdatereleasenotesfailedtodownloadwitherror_3a_351',['showUpdateReleaseNotesFailedToDownloadWithError:',['../protocol_s_p_u_user_driver-p.html#ab304bc81459aa83fc617eb5047cd93a1',1,'SPUUserDriver-p']]], + ['showupdatereleasenoteswithdownloaddata_3a_352',['showUpdateReleaseNotesWithDownloadData:',['../protocol_s_p_u_user_driver-p.html#ae5fe75d599aae6597d81bd2449919be8',1,'SPUUserDriver-p']]], + ['showupdatererror_3aacknowledgement_3a_353',['showUpdaterError:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#ac10bbf2fbe588106bf3a8c951caa2d53',1,'SPUUserDriver-p']]], + ['showuserinitiatedupdatecheckwithcancellation_3a_354',['showUserInitiatedUpdateCheckWithCancellation:',['../protocol_s_p_u_user_driver-p.html#a797fb61eacdd1fba10a232d7b2b5ceac',1,'SPUUserDriver-p']]], + ['standarduserdriverdidshowmodalalert_355',['standardUserDriverDidShowModalAlert',['../protocol_s_p_u_standard_user_driver_delegate-p.html#aaaafb308354867990fed28c308dc881d',1,'SPUStandardUserDriverDelegate-p']]], + ['standarduserdriverrequestsversiondisplayer_356',['standardUserDriverRequestsVersionDisplayer',['../protocol_s_p_u_standard_user_driver_delegate-p.html#ae96836bc3c2fb3104d6586e5067001b3',1,'SPUStandardUserDriverDelegate-p']]], + ['standarduserdriverwillshowmodalalert_357',['standardUserDriverWillShowModalAlert',['../protocol_s_p_u_standard_user_driver_delegate-p.html#ad3bbc4db85bf302e8d6db6b4f030969a',1,'SPUStandardUserDriverDelegate-p']]], + ['startupdater_358',['startUpdater',['../interface_s_p_u_standard_updater_controller.html#a13632a2dd07a4d49333ec23091a3c6a5',1,'SPUStandardUpdaterController']]], + ['startupdater_3a_359',['startUpdater:',['../interface_s_p_u_updater.html#a30c0f163e0fbc7b100f84c64b491b353',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_a.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_a.html new file mode 100644 index 0000000..5ecc152 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_a.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_a.js new file mode 100644 index 0000000..0b01297 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_a.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['updateaccesstimeofitematrooturl_3aerror_3a_360',['updateAccessTimeOfItemAtRootURL:error:',['../interface_s_u_file_manager.html#ae7b47ef3936d2ab36d32d1f496c9b133',1,'SUFileManager']]], + ['updatemodificationandaccesstimeofitematurl_3aerror_3a_361',['updateModificationAndAccessTimeOfItemAtURL:error:',['../interface_s_u_file_manager.html#ad81e3246bf42d50c7c0ed2df06ff41de',1,'SUFileManager']]], + ['updater_3adidabortwitherror_3a_362',['updater:didAbortWithError:',['../protocol_s_p_u_updater_delegate-p.html#a71df9732bf67636a1b61a76a54d57878',1,'SPUUpdaterDelegate-p']]], + ['updater_3adiddownloadupdate_3a_363',['updater:didDownloadUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a3f8066b02a7a3c1c215bee70458e6db0',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidextractupdate_3a_364',['updater:didExtractUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a8d7a087d6f25ded00f80acfd3555e504',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidfindvalidupdate_3a_365',['updater:didFindValidUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a155defe95c694f91c46f81baff2c99d9',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidfinishloadingappcast_3a_366',['updater:didFinishLoadingAppcast:',['../protocol_s_p_u_updater_delegate-p.html#a67f5d81863a898df881ddbbaed9371a8',1,'SPUUpdaterDelegate-p']]], + ['updater_3afailedtodownloadupdate_3aerror_3a_367',['updater:failedToDownloadUpdate:error:',['../protocol_s_p_u_updater_delegate-p.html#ab446fa17e9b9adfda488ca48641c203a',1,'SPUUpdaterDelegate-p']]], + ['updater_3ashouldallowinstallerinteractionforupdatecheck_3a_368',['updater:shouldAllowInstallerInteractionForUpdateCheck:',['../protocol_s_p_u_updater_delegate-p.html#a232aa864ac8c86b266bc043dfd1136b4',1,'SPUUpdaterDelegate-p']]], + ['updater_3ashouldpostponerelaunchforupdate_3auntilinvokingblock_3a_369',['updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:',['../protocol_s_p_u_updater_delegate-p.html#aeef90220bddc5727c5e6529b58e48164',1,'SPUUpdaterDelegate-p']]], + ['updater_3auserdidskipthisversion_3a_370',['updater:userDidSkipThisVersion:',['../protocol_s_p_u_updater_delegate-p.html#a1f8fcf730b45b3b650b19627dd1ac36c',1,'SPUUpdaterDelegate-p']]], + ['updater_3awilldownloadupdate_3awithrequest_3a_371',['updater:willDownloadUpdate:withRequest:',['../protocol_s_p_u_updater_delegate-p.html#a2255ef7b18b135306e871e1471a4a399',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillextractupdate_3a_372',['updater:willExtractUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a2573857b492ea895f099407a92321a3f',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillinstallupdate_3a_373',['updater:willInstallUpdate:',['../protocol_s_p_u_updater_delegate-p.html#acf34be619b8fb7f66693837849d5e228',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillinstallupdateonquit_3aimmediateinstallationblock_3a_374',['updater:willInstallUpdateOnQuit:immediateInstallationBlock:',['../protocol_s_p_u_updater_delegate-p.html#a64585159f4bef97e47de8359e202f3ad',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillscheduleupdatecheckafterdelay_3a_375',['updater:willScheduleUpdateCheckAfterDelay:',['../protocol_s_p_u_updater_delegate-p.html#aafac150db4d32c06c84ee3ad01b0f036',1,'SPUUpdaterDelegate-p']]], + ['updaterdidnotfindupdate_3a_376',['updaterDidNotFindUpdate:',['../protocol_s_p_u_updater_delegate-p.html#ad112453ce92617e3356a7cd5c4d0658b',1,'SPUUpdaterDelegate-p']]], + ['updaterdidnotfindupdate_3aerror_3a_377',['updaterDidNotFindUpdate:error:',['../protocol_s_p_u_updater_delegate-p.html#a5ad88d4c57d19fe73080273b13ded22d',1,'SPUUpdaterDelegate-p']]], + ['updatermaycheckforupdates_3a_378',['updaterMayCheckForUpdates:',['../protocol_s_p_u_updater_delegate-p.html#a1745cb021956a38c2439b370e9cda904',1,'SPUUpdaterDelegate-p']]], + ['updatershoulddownloadreleasenotes_3a_379',['updaterShouldDownloadReleaseNotes:',['../protocol_s_p_u_updater_delegate-p.html#a8b966f752f5a19942534698d5271544a',1,'SPUUpdaterDelegate-p']]], + ['updatershouldpromptforpermissiontocheckforupdates_3a_380',['updaterShouldPromptForPermissionToCheckForUpdates:',['../protocol_s_p_u_updater_delegate-p.html#a5cd8012b35bec5de906e70c4dabce602',1,'SPUUpdaterDelegate-p']]], + ['updatershouldrelaunchapplication_3a_381',['updaterShouldRelaunchApplication:',['../protocol_s_p_u_updater_delegate-p.html#a703e4aa94c2b4fe835c99b1f2b8f1c48',1,'SPUUpdaterDelegate-p']]], + ['updaterwillidleschedulingupdates_3a_382',['updaterWillIdleSchedulingUpdates:',['../protocol_s_p_u_updater_delegate-p.html#afccc281852fd4f497d815cda9b4695bb',1,'SPUUpdaterDelegate-p']]], + ['updaterwillrelaunchapplication_3a_383',['updaterWillRelaunchApplication:',['../protocol_s_p_u_updater_delegate-p.html#a6fa486e14d915cd18ac3791a905647f2',1,'SPUUpdaterDelegate-p']]], + ['userdidcanceldownload_3a_384',['userDidCancelDownload:',['../protocol_s_p_u_updater_delegate-p.html#a06e1e03dea92513fd284e263b9f80d02',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_b.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_b.html new file mode 100644 index 0000000..e301fed --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_b.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_b.js new file mode 100644 index 0000000..ffd4c8e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/functions_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['versioncomparatorforupdater_3a_385',['versionComparatorForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a8bea6508b8e81a51c1087a1f3b501c1d',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/mag_sel.svg b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/nomatches.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_0.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_0.html new file mode 100644 index 0000000..91e9306 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_0.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_0.js new file mode 100644 index 0000000..eb0e85c --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['allowsautomaticupdates_386',['allowsAutomaticUpdates',['../interface_s_p_u_updater_settings.html#ae9b58785573e4d3e2abea0c57544681f',1,'SPUUpdaterSettings']]], + ['automaticallychecksforupdates_387',['automaticallyChecksForUpdates',['../interface_s_p_u_updater.html#a9a154002bdbe3306e763d000502a0980',1,'SPUUpdater::automaticallyChecksForUpdates()'],['../interface_s_p_u_updater_settings.html#a41e4d0f0e10e9afa92fe5c81d21bfde3',1,'SPUUpdaterSettings::automaticallyChecksForUpdates()']]], + ['automaticallydownloadsupdates_388',['automaticallyDownloadsUpdates',['../interface_s_p_u_updater.html#aa5f5578c29e6496cb90546aca35804e6',1,'SPUUpdater::automaticallyDownloadsUpdates()'],['../interface_s_p_u_updater_settings.html#af1a1fba7d6dcd05b52339f173c7a0a8d',1,'SPUUpdaterSettings::automaticallyDownloadsUpdates()']]], + ['automaticupdatechecks_389',['automaticUpdateChecks',['../interface_s_u_update_permission_response.html#a84a21b766bcbbe1fff16c26b8689aa56',1,'SUUpdatePermissionResponse']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_1.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_1.html new file mode 100644 index 0000000..19753dc --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_1.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_1.js new file mode 100644 index 0000000..16f4ef4 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cancheckforupdates_390',['canCheckForUpdates',['../interface_s_p_u_updater.html#aa8ec4e87308007ae49228165534e683c',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_2.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_2.html new file mode 100644 index 0000000..5799756 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_2.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_2.js new file mode 100644 index 0000000..260b853 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['data_391',['data',['../interface_s_p_u_download_data.html#ae8c680d14f0213633c117684e58fbef2',1,'SPUDownloadData']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_3.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_3.html new file mode 100644 index 0000000..b1eb716 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_3.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_3.js new file mode 100644 index 0000000..263fe17 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['feedurl_392',['feedURL',['../interface_s_p_u_updater.html#af49bc6a058dc0e758943a4b4b1ff98dc',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_4.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_4.html new file mode 100644 index 0000000..6f3262e --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_4.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_4.js new file mode 100644 index 0000000..7b164c0 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hasanykeys_393',['hasAnyKeys',['../interface_s_u_public_keys.html#ae2a53f6befe084d9a6fa7369a0dbe78a',1,'SUPublicKeys']]], + ['hostbundle_394',['hostBundle',['../interface_s_p_u_updater.html#aeae19dba9dc83ae9098279b0eed76d47',1,'SPUUpdater']]], + ['httpheaders_395',['httpHeaders',['../interface_s_p_u_updater.html#a2e2747823e204ebc07800ae31c201ad1',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_5.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_5.html new file mode 100644 index 0000000..b14d3a8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_5.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_5.js new file mode 100644 index 0000000..da1bed1 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lastupdatecheckdate_396',['lastUpdateCheckDate',['../interface_s_p_u_updater.html#a22a62559c6938c7a34b1787f22043010',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_6.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_6.html new file mode 100644 index 0000000..19d3d2a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_6.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_6.js new file mode 100644 index 0000000..97dd548 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mimetype_397',['MIMEType',['../interface_s_p_u_download_data.html#a108d9dec279550089dbea559e449321c',1,'SPUDownloadData']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_7.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_7.html new file mode 100644 index 0000000..42aa68a --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_7.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_7.js new file mode 100644 index 0000000..e78b4cc --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_7.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['sendssystemprofile_398',['sendsSystemProfile',['../interface_s_p_u_updater.html#a521d2f6d09ceec6af979f6116bc58f7f',1,'SPUUpdater::sendsSystemProfile()'],['../interface_s_p_u_updater_settings.html#a97b5102512608a905bda83b33dd0bb5d',1,'SPUUpdaterSettings::sendsSystemProfile()']]], + ['sendsystemprofile_399',['sendSystemProfile',['../interface_s_u_update_permission_response.html#af9436f4e07219513c68dbad51daf9c8d',1,'SUUpdatePermissionResponse']]], + ['sessioninprogress_400',['sessionInProgress',['../interface_s_p_u_updater.html#aebc820be90ea36d0d97c6f11e80f3a4f',1,'SPUUpdater']]], + ['sparklebundle_401',['sparkleBundle',['../interface_s_p_u_updater.html#aa0e335f7212dbd90668ea0bbef0f00c2',1,'SPUUpdater']]], + ['systemprofile_402',['systemProfile',['../interface_s_p_u_update_permission_request.html#a318086878d3e1ec1efa9b8d2424f9844',1,'SPUUpdatePermissionRequest']]], + ['systemprofilearray_403',['systemProfileArray',['../interface_s_p_u_updater.html#a90e21876539a0dab3eacfccad863aaa2',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_8.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_8.html new file mode 100644 index 0000000..f13fcd8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_8.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_8.js new file mode 100644 index 0000000..04e96d9 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['textencodingname_404',['textEncodingName',['../interface_s_p_u_download_data.html#a8316fe998bf3afa7bc4d6df7dc0ac070',1,'SPUDownloadData']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_9.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_9.html new file mode 100644 index 0000000..f8bedc8 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_9.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_9.js new file mode 100644 index 0000000..7f9ab55 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/properties_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['updatecheckinterval_405',['updateCheckInterval',['../interface_s_p_u_updater.html#a1b2a4bc575d1f9de57e189ca93bda22a',1,'SPUUpdater::updateCheckInterval()'],['../interface_s_p_u_updater_settings.html#affb7ac205324036803bda21826bde524',1,'SPUUpdaterSettings::updateCheckInterval()']]], + ['updater_406',['updater',['../interface_s_p_u_standard_updater_controller.html#afa35dd9683576ac1126d1ebbb6d0f3d3',1,'SPUStandardUpdaterController']]], + ['updaterdelegate_407',['updaterDelegate',['../interface_s_p_u_standard_updater_controller.html#a8ee554e7555314565b582ea7ddfb91fe',1,'SPUStandardUpdaterController']]], + ['url_408',['URL',['../interface_s_p_u_download_data.html#a5eabdc79a39c2de6e0c79b2d6d4e5b0e',1,'SPUDownloadData']]], + ['useragentstring_409',['userAgentString',['../interface_s_p_u_updater.html#a62757b3c7dea957c737527e854408e96',1,'SPUUpdater']]], + ['userdriver_410',['userDriver',['../interface_s_p_u_standard_updater_controller.html#a22c96bbd966c2d92884a2cfc6fb4f6f6',1,'SPUStandardUpdaterController']]], + ['userdriverdelegate_411',['userDriverDelegate',['../interface_s_p_u_standard_updater_controller.html#a4afcf2d6fc104bf1186a0e757aa267d7',1,'SPUStandardUpdaterController']]] +]; diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search.css b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search.css new file mode 100644 index 0000000..9074198 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search_r.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/searchdata.js b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/searchdata.js new file mode 100644 index 0000000..afac925 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/search/searchdata.js @@ -0,0 +1,24 @@ +var indexSectionsWithContent = +{ + 0: "abcdfhilmnrstuv", + 1: "inst", + 2: "abcdfimnrsuv", + 3: "acdfhlmstu" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "functions", + 3: "properties" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Functions", + 3: "Properties" +}; + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/splitbar.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/struct_n_s_operating_system_version-members.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/struct_n_s_operating_system_version-members.html new file mode 100644 index 0000000..dcf4b75 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/struct_n_s_operating_system_version-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    NSOperatingSystemVersion Member List
    +
    +
    + +

    This is the complete list of members for NSOperatingSystemVersion, including all inherited members.

    + + + + +
    majorVersion (defined in NSOperatingSystemVersion)NSOperatingSystemVersion
    minorVersion (defined in NSOperatingSystemVersion)NSOperatingSystemVersion
    patchVersion (defined in NSOperatingSystemVersion)NSOperatingSystemVersion
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/struct_n_s_operating_system_version.html b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/struct_n_s_operating_system_version.html new file mode 100644 index 0000000..17e9d07 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/struct_n_s_operating_system_version.html @@ -0,0 +1,96 @@ + + + + + + + +Sparkle: NSOperatingSystemVersion Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    NSOperatingSystemVersion Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    +NSInteger majorVersion
     
    +NSInteger minorVersion
     
    +NSInteger patchVersion
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/sync_off.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/sync_on.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tab_a.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tab_b.png b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tabs.css b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/undocumented.json b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/undocumented.json new file mode 100644 index 0000000..eea2899 --- /dev/null +++ b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/Documents/undocumented.json @@ -0,0 +1,866 @@ +{ + "warnings": [ + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 29, + "symbol": "SUUpdaterDidFinishLoadingAppCastNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 30, + "symbol": "SUUpdaterDidFindValidUpdateNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 31, + "symbol": "SUUpdaterDidNotFindUpdateNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 32, + "symbol": "SUUpdaterWillRestartNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 37, + "symbol": "SUUpdaterAppcastItemNotificationKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 39, + "symbol": "SUUpdaterAppcastNotificationKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 45, + "symbol": "SUSystemProfilerApplicationNameKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 46, + "symbol": "SUSystemProfilerApplicationVersionKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 47, + "symbol": "SUSystemProfilerCPU64bitKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 48, + "symbol": "SUSystemProfilerCPUCountKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 49, + "symbol": "SUSystemProfilerCPUFrequencyKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 50, + "symbol": "SUSystemProfilerCPUTypeKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 51, + "symbol": "SUSystemProfilerCPUSubtypeKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 52, + "symbol": "SUSystemProfilerHardwareModelKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 53, + "symbol": "SUSystemProfilerMemoryKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 54, + "symbol": "SUSystemProfilerOperatingSystemVersionKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 55, + "symbol": "SUSystemProfilerPreferredLanguageKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 447, + "symbol": "SPUUpdaterDelegate.-updaterMayCheckForUpdates:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterSettings.h", + "line": 29, + "symbol": "SPUUpdaterSettings.-initWithHostBundle:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUserDriver.h", + "line": 278, + "symbol": "SPUUserDriver.-showUpdateNotFoundWithAcknowledgement:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUserDriver.h", + "line": 280, + "symbol": "SPUUserDriver.-showUpdateInstallationDidFinishWithAcknowledgement:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUserDriver.h", + "line": 282, + "symbol": "SPUUserDriver.-dismissUserInitiatedUpdateCheck", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUserUpdateState.h", + "line": 66, + "symbol": "SPUUserUpdateState.-init", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcast.h", + "line": 31, + "symbol": "SUAppcast.-init", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcastItem.h", + "line": 332, + "symbol": "SUAppcastItem.-init", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcastItem.h", + "line": 342, + "symbol": "SUAppcastItem.-initWithDictionary:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcastItem.h", + "line": 343, + "symbol": "SUAppcastItem.-initWithDictionary:failureReason:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcastItem.h", + "line": 344, + "symbol": "SUAppcastItem.-initWithDictionary:relativeToURL:failureReason:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 36, + "symbol": "SUError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 36, + "symbol": "SUError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 38, + "symbol": "SUError.SUNoPublicDSAFoundError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 39, + "symbol": "SUError.SUInsufficientSigningError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 40, + "symbol": "SUError.SUInsecureFeedURLError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 41, + "symbol": "SUError.SUInvalidFeedURLError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 42, + "symbol": "SUError.SUInvalidUpdaterError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 43, + "symbol": "SUError.SUInvalidHostBundleIdentifierError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 44, + "symbol": "SUError.SUInvalidHostVersionError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 47, + "symbol": "SUError.SUAppcastParseError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 48, + "symbol": "SUError.SUNoUpdateError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 49, + "symbol": "SUError.SUAppcastError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 50, + "symbol": "SUError.SURunningFromDiskImageError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 51, + "symbol": "SUError.SUResumeAppcastError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 52, + "symbol": "SUError.SURunningTranslocated", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 53, + "symbol": "SUError.SUWebKitTerminationError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 56, + "symbol": "SUError.SUTemporaryDirectoryError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 57, + "symbol": "SUError.SUDownloadError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 60, + "symbol": "SUError.SUUnarchivingError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 61, + "symbol": "SUError.SUSignatureError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 62, + "symbol": "SUError.SUValidationError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 65, + "symbol": "SUError.SUFileCopyFailure", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 66, + "symbol": "SUError.SUAuthenticationFailure", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 67, + "symbol": "SUError.SUMissingUpdateError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 68, + "symbol": "SUError.SUMissingInstallerToolError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 69, + "symbol": "SUError.SURelaunchError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 70, + "symbol": "SUError.SUInstallationError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 71, + "symbol": "SUError.SUDowngradeError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 72, + "symbol": "SUError.SUInstallationCanceledError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 73, + "symbol": "SUError.SUInstallationAuthorizeLaterError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 74, + "symbol": "SUError.SUNotValidUpdateError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 75, + "symbol": "SUError.SUAgentInvalidationError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 78, + "symbol": "SUError.SUIncorrectAPIUsageError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 107, + "symbol": "SPUNoUpdateFoundReasonKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 108, + "symbol": "SPULatestAppcastItemFoundKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 109, + "symbol": "SPUNoUpdateFoundUserInitiatedKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdatePermissionResponse.h", + "line": 35, + "symbol": "SUUpdatePermissionResponse.-init", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 39, + "symbol": "SUUpdater.delegate", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 46, + "symbol": "SUUpdater.+sharedUpdater", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 52, + "symbol": "SUUpdater.+updaterForBundle:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 59, + "symbol": "SUUpdater.-initForBundle:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 71, + "symbol": "SUUpdater.-checkForUpdates:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 76, + "symbol": "SUUpdater.-validateMenuItem:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 91, + "symbol": "SUUpdater.-checkForUpdatesInBackground", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 100, + "symbol": "SUUpdater.automaticallyChecksForUpdates", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 110, + "symbol": "SUUpdater.automaticallyDownloadsUpdates", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 119, + "symbol": "SUUpdater.updateCheckInterval", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 132, + "symbol": "SUUpdater.-checkForUpdateInformation", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 143, + "symbol": "SUUpdater.feedURL", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 148, + "symbol": "SUUpdater.hostBundle", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 153, + "symbol": "SUUpdater.sparkleBundle", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 160, + "symbol": "SUUpdater.userAgentString", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 167, + "symbol": "SUUpdater.httpHeaders", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 174, + "symbol": "SUUpdater.sendsSystemProfile", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 179, + "symbol": "SUUpdater.decryptionPassword", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 186, + "symbol": "SUUpdater.lastUpdateCheckDate", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 195, + "symbol": "SUUpdater.-resetUpdateCycle", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 203, + "symbol": "SUUpdater.updateInProgress", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 28, + "symbol": "SUUpdaterDidFinishLoadingAppCastNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 29, + "symbol": "SUUpdaterDidFindValidUpdateNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 30, + "symbol": "SUUpdaterDidNotFindUpdateNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 31, + "symbol": "SUUpdaterWillRestartNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 36, + "symbol": "SUUpdaterAppcastItemNotificationKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 38, + "symbol": "SUUpdaterAppcastNotificationKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 48, + "symbol": "SUUpdaterDelegate", + "symbol_kind": "sourcekitten.source.lang.objc.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 58, + "symbol": "SUUpdaterDelegate.-updaterMayCheckForUpdates:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 70, + "symbol": "SUUpdaterDelegate.-feedParametersForUpdater:sendingSystemProfile:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 82, + "symbol": "SUUpdaterDelegate.-feedURLStringForUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 91, + "symbol": "SUUpdaterDelegate.-updaterShouldPromptForPermissionToCheckForUpdates:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 101, + "symbol": "SUUpdaterDelegate.-updater:didFinishLoadingAppcast:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 113, + "symbol": "SUUpdaterDelegate.-bestValidUpdateInAppcast:forUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 121, + "symbol": "SUUpdaterDelegate.-updater:didFindValidUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 128, + "symbol": "SUUpdaterDelegate.-updaterDidNotFindUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 137, + "symbol": "SUUpdaterDelegate.-updater:willDownloadUpdate:withRequest:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 145, + "symbol": "SUUpdaterDelegate.-updater:didDownloadUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 154, + "symbol": "SUUpdaterDelegate.-updater:failedToDownloadUpdate:error:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 161, + "symbol": "SUUpdaterDelegate.-userDidCancelDownload:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 169, + "symbol": "SUUpdaterDelegate.-updater:willExtractUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 177, + "symbol": "SUUpdaterDelegate.-updater:didExtractUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 185, + "symbol": "SUUpdaterDelegate.-updater:willInstallUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 193, + "symbol": "SUUpdaterDelegate.-updater:userDidSkipThisVersion:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 209, + "symbol": "SUUpdaterDelegate.-updater:shouldPostponeRelaunchForUpdate:untilInvoking:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 224, + "symbol": "SUUpdaterDelegate.-updater:shouldPostponeRelaunchForUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 234, + "symbol": "SUUpdaterDelegate.-updaterShouldRelaunchApplication:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 241, + "symbol": "SUUpdaterDelegate.-updaterWillRelaunchApplication:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 248, + "symbol": "SUUpdaterDelegate.-updaterDidRelaunchApplication:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 263, + "symbol": "SUUpdaterDelegate.-versionComparatorForUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 272, + "symbol": "SUUpdaterDelegate.-versionDisplayerForUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 283, + "symbol": "SUUpdaterDelegate.-pathToRelaunchForUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 291, + "symbol": "SUUpdaterDelegate.-updaterWillShowModalAlert:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 299, + "symbol": "SUUpdaterDelegate.-updaterDidShowModalAlert:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 311, + "symbol": "SUUpdaterDelegate.-updater:willInstallUpdateOnQuit:immediateInstallationInvocation:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 322, + "symbol": "SUUpdaterDelegate.-updater:willInstallUpdateOnQuit:immediateInstallationBlock:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 332, + "symbol": "SUUpdaterDelegate.-updater:didCancelInstallUpdateOnQuit:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 340, + "symbol": "SUUpdaterDelegate.-updater:didAbortWithError:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + } + ], + "source_directory": "/Users/msp/Documents/Programming/Sparkle" +} \ No newline at end of file diff --git a/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/docSet.dsidx b/documentation/api-reference/docsets/Sparkle.docset/Contents/Resources/docSet.dsidx new file mode 100644 index 0000000000000000000000000000000000000000..1f2f295a5bcb2635fe242fcabb2518885bffab02 GIT binary patch literal 90112 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 G`~Lydx$7?g literal 0 HcmV?d00001 diff --git a/documentation/api-reference/docsets/Sparkle.tgz b/documentation/api-reference/docsets/Sparkle.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8ad12bdae922e06b965cf4536290fb9ffbbc8fa7 GIT binary patch literal 575585 zcmZ6SV{j$F)~;jQHg-6%o$T1QZBL9H+qTV#ZQGpKp2@_M+&TBwx%JietGlXub#<+3 zt@S=l8UqKWz0GC<26-(AZ%jDa%CM=s=P7o`qv%}BQ<1W<=D*Q|IWA>-$dH~FLNsUF z+Khb_t=UW|COuwuU&Pe%NJfVRU{Wqj%}ICOD+^P-r91&VV*`}Mf|owBcGGHosdbX` znwK%Qmu7sOe$MnfpZ0RI!_XcOw5f8^z{;rI>M{}oX;N%fZRvii4S%N6sb4GAOP|np z>X(HB=~AYSW$Wa_WL9m8XiB}Txeq|48`f4cK8@L%L`S~$q@M+}(yUMkfj@?C%dZ{z z$}q_v9<*vKTunaMRf^*RzXACLn3H8k<)!^TTIpL=@xJ6!t&jE`x%q8#H4$&}c~B-$ z<7BZtJ`M)#DB}C=4=Z1%+xVDe&kd*@9I=E~Q(w}fP%hFlU64S)^Hx@PbH`M8B zb#}1^u7c8UPy6Zw>r^cjrG4MlJzKct7;5b7a&i?JH1xKY)+uf-thpa$$YZy**6L+# zP7=3oYHR9a8x&r%j4= zEq=RSH<{Yr*lAlca7l!j+BKuzv5c5rliXm`bdo?@Y|=Z&0g>36;21fpwNHz$!mMx% z`rLS8wzkijmifRvD@(}ZsFzqyIQ)>5@I+u0!;{V!y>M*Blw`1oj!P*)_GFVhLo;!N z#gBB-VB$BdvCVq0pDDQ3VNSIUGy2NOgjY5zW-9NUJcy+G!p?U7+mL97ttG7u4JsS29A@tYEX7A>t*zzlpPMV)8eK&mSF&_sls9&}OXG)!0YJDcqZ+D4txoFs!ns-c z*REsjNm^>s^d5s>x|4F(5&wI}|CzkSR64#H;LMV*aUf7m1o5LCZ6@UFw8Xt{hvY>m z9_BNofRVWaZF<@lvXzd>tI%BUvmbGuE}+({!&ufuxx3P@>7RnC>qT-o92Mdu$Eg%z%!|8K~0bl{0IX*sVI0p^>MCc-Ky%`Yy#O z!DALtwq2AZ6XLVfny_Zokoyed=G?XFMuKU^w(1UNZ0y+)O&XTIO=IL+04W2ymfkha zvt^8L<>Zm)23&iX`2iQI$}x)pE*C(*L6!flF(WEDco*E46;t~D)V0ykPehVQ)2=(u z6H}96yr5C#{D3sPkv{kcE&edI7!q%;(PN8wGCW$)l&2RW%7gRyvAwfWkYq~Hhg
      h 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�OKBFhq+KKaxAs-%GP3$s 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%0DvA4N(wqEhTUe6F<_jmws?!i3*|-Bm;{xo~IA*el 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%0AujX))1jp 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 Dn&d7X literal 0 HcmV?d00001 diff --git a/documentation/api-reference/doxygen.css b/documentation/api-reference/doxygen.css new file mode 100644 index 0000000..ffbff02 --- /dev/null +++ b/documentation/api-reference/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/documentation/api-reference/doxygen.svg b/documentation/api-reference/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/documentation/api-reference/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/api-reference/dynsections.js b/documentation/api-reference/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/documentation/api-reference/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Sparkle: File List + + + + + + + + + +
      +
      + + + + + + + +
      +
      Sparkle +  2.0.0 +
      +
      A software update framework for macOS
      +
      +
      + + + + + + + +
      + +
      +
      + + +
      + +
      + +
      +
      +
      File List
      +
      +
      +
      Here is a list of all documented files with brief descriptions:
      +
      [detail level 123]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Sparkle
        Autoupdate
       TerminationListener.h
        InstallerProgress
       InstallerProgressAppController.h
       InstallerProgressDelegate.h
       ShowInstallerProgress.h
       SPUInstallerAgentProtocol.h
       SUInstallerAgentInitiationProtocol.h
       AppKitPrevention.h
       Sparkle.h
       SPUAppcastItemState.h
       SPUAppcastItemStateResolver+Private.h
       SPUAppcastItemStateResolver.h
       SPUAutomaticUpdateDriver.h
       SPUBasicUpdateDriver.h
       SPUCoreBasedUpdateDriver.h
       SPUDownloadData.h
       SPUDownloadDriver.h
       SPUDownloadedUpdate.h
       SPUInformationalUpdate.h
       SPUInstallationType.h
       SPUInstallerDriver.h
       SPULocalCacheDirectory.h
       SPUProbeInstallStatus.h
       SPUProbingUpdateDriver.h
       SPUResumableUpdate.h
       SPUScheduledUpdateDriver.h
       SPUSecureCoding.h
       SPUSkippedUpdate.h
       SPUStandardUpdaterController.h
       SPUStandardUserDriver.h
       SPUStandardUserDriverDelegate.h
       SPUUIBasedUpdateDriver.h
       SPUUpdateDriver.h
       SPUUpdatePermissionRequest.h
       SPUUpdater.h
       SPUUpdaterCycle.h
       SPUUpdaterDelegate.h
       SPUUpdaterSettings.h
       SPUUpdaterTimer.h
       SPUURLRequest.h
       SPUUserDriver.h
       SPUUserInitiatedUpdateDriver.h
       SPUUserUpdateState+Private.h
       SPUUserUpdateState.h
       SPUXPCServiceInfo.h
       SUAppcast+Private.h
       SUAppcast.h
       SUAppcastDriver.h
       SUAppcastItem+Private.h
       SUAppcastItem.h
       SUApplicationInfo.h
       SUBundleIcon.h
       SUConstants.h
       SUErrors.h
       SUExport.h
       SUFileManager.h
       SUHost.h
       SUInstallerProtocol.h
       SULegacyWebView.h
       SULocalizations.h
       SULog+NSError.h
       SULog.h
       SUNormalization.h
       SUOperatingSystem.h
       SUPhasedUpdateGroupInfo.h
       SUSignatures.h
       SUStandardVersionComparator.h
       SUStatusController.h
       SUSystemProfiler.h
       SUTouchBarButtonGroup.h
       SUTouchBarForwardDeclarations.h
       SUUpdateAlert.h
       SUUpdatePermissionPrompt.h
       SUUpdatePermissionResponse.h
       SUUpdater.h
       SUUpdaterDelegate.h
       SUUpdateValidator.h
       SUVersionComparisonProtocol.h
       SUVersionDisplayProtocol.h
       SUWebView.h
       SUWebViewCommon.h
       SUWKWebView.h
      +
      +
      + +
      + + diff --git a/documentation/api-reference/folderclosed.png b/documentation/api-reference/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/documentation/api-reference/functions.html b/documentation/api-reference/functions.html new file mode 100644 index 0000000..7027702 --- /dev/null +++ b/documentation/api-reference/functions.html @@ -0,0 +1,463 @@ + + + + + + + +Sparkle: Class Members + + + + + + + + + +
      +
      + + + + + + + +
      +
      Sparkle +  2.0.0 +
      +
      A software update framework for macOS
      +
      +
      + + + + + + + +
      + +
      +
      + + +
      + +
      + +
      +
      Here is a list of all documented class members with links to the class documentation for each member:
      + +

      - a -

      + + +

      - b -

      + + +

      - c -

      + + +

      - d -

      + + +

      - f -

      + + +

      - h -

      + + +

      - i -

      + + +

      - l -

      + + +

      - m -

      + + +

      - n -

      + + +

      - r -

      + + +

      - s -

      + + +

      - t -

      + + +

      - u -

      + + +

      - v -

      +
      + + + + diff --git a/documentation/api-reference/functions_func.html b/documentation/api-reference/functions_func.html new file mode 100644 index 0000000..14e54bb --- /dev/null +++ b/documentation/api-reference/functions_func.html @@ -0,0 +1,369 @@ + + + + + + + +Sparkle: Class Members - Functions + + + + + + + + + +
      +
      + + + + + + + +
      +
      Sparkle +  2.0.0 +
      +
      A software update framework for macOS
      +
      +
      + + + + + + + +
      + +
      +
      + + +
      + +
      + +
      +  + +

      - a -

      + + +

      - b -

      + + +

      - c -

      + + +

      - d -

      + + +

      - f -

      + + +

      - i -

      + + +

      - m -

      + + +

      - n -

      + + +

      - r -

      + + +

      - s -

      + + +

      - u -

      + + +

      - v -

      +
      + + + + diff --git a/documentation/api-reference/functions_prop.html b/documentation/api-reference/functions_prop.html new file mode 100644 index 0000000..e31589a --- /dev/null +++ b/documentation/api-reference/functions_prop.html @@ -0,0 +1,157 @@ + + + + + + + +Sparkle: Class Members - Properties + + + + + + + + + +
      +
      + + + + + + + +
      +
      Sparkle +  2.0.0 +
      +
      A software update framework for macOS
      +
      +
      + + + + + + + +
      + +
      +
      + + +
      + +
      + +
      +
      + + + + diff --git a/documentation/api-reference/hierarchy.html b/documentation/api-reference/hierarchy.html new file mode 100644 index 0000000..beb07f3 --- /dev/null +++ b/documentation/api-reference/hierarchy.html @@ -0,0 +1,210 @@ + + + + + + + +Sparkle: Class Hierarchy + + + + + + + + + +
      +
      + + + + + + + +
      +
      Sparkle +  2.0.0 +
      +
      A software update framework for macOS
      +
      +
      + + + + + + + +
      + +
      +
      + + +
      + +
      + +
      +
      +
      Class Hierarchy
      +
      +
      +
      This inheritance list is sorted roughly, but not completely, alphabetically:
      +
      [detail level 123]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       C<NSApplicationDelegate>
       CNSButton(SierraSDK)
       CNSData(SUSignatureVerifier)
       CNSObject
       CNSObject(PrivateDelegateMethods)
       C<NSObject>
       CNSOperatingSystemVersion
       CNSProcessInfo()
       C<NSSecureCoding>
       C<NSTouchBarDelegate>
       CNSViewController
       CNSWindowController
       CShowInstallerProgress()
       C<SPUDownloaderDelegate>
       C<SPUInstallerAgentProtocol>
       CSPUUpdaterCycle()
       CSPUUpdaterSettings()
       CSPUUpdaterTimer()
       CSPUURLRequest()
       CSPUUserUpdateState(Private)
       CSUAppcast()
       CSUAppcast(Private)
       CSUAppcastItem()
       CSUHost()
       C<SUInstallerAgentInitiationProtocol>
       C<SUInstallerCommunicationProtocol>
       CSUUpdateValidator()
       C<SUVersionComparison>Provides version comparison facilities for Sparkle
       C<SUVersionDisplay>Applies special display formatting to version numbers
       CTerminationListener()
      +
      +
      + + + + diff --git a/documentation/api-reference/icon_32x32@2x.png b/documentation/api-reference/icon_32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aef9fc40cdf39f6e437b7d78c1b7af0e0c28f80d GIT binary patch literal 4689 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 S^0y4=eg;ohKbLh*2~7a!Pg}VF literal 0 HcmV?d00001 diff --git a/documentation/api-reference/img/dash.png b/documentation/api-reference/img/dash.png new file mode 100755 index 0000000000000000000000000000000000000000..6f694c7a012b417908da3687a0a39aa182e91c74 GIT binary patch literal 1338 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 literal 0 HcmV?d00001 diff --git a/documentation/api-reference/index.html b/documentation/api-reference/index.html new file mode 100644 index 0000000..2cfaea8 --- /dev/null +++ b/documentation/api-reference/index.html @@ -0,0 +1,228 @@ + + + + Sparkle Reference + + + + + + + + + + +
      +
      +

      + Sparkle 2.0.0-beta.1 Docs + (58% documented) +

      + + +
      +
      + +
      +
      +
      +
      +
      + +

      Sparkle 2 API Reference

      + +

      These are the primary classes and protocols in Sparkle 2 you may be interested in:

      + + + +

      If you are migrating from Sparkle 1, please refer to SPUStandardUpdaterController and SPUUpdater.

      + +

      Please also visit the Basic Setup guide which shows how to instantiate an updater in a nib or how to create one programmatically.

      + +
      +
      +
      +
      + + +
      + +
  • + diff --git a/documentation/api-reference/interface_installer_progress_app_controller-members.html b/documentation/api-reference/interface_installer_progress_app_controller-members.html new file mode 100644 index 0000000..85132cf --- /dev/null +++ b/documentation/api-reference/interface_installer_progress_app_controller-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    InstallerProgressAppController Member List
    +
    +
    + +

    This is the complete list of members for InstallerProgressAppController, including all inherited members.

    + + + + +
    cleanupAndExitWithStatus:error: (defined in InstallerProgressAppController)InstallerProgressAppController
    initWithApplication:arguments:delegate: (defined in InstallerProgressAppController)InstallerProgressAppController
    run (defined in InstallerProgressAppController)InstallerProgressAppController
    + + + + diff --git a/documentation/api-reference/interface_installer_progress_app_controller.html b/documentation/api-reference/interface_installer_progress_app_controller.html new file mode 100644 index 0000000..53b071f --- /dev/null +++ b/documentation/api-reference/interface_installer_progress_app_controller.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: InstallerProgressAppController Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    InstallerProgressAppController Class Reference
    +
    +
    +
    +Inheritance diagram for InstallerProgressAppController:
    +
    +
    + +
    + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithApplication:arguments:delegate:
     
    +(void) - run
     
    +(void) - cleanupAndExitWithStatus:error:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_installer_progress_app_controller.png b/documentation/api-reference/interface_installer_progress_app_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6253c27d6bc74d90d8e7b95866cc00ea1da7d4 GIT binary patch literal 1049 zcmeAS@N?(olHy`uVBq!ia0y~yV5|eO12~w0q~_IkHb6=uz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opvZupKx5^Zx%a zZ!Wu}h)WYzsJ)u*d5}e!cTh{EnEfg< zAO2E3+2j31KiFoU{Oq4ao8;DP&X+4X8tnh-z0395KQ`C6i>;?ExAb}H({=qt|FX#+ ze>qH&vRhd%eD}}QoypIqdIY&fhSfXQo5(&tWoj1Rm9Mz2{rLV}bt*3_&xO|u$6lJ> z)NT0f(3xacy{G=GXMei6(q{eD{b5ln>piuWh5enpMBHL=ePxYsZ0WsYJ2*F6oJ_xc z|H$HZKk914zy6a6yI54_^e5u8=50U0*lYV2@A6$8ZdtuEbmeoqJ>m~Tqx18YPkp>e zZ`#uzhJQ=fPOml0o9F&3cnkZl&-q1pmEGqb|JHvH_4lgU^_3G=S*g4fowwp&TnT&c zvMS@_SNBI=+B?TS;P1-UqT1^+)-T(;zjK|&{pVHnh1Gj2&Q#ZLebd#v^G%oP&NxdA zc2BF5l7H{M==v0U{&9iuv-7Ps(^AAdx9wcIIrY+&YL%6TRe!0zoKbG`WKEsttKwMY zKe@}+{Xg{J)1^sEjBDKfN6-7nzWRUtUbjhFb|HT!m6)yvhJQ3H{CTeHd#3HE^E67n zChx@I9Q1-;u|<)wLSFd51D-j}uh};w%{unozJPC?{DCgZPY?g{g9HtZY>#6wjPkW*-h5F?-kRa!>Si6fcGz~*oo zy3yM&-B+7@{`ul(Nfmz>ZCwBNy$gB!d6#+p`hWLRSS^mrG@8$(Zk3F`iJ^JLj zR&9jOxjMebt*Lt?z3%_qR(i>zJdQQ9qOxLMhV((*uk0CiET7U#1E%EIMAl!DT=o9! z_0OA&M7|c}FDiLB?`pip$~JSZV8yU<(=EcKb^9*fpPM6nu=nfpZ5tx`p3agw=yvPg z>y^;~rT_E4h#TLD{Gaz(vseCAzM6jcq3o;iS^M)pTfX}H``7BLf(w3Lxx2UK?%nO5 zo}NvQeD~Sm7T4;s`R{wh>*{XuP2HPQd!lOJy9JrjE2DyM-G7`ReDLiT<~^rouI!pC z@qjg^-njQQdqv;sO%c(|2L#v2YuI6ijQK@SOfr3l`^VU{@}7(L&zQZye9YkK>gTe~ HDWM4f`%(yY literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_appcast_item_state-members.html b/documentation/api-reference/interface_s_p_u_appcast_item_state-members.html new file mode 100644 index 0000000..6776f82 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_appcast_item_state-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUAppcastItemState Member List
    +
    +
    + +

    This is the complete list of members for SPUAppcastItemState, including all inherited members.

    + + + + + + + + +
    criticalUpdate (defined in SPUAppcastItemState)SPUAppcastItemState
    informationalUpdate (defined in SPUAppcastItemState)SPUAppcastItemState
    initWithMajorUpgrade:criticalUpdate:informationalUpdate:minimumOperatingSystemVersionIsOK:maximumOperatingSystemVersionIsOK: (defined in SPUAppcastItemState)SPUAppcastItemState
    majorUpgrade (defined in SPUAppcastItemState)SPUAppcastItemState
    maximumOperatingSystemVersionIsOK (defined in SPUAppcastItemState)SPUAppcastItemState
    minimumOperatingSystemVersionIsOK (defined in SPUAppcastItemState)SPUAppcastItemState
    NS_UNAVAILABLE (defined in SPUAppcastItemState)SPUAppcastItemState
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_appcast_item_state.html b/documentation/api-reference/interface_s_p_u_appcast_item_state.html new file mode 100644 index 0000000..e34ade9 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_appcast_item_state.html @@ -0,0 +1,119 @@ + + + + + + + +Sparkle: SPUAppcastItemState Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUAppcastItemState Class Reference
    +
    +
    +
    +Inheritance diagram for SPUAppcastItemState:
    +
    +
    + +
    + + + + + + +

    +Instance Methods

    +(instancetype) - NS_UNAVAILABLE
     
    +(instancetype) - initWithMajorUpgrade:criticalUpdate:informationalUpdate:minimumOperatingSystemVersionIsOK:maximumOperatingSystemVersionIsOK:
     
    + + + + + + + + + + + +

    +Properties

    +BOOL majorUpgrade
     
    +BOOL criticalUpdate
     
    +BOOL informationalUpdate
     
    +BOOL minimumOperatingSystemVersionIsOK
     
    +BOOL maximumOperatingSystemVersionIsOK
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_appcast_item_state.png b/documentation/api-reference/interface_s_p_u_appcast_item_state.png new file mode 100644 index 0000000000000000000000000000000000000000..f44cdeff0e8eaf439d7685969b27664e31f9b7cd GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^EkGQ=!3-qdo9eCsQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;RSS%JsRKX2Ce`o~v= z>Y6gP-qt(km-b0iM}SZ9Vzi4(8h2pm+|>;n9HFIUa!O~T>#x`N@n16(m-b&CJHP$J z@2R!5?x9;Riz|Gpt8}#eZ!{&cDCe3QyHDuXfP9AtpQw(Ow1$0wp|wlBEd&2dYyMvS z>+XK0#ETili`zYR{;K7ezM$DdW=i*}R}SLdTVyVWACG@_5{orlOkoKBSp#M0p#yf_M24|M&vxbjP8 zhmJty<$Zev*2Ho=|Ezk1VVO_ltdd#jo8``#uH4-hbzRI%aE0^PCI76B3AmPBsEWJJ zu_Z0|t!+r{ZdOwU-<~$hiz_ql=$4ppT + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUAppcastItemStateResolver Member List
    +
    +
    + +

    This is the complete list of members for SPUAppcastItemStateResolver, including all inherited members.

    + + + + + + + + +
    applicationVersionComparator (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()
    hostVersion (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()
    initWithHostVersion:applicationVersionComparator:standardVersionComparator: (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver
    isMinimumAutoupdateVersionOK:hostVersion:versionComparator: (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()static
    NS_UNAVAILABLE (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver
    resolveStateWithInformationalUpdateVersions:minimumOperatingSystemVersion:maximumOperatingSystemVersion:minimumAutoupdateVersion:criticalUpdateDictionary: (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()
    standardVersionComparator (defined in SPUAppcastItemStateResolver)SPUAppcastItemStateResolver()
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_appcast_item_state_resolver.html b/documentation/api-reference/interface_s_p_u_appcast_item_state_resolver.html new file mode 100644 index 0000000..461e7f9 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_appcast_item_state_resolver.html @@ -0,0 +1,131 @@ + + + + + + + +Sparkle: SPUAppcastItemStateResolver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUAppcastItemStateResolver Class Reference
    +
    +
    + +

    Private exposed class used to resolve Appcast Item properties that rely on external factors such as a host. + More...

    + +

    #import <SPUAppcastItemStateResolver.h>

    +
    +Inheritance diagram for SPUAppcastItemStateResolver:
    +
    +
    + +
    + + + + + + + + +

    +Instance Methods

    +(instancetype) - NS_UNAVAILABLE
     
    +(instancetype) - initWithHostVersion:applicationVersionComparator:standardVersionComparator:
     
    +(SPUAppcastItemState *) - resolveStateWithInformationalUpdateVersions:minimumOperatingSystemVersion:maximumOperatingSystemVersion:minimumAutoupdateVersion:criticalUpdateDictionary: [implementation]
     
    + + + +

    +Class Methods

    +(BOOL) + isMinimumAutoupdateVersionOK:hostVersion:versionComparator: [implementation]
     
    + + + + + + + +

    +Properties

    +NSString * hostVersion [implementation]
     
    +id< SUVersionComparisonapplicationVersionComparator [implementation]
     
    +SUStandardVersionComparatorstandardVersionComparator [implementation]
     
    +

    Detailed Description

    +

    Private exposed class used to resolve Appcast Item properties that rely on external factors such as a host.

    +

    This resolver is used for constructing appcast items.

    +

    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_appcast_item_state_resolver.png b/documentation/api-reference/interface_s_p_u_appcast_item_state_resolver.png new file mode 100644 index 0000000000000000000000000000000000000000..86911a7bb8c1eeec7a4e64ce089a36ba5c53b4a5 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;^HF7-xhPhiBc za&?``Uq8k8ldoe{wyF4jWtVeWr0aQIYon^BSEsIL;I8D^Gj-J)_Fv*nuwC0(yIc3< zUbSy?t6bl?ZrnVX;fUr&Mxe790=;q?G*rzTrU*$Zcy;m$EIq>35tPL2f-2oGdFIWk zLkwZTP?;^s_OCaaO?&RLd+(l&zjqZeT6{HQpL|ySz>4DI(q)Hbj+^s65xIR+X5;>c z)uPo+`*nBnt0t*hn7Z8#kdxp1b>qGpu9fqPx?io`eC6y`)!Z`g23yZ(H-2|N{cpQ0 z&)~)SU0dqJ%Wl7G{aC`!=4O9(!s&*}JpNaEzwRu2we{TB!0*+!|9+k3w*eRkk6-fV zZ@I0X-TKDk^nSbRw|C#Z^6kl8nHt%q%BV^0_cw2O(a(G)zWs%N|Nk{H{WqK^?rZ#8 zm-oNpZ*iXgrcz)y?){eec+KQ1XRrJ!_C1u^_S#&(Y|>t{nB_HpwJlA&8vZW_2FRt? oHyGp>Lqq1}#h+)-gk2WzT%Y&iVw_$MFdZ>?y85}Sb4q9e0D$~OFaQ7m literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_automatic_update_driver-members.html b/documentation/api-reference/interface_s_p_u_automatic_update_driver-members.html new file mode 100644 index 0000000..ba7749d --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_automatic_update_driver-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUAutomaticUpdateDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUAutomaticUpdateDriver, including all inherited members.

    + + + + + + + + +
    abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate: (defined in SPUAutomaticUpdateDriver)SPUAutomaticUpdateDriver
    resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_automatic_update_driver.html b/documentation/api-reference/interface_s_p_u_automatic_update_driver.html new file mode 100644 index 0000000..17be91d --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_automatic_update_driver.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: SPUAutomaticUpdateDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUAutomaticUpdateDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUAutomaticUpdateDriver:
    +
    +
    + + +<SPUUpdateDriver> + +
    + + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate:
     
    - Instance Methods inherited from <SPUUpdateDriver>
    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - abortUpdate
     
    +(void) - abortUpdateWithError:
     
    + + + + +

    +Additional Inherited Members

    - Properties inherited from <SPUUpdateDriver>
    +BOOL showingUpdate
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_automatic_update_driver.png b/documentation/api-reference/interface_s_p_u_automatic_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..6c297b387b3098b7777e48dc7fa7a1ecb3297e8b GIT binary patch literal 1373 zcmeAS@N?(olHy`uVBq!ia0y~yU(n*gwZT&>o{BT_9ep?b zP1LH5uB+;gLXU(enurMw*7`5^xkJFHzg<?_r^r+Qu zmetsJUdo$y?bg13$D>|X$bDUXblbB+Tl=&BlD_3{Ej2P#eSYiFi_dqXmT#|(hz_46 zmvQ&b{cG}Ff0IwIlH9#!WA@su-G8;C+Rf+w`Lk;4sr9A{mcQ31)Dr7f`WUgs`Spce zW}8YqQao>+Uza0m@^4kC4%6yeRvEHh-=jBg4ZnEuNlecF-M4s-xn^rFt+C-=yZrLYFCQ6pSTf6WG~48Z6N&uk*N*edw=(V6Y4dd99=Ru#!P*C; zPfTM?P~XY~j5UU`Ank^^SGcfoE$5$q?#%dMZ_Urw%zK)#tHEc26VOq14DF8u{O6!1 z%Ho){Ywv&C_uDx3dRzIf|4q}URu&fieml4O;)SR3$Ji_c-gfS8|N65kV&9d?>;J8} zrao6T`gPkq&urg^^Pjx>X_NbUvhLk>15@eg-OfF(FXZz3jQ)D}$FOYMx^71N->j^a zNilB{pS6BHw=*lG|MgG1>Mzr_#zw!-j-7V7_qDDs|CYRW^7|AU4sXz!^E%0(V&CGe z?<(A0?=OS?H;t>+`X{0XXC21&DTm>nJh%Cx7@q3zxw9x_1pNq zKHK(7W^XF*{JRx*Z@F*39R5rxAo|~?_V2!bi|*V^-jbWWHh9W^*Id>QNnP`z8jr?9 qvZCEov`}Qu(p@^GpZ$UCALhn4uey!0l5YabLIzJ)KbLh*2~7YC&#vJB literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_basic_update_driver-members.html b/documentation/api-reference/interface_s_p_u_basic_update_driver-members.html new file mode 100644 index 0000000..bae5f33 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_basic_update_driver-members.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUBasicUpdateDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUBasicUpdateDriver, including all inherited members.

    + + + + + + + +
    abortUpdateAndShowNextUpdateImmediately:resumableUpdate:error: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
    initWithHost:updater:updaterDelegate:delegate: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
    prepareCheckForUpdatesWithCompletion: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
    resumeInstallingUpdateWithCompletion: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
    resumeUpdate:completion: (defined in SPUBasicUpdateDriver)SPUBasicUpdateDriver
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_basic_update_driver.html b/documentation/api-reference/interface_s_p_u_basic_update_driver.html new file mode 100644 index 0000000..db7165a --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_basic_update_driver.html @@ -0,0 +1,112 @@ + + + + + + + +Sparkle: SPUBasicUpdateDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUBasicUpdateDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUBasicUpdateDriver:
    +
    +
    + +
    + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:updater:updaterDelegate:delegate:
     
    +(void) - prepareCheckForUpdatesWithCompletion:
     
    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - abortUpdateAndShowNextUpdateImmediately:resumableUpdate:error:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_basic_update_driver.png b/documentation/api-reference/interface_s_p_u_basic_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..ea647457470e8b5ef479e1ae480217e5b3ff3e42 GIT binary patch literal 583 zcmeAS@N?(olHy`uVBq!ia0vp^eLx(*!3-pSi0@4WQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;s|(|Hqg2 zz1y_$vD({T+kE(BWBbwFOW))~&7T!Kr*QMKTapFK7VYo;?Duwy%lm!bW}7a}wQHYe zJ7IC}+-dG*bEmec=?nY4UUPolDS4~g%s|ilSg$IyX6i1kzv>oxO4xKEC}l8s My85}Sb4q9e03vr0CjbBd literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_core_based_update_driver-members.html b/documentation/api-reference/interface_s_p_u_core_based_update_driver-members.html new file mode 100644 index 0000000..18f2a1c --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_core_based_update_driver-members.html @@ -0,0 +1,92 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUCoreBasedUpdateDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUCoreBasedUpdateDriver, including all inherited members.

    + + + + + + + + + + + + + +
    abortUpdateAndShowNextUpdateImmediately:error: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground:requiresSilentInstall: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    clearDownloadedUpdate (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    deferInformationalUpdate:secondaryUpdate: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    downloadUpdateFromAppcastItem:secondaryAppcastItem:inBackground: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    extractDownloadedUpdate (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    finishInstallationWithResponse:displayingUserInterface: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    initWithHost:applicationBundle:sparkleBundle:updater:updaterDelegate:delegate: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    preflightForUpdatePermissionPreventingInstallerInteraction:reply: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    prepareCheckForUpdatesWithCompletion: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    resumeInstallingUpdateWithCompletion: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    resumeUpdate:completion: (defined in SPUCoreBasedUpdateDriver)SPUCoreBasedUpdateDriver
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_core_based_update_driver.html b/documentation/api-reference/interface_s_p_u_core_based_update_driver.html new file mode 100644 index 0000000..ea1590b --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_core_based_update_driver.html @@ -0,0 +1,130 @@ + + + + + + + +Sparkle: SPUCoreBasedUpdateDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUCoreBasedUpdateDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUCoreBasedUpdateDriver:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:updaterDelegate:delegate:
     
    +(void) - prepareCheckForUpdatesWithCompletion:
     
    +(void) - preflightForUpdatePermissionPreventingInstallerInteraction:reply:
     
    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground:requiresSilentInstall:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - downloadUpdateFromAppcastItem:secondaryAppcastItem:inBackground:
     
    +(void) - deferInformationalUpdate:secondaryUpdate:
     
    +(void) - extractDownloadedUpdate
     
    +(void) - clearDownloadedUpdate
     
    +(void) - finishInstallationWithResponse:displayingUserInterface:
     
    +(void) - abortUpdateAndShowNextUpdateImmediately:error:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_core_based_update_driver.png b/documentation/api-reference/interface_s_p_u_core_based_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..48dee7f7aed1378e37a77f00532405487aa4250b GIT binary patch literal 645 zcmeAS@N?(olHy`uVBq!ia0vp^>wq|bgBeI}_u97=NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~iFmp=hEy=VoqN0JwE~Z;xc<%m|BtKl znK$a^`mNb^X2s=PgM`e;X;Z?3yfS4cs$`0?u2ZShEKoh^E&u3Q`}Wsi+kP(d>AE}j z=lMUi9nmMH9$HLX;<>*o`sAvqa+jZnEnWBVUfVB0m6x@5TcaQ46n^%e5-!Q^`Affc z-tOK7ti{WuE$bz>yWDv8p=b8$_xca{RLceKc84i?-oGl_yQVeo4Ntvs`T5`P64O_h zYI?pu{Wtt=+~-E^mH+SO+_l{`sboG=_@q4|J0?9@s-EYisjJMuZ_9A)V$_cQ<3W3} zAKGPxKZ@lsw_NQM9k>2+Y>{*7e zK&Z+qh4H1~Qb)5F$9`fuu%t@tfyep1dB@hhOK)CUJezm>t+~gQ+naB4-!m`RzoDe3 zx-C}u!n_ PX})Uwnrr?M;^5W&NYx^R_-;^R#S{`eD;N^9#?u`N$oUu3qx~Jb#J) zu|1LNR~N68efCan`{}ehFFrr&J@ee=h^@{2y*GLcE3WUDd0EZ5yYZ&=@!a$^OEsl- zKbSl1R{0|9xtV-t?`gi9!4v$BZ%1%oUFYuPS^IAE?ySDhb8d1XS9SjO(o0=i&PKn> zb5@*b + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUDownloadData Member List
    +
    +
    + +

    This is the complete list of members for SPUDownloadData, including all inherited members.

    + + + + + + +
    dataSPUDownloadData
    initWithData:URL:textEncodingName:MIMEType: (defined in SPUDownloadData)SPUDownloadData
    MIMETypeSPUDownloadData
    textEncodingNameSPUDownloadData
    URLSPUDownloadData
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_download_data.html b/documentation/api-reference/interface_s_p_u_download_data.html new file mode 100644 index 0000000..3017e66 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_download_data.html @@ -0,0 +1,196 @@ + + + + + + + +Sparkle: SPUDownloadData Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUDownloadData Class Reference
    +
    +
    + +

    A class for containing downloaded data along with some information about it. + More...

    + +

    #import <SPUDownloadData.h>

    +
    +Inheritance diagram for SPUDownloadData:
    +
    +
    + +
    + + + + +

    +Instance Methods

    +(instancetype) - initWithData:URL:textEncodingName:MIMEType:
     
    + + + + + + + + + + + + + +

    +Properties

    +NSData * data
     The raw data that was downloaded.
     
    NSURL * URL
     The URL that was fetched from. More...
     
    NSString * textEncodingName
     The IANA charset encoding name if available. More...
     
    NSString * MIMEType
     The MIME type if available. More...
     
    +

    Detailed Description

    +

    A class for containing downloaded data along with some information about it.

    +

    Property Documentation

    + +

    ◆ MIMEType

    + +
    +
    + + + + + +
    + + + + +
    - (NSString*) MIMEType
    +
    +readnonatomiccopy
    +
    + +

    The MIME type if available.

    +

    Eg: "text/plain"

    + +
    +
    + +

    ◆ textEncodingName

    + +
    +
    + + + + + +
    + + + + +
    - (NSString*) textEncodingName
    +
    +readnonatomiccopy
    +
    + +

    The IANA charset encoding name if available.

    +

    Eg: "utf-8"

    + +
    +
    + +

    ◆ URL

    + +
    +
    + + + + + +
    + + + + +
    - (NSURL*) URL
    +
    +readnonatomiccopy
    +
    + +

    The URL that was fetched from.

    +

    This may be different from the URL in the request if there were redirects involved.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_download_data.png b/documentation/api-reference/interface_s_p_u_download_data.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8726449b2973f4d1bd7e47b32442d697bf0eee GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w0B24VGS8wF+nzoyz4Be9$>O%j>rag;+IO7;Zhzk5`6*)VwESOl zdz%by->_K!_i?bwL~$M4$xk-21zy-5e#^uAL)N_2tEMH+d62PUN1p=EV?h_@d#}wG zn!9Y^kGT1{Ogi{t`=Ok=ez`RF=DJzjmp;gqCGIMDq{OtJb&hTR_AP-cn-}bM;yd)S zWX9v=9}Zr=xBUPwOXjYvdu58Z@^0t8J6)KgDCIAY(o?%k1j>qG!w}nqM zu@hj;JRYikD80xr_5AeE7ZbO5;RYT#VeD*arg_nAY0!)em zO$`Um-LR6v!^j6F#3LR=4f%?Xh{fUQS>~X^7q%L9ecg+-OZm{ z=ezr>z!FXQDGV1bD>ltCXm}JQa!|1A`roaq3?1J5^wf#kIh0?FTIQFa#7kKkQie=rc_bo>+KNL9lFJExW z(doG@icHJ}3ljBSY>T#(eJ1nZe(;xLE%$xS&gZahu>HNePOBq6Xj jS1TGA&sJgBvC{tRy-AzI4)4nZrdI|}S3j3^P6 + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUDownloadDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUDownloadDriver, including all inherited members.

    + + + + + + + + + +
    cleanup: (defined in SPUDownloadDriver)SPUDownloadDriver
    downloadFile (defined in SPUDownloadDriver)SPUDownloadDriver
    inBackground (defined in SPUDownloadDriver)SPUDownloadDriver
    initWithHost: (defined in SPUDownloadDriver)SPUDownloadDriver
    initWithRequestURL:host:userAgent:httpHeaders:inBackground:delegate: (defined in SPUDownloadDriver)SPUDownloadDriver
    initWithUpdateItem:secondaryUpdateItem:host:userAgent:httpHeaders:inBackground:delegate: (defined in SPUDownloadDriver)SPUDownloadDriver
    removeDownloadedUpdate: (defined in SPUDownloadDriver)SPUDownloadDriver
    request (defined in SPUDownloadDriver)SPUDownloadDriver
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_download_driver.html b/documentation/api-reference/interface_s_p_u_download_driver.html new file mode 100644 index 0000000..6d7afa7 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_download_driver.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: SPUDownloadDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUDownloadDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUDownloadDriver:
    +
    +
    + +
    + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithRequestURL:host:userAgent:httpHeaders:inBackground:delegate:
     
    +(instancetype) - initWithUpdateItem:secondaryUpdateItem:host:userAgent:httpHeaders:inBackground:delegate:
     
    +(instancetype) - initWithHost:
     
    +(void) - downloadFile
     
    +(void) - removeDownloadedUpdate:
     
    +(void) - cleanup:
     
    + + + + + +

    +Properties

    +NSMutableURLRequest * request
     
    +BOOL inBackground
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_download_driver.png b/documentation/api-reference/interface_s_p_u_download_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..4192789907751a186de94e533b0fe377fa1bcca3 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^4L}^g!3-py-Rr#uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgyFFbTLn;{G&b>J4umXpxzW(0-|Bv5x z3G}?+yX$W1^20v)CZP{I6588%qy-DHZG+JCC?r|pBV#x!kDy)XM_e{i*)&-`K4 z%s*0U2kIFF1UW?*{&?^+bcC23cr556!298gyte?~gwP2LoTz9%g96Ce3`c;@UcmfD zGO{~KUW31uox%Uzjm*1uoR~BC)O8suW---lKF2Kcd0qKvE3nev$OeLcTIl$ z#B8zrK`Dpat#Los&wkfCX_b5Wv|YxYFP=BBHZ1s`^WJ3r#$60~qFY+^8AZNGHnip6 zd0@gho#C6$UgZcTnMvQJ8W?6|%w$gccymfUe^2~L#T4gX^ZK`iI~L}@W8^lNb#k=@ jqmTllRzru!f_)6P?)!WT@JP%6MiqmntDnm{r-UW|N|nxh literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_downloaded_update-members.html b/documentation/api-reference/interface_s_p_u_downloaded_update-members.html new file mode 100644 index 0000000..c534105 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_downloaded_update-members.html @@ -0,0 +1,85 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUDownloadedUpdate Member List
    +
    +
    + +

    This is the complete list of members for SPUDownloadedUpdate, including all inherited members.

    + + + + + + +
    downloadName (defined in SPUDownloadedUpdate)SPUDownloadedUpdate
    initWithAppcastItem:secondaryAppcastItem:downloadName:temporaryDirectory: (defined in SPUDownloadedUpdate)SPUDownloadedUpdate
    secondaryUpdateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
    temporaryDirectory (defined in SPUDownloadedUpdate)SPUDownloadedUpdate
    updateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_downloaded_update.html b/documentation/api-reference/interface_s_p_u_downloaded_update.html new file mode 100644 index 0000000..a4437c3 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_downloaded_update.html @@ -0,0 +1,117 @@ + + + + + + + +Sparkle: SPUDownloadedUpdate Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUDownloadedUpdate Class Reference
    +
    +
    +
    +Inheritance diagram for SPUDownloadedUpdate:
    +
    +
    + + +<SPUResumableUpdate> + +
    + + + + +

    +Instance Methods

    +(instancetype) - initWithAppcastItem:secondaryAppcastItem:downloadName:temporaryDirectory:
     
    + + + + + + + + + + +

    +Properties

    +NSString * downloadName
     
    +NSString * temporaryDirectory
     
    - Properties inherited from <SPUResumableUpdate>
    +SUAppcastItemupdateItem
     
    +SUAppcastItemsecondaryUpdateItem
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_downloaded_update.png b/documentation/api-reference/interface_s_p_u_downloaded_update.png new file mode 100644 index 0000000000000000000000000000000000000000..fbcefdb01133c60aadccb5df1249c6cecd03b398 GIT binary patch literal 1305 zcmeAS@N?(olHy`uVBq!ia0y~yU^D}=J2;quWYkr2Eg&Tk;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z_P;A#WAFU@$KB#lU6GTu+8=i-S@rz zv2b&TMw+qoc0SK#*TiK>-i5hE2GUyl*BF+)*81l4$Jdq9 z%d@JF|8m*%4J=_d7llSov((Pzn!mIE(zbi^o(9}@iFUuesoOT6Nn+M=`(-s{W}9v; zjLo(5-eUQvvT(j+Ze;XiDXWXyJlDoc<$le{mYd}xl|EagbY-PN{*kMP9o0&$e*5H3 z`ZDACavq=ypGj|>Yw$SSZMMo@w~Wau<_mo%-DxrNEE2w@a`LQnhPUR@hYUZ&)-f

    (=>tYf!Y?v9h|ugc|eKTKvh)aKJ&@dTxud$ zT08ypQzJQ0@NP9T-h7cGH!Teq$TMfozL1voOl`}|nLB^BZu`^x(r)RVn3?j=c9sSI zx?i{=x9V!lozvCPYiG~=d&FiPpZ?@G$KTwFzYxZwyX+Rb=dFTy+gvX@W~O};{_h!W z7*ZFR{N`Hdo2fr$cL`0I^hKtBtL+8z)>yt%LG#z89=H=zeS5-L*~_&r*KFUs5e^5vx;+H zWJFtq|4h@1zj$p)o8J~&kF}G&bR5peHhX$8?QPptKX2j2zyHc^yuKLbw=q}k@8`{L zC38=%i94B7`}g|hwP~k|j-0LBJm1s%-Gn92EzT_Yd@hpRq4=2T%q?k6yFA}lmQMD3 zt+Lx^*6ed9mVncP&9$_&Z{az2X3UfoxYc&C>`+g?=d7EYPRG+fn)Ef z+5gYlcHXXcdN2NdP43c{;kPz@xODH@uUpd$b01Y+pYkCf`rqyB*GI1N-@2uF&wg^* zISZjLKfZ0wtzEYE_33Y#D+`zB&h^|pAy#ee=J!S~=fvDIoy_#d^88-CEsU?VA-SvG i1vM;Sxzl2Dz1N#dU-%DAyb3JG7(8A5T-G@yGywp$hH_^B literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_informational_update-members.html b/documentation/api-reference/interface_s_p_u_informational_update-members.html new file mode 100644 index 0000000..9b76905 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_informational_update-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +

    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUInformationalUpdate Member List
    +
    +
    + +

    This is the complete list of members for SPUInformationalUpdate, including all inherited members.

    + + + + +
    initWithAppcastItem:secondaryAppcastItem: (defined in SPUInformationalUpdate)SPUInformationalUpdate
    secondaryUpdateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
    updateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_informational_update.html b/documentation/api-reference/interface_s_p_u_informational_update.html new file mode 100644 index 0000000..79be1f2 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_informational_update.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: SPUInformationalUpdate Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUInformationalUpdate Class Reference
    +
    +
    +
    +Inheritance diagram for SPUInformationalUpdate:
    +
    +
    + + +<SPUResumableUpdate> + +
    + + + + +

    +Instance Methods

    +(instancetype) - initWithAppcastItem:secondaryAppcastItem:
     
    + + + + + + +

    +Additional Inherited Members

    - Properties inherited from <SPUResumableUpdate>
    +SUAppcastItemupdateItem
     
    +SUAppcastItemsecondaryUpdateItem
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_informational_update.png b/documentation/api-reference/interface_s_p_u_informational_update.png new file mode 100644 index 0000000000000000000000000000000000000000..dd758ff0009ae270eadf9188521476e53c4c08a3 GIT binary patch literal 1306 zcmeAS@N?(olHy`uVBq!ia0y~yU^D}=J2;quWYkr2Eg&Tk;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z_QZQ#WAFU@$KA)lU6J6xbeUA+5f%% zadbCFMCt6c*3-Amd@E?!QDrt^KZEn+Ag{-a1}2`9+?2O?PMUo|%`?www#rV<+(}QK zF>ie;z3g$wr=oPbna`_cT>8(`u<&Djkl~gYul!XqT{C9OoM}5X*YtSa!ld<2?q8X* zWXh7~KMZoqIlYsnszz;1ow@nax{ot|YvjKDq%-@L)@`#bx~p$|R%uvR`78NUdb;vi zuDe&Jt#*l5o+ti&=FMqaOP3}p-ws>))qC^Wce!^x!#$JpCol2Ml0Ct_(emcXC4TAi zSNcxstE@c*a^=3j+nmOAsoOj+Ww)4l775={Iq91*S;c&z@1#3>8n;aelHzN~f5;`k zP{EPQ5V!972et<)TNo>LMsnvf*f~ib(C5fx$a9izn09`^P_4o^6Ji5z%342Br&fDgC*)KcooA7_n zXv2_qYb?vSMXOc+FI%RvRK@oA#%;{C!MC0+(fRvwJI@UL>lyPmSsKVrPq3Y{H22)@ zu;^))+Ha*jt7iG;etz}G@O9DUl6O|S{$(B5bZPp5s#QfFm+s9q+^BN>R?z#`Jh`X6 z<=^G5?Qn0G&e}fr`{LKlr>y^MQhCyo{e8#QZ855Tm#?jzq?P#hXlVTV4Lv8k*Tt<9 z2S)V4W%tg!)xNds(uRq->`Ox@_1!qTEidq$?zOX9sxDkgeNeVX{#(_ysj)e+p8sp| ztKFiFR_{-__V3^8dts|nZ$5gqYiF#d_uC0ep5Iuzn)LcdnOmL2MepP4)9i`0Mj*)wkzx0o3l zn=d?j=8SKKv2n5Rtutrt+}W~p%B2F6TYA$^r&=(ad&Fg6(7Z1`gZV?z-oCfF7rt`? zlT2Q|>6Yz|_w~0h{%O+SBqnjZ{#qp~)o}i~x1I0;LeTf;&1;V!& z?zEUOm@ni#a8^2VHg|+(%Ji6;orks z+rBQXo~L_q2J_E+xv)p2F8h{$oAuLcLEpOe@|Y#NZ*}c$tFf%F7QI~ZE6zAx_NT!5 z_e=&RulHsr=VyOPb&Wm3f9us1?OgVc->+PIn<|%k^UJpfY9%uB|HrXeaK)jxqgw_rJt2oZ=M7eWDK6JelF{r5}E)nFnJpQ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_installer_driver-members.html b/documentation/api-reference/interface_s_p_u_installer_driver-members.html new file mode 100644 index 0000000..329a489 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_installer_driver-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUInstallerDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUInstallerDriver, including all inherited members.

    + + + + + + + + +
    abortInstall (defined in SPUInstallerDriver)SPUInstallerDriver
    cancelUpdate (defined in SPUInstallerDriver)SPUInstallerDriver
    checkIfApplicationInstallationRequiresAuthorizationWithReply: (defined in SPUInstallerDriver)SPUInstallerDriver
    extractDownloadedUpdate:silently:preventsInstallerInteraction:completion: (defined in SPUInstallerDriver)SPUInstallerDriver
    initWithHost:applicationBundle:sparkleBundle:updater:updaterDelegate:delegate: (defined in SPUInstallerDriver)SPUInstallerDriver
    installWithToolAndRelaunch:displayingUserInterface: (defined in SPUInstallerDriver)SPUInstallerDriver
    resumeInstallingUpdateWithUpdateItem:systemDomain: (defined in SPUInstallerDriver)SPUInstallerDriver
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_installer_driver.html b/documentation/api-reference/interface_s_p_u_installer_driver.html new file mode 100644 index 0000000..e9f853d --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_installer_driver.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: SPUInstallerDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUInstallerDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUInstallerDriver:
    +
    +
    + +
    + + + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:updaterDelegate:delegate:
     
    +(void) - resumeInstallingUpdateWithUpdateItem:systemDomain:
     
    +(void) - checkIfApplicationInstallationRequiresAuthorizationWithReply:
     
    +(void) - extractDownloadedUpdate:silently:preventsInstallerInteraction:completion:
     
    +(void) - installWithToolAndRelaunch:displayingUserInterface:
     
    +(void) - cancelUpdate
     
    +(void) - abortInstall
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_installer_driver.png b/documentation/api-reference/interface_s_p_u_installer_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..da062ab353aa515174dc9aad02dc0b2631527ccf GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^B|sd&!3-q-S1vRKQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;IPS%JsZKd$Qk|NiY_ zO$`yR`yRZTBDroBW3k7MZR=;u>=je56Z?h}5&`uOICeIMV*(mD=INQ^_ly z`_K90I7us(;p?A$1#911KFwKQyR*_+W#vlY3lYV9ywRP~TKSWy^@9H6yjQFj_&=+7rF%iY=zR;*m&+|oB{;Cmi8DD{ z3>r4h3TVjNCHbo;)Z}xvQp_vcwI9na-CrBdbkySlQ_y|;)_v)39d3VkK1)FN{L4q( zNrm2vCMciTtCSzPZCT!Xy(#ndtY`tmGxd}d$-Np-E`qpPJajfb6X1Xt#57Hp5-Vu{cZ2N*t;*! xo!Ng`Xx93f`}Z=$nl5Cx`z18Mc=N$ujJ_PM#f^2h4g#Z&!PC{xWt~$(696xH_Amed literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_local_cache_directory-members.html b/documentation/api-reference/interface_s_p_u_local_cache_directory-members.html new file mode 100644 index 0000000..2333a5e --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_local_cache_directory-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPULocalCacheDirectory Member List
    +
    +
    + +

    This is the complete list of members for SPULocalCacheDirectory, including all inherited members.

    + + + + +
    cachePathForBundleIdentifier: (defined in SPULocalCacheDirectory)SPULocalCacheDirectorystatic
    createUniqueDirectoryInDirectory: (defined in SPULocalCacheDirectory)SPULocalCacheDirectorystatic
    removeOldItemsInDirectory: (defined in SPULocalCacheDirectory)SPULocalCacheDirectorystatic
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_local_cache_directory.html b/documentation/api-reference/interface_s_p_u_local_cache_directory.html new file mode 100644 index 0000000..5a46c84 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_local_cache_directory.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SPULocalCacheDirectory Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPULocalCacheDirectory Class Reference
    +
    +
    +
    +Inheritance diagram for SPULocalCacheDirectory:
    +
    +
    + +
    + + + + + + + + +

    +Class Methods

    +(NSString *) + cachePathForBundleIdentifier:
     
    +(void) + removeOldItemsInDirectory:
     
    +(NSString *_Nullable) + createUniqueDirectoryInDirectory:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_local_cache_directory.png b/documentation/api-reference/interface_s_p_u_local_cache_directory.png new file mode 100644 index 0000000000000000000000000000000000000000..694e894f5ff60bec8404c12ae9e9f40c6a55b330 GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^bAdR3gBeJg^tJZ^DTx4|5ZC|z{{xvX-h3_XKQsZz z0^51uZLAr*{o=SELjZNS4CZEyMe{zu;= zgK3p1ZYR%#UR}|3tU=ynQ)-=|u{XDxr>Ca1XIEg^BoXDb>%VNy^&iPHKYi5bPTrLO zfu^$69^#+GCz*VlUAFqft;+5jd$Xp-EdHr+O~Cuo^~%e6osTlE&k-+<_qep3WBu-b zhvZg89?Sl_?yk`O!oO$BbOZk_o_o5l`9`eDMwPvfdS#cgAA6qDRa(C9zU;F%v+O2) zDXn`I|8ZvE|0Q?Z+5WD);d$xzl({NLHGmE(+-_`qn(F}jPR1pwTkpP|7OB7WZmizM zxV+t`A{#VP*##EAVMv-H>(H}_xg)TQ!SEEHg4<2TBO2BX5=fH!Q`6I?iSa0CLd9~* z&Wl6_{fNBi7yfCjZ#F+qd;O-qN~0S;wRg?kJkz^@`Ph1fw&YFKPZ?^~GN^IKc=`eE9)Q+X2#UANE9+IH(+#$J2rv{iF9KgzoM*2(nt-d_^> zhUR7oY1219_KCZ-)qh5M+5MWD7fvRocGv7qc7>N+H?FSOKDnTEwM5wM?{CYFR-VAOo ni_NL*AJl+edYlLJ-qiX&%Xsm(EauI?^uXZh>gTe~DWM4f7la=_ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_probe_install_status-members.html b/documentation/api-reference/interface_s_p_u_probe_install_status-members.html new file mode 100644 index 0000000..0ba9688 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_probe_install_status-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUProbeInstallStatus Member List
    +
    +
    + +

    This is the complete list of members for SPUProbeInstallStatus, including all inherited members.

    + + + +
    probeInstallerInProgressForHostBundleIdentifier:completion: (defined in SPUProbeInstallStatus)SPUProbeInstallStatusstatic
    probeInstallerUpdateItemForHostBundleIdentifier:completion: (defined in SPUProbeInstallStatus)SPUProbeInstallStatusstatic
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_probe_install_status.html b/documentation/api-reference/interface_s_p_u_probe_install_status.html new file mode 100644 index 0000000..07ecc0c --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_probe_install_status.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: SPUProbeInstallStatus Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUProbeInstallStatus Class Reference
    +
    +
    +
    +Inheritance diagram for SPUProbeInstallStatus:
    +
    +
    + +
    + + + + + + +

    +Class Methods

    +(void) + probeInstallerInProgressForHostBundleIdentifier:completion:
     
    +(void) + probeInstallerUpdateItemForHostBundleIdentifier:completion:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_probe_install_status.png b/documentation/api-reference/interface_s_p_u_probe_install_status.png new file mode 100644 index 0000000000000000000000000000000000000000..3a172ccb57c507020e6447065176868139b6f20e GIT binary patch literal 568 zcmeAS@N?(olHy`uVBq!ia0vp^9Y7qw!3-q7a-LNJQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;_mcZ6FE_@n znfS0;B|-W+XB|(a@X1GFgAFxwEv> zPW;x={@TkwHTvJ*p8Wi>ESnM2{5$j64gK%4{A613chmf}s+n_2=0>PpKE;vHZR@Ih z`{z{~hL@dk{hDD1+V9Zi)VS67HvqrZao>E zwk=a*@8*@y5r1v&XmjjgTq*%?{%A|9{5~7|jfxu6{1-oD!M<5+(j_ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_probing_update_driver-members.html b/documentation/api-reference/interface_s_p_u_probing_update_driver-members.html new file mode 100644 index 0000000..d5bb7ad --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_probing_update_driver-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUProbingUpdateDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUProbingUpdateDriver, including all inherited members.

    + + + + + + + + +
    abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    initWithHost:updater:updaterDelegate: (defined in SPUProbingUpdateDriver)SPUProbingUpdateDriver
    resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_probing_update_driver.html b/documentation/api-reference/interface_s_p_u_probing_update_driver.html new file mode 100644 index 0000000..9e35d28 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_probing_update_driver.html @@ -0,0 +1,122 @@ + + + + + + + +Sparkle: SPUProbingUpdateDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUProbingUpdateDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUProbingUpdateDriver:
    +
    +
    + + +<SPUUpdateDriver> + +
    + + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:updater:updaterDelegate:
     
    - Instance Methods inherited from <SPUUpdateDriver>
    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - abortUpdate
     
    +(void) - abortUpdateWithError:
     
    + + + + +

    +Additional Inherited Members

    - Properties inherited from <SPUUpdateDriver>
    +BOOL showingUpdate
     
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_probing_update_driver.png b/documentation/api-reference/interface_s_p_u_probing_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..ab77c4697d9aaa45031260e1b27d8bc4bc58183a GIT binary patch literal 1321 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoJ2;qudc|yWIbKi;s25;LCYDw_)l7*$JsdPi2{q)q-FsPPd=vwDwaRu z8Y@r!t$086=OUg{dHl2A{hYloBB9jOBAb1Zi89MJv#!;<%6fL+Ui)g}u_u2+m_sL- zeV)tozl7&tm~e&2jIClj&%VrUzpqg+YtPmnXO#*ZA53`sUh|J#W2i%!@yYwHjXT$G ziG8Zu8ZX-znQ+-hOsU}7w0b+H<5D+xX6eb8226@GDC?WEZ1Ta$dVluqT`#8L`C4XE zCdU*Nc6*%WEnN&~ug1CwSlVn;PJc|T?0tX{mmQ4wo&+tbgyn!J>UQr;y{(80q z%MD)+mK*2K#sgX294rNbzZifz7}ymB4mbk20!)n5e_qdt*rxv{Vw&CTx{h6B&{O+HA z`To!RJRAS{F;Y`gKUW%WzWzoyB9`~utwxozKb9QWxuKl(-N$FW2Oh0jC;Rwa+3Kn_ zhL!eL9i}chyGOMkG^KCD?Tsw2z64Bre(}C==_Z!6xYV?5E&d6eM^_$Lv-L!-|D-Q` z(Ja&M#EQ>2{&+>4ublR=XP*zh32v{>e()fLW5>?**Y2dV@ZH}U#hmUG#-e8z|IR*e z$L`K28gs54+IiqkxShs^pUVy&@otPPKKDRs(%N;3SJgHD`7HE@MB`Fj?@Qd<+!B=E zEInY>nr^y5@WzxIhm|*k?XDF6$8Y*!=>cBT0t=fs-&Jd7-t76yl)ZfI(hXnkJk^WY z-K&zDmMyO5X=!%4$o8Cl$wQmayz9r)nU3q_quh#c=fats)>7uQG+;WN zIkWjZhfUh~_?D4ybAyt!Wx6tt+JT_8Lo$g9>!uwrM7UM*9BOnAe+mp@gV6%N#` zyDlv82Exo+e{KK4dGSUpOglQ%m>wvwFj;UkGVnPmG&BovVB_wHTYvo@;}6NY*V&AG zY6O*|8TP}qQFG}PO@_ah-)Fa>CdN5F37OSf|Niy8&*%MiLyUb*LhNRZM5C;2HS1o+ zFtI24pNrm?v-&`9nV&|1>yuuY{>q4^Ej{m!r=2Y^)0g6Zy8P9=)Vm)Nel9g$_JOlJ^N6)nd1xR znfil2(rq|&Ja7Lgf1an*&XqHN-qizc5B98J_;OyZF}YXz>7GdD*_$rJ%{6IF|M|Hh zRxLfYV#V*|O?su^7~5neY*F^`@->Hsy*}S8GfvA3-Dt_;V5yiqYqFxi0&%nuJ*NcB gFTYqGB>ZDs+j6UC&CiXDz;cbj)78&qol`;+00ONv?*IS* literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_release_notes_driver-members.html b/documentation/api-reference/interface_s_p_u_release_notes_driver-members.html new file mode 100644 index 0000000..2ca808e --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_release_notes_driver-members.html @@ -0,0 +1,88 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUReleaseNotesDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUReleaseNotesDriver, including all inherited members.

    + + + + + + + + + +
    completionHandler (defined in SPUReleaseNotesDriver)SPUReleaseNotesDriver
    downloadDriver (defined in SPUReleaseNotesDriver)SPUReleaseNotesDriver
    downloadDriverDidDownloadData: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidDownloadUpdate: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidFailToDownloadFileWithError: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidReceiveDataOfLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidReceiveExpectedContentLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverWillBeginDownload (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_release_notes_driver.html b/documentation/api-reference/interface_s_p_u_release_notes_driver.html new file mode 100644 index 0000000..c23aeb1 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_release_notes_driver.html @@ -0,0 +1,124 @@ + + + + + + + +Sparkle: SPUReleaseNotesDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUReleaseNotesDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUReleaseNotesDriver:
    +
    +
    + + +<SPUDownloadDriverDelegate> + +
    + + + + + + +

    +Properties

    +SPUDownloadDriverdownloadDriver
     
    +void(^ completionHandler )(SPUDownloadData *_Nullable, NSError *_Nullable)
     
    + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Instance Methods inherited from <SPUDownloadDriverDelegate>
    +(void) - downloadDriverDidFailToDownloadFileWithError:
     
    +(void) - downloadDriverWillBeginDownload
     
    +(void) - downloadDriverDidDownloadUpdate:
     
    +(void) - downloadDriverDidDownloadData:
     
    +(void) - downloadDriverDidReceiveExpectedContentLength:
     
    +(void) - downloadDriverDidReceiveDataOfLength:
     
    +
    The documentation for this class was generated from the following file:
      +
    • Sparkle/SPUUIBasedUpdateDriver.m
    • +
    +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_release_notes_driver.png b/documentation/api-reference/interface_s_p_u_release_notes_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..42f728bffcc75f055bf77557a50208b138badd27 GIT binary patch literal 1474 zcmeAS@N?(olHy`uVBq!ia0y~yVC(|2J2;qukok-ua~D7YB)~b{kzMfb$2z#l0$cGS%MzElVe(0 zP|n{NvZK1VXS0pnal3a=Rzyg$JT1lz&!IxT~;J*@IwEJ#ec-xbAb+OO1&YW4- z9WrBPs{@b)v^FgbXs_{R0hy&qbDn;j*>=6csB{@?*lU?BAC`3;{}uc>Xa4n9J7-4r zzuSAY_^;%&;{3Ij_twqmlKCq1ciZE4`yQl-s(z7P3sm4MYHwp6|2aSO$%^MMv-Ehj zZ<;tqyMIPcDsR8OdVC-%a8dN61j(P* z4rXedI{*55SKf}Q#He2FYrC{gIZJEZ(tI6$>i)MAn{3mL?Mc%K?V0)~M)dTqn|D{l z1si(Z37Qz3wQSe9Sh=-(%T7hM&cAgSmL`C9pG*tevhaTJ#dm-A@@9n}&H0!1E;WCz z+wbd^L9Xk#RDW%)_~W?tM(D&dIn8&YF529gpH;l>e}uNzlj4W-teiJpnPjIq`)Yal zck>skX4G7fGPKvXK73_e=oD*bw|$wE&OEH)w-0lYajk^I&}9hi{2K;nKR!aV$TDp z5ty~k=&&?*O$pj%U@W@*_S>>V2EV6#9|U9mO$R0`mUrL%3k!e7D*+Ru#J>OSJ9hlh zpUBmqup)<Fo(6T`Mzb;zx{$Q$g>BFp9>DIOr&c|~d zuh`xf*_WsOJ2zv$t1IVUx8Jk6A=;WiOs(Zt&c7H=5ZxCr^?*(%HkvYjKlx&G05&)k@NmqS7^cWRbh

    -eatl#V}K21%n&R!h#B`afg_Ubh+ zmS2cD>V0rpSNzqkC^oZf*PjvdJ&%TH-m*;!G?shr`~Id)`GT5D)1C&+`P^{RZA(ZX y8)MF=(5*}gdT3rn&ggbtu3nn45)GGsvcFu#AL1sqJqK9eGI+ZBxvX + + + + + + +Sparkle: Member List + + + + + + + + + +

    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUScheduledUpdateDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUScheduledUpdateDriver, including all inherited members.

    + + + + + + + + +
    abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate: (defined in SPUScheduledUpdateDriver)SPUScheduledUpdateDriver
    resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_scheduled_update_driver.html b/documentation/api-reference/interface_s_p_u_scheduled_update_driver.html new file mode 100644 index 0000000..66c2f3a --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_scheduled_update_driver.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: SPUScheduledUpdateDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUScheduledUpdateDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUScheduledUpdateDriver:
    +
    +
    + + +<SPUUpdateDriver> + +
    + + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate:
     
    - Instance Methods inherited from <SPUUpdateDriver>
    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - abortUpdate
     
    +(void) - abortUpdateWithError:
     
    + + + + +

    +Additional Inherited Members

    - Properties inherited from <SPUUpdateDriver>
    +BOOL showingUpdate
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_scheduled_update_driver.png b/documentation/api-reference/interface_s_p_u_scheduled_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..3cfac470955cf800b73ddac6ceae64e85b8ef182 GIT binary patch literal 1377 zcmeAS@N?(olHy`uVBq!ia0y~yU`znAJ2;quksSopSfAhr*FQzPuWviCt^~aSEk-=Dersp{7ld5E%CCTMN{=`ZGr9wp4C(Do9bKtQ#<(j(S@$}YR%;==S`oO9=)%;gLBrMwXY7Z zdyskmb@|@uBK4_k{!P2j=BYRDep1HfeaZRRni#9i`&C~_{n_+DRa))GOFlQ$r`=du|$CRLB3fBG_x{4 zDYUs|;2^Ppzay=%Fd)}7tpS8-K>p%27h?0KCJ@1$I`rfe1 zt1jl&^x2jC$>W_j_blh`uQzA^l|A_R|GwyE^F!}A?#+!qZy)gIo0@s*$6aFitp306 z>2tmN_c`a)!Ur!+eMA>6Em>czr@C6`lgGz&mh#zm{n*M+>U!#b%wa2clIMEoePkJ1 zdDCv8`ST90y>-rS`l3JUvp+Z=v|n-X^TVnwt3C+|npeaZe7(7C=PgUsZ<`peiEq5c ztNJo?o?wh_`TZhk{f}lj^Xqu8Ue5jHR$#kVM_RCO@^(ma_;I;OS?S#eV`o9Z`~*bQO+04%%Wbjohja_x`|C~ocPG)B0J zBh~1$J1=iMmwDFAZtLq8Ch3+}qOV*He|@%lZ5jj5u^^=~*7c9YRl84@F6dqN=&$Sc zwDs?{RwkYn?%99x?ezy@@oDjzH$u1l;!*AAMbvyQS^b%d+m?2bCN52RAbc{kWj3Bay%l m@&CX7X!#PFwG}%5GwkpFc$rBqbp^0IWbkzLb6Mw<&;$SiSYNIH literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_skipped_update-members.html b/documentation/api-reference/interface_s_p_u_skipped_update-members.html new file mode 100644 index 0000000..e977321 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_skipped_update-members.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUSkippedUpdate Member List
    +
    +
    + +

    This is the complete list of members for SPUSkippedUpdate, including all inherited members.

    + + + + + + + +
    clearSkippedUpdateForHost: (defined in SPUSkippedUpdate)SPUSkippedUpdatestatic
    initWithMinorVersion:majorVersion: (defined in SPUSkippedUpdate)SPUSkippedUpdate
    majorVersion (defined in SPUSkippedUpdate)SPUSkippedUpdate
    minorVersion (defined in SPUSkippedUpdate)SPUSkippedUpdate
    skippedUpdateForHost: (defined in SPUSkippedUpdate)SPUSkippedUpdatestatic
    skipUpdate:host: (defined in SPUSkippedUpdate)SPUSkippedUpdatestatic
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_skipped_update.html b/documentation/api-reference/interface_s_p_u_skipped_update.html new file mode 100644 index 0000000..35928b2 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_skipped_update.html @@ -0,0 +1,120 @@ + + + + + + + +Sparkle: SPUSkippedUpdate Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUSkippedUpdate Class Reference
    +
    +
    +
    +Inheritance diagram for SPUSkippedUpdate:
    +
    +
    + +
    + + + + +

    +Instance Methods

    +(instancetype) - initWithMinorVersion:majorVersion:
     
    + + + + + + + +

    +Class Methods

    +(nullable SPUSkippedUpdate *) + skippedUpdateForHost:
     
    +(void) + clearSkippedUpdateForHost:
     
    +(void) + skipUpdate:host:
     
    + + + + + +

    +Properties

    +NSString * minorVersion
     
    +NSString * majorVersion
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_skipped_update.png b/documentation/api-reference/interface_s_p_u_skipped_update.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5d4d2b4bd7a952b2c7d52d5624fba4257a2186 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^6+j%o!3-pyx;pL#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;_*kh4m+tgX*uW5_P#q>{^!wUIoa9Y8km(g zo$6DOEfKabICN#o^UuK#+NE-QHF{J`zbJ1wZ_B>Bpe7(y*)z9vUf~^WwTdTGj@&+A z_xjJ8{)Fe-zc+AC4mH}hVW*1dt9^ckb1z+eZ}<3{?Ydo7I|3$2?Ru_%oxA!^?g#DY zHUIr4nYjEH%1JYGWYB-jXyCm0K>u--PdXnaTesWr{^5_^dw?N%%K-*w9Qdvg&=))j zd&DFXI_wzsSf8C;^Z$YT&)=z2&gT~f8dkj$eX!x#Cf1Bs<`2RcHtzmk!}={vyCeIQ z>(3RlC(A7l3O|^6N4zF}{w$GTKEK3i#X)U5cfLxOIlj4L-K@_Ufg7ZLMBLhRj(0=% zXDONIEo){yTQ#rL`gs0<)Rp?NvF4GLJGRd)ER4TgZTD{O?XuEYHAP#cSM8Kq;NJe4 qy&&lLJZ>HX7Z5f+n3g8|h1KG^hlrwp-+N%hF?hQAxvX + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUStandardUpdaterController Member List
    +
    + + + + + diff --git a/documentation/api-reference/interface_s_p_u_standard_updater_controller.html b/documentation/api-reference/interface_s_p_u_standard_updater_controller.html new file mode 100644 index 0000000..2aaab35 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_standard_updater_controller.html @@ -0,0 +1,347 @@ + + + + + + + +Sparkle: SPUStandardUpdaterController Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUStandardUpdaterController Class Reference
    +
    +
    + +

    A controller class that instantiates a SPUUpdater and allows binding UI to it. + More...

    + +

    #import <SPUStandardUpdaterController.h>

    +
    +Inheritance diagram for SPUStandardUpdaterController:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + +

    +Instance Methods

    (instancetype) - NS_UNAVAILABLE
     Create a new SPUStandardUpdaterController from a nib. More...
     
    (instancetype) - initWithUpdaterDelegate:userDriverDelegate:
     Create a new SPUStandardUpdaterController programmatically. More...
     
    (instancetype) - initWithStartingUpdater:updaterDelegate:userDriverDelegate:
     Create a new SPUStandardUpdaterController programmatically allowing you to specify whether or not to start the updater immediately. More...
     
    (void) - startUpdater
     Starts the updater if it has not already been started. More...
     
    (IBAction) - checkForUpdates:
     Explicitly checks for updates and displays a progress dialog while doing so. More...
     
    + + + + + + + + + + + + + +

    +Properties

    IBOutlet id< SPUUpdaterDelegateupdaterDelegate
     Interface builder outlet for the updater's delegate. More...
     
    IBOutlet id< SPUStandardUserDriverDelegateuserDriverDelegate
     Interface builder outlet for the user driver's delegate. More...
     
    SPUUpdaterupdater
     Accessible property for the updater. More...
     
    +SPUStandardUserDriveruserDriver
     Accessible property for the updater's user driver.
     
    +

    Detailed Description

    +

    A controller class that instantiates a SPUUpdater and allows binding UI to it.

    +

    This class can be instantiated in a nib or created programatically using initWithUpdaterDelegate:userDriverDelegate: or initWithStartingUpdater:updaterDelegate:userDriverDelegate:.

    +

    The controller's updater targets the application's main bundle and uses Sparkle's standard user interface. Typically, this class is used by sticking it as a custom NSObject subclass in an Interface Builder nib (probably in MainMenu) but it works well programatically too.

    +

    The controller creates an SPUUpdater instance and allows hooking up the check for updates action and handling menu item validation. It also allows hooking up the updater's and user driver's delegates.

    +

    If you need more control over what bundle you want to update or you want to provide a custom user interface (via SPUUserDriver), please use SPUUpdater directly instead.

    +

    Method Documentation

    + +

    ◆ checkForUpdates:

    + +
    +
    + + + + + + + + +
    - (IBAction) checkForUpdates: (nullable id) sender
    +
    + +

    Explicitly checks for updates and displays a progress dialog while doing so.

    +

    This method is meant for a main menu item. Connect any NSMenuItem to this action in Interface Builder or programmatically, and Sparkle will check for updates and report back its findings verbosely when it is invoked.

    +

    When the target/action of the menu item is set to this controller and this method, this controller also handles enabling/disabling the menu item by checking -[SPUUpdater canCheckForUpdates]

    +

    This action checks updates by invoking -[SPUUpdater checkForUpdates]

    + +
    +
    + +

    ◆ initWithStartingUpdater:updaterDelegate:userDriverDelegate:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (instancetype) initWithStartingUpdater: (BOOL) startUpdater
    updaterDelegate:(nullable id< SPUUpdaterDelegate >) updaterDelegate
    userDriverDelegate:(nullable id< SPUStandardUserDriverDelegate >) userDriverDelegate 
    +
    + +

    Create a new SPUStandardUpdaterController programmatically allowing you to specify whether or not to start the updater immediately.

    +

    You can specify whether or not you want to start the updater immediately. If you do not start the updater, you must invoke -[SPUStandardUpdaterController startUpdater] at a later time to start it.

    + +
    +
    + +

    ◆ initWithUpdaterDelegate:userDriverDelegate:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (instancetype) initWithUpdaterDelegate: (nullable id< SPUUpdaterDelegate >) updaterDelegate
    userDriverDelegate:(nullable id< SPUStandardUserDriverDelegate >) userDriverDelegate 
    +
    + +

    Create a new SPUStandardUpdaterController programmatically.

    +

    The updater is started automatically. See -[SPUStandardUpdaterController startUpdater] for more information.

    + +
    +
    + +

    ◆ NS_UNAVAILABLE

    + +
    +
    + + + + + + + +
    - (instancetype) NS_UNAVAILABLE
    +
    + +

    Create a new SPUStandardUpdaterController from a nib.

    +

    You cannot call this initializer directly. You must instantiate a SPUStandardUpdaterController inside of a nib (typically the MainMenu nib) to use it.

    +

    To create a SPUStandardUpdaterController programatically, use initWithUpdaterDelegate:userDriverDelegate: or initWithStartingUpdater:updaterDelegate:userDriverDelegate: instead.

    + +
    +
    + +

    ◆ startUpdater

    + +
    +
    + + + + + + + +
    - (void) startUpdater
    +
    + +

    Starts the updater if it has not already been started.

    +

    You should only call this method yourself if you opted out of starting the updater on initialization. Hence, do not call this yourself if you are instantiating this controller from a nib.

    +

    This invokes -[SPUUpdater startUpdater:]. If the application is misconfigured with Sparkle, an error is logged and an alert is shown to the user (after a few seconds) to contact the developer. If you want more control over this behavior, you can create your own SPUUpdater instead.

    + +
    +
    +

    Property Documentation

    + +

    ◆ updater

    + +
    +
    + + + + + +
    + + + + +
    - (SPUUpdater*) updater
    +
    +readnonatomicassign
    +
    + +

    Accessible property for the updater.

    +

    Some properties on the updater can be binded via KVO

    +

    When instantiated from a nib, don't perform update checks before the application has finished launching in a MainMenu nib (i.e applicationDidFinishLaunching:) or before the corresponding window/view controller has been loaded (i.e, windowDidLoad or viewDidLoad). The updater is not guaranteed to be started yet before these points.

    + +
    +
    + +

    ◆ updaterDelegate

    + +
    +
    + + + + + +
    + + + + +
    - (IBOutlet id<SPUUpdaterDelegate>) updaterDelegate
    +
    +readwritenonatomicweak
    +
    + +

    Interface builder outlet for the updater's delegate.

    +

    This property should only be set using Interface Builder by creating a connection using the outlet.

    + +
    +
    + +

    ◆ userDriverDelegate

    + +
    +
    + + + + + +
    + + + + +
    - (IBOutlet id<SPUStandardUserDriverDelegate>) userDriverDelegate
    +
    +readwritenonatomicweak
    +
    + +

    Interface builder outlet for the user driver's delegate.

    +

    This property should only be set using Interface Builder by creating a connection using the outlet.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_standard_updater_controller.png b/documentation/api-reference/interface_s_p_u_standard_updater_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1bdf934c7fb11f1d3d85106899fe06d8e93e94 GIT binary patch literal 662 zcmeAS@N?(olHy`uVBq!ia0vp^yMZ`>gBeJco&6#Sq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0R6SiBLn;{G&b__vwE_?8asAl;|BvtH zozAfEYUb=8A}52w^jKyel=$2=^X8&MDw&?FyH$Q_-%vdnzkGwbc>nL@@5}rDOxi2Y zW~rR?e1rIzuG{-PE-kp9s6XTAb-A~{*BiBN66$x4l=J)*@qE*B(Ttmydp_;?)vi*z zc=M;dkFFT>udw~1zw!Bv?UnYMmcRYI`OV#VbC3LWeK>K6d1+kl8ppS<&oKS`w`ZUK zYoD7}CVkmB=iF6qHqJ87s-@Y-3c7Zy%w3l-U8Nr6sMqK6(zY#QSa+E>AyD^B-R`yA z`wf1})<*uAdUNqPhClqQ)(!icWDmq2id#3g_s%|j?wj)cTlouitMz_gmSy$2!rYE?^qcq;s2 zo$w9yx%SERX6?FGKff7x+E32qyZvqAtg_3=$B&&)yX3Q~a9)*af91vF3)|+*++_at zsCU)f`&rwUz05qm_@vzCbI&ra-0H0^o%ep}-sru@gcJ7OdMR(UjVHJ0%iMms_G8I& zGnpV^ir-NF^WM|f z`=9={ICtFA_}a&y^6b0*ziqDf?5hcRaO=ww1=G}&`@W@fA~}|oKKoVt^_8&o4aUBx nnX(VOV4=}}_|Tag&%cbdGDXaGCvLq0CL#t;S3j3^P6 + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUStandardUserDriver Member List
    +
    + + + + + diff --git a/documentation/api-reference/interface_s_p_u_standard_user_driver.html b/documentation/api-reference/interface_s_p_u_standard_user_driver.html new file mode 100644 index 0000000..acecca6 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_standard_user_driver.html @@ -0,0 +1,212 @@ + + + + + + + +Sparkle: SPUStandardUserDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUStandardUserDriver Class Reference
    +
    +
    + +

    Sparkle's standard built-in user driver for updater interactions. + More...

    + +

    #import <SPUStandardUserDriver.h>

    +
    +Inheritance diagram for SPUStandardUserDriver:
    +
    +
    + + +<SPUUserDriver> + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    (instancetype) - initWithHostBundle:delegate:
     Initializes a Sparkle's standard user driver for user update interactions. More...
     
    +(instancetype) - NS_UNAVAILABLE
     Use initWithHostBundle:delegate: instead.
     
    - Instance Methods inherited from <SPUUserDriver>
    (void) - showUpdatePermissionRequest:reply:
     Show an updater permission request to the user. More...
     
    (void) - showUserInitiatedUpdateCheckWithCancellation:
     Show the user initating an update check. More...
     
    (void) - showUpdateFoundWithAppcastItem:state:reply:
     Show the user a new update is found. More...
     
    (void) - showUpdateReleaseNotesWithDownloadData:
     Show the user the release notes for the new update. More...
     
    (void) - showUpdateReleaseNotesFailedToDownloadWithError:
     Show the user that the new update's release notes could not be downloaded. More...
     
    (void) - showUpdateNotFoundWithError:acknowledgement:
     Show the user a new update was not found. More...
     
    (void) - showUpdaterError:acknowledgement:
     Show the user an update error occurred. More...
     
    (void) - showDownloadInitiatedWithCancellation:
     Show the user that downloading the new update initiated. More...
     
    (void) - showDownloadDidReceiveExpectedContentLength:
     Show the user the content length of the new update that will be downloaded. More...
     
    (void) - showDownloadDidReceiveDataOfLength:
     Show the user that the update download received more data. More...
     
    (void) - showDownloadDidStartExtractingUpdate
     Show the user that the update finished downloading and started extracting. More...
     
    (void) - showExtractionReceivedProgress:
     Show the user that the update is extracting with progress. More...
     
    (void) - showInstallingUpdate
     Show the user that the update is installing. More...
     
    (void) - showReadyToInstallAndRelaunch:
     Show the user that the update is ready to install & relaunch. More...
     
    (void) - showSendingTerminationSignal
     Show or dismiss progress while a termination signal is being sent to the application from Sparkle's installer. More...
     
    (void) - showUpdateInstalledAndRelaunched:acknowledgement:
     Show the user that the update installation finished. More...
     
    (void) - showUpdateInFocus
     Show the user the current presented update or its progress in utmost focus. More...
     
    (void) - dismissUpdateInstallation
     Dismiss the current update installation. More...
     
    +(void) - showUpdateNotFoundWithAcknowledgement:
     
    +(void) - showUpdateInstallationDidFinishWithAcknowledgement:
     
    +("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.") - __deprecated_msg
     
    +

    Detailed Description

    +

    Sparkle's standard built-in user driver for updater interactions.

    +

    Method Documentation

    + +

    ◆ initWithHostBundle:delegate:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (instancetype) initWithHostBundle: (NSBundle *) hostBundle
    delegate:(nullable id< SPUStandardUserDriverDelegate >) delegate 
    +
    + +

    Initializes a Sparkle's standard user driver for user update interactions.

    +
    Parameters
    + + + +
    hostBundleThe target bundle of the host that is being updated.
    delegateThe delegate to this user driver. Pass nil if you don't want to provide one.
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_standard_user_driver.png b/documentation/api-reference/interface_s_p_u_standard_user_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..dec33ffd7521f70ff56faf2462dd43d266c26749 GIT binary patch literal 1296 zcmeAS@N?(olHy`uVBq!ia0y~yU^D@;J2;quWSqitaUdlT;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z%t*{#WAFU@$KA;n+|CRu+H9i>hu5l zJy}jnhP&jxzFXuM8_ndH_kzcGJ%e(vm*!zc10&Z-Y|2YLCwY2JR+&6S%~MU&caqOO zzgs5%|J3Rg2dD3wF@0Cm#X9}_>T7>R+I$tCv_*00)K|;@74)vZy!O?)WA}EhWYqNR z{}_5nk89e3Rqe%7%~sB7E$e;$wtLA|_RVUWeV4rTh(5P|;oIybSAG5MW^LZ7ox6&+ zHnk$=wz=Cam9^R&))TjBF1MG=%=UY&x9inROW#Rl5u5*)u*~k3zIxf@Tkj>6mv-yd z&$y&=^2zrldlL`J_n3HA^}^g5G)raX5))4&$@nPEr9Es1@(Wlz806HKGFHg+XYw9U z0y5^zS!&AAK7}n|@+k(NAgKmVFJ=SJOa?Vg-UBL28D}gpVVDe*oOFp2$$Oe>rv$Yn z*X}v|ut0*ZONG}>TURN`ASlYE#nY?118AS1pqi$x(xD^M&Cc4_&p&M zx!!y(SZP`M}Toou*&28qA87l=40|ZLxe7l{xuTWX64u zONVVVa_y%77b~1QebvsFXU%t8mhZKldRdI$J0Vy0>$ZPxw>E9uZMn90_0)CSr(Rnx zC%Ez9PA3D`=-IcoU0QbQL;Iy&zPd$uvggBI&O4_4wtVYe1#rBTEuZ6c$+pMiwQ|;W zft+{urd&%s`Q1J0Y~1ZvKkc7vsh_;CYd5(S7{oLbq*Z z&mJ!|VVJGMLO9x=RM^P5vpu-|v(uMp52-1`UImm6m=jXmY7U?#s-F^>#TQo{eQgxO zp7%C6{e#JtKOzejukYD@wWe#!uFJc1FVyB_@=N{H$lU%UHYw$wRj<#*qF?ir3ujf$ zyx_U|^EA%ONuQNUUzJTfZ#8fCrCA><+r?|&UNu@PxoAV(Eza35@1FWvUmK)&<9uf6 z9_!k(ZjF~Nv%h@y?CX`VTk2uw)yhj>E`OJ8wdD4Th$VSTV)wV&_J-%b3g$jomv_6j zk0~dkc}x6FM@yDLO+S%q7Y%3o8 zIx{-^bdcor + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUUIBasedUpdateDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUUIBasedUpdateDriver, including all inherited members.

    + + + + + + + + +
    abortUpdateWithError: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
    initWithHost:applicationBundle:sparkleBundle:updater:userDriver:userInitiated:updaterDelegate:delegate: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
    preflightForUpdatePermissionPreventingInstallerInteraction:reply: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
    prepareCheckForUpdatesWithCompletion: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
    resumeInstallingUpdateWithCompletion: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
    resumeUpdate:completion: (defined in SPUUIBasedUpdateDriver)SPUUIBasedUpdateDriver
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_u_i_based_update_driver.html b/documentation/api-reference/interface_s_p_u_u_i_based_update_driver.html new file mode 100644 index 0000000..ae4876d --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_u_i_based_update_driver.html @@ -0,0 +1,115 @@ + + + + + + + +Sparkle: SPUUIBasedUpdateDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUUIBasedUpdateDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUUIBasedUpdateDriver:
    +
    +
    + +
    + + + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:userDriver:userInitiated:updaterDelegate:delegate:
     
    +(void) - prepareCheckForUpdatesWithCompletion:
     
    +(void) - preflightForUpdatePermissionPreventingInstallerInteraction:reply:
     
    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:inBackground:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - abortUpdateWithError:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_u_i_based_update_driver.png b/documentation/api-reference/interface_s_p_u_u_i_based_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..807c54582b6171ee123cc4a99983157a2e8c24de GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^bAdR3gBeJg^tJZ^DTx4|5ZC|z{{xvX-h3_XKQsZz z0^*PbqpAr*{o=lV`sZNS48J-g=n{*Tpu*yi?!H(+Dlypc&We zkD3PlUvk&g@%^c}Ds$D}sGM}a;W?>)`P`W|*D%DKU`~iywyoMG?b_^H?=;Of-n&y4 zxS1jD5Z?j!8;n0VtQq7J*&issVW?@5ZRp>?{6Vmc!465X{`5JJ7aKe|Au1Q&`a8u# z>*0Ly?8`BqwHs__U95foZC&>ltF(=`H{QG<+y3j=JKrU>yOU1~8UOuo=UIDR$?e^J zD}AGK_G*8=bt2W}?oI!-)Y@lR{#WSlrrTHf-jp4` z9(wDozVQ8bIX_!Hf8JQvlj-(d?!HS@UQAD|$E0JE~&EO{=Ql&Dr7q17+W4oxS%fzA*3t(0hfGWe>1Iy}GeR e`Rp0Br}8^b#amf@(|im}3JjjEelF{r5}E*|FCv-% literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_u_r_l_request-members.html b/documentation/api-reference/interface_s_p_u_u_r_l_request-members.html new file mode 100644 index 0000000..7f1fee6 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_u_r_l_request-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUURLRequest Member List
    +
    +
    + +

    This is the complete list of members for SPUURLRequest, including all inherited members.

    + + + +
    request (defined in SPUURLRequest)SPUURLRequest
    URLRequestWithRequest: (defined in SPUURLRequest)SPUURLRequeststatic
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_u_r_l_request.html b/documentation/api-reference/interface_s_p_u_u_r_l_request.html new file mode 100644 index 0000000..a5b92c4 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_u_r_l_request.html @@ -0,0 +1,104 @@ + + + + + + + +Sparkle: SPUURLRequest Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUURLRequest Class Reference
    +
    +
    +
    +Inheritance diagram for SPUURLRequest:
    +
    +
    + +
    + + + + +

    +Class Methods

    +(instancetype) + URLRequestWithRequest:
     
    + + + +

    +Properties

    +NSURLRequest * request
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_u_r_l_request.png b/documentation/api-reference/interface_s_p_u_u_r_l_request.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0b20a78fca5a377cc8d9cabb3c7e1a885bd6ac GIT binary patch literal 752 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w0D*o9sGxhS8^8#DyPEJ>8&vIXP_F}%dQpalF)q3(Cn=To$Y@NT{chdQ*l0P4n zM{ibGW5##xecfNJNhkDmY$rb{=H0a5eR$Q9@B;aHyH`z2oF|a+;zqxM&tpLsX8Et( zSEQ9Hd?J2U-an>wEa1kovK|9=sV{lD9+#_cw3bR9@nfmuwy=L6T@~_5;l(~h_QYz- zGe3imJjk@)c7Ty3bLZChb31Pxe(Uu8EE|jE=6lWoQ7MdXrV4bfxayy(zyv)^M${ z6ue}8yI5($lZf4Em0b-g`&ZQW9k|+iUg?JU$tgM=($5}8I!wyXzUHRzQcqEUNl~Dw z;lP=kNis~vn?0Etn4=gHb}e&LWI0{L#umI-py}#w79J2^tKCU~1%Vh8;!khVQ5Rr{ zi3snPXW;V!hdeOwkr2a^*XjZ@W}X#dnByS)7-SWbqJ?==!0P0)`}ia5FWvqAT#bR} zsv%Q@@QTjGk)K}7o6TTw<*GoA>qCK-lnDF$|E2LYdrrCCXjWMBYhT3m2E}-WKc&x# zb}SbYS)C^kldXK@-o>^L97X5uf8OgbLF;wv>4&R%FXoCxUQqa(%d$`G$&?)lx*FfB zvc&&dp5CqQq}BP;r6cs4(N+eAvh3GWfWEQsWnkC_Ni`2bIL@3=<7D7_#jm?_(nPoU SzRkeo$>8bg=d#Wzp$Pzg^F)CF literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_update_permission_request-members.html b/documentation/api-reference/interface_s_p_u_update_permission_request-members.html new file mode 100644 index 0000000..92a601c --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_update_permission_request-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUUpdatePermissionRequest Member List
    +
    +
    + +

    This is the complete list of members for SPUUpdatePermissionRequest, including all inherited members.

    + + + +
    initWithSystemProfile:SPUUpdatePermissionRequest
    systemProfileSPUUpdatePermissionRequest
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_update_permission_request.html b/documentation/api-reference/interface_s_p_u_update_permission_request.html new file mode 100644 index 0000000..3a4f06c --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_update_permission_request.html @@ -0,0 +1,139 @@ + + + + + + + +Sparkle: SPUUpdatePermissionRequest Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUUpdatePermissionRequest Class Reference
    +
    +
    + +

    This class represents information needed to make a permission request for checking updates. + More...

    + +

    #import <SPUUpdatePermissionRequest.h>

    +
    +Inheritance diagram for SPUUpdatePermissionRequest:
    +
    +
    + +
    + + + + + +

    +Instance Methods

    (instancetype) - initWithSystemProfile:
     Initializes a new update permission request instance. More...
     
    + + + + +

    +Properties

    +NSArray< NSDictionary< NSString *, NSString * > * > * systemProfile
     A read-only property for the user's system profile.
     
    +

    Detailed Description

    +

    This class represents information needed to make a permission request for checking updates.

    +

    Method Documentation

    + +

    ◆ initWithSystemProfile:

    + +
    +
    + + + + + + + + +
    - (instancetype) initWithSystemProfile: (NSArray<NSDictionary<NSString *, NSString *> *> *) systemProfile
    +
    + +

    Initializes a new update permission request instance.

    +
    Parameters
    + + +
    systemProfileThe system profile information.
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_update_permission_request.png b/documentation/api-reference/interface_s_p_u_update_permission_request.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c9e801fac16a24019f1b7bfe7251c9e8ce95c9 GIT binary patch literal 992 zcmeAS@N?(olHy`uVBq!ia0y~yU@QW%12~w0r149>O+ZQ_z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-op z=ee$>$g}8a@zegF@%Q6be|+qI@8tA*cOE{DmJ8f>HuAIACGTy@@9q2Tj&h#rzMHl4 z{=_AX^^0rHWUh9aG|yP_=RxH;flqJd?F?A`_V>!9eWGD^r!PsCS@Ws#oL#i;)b|hH zUNA6ivQ?P*CxxAxR-YwY}#srq(G-MLRU@2%F`y|&BU`zQOU)%Oh3tHqD! zER&vPY(3@uq`F0)@*-!YypCh=v^sN9YyOitX`4%Y|MQ1dzO8xo?(K{CmrtGjcFV?j zdS)hAr&J%d ziZO=sDFZNG7{Z+_8?+b79GDuw_rOboy+CyeGgx}(-MsCsj2sQ$IMwm0!)=U@hvw3& z3=uO}KewY=b1HPo^560IYVtqt+%(s2A|EcwhlD$$`-x9e=H|9P?aotszVq-y#MXg_}dSU zewe;6E^UL6I`JWYA2(X_|>aFZIt_`f2#aT zk-}G%if@(s1g^yG+j;q@RQKD5&&sXiqMhF{{=86jYs;zM$CA<{pOzL0-jjbly`sVO z=FIy)4dd_WO<|tntHJ-2A$?=QKeT|3jH~q0)MY!M|4Bac_|4!GdvjQU*^$B1)z4*} HQ$iB}q^Iql literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_updater-members.html b/documentation/api-reference/interface_s_p_u_updater-members.html new file mode 100644 index 0000000..a2d4465 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_updater-members.html @@ -0,0 +1,101 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUUpdater Member List
    +
    + + + + + diff --git a/documentation/api-reference/interface_s_p_u_updater.html b/documentation/api-reference/interface_s_p_u_updater.html new file mode 100644 index 0000000..fc30835 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_updater.html @@ -0,0 +1,645 @@ + + + + + + + +Sparkle: SPUUpdater Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUUpdater Class Reference
    +
    +
    + +

    The main API in Sparkle for controlling the update mechanism. + More...

    + +

    #import <SPUUpdater.h>

    +
    +Inheritance diagram for SPUUpdater:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    (instancetype) - initWithHostBundle:applicationBundle:userDriver:delegate:
     Initializes a new SPUUpdater instance. More...
     
    (instancetype) - NS_UNAVAILABLE
     Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standard adapter instead. More...
     
    (BOOL) - startUpdater:
     Starts the updater. More...
     
    (void) - checkForUpdates
     Checks for updates, and displays progress while doing so if needed. More...
     
    (void) - checkForUpdatesInBackground
     Checks for updates, but does not display any UI unless an update is found. More...
     
    (void) - checkForUpdateInformation
     Begins a "probing" check for updates which will not actually offer to update to that version. More...
     
    (void) - setFeedURL:
     Set the URL of the appcast used to download update information. More...
     
    (void) - resetUpdateCycle
     Appropriately schedules or cancels the update checking timer according to the preferences for time interval and automatic checks. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Properties

    BOOL canCheckForUpdates
     A property indicating whether or not updates can be checked by the user. More...
     
    BOOL sessionInProgress
     A property indicating whether or not an update session is in progress. More...
     
    BOOL automaticallyChecksForUpdates
     A property indicating whether or not to check for updates automatically. More...
     
    NSTimeInterval updateCheckInterval
     A property indicating the current automatic update check interval. More...
     
    BOOL automaticallyDownloadsUpdates
     A property indicating whether or not updates can be automatically downloaded in the background. More...
     
    NSURL * feedURL
     The URL of the appcast used to download update information. More...
     
    +NSBundle * hostBundle
     The host bundle that is being updated.
     
    +NSBundle * sparkleBundle
     The bundle this class (SPUUpdater) is loaded into.
     
    NSString * userAgentString
     The user agent used when checking for updates. More...
     
    NSDictionary * httpHeaders
     The HTTP headers used when checking for updates. More...
     
    BOOL sendsSystemProfile
     A property indicating whether or not the user's system profile information is sent when checking for updates. More...
     
    NSDate * lastUpdateCheckDate
     Returns the date of last update check. More...
     
    +NSArray< NSDictionary< NSString *, NSString * > * > * systemProfileArray
     The system profile information that is sent when checking for updates.
     
    +

    Detailed Description

    +

    The main API in Sparkle for controlling the update mechanism.

    +

    This class is used to configure the update parameters as well as manually and automatically schedule and control checks for updates.

    +

    Method Documentation

    + +

    ◆ checkForUpdateInformation

    + +
    +
    + + + + + + + +
    - (void) checkForUpdateInformation
    +
    + +

    Begins a "probing" check for updates which will not actually offer to update to that version.

    +

    However, the delegate methods updater:didFindValidUpdate: (SPUUpdaterDelegate-p) and updaterDidNotFindUpdate: (SPUUpdaterDelegate-p) will be called, so you can use that information in your UI.

    +

    Updates that have been skipped by the user will not be found.

    + +
    +
    + +

    ◆ checkForUpdates

    + +
    +
    + + + + + + + +
    - (void) checkForUpdates
    +
    + +

    Checks for updates, and displays progress while doing so if needed.

    +

    This is meant for users initiating a new update check or checking the current update progress.

    +

    If an update hasn't started, the user may be shown that a new check for updates is occurring. If an update has already been downloaded or begun installing, the user may be presented to install that update. If the user is already being presented with an update, that update will be shown to the user in active focus.

    +

    This will find updates that the user has previously opted into skipping.

    +

    See canCheckForUpdates property which can determine if this method may be invoked.

    + +
    +
    + +

    ◆ checkForUpdatesInBackground

    + +
    +
    + + + + + + + +
    - (void) checkForUpdatesInBackground
    +
    + +

    Checks for updates, but does not display any UI unless an update is found.

    +

    This is meant for programmatically initating a check for updates. That is, it will display no UI unless it finds an update, in which case it proceeds as usual. This will not find updates that the user has opted into skipping.

    +

    Note if there is no resumable update found, and automated updating is turned on, the update will be downloaded in the background without disrupting the user.

    + +
    +
    + +

    ◆ initWithHostBundle:applicationBundle:userDriver:delegate:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    - (instancetype) initWithHostBundle: (NSBundle *) hostBundle
    applicationBundle:(NSBundle *) applicationBundle
    userDriver:(id< SPUUserDriver >) userDriver
    delegate:(id< SPUUpdaterDelegate > _Nullable) delegate 
    +
    + +

    Initializes a new SPUUpdater instance.

    +

    This does not start the updater. To start it, see -[SPUUpdater startUpdater:]

    +

    Note that this is a normal initializer and doesn't implement the singleton pattern (i.e, instances aren't cached, so no surprises) This also means that updater instances can be deallocated, and that they will be torn down properly.

    +

    Related: See SPUStandardUpdaterController which wraps a SPUUpdater instance and is suitable for instantiating in nib files

    +
    Parameters
    + + + + + +
    hostBundleThe bundle that should be targetted for updating. This must not be nil.
    applicationBundleThe application bundle that should be waited for termination and relaunched (unless overridden). Usually this can be the same as hostBundle. This may differ when updating a plug-in or other non-application bundle.
    userDriverThe user driver that Sparkle uses for user update interaction
    delegateThe delegate for SPUUpdater. This may be nil.
    +
    +
    + +
    +
    + +

    ◆ NS_UNAVAILABLE

    + +
    +
    + + + + + + + +
    - (instancetype) NS_UNAVAILABLE
    +
    + +

    Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standard adapter instead.

    +

    If you want to drop an updater into a nib, use SPUStandardUpdaterController.

    + +
    +
    + +

    ◆ resetUpdateCycle

    + +
    +
    + + + + + + + +
    - (void) resetUpdateCycle
    +
    + +

    Appropriately schedules or cancels the update checking timer according to the preferences for time interval and automatic checks.

    +

    This call does not change the date of the next check, but only the internal timer.

    + +
    +
    + +

    ◆ setFeedURL:

    + +
    +
    + + + + + + + + +
    - (void) setFeedURL: (NSURL *_Nullable) feedURL
    +
    + +

    Set the URL of the appcast used to download update information.

    +

    Using this method is discouraged.

    +

    Setting this property will persist in the host bundle's user defaults. To avoid this, you should consider instead implementing -[SPUUpdaterDelegate feedURLStringForUpdater:]

    +

    Passing nil will remove any feed URL that has been set in the host bundle's user defaults.

    +

    For beta updates, you may consider migrating to -[SPUUpdaterDelegate allowedChannelsForUpdater:] in the future.

    +

    This method must be called on the main thread; calls from background threads will have no effect.

    + +
    +
    + +

    ◆ startUpdater:

    + +
    +
    + + + + + + + + +
    - (BOOL) startUpdater: (NSError *__autoreleasing *) error
    +
    + +

    Starts the updater.

    +

    This method checks if Sparkle is configured properly. A valid feed URL should be set before this method is invoked. Other properties of this SPUUpdater instance can be set before this method is invoked as well, such as automatic update checks.

    +

    If the configuration is valid, an update cycle is started in the next main runloop cycle. During this cycle, a permission prompt may be brought up (if needed) for checking if the user wants automatic update checking. Otherwise if automatic update checks are enabled, a scheduled update alert may be brought up if enough time has elapsed since the last check.

    +

    After starting the updater and before the next runloop cycle, one of -checkForUpdates, -checkForUpdatesInBackground, or -checkForUpdateInformation can be invoked. This may be useful if you want to check for updates immediately or without showing a permission prompt.

    +

    If the updater cannot be started (i.e, due to a configuration issue in the application), you may want to fall back appropriately. For example, the standard updater controller (SPUStandardUpdaterController) alerts the user that the app is misconfigured and to contact the developer.

    +

    This must be called on the main thread.

    +
    Parameters
    + + +
    errorThe error that is populated if this method fails. Pass NULL if not interested in the error information.
    +
    +
    +
    Returns
    YES if the updater started otherwise NO with a populated error
    + +
    +
    +

    Property Documentation

    + +

    ◆ automaticallyChecksForUpdates

    + +
    +
    + + + + + +
    + + + + +
    - (BOOL) automaticallyChecksForUpdates
    +
    +readwritenonatomicassign
    +
    + +

    A property indicating whether or not to check for updates automatically.

    +

    Setting this property will persist in the host bundle's user defaults. The update schedule cycle will be reset in a short delay after the property's new value is set. This is to allow reverting this property without kicking off a schedule change immediately

    + +
    +
    + +

    ◆ automaticallyDownloadsUpdates

    + +
    +
    + + + + + +
    + + + + +
    - (BOOL) automaticallyDownloadsUpdates
    +
    +readwritenonatomicassign
    +
    + +

    A property indicating whether or not updates can be automatically downloaded in the background.

    +

    Note that the developer can disallow automatic downloading of updates from being enabled. In this case, -automaticallyDownloadsUpdates will return NO regardless of how this property is set.

    +

    Setting this property will persist in the host bundle's user defaults.

    + +
    +
    + +

    ◆ canCheckForUpdates

    + +
    +
    + + + + + +
    + + + + +
    - (BOOL) canCheckForUpdates
    +
    +readnonatomicassign
    +
    + +

    A property indicating whether or not updates can be checked by the user.

    +

    An update check can be made by the user when an update session isn't in progress, or when an update or its progress is being shown to the user.

    +

    This property is suitable to use for menu item validation for seeing if -checkForUpdates can be invoked.

    +

    Note this property does not reflect whether or not an update session is in progress. Please see sessionInProgress property instead.

    + +
    +
    + +

    ◆ feedURL

    + +
    +
    + + + + + +
    + + + + +
    - (NSURL*) feedURL
    +
    +readnonatomicassign
    +
    + +

    The URL of the appcast used to download update information.

    +

    If the updater's delegate implements -[SPUUpdaterDelegate feedURLStringForUpdater:], this will return that feed URL. Otherwise if the feed URL has been set before, the feed URL returned will be retrieved from the host bundle's user defaults. Otherwise the feed URL in the host bundle's Info.plist will be returned. If no feed URL can be retrieved, returns nil.

    +

    This property must be called on the main thread; calls from background threads will return nil.

    + +
    +
    + +

    ◆ httpHeaders

    + +
    +
    + + + + + +
    + + + + +
    - (NSDictionary*) httpHeaders
    +
    +readwritenonatomiccopy
    +
    + +

    The HTTP headers used when checking for updates.

    +

    The keys of this dictionary are HTTP header fields (NSString) and values are corresponding values (NSString)

    + +
    +
    + +

    ◆ lastUpdateCheckDate

    + +
    +
    + + + + + +
    + + + + +
    - (NSDate*) lastUpdateCheckDate
    +
    +readnonatomiccopy
    +
    + +

    Returns the date of last update check.

    +
    Returns
    nil if no check has been performed.
    + +
    +
    + +

    ◆ sendsSystemProfile

    + +
    +
    + + + + + +
    + + + + +
    - (BOOL) sendsSystemProfile
    +
    +readwritenonatomicassign
    +
    + +

    A property indicating whether or not the user's system profile information is sent when checking for updates.

    +

    Setting this property will persist in the host bundle's user defaults.

    + +
    +
    + +

    ◆ sessionInProgress

    + +
    +
    + + + + + +
    + + + + +
    - (BOOL) sessionInProgress
    +
    +readnonatomicassign
    +
    + +

    A property indicating whether or not an update session is in progress.

    +

    An update session is in progress when the appcast is being downloaded, an update is being downloaded, an update is being shown, update permission is being requested, or the installer is being started. An active session is when Sparkle's fired scheduler is running.

    +

    Note an update session may be inactive even though Sparkle's installer (ran as a separate process) may be running, or even though the update has been downloaded but the installation has been deferred. In both of these cases, a new update session may be activated with the update resumed at a later point (automatically or manually).

    +

    See also canCheckForUpdates property which is more suited for menu item validation.

    + +
    +
    + +

    ◆ updateCheckInterval

    + +
    +
    + + + + + +
    + + + + +
    - (NSTimeInterval) updateCheckInterval
    +
    +readwritenonatomicassign
    +
    + +

    A property indicating the current automatic update check interval.

    +

    Setting this property will persist in the host bundle's user defaults. The update schedule cycle will be reset in a short delay after the property's new value is set. This is to allow reverting this property without kicking off a schedule change immediately

    + +
    +
    + +

    ◆ userAgentString

    + +
    +
    + + + + + +
    + + + + +
    - (NSString*) userAgentString
    +
    +readwritenonatomiccopy
    +
    + +

    The user agent used when checking for updates.

    +

    The default implementation can be overrided.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_updater.png b/documentation/api-reference/interface_s_p_u_updater.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa808f76b6ed52c7467738ca006dda563aed724 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBBm#UwT>t<74`jZ0^R=}9&;%e0 zj1L?*z}k679?0b=3GxeO04f53tEWPY7#J8mJY5_^Dj46+Jw2&KfydR~?AibS6;XWb8AC$n2J`zY-Wn_G-F)XHH$P`dgIvZ&>&0(Z ztSXaY(7m?IJ8pgWv8{8iw~HDvJ&VasxTThV%`WeJLHuU*E62AlQ8Y-8oS(|?W4D(* z=Zxja52wCe&fc7Vf7hRvl5zJB2Twn{w}1bXgTL;x_f0$g-aE9^?><9UhXvPziDC@? zmCVzR&V0dJ^RcG$-2wXtMGTB;q7Ds~tO5ysj4U&P85p05I5ZS@c2saNegN@88fH7+ z{PNZ{>&?w0GS%)0{2v(aHElm~-Ap{loHb;64ZqLdOPd4xPCo3_+@2mG5bA6C;YuoV zPh;lokV4M~m!>Fg(B1jAy^**L`@LU6iGlQqApUXO@geCyF1HhpG literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_updater_cycle-members.html b/documentation/api-reference/interface_s_p_u_updater_cycle-members.html new file mode 100644 index 0000000..31cc075 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_updater_cycle-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUUpdaterCycle Member List
    +
    +
    + +

    This is the complete list of members for SPUUpdaterCycle, including all inherited members.

    + + + + +
    cancelNextUpdateCycle (defined in SPUUpdaterCycle)SPUUpdaterCycle
    initWithDelegate: (defined in SPUUpdaterCycle)SPUUpdaterCycle
    resetUpdateCycleAfterDelay (defined in SPUUpdaterCycle)SPUUpdaterCycle
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_updater_cycle.html b/documentation/api-reference/interface_s_p_u_updater_cycle.html new file mode 100644 index 0000000..5277dbc --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_updater_cycle.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SPUUpdaterCycle Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUUpdaterCycle Class Reference
    +
    +
    +
    +Inheritance diagram for SPUUpdaterCycle:
    +
    +
    + +
    + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithDelegate:
     
    +(void) - resetUpdateCycleAfterDelay
     
    +(void) - cancelNextUpdateCycle
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_updater_cycle.png b/documentation/api-reference/interface_s_p_u_updater_cycle.png new file mode 100644 index 0000000000000000000000000000000000000000..b1aea47d7ba0f2e2c9f23c2957c18925bffbc1f8 GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^g+Ls@!3-oN1F}FIi2$Dv*Z=?j1DP-0d@b!iGy%v0 z;{yi{uy)>&2XZ+|g8YIRfQmri>ZuST1_s7Oo-U3d6^w7^-rlrYLBQquo+bbP_xlUw zF+2K{aa7Oe3f;EokWO007g6KQOAo1JE;I|Al=k|);Njc1f2M6N5SA`{aQMe$5x-8& zinc4fo>^b?3|al}dZk?t=bW=?Uu=-3%F5--I}M}#c|Lb+Ua3E+WP$oML-v!JTN|Xl z+8I83d401go3XE27~iWW76$88%5An<7cp%Ox8K%x{P)J!S5pij&jnhG|)rAB!S;WBm3oi7Q_h-hXKIYz~81Adbe43sgY9U=Yg^ zW=wl+-dQf~`ubjcOYp9+WVz^4fdjH{UsT)|s&jc$VyDP=GVxoX{oP{Czopr0B-H;uK)l5 literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_updater_settings-members.html b/documentation/api-reference/interface_s_p_u_updater_settings-members.html new file mode 100644 index 0000000..2343386 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_updater_settings-members.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUUpdaterSettings Member List
    +
    + + + + + diff --git a/documentation/api-reference/interface_s_p_u_updater_settings.html b/documentation/api-reference/interface_s_p_u_updater_settings.html new file mode 100644 index 0000000..9316f6d --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_updater_settings.html @@ -0,0 +1,154 @@ + + + + + + + +Sparkle: SPUUpdaterSettings Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUUpdaterSettings Class Reference
    +
    +
    + +

    This class can be used for reading certain updater settings. + More...

    + +

    #import <SPUUpdaterSettings.h>

    +
    +Inheritance diagram for SPUUpdaterSettings:
    +
    +
    + +
    + + + + +

    +Instance Methods

    +(instancetype) - initWithHostBundle:
     
    + + + + + + + + + + + + + + + + +

    +Properties

    +BOOL automaticallyChecksForUpdates
     Indicates whether or not automatic update checks are enabled.
     
    +NSTimeInterval updateCheckInterval
     The regular update check interval.
     
    +BOOL allowsAutomaticUpdates
     Indicates whether or not automatically downloading updates is allowed to be turned on by the user.
     
    BOOL automaticallyDownloadsUpdates
     Indicates whether or not automatically downloading updates is enabled by the user or developer. More...
     
    +BOOL sendsSystemProfile
     Indicates whether or not anonymous system profile information is sent when checking for updates.
     
    +

    Detailed Description

    +

    This class can be used for reading certain updater settings.

    +

    It retrieves the settings by first looking into the host's user defaults. If the setting is not found in there, then the host's Info.plist file is looked at.

    +

    Property Documentation

    + +

    ◆ automaticallyDownloadsUpdates

    + +
    +
    + + + + + +
    + + + + +
    - (BOOL) automaticallyDownloadsUpdates
    +
    +readnonatomicassign
    +
    + +

    Indicates whether or not automatically downloading updates is enabled by the user or developer.

    +

    Note this does not indicate whether or not automatic downloading of updates is allowable. See -allowsAutomaticUpdates property for that.

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_updater_settings.png b/documentation/api-reference/interface_s_p_u_updater_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..81b77729b49fb82225a0c17a502ff23352791915 GIT binary patch literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^H9#D|!3-qdtb2G6NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~uJ&|s45?szJNI^3vx0!@_dQSk{FgW9 z6yMp|x%GnCnx}zE2D2sko{1W7jy$B2*(Vk=sqHoYfx9z~|9u$v{jm9;FIuO(6XToN z{hmDK_0%d+v?)0BK=*!ic!cwcqmKo-R6KWA3BSvpaOm!&KZicGt9d+jn98S-}Ca@10T;@S3~1>1PA_O z{u49d>v}cM!(T5J7;pAu`q7rhu-QboZny7}^DXypetr@BQ2xy~R(6T?K)en+won9l zgW*}mLB_V%(+|vl_xV|U*^cOnwBlD`V#%+085y!%D>$v0^^bi!DY|Dj$Mh-obIyxw zpUo{2xbU$2)2zJ3Z)z)a7Uipk_6kmxV7q-aV`|&$cR$4pR)%u`P1{JSgp^Jj+_2hpl-|aqcY83tZsZ>Rdevz!`i21-?etx z&VSrqwf%V2`yH|i7I)jVM9!G_Va$!y^iNiXtR^bOEdF~-@D6ea@;&c31Cz* Nc)I$ztaD0e0szLi{Hy=~ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_updater_timer-members.html b/documentation/api-reference/interface_s_p_u_updater_timer-members.html new file mode 100644 index 0000000..166fa40 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_updater_timer-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUUpdaterTimer Member List
    +
    +
    + +

    This is the complete list of members for SPUUpdaterTimer, including all inherited members.

    + + + + +
    initWithDelegate: (defined in SPUUpdaterTimer)SPUUpdaterTimer
    invalidate (defined in SPUUpdaterTimer)SPUUpdaterTimer
    startAndFireAfterDelay: (defined in SPUUpdaterTimer)SPUUpdaterTimer
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_updater_timer.html b/documentation/api-reference/interface_s_p_u_updater_timer.html new file mode 100644 index 0000000..8049091 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_updater_timer.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SPUUpdaterTimer Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUUpdaterTimer Class Reference
    +
    +
    +
    +Inheritance diagram for SPUUpdaterTimer:
    +
    +
    + +
    + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithDelegate:
     
    +(void) - startAndFireAfterDelay:
     
    +(void) - invalidate
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_updater_timer.png b/documentation/api-reference/interface_s_p_u_updater_timer.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b06093579a41aebbbfae562c99e5e7afb97c72 GIT binary patch literal 509 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004uNklhjjw)iqSGrQ_vNmO+v_dX|?vZF#ART#LU* zQeVgWS5wq>w&^|SU0&|7-N!92Styj}eADS~$FP#tE#CX{oA&SV@2~66Vk}AO z=n)H@MLzAr(ap~(Y?)8qlf=>t47vvK+Y>RLivf93KK00000NkvXXu0mjfYIFh= literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_p_u_user_initiated_update_driver-members.html b/documentation/api-reference/interface_s_p_u_user_initiated_update_driver-members.html new file mode 100644 index 0000000..6cf8f9f --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_user_initiated_update_driver-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUUserInitiatedUpdateDriver Member List
    +
    +
    + +

    This is the complete list of members for SPUUserInitiatedUpdateDriver, including all inherited members.

    + + + + + + + + +
    abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate: (defined in SPUUserInitiatedUpdateDriver)SPUUserInitiatedUpdateDriver
    resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_user_initiated_update_driver.html b/documentation/api-reference/interface_s_p_u_user_initiated_update_driver.html new file mode 100644 index 0000000..3f23423 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_user_initiated_update_driver.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: SPUUserInitiatedUpdateDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUUserInitiatedUpdateDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SPUUserInitiatedUpdateDriver:
    +
    +
    + + +<SPUUpdateDriver> + +
    + + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:applicationBundle:sparkleBundle:updater:userDriver:updaterDelegate:
     
    - Instance Methods inherited from <SPUUpdateDriver>
    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - abortUpdate
     
    +(void) - abortUpdateWithError:
     
    + + + + +

    +Additional Inherited Members

    - Properties inherited from <SPUUpdateDriver>
    +BOOL showingUpdate
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_user_initiated_update_driver.png b/documentation/api-reference/interface_s_p_u_user_initiated_update_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..60543dae8fe836833e9239e3b0d5aa4666ffe516 GIT binary patch literal 1398 zcmeAS@N?(olHy`uVBq!ia0y~yU@QW%J2;qu%M1VR{e18JB<*l1 zv+h*QAJf-vwV9PRe=5+f(x;QQoPVj^Qsj9{c?$E}_m5AVk5|C(iPKJ%okn{;O$n0X zX<$e=DyqQnL1_weMbX~2Vg`37%Lety9}D;%xNEQ%sI@Tf5IV&O3rFqMF+n9$C+cZhTC(7&vuA*orlkRGH8u`+ z+BtKk_IvH~*YEdb{(9oJa>~m0VHMRUl~3iHhjz{Xv^-z)_QdF|MK^cdKl8@bFCgyi zxoN+wi1H zTfScY@6C>Xy1Dai%)X!Dc*Ko=4Gy5y!LtPSM~w-B4^yS z4VfqJb57gzP4&TIrYxcJ!I%6)?&U6)4!pOQVN%Hq<-mKIbu0Gx>#UBsr}=&x*Kv*Y zk=5JwsC@tLtyjO|PiKss{JZG0d5LM;j(eW!ez>b~+9{Dgr>{lH`EEY%bxAQUG;UA1 zqsD)?r_c2T zPN|-p>aSsL{8@3z?3p`-P{Uje6fqLLpH4q5lH_UNFJzUNrug0toJ{)O)STGO|CC{# z&v%;*pTVLQ!nf6lN*b@fR>?{bF$rj&!2t2G+DeAp7q`SUUnk? z$lBd|l;1vlzAA6iw(of*``V3?_vXpXsNS!=(WdL$ImbM;h`;Z$->RHG5%0GCS^Tf* z%m4Y_ex9e7uUznU(dnnrn{IhZwOXGtKVF`%bYQ`j@Aq?>Zg(!NRfs;B zZvDRa`goN%Tl}utJk9;qyBF^97yY~A?T!7?dso)XWoBf1=J|AW%)g#b$vbN**S?Fo zKP@6mKR?$zH8a=!=NzWIi8G5`cV>AiKE1MjaW+$=c7FKZZ83ZwJpH1yr!d>NYXHOI lA5X=9w9E<1<@}%ISsnj + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SPUUserUpdateState Member List
    +
    +
    + +

    This is the complete list of members for SPUUserUpdateState, including all inherited members.

    + + + + + +
    initWithStage:userInitiated: (defined in SPUUserUpdateState)SPUUserUpdateState(Private)
    NS_UNAVAILABLE (defined in SPUUserUpdateState)SPUUserUpdateState
    stage (defined in SPUUserUpdateState)SPUUserUpdateState
    userInitiated (defined in SPUUserUpdateState)SPUUserUpdateState
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_user_update_state.html b/documentation/api-reference/interface_s_p_u_user_update_state.html new file mode 100644 index 0000000..eb36762 --- /dev/null +++ b/documentation/api-reference/interface_s_p_u_user_update_state.html @@ -0,0 +1,109 @@ + + + + + + + +Sparkle: SPUUserUpdateState Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SPUUserUpdateState Class Reference
    +
    +
    +
    +Inheritance diagram for SPUUserUpdateState:
    +
    +
    + +
    + + + + + + +

    +Instance Methods

    +(instancetype) - NS_UNAVAILABLE
     
    +(instancetype) - initWithStage:userInitiated:
     
    + + + + + +

    +Properties

    +SPUUserUpdateStage stage
     
    +BOOL userInitiated
     
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/interface_s_p_u_user_update_state.png b/documentation/api-reference/interface_s_p_u_user_update_state.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2a23c266a09ceb41d0eccb6974dbfd587b2834 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^jX)g0!3-ohWuCnNQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;=QCBUeUp*5a2n1C7h${dfDAm+ikAQmP!zResZm?uR`}$ z*SEY37I%TH&g%O=vxEdro-*@T#gMSfV9tOW(3R@Mv$I`ytNa^KqaMtqC+egA;Z z3tk@-p7Q8VI#ck(W*MJZ%naXlUFpqj-X?Ar#(w;LbE3Y-Nu~on-}ef~_kMO}(QiMQ zpDa|v%V=D@q@&~BB_|h=RRv9{oo*cJ5sXcOk2p7pPg39np@xnt`d|i-{op#sjG4}^ zJ}x3FR6LlxKWLo3CB^T&^Mr>>is^Za?Nt7fZx(7xxEz%*CL$K%@CE4(M~?`og1 z>b}`^J>7kC*A?E;obz;%9jD*slI-sV`)sFe-RU*wn&b1!n+iki&bFL9+H*kW`VSG4 z`;3ksH9Esq+HL98F1*8i&Pr{=%x!trw^f{h5fyrA6!|^oSFEGxkSfzV;uX>E5P_-@O1TaS?83{1ON`N-!lLJ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_appcast-members.html b/documentation/api-reference/interface_s_u_appcast-members.html new file mode 100644 index 0000000..1e0f26b --- /dev/null +++ b/documentation/api-reference/interface_s_u_appcast-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUAppcast Member List
    +
    +
    + +

    This is the complete list of members for SUAppcast, including all inherited members.

    + + + + +
    copyByFilteringItems: (defined in SUAppcast)SUAppcast(Private)
    initWithXMLData:relativeToURL:stateResolver:error: (defined in SUAppcast)SUAppcast(Private)
    items (defined in SUAppcast)SUAppcast
    + + + + diff --git a/documentation/api-reference/interface_s_u_appcast.html b/documentation/api-reference/interface_s_u_appcast.html new file mode 100644 index 0000000..50c6329 --- /dev/null +++ b/documentation/api-reference/interface_s_u_appcast.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: SUAppcast Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUAppcast Class Reference
    +
    +
    +
    +Inheritance diagram for SUAppcast:
    +
    +
    + +
    + + + + + + +

    +Instance Methods

    +(nullable instancetype) - initWithXMLData:relativeToURL:stateResolver:error:
     
    +(SUAppcast *) - copyByFilteringItems:
     
    + + + +

    +Properties

    +NSArray< SUAppcastItem * > * items
     
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_appcast.png b/documentation/api-reference/interface_s_u_appcast.png new file mode 100644 index 0000000000000000000000000000000000000000..da34501ce6ca3a165a1d1982c46d99f3a4f3a41b GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^UO*hc!3-ojorU)SDTx4|5ZC|z{{xvX-h3_XKQsZz z0^Myr{JPhQVV;7Lcg9|@X5qB*zwbJBhBS?(C{Ht5vJ-xH)$SY&stAC_I|J)6J5Ejg zu*m0^`nqMRwPw!Tnc6=p*IlbMU7N7>JpZo0Z$GSG7t}Q;1w_b6kx%2E<;#*cM%h}3zw>nxPHuQ$DY23cO z(@(DSJz*REbNdFTt7pajs=n2IAaa#+vUtp5yYrzNbAD;d$AoTRdBOU7U1eJuDxBeP!jVaPkZv(@c!PC{xWt~$(698Kw#l!#r literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_appcast_driver-members.html b/documentation/api-reference/interface_s_u_appcast_driver-members.html new file mode 100644 index 0000000..554ab1b --- /dev/null +++ b/documentation/api-reference/interface_s_u_appcast_driver-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUAppcastDriver Member List
    +
    +
    + +

    This is the complete list of members for SUAppcastDriver, including all inherited members.

    + + + + +
    cleanup: (defined in SUAppcastDriver)SUAppcastDriver
    initWithHost:updater:updaterDelegate:delegate: (defined in SUAppcastDriver)SUAppcastDriver
    loadAppcastFromURL:userAgent:httpHeaders:inBackground: (defined in SUAppcastDriver)SUAppcastDriver
    + + + + diff --git a/documentation/api-reference/interface_s_u_appcast_driver.html b/documentation/api-reference/interface_s_u_appcast_driver.html new file mode 100644 index 0000000..b028ac5 --- /dev/null +++ b/documentation/api-reference/interface_s_u_appcast_driver.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SUAppcastDriver Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUAppcastDriver Class Reference
    +
    +
    +
    +Inheritance diagram for SUAppcastDriver:
    +
    +
    + +
    + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:updater:updaterDelegate:delegate:
     
    +(void) - loadAppcastFromURL:userAgent:httpHeaders:inBackground:
     
    +(void) - cleanup:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_appcast_driver.png b/documentation/api-reference/interface_s_u_appcast_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..61cdf86800018bfb4960e53a8d2c16f3b402c85e GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^c|aV%!3-qNf88Jgq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgXM4IhhEy=VoqIQ_S%JsRKkv`I|Gmqf zo^Qy_P0e||7VEm~HyT~W44Wvf+pcjdc6#SV!sd6ky|=d-8VK1s=XKd)F& z-1yG*4aZvFz3eR3EuL_2>~Z-`(GR_?(Zes^?n0`p~%B|Be^vznfR@ z0JK`Z-`H4Mt)YAiL(k=iJDYf(_8wikW#XQLJNVz9>12Mf6o{8#$176P%={z{X!y!F zsQ;CCcg_5^OVu2{l&##c+h;Ra1RPWKIXKtv&ReD(`u)W>k1j3ch;09mELO>}{;9>b z? + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUAppcastItem Member List
    +
    +
    + +

    This is the complete list of members for SUAppcastItem, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    channel (defined in SUAppcastItem)SUAppcastItem
    contentLength (defined in SUAppcastItem)SUAppcastItem
    criticalUpdate (defined in SUAppcastItem)SUAppcastItem
    date (defined in SUAppcastItem)SUAppcastItem
    dateString (defined in SUAppcastItem)SUAppcastItem
    deltaUpdate (defined in SUAppcastItem)SUAppcastItem
    deltaUpdates (defined in SUAppcastItem)SUAppcastItem
    displayVersionString (defined in SUAppcastItem)SUAppcastItem
    emptyAppcastItem (defined in SUAppcastItem)SUAppcastItemstatic
    fileURL (defined in SUAppcastItem)SUAppcastItem
    informationOnlyUpdate (defined in SUAppcastItem)SUAppcastItem
    infoURL (defined in SUAppcastItem)SUAppcastItem
    initWithDictionary: (defined in SUAppcastItem)SUAppcastItem
    initWithDictionary:failureReason: (defined in SUAppcastItem)SUAppcastItem
    initWithDictionary:relativeToURL:failureReason: (defined in SUAppcastItem)SUAppcastItem
    initWithDictionary:relativeToURL:stateResolver:failureReason:SUAppcastItem(Private)
    installationType (defined in SUAppcastItem)SUAppcastItem
    itemDescription (defined in SUAppcastItem)SUAppcastItem
    macOsUpdate (defined in SUAppcastItem)SUAppcastItem
    majorUpgrade (defined in SUAppcastItem)SUAppcastItem
    maximumOperatingSystemVersionIsOK (defined in SUAppcastItem)SUAppcastItem
    maximumSystemVersion (defined in SUAppcastItem)SUAppcastItem
    minimumAutoupdateVersion (defined in SUAppcastItem)SUAppcastItem
    minimumOperatingSystemVersionIsOK (defined in SUAppcastItem)SUAppcastItem
    minimumSystemVersion (defined in SUAppcastItem)SUAppcastItem
    NS_UNAVAILABLE (defined in SUAppcastItem)SUAppcastItem
    osString (defined in SUAppcastItem)SUAppcastItem
    phasedRolloutInterval (defined in SUAppcastItem)SUAppcastItem
    propertiesDictionary (defined in SUAppcastItem)SUAppcastItem
    releaseNotesURL (defined in SUAppcastItem)SUAppcastItem
    signatures (defined in SUAppcastItem)SUAppcastItem
    title (defined in SUAppcastItem)SUAppcastItem
    versionString (defined in SUAppcastItem)SUAppcastItem
    + + + + diff --git a/documentation/api-reference/interface_s_u_appcast_item.html b/documentation/api-reference/interface_s_u_appcast_item.html new file mode 100644 index 0000000..e74258c --- /dev/null +++ b/documentation/api-reference/interface_s_u_appcast_item.html @@ -0,0 +1,247 @@ + + + + + + + +Sparkle: SUAppcastItem Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUAppcastItem Class Reference
    +
    +
    +
    +Inheritance diagram for SUAppcastItem:
    +
    +
    + +
    + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - NS_UNAVAILABLE
     
    +(nullable instancetype) - initWithDictionary:
     
    +(nullable instancetype) - initWithDictionary:failureReason:
     
    +(nullable instancetype) - initWithDictionary:relativeToURL:failureReason:
     
    (nullable instancetype) - initWithDictionary:relativeToURL:stateResolver:failureReason:
     Initializes with data from a dictionary provided by the RSS class and state resolver. More...
     
    + + + +

    +Class Methods

    +(instancetype) + emptyAppcastItem
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Properties

    +NSString * title
     
    +NSString * dateString
     
    +NSDate * date
     
    +NSString * itemDescription
     
    +NSURL * releaseNotesURL
     
    +SUSignaturessignatures
     
    +NSString * minimumSystemVersion
     
    +NSString * maximumSystemVersion
     
    +NSURL * fileURL
     
    +uint64_t contentLength
     
    +NSString * versionString
     
    +NSString * osString
     
    +NSString * displayVersionString
     
    +NSDictionary * deltaUpdates
     
    +NSURL * infoURL
     
    +NSNumber * phasedRolloutInterval
     
    +NSString * installationType
     
    +NSString * minimumAutoupdateVersion
     
    +NSString * channel
     
    +BOOL deltaUpdate
     
    +BOOL criticalUpdate
     
    +BOOL majorUpgrade
     
    +BOOL macOsUpdate
     
    +BOOL informationOnlyUpdate
     
    +BOOL minimumOperatingSystemVersionIsOK
     
    +BOOL maximumOperatingSystemVersionIsOK
     
    +NSDictionary * propertiesDictionary
     
    +

    Method Documentation

    + +

    ◆ initWithDictionary:relativeToURL:stateResolver:failureReason:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    - (nullable instancetype) initWithDictionary: (NSDictionary *) dict
    relativeToURL:(NSURL *_Nullable) appcastURL
    stateResolver:(SPUAppcastItemStateResolver *) stateResolver
    failureReason:(NSString *_Nullable __autoreleasing *_Nullable) error 
    +
    + +

    Initializes with data from a dictionary provided by the RSS class and state resolver.

    +

    This initializer method is intended to be marked "private" and discouraged from public usage. This method is available however. Talk to us to describe your use case and if you need to construct appcast items yourself.

    + +

    Provided by category SUAppcastItem(Private).

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_appcast_item.png b/documentation/api-reference/interface_s_u_appcast_item.png new file mode 100644 index 0000000000000000000000000000000000000000..a7cf3386c91933ea838c087dfc189e621af17f97 GIT binary patch literal 772 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w0DKpsNzMlHF1-l>@r)Fa5FA{ao)k~ifR$JXO){4|2$a8QYqEHK;lE( ze$KtVESZNA&flIpQ_HR-?RM?Q4VJUMX6miDTzzBi%X^*89Df80zU{et&+P(J(^1(X zfp5zXi`mcRpI2tZq%Lsfsav(~vqik+Tz6;7azv%nwk`1X=QcC*V)10lbv@X$*Ht<$ z_Ra6`p;(E^zn>)jbW>(&IaH!jI`QeXih z$;O#C6)aiO(wbQq)J+%<6!3m^;#l^Qi>Iwhk%j-Zc!I$dZp8pA5hg_e1Y%h0d)Xw` zfuSJz?%jF@3r%D>D4XHJt@#cKX=Yvw1&q93oH<$?I9eY3;waizx7SDc+ppge)1?@4 zUSHxkbxE4(_UjMxoi4aKx_x*NRI+5zyzJ_?m!5vk-FHTQU5gY$j6*j2Lid2F<~!e( zUYC3jE%$2?6N6*8e|xPSM^UW!|3+4xwTuqyUx%~I=brbnP}Z^X=6WmJz1mGP`2Mn; z7rau@xG+2a(qmu2nt9ysssxHMt_$Q#?+Oz%nla~hjq8p=J%$Di@m~xDe!$QucV%FR npA1P!O9f`k + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUApplicationInfo Member List
    +
    +
    + +

    This is the complete list of members for SUApplicationInfo, including all inherited members.

    + + + +
    bestIconForHost: (defined in SUApplicationInfo)SUApplicationInfostatic
    isBackgroundApplication: (defined in SUApplicationInfo)SUApplicationInfostatic
    + + + + diff --git a/documentation/api-reference/interface_s_u_application_info.html b/documentation/api-reference/interface_s_u_application_info.html new file mode 100644 index 0000000..4837181 --- /dev/null +++ b/documentation/api-reference/interface_s_u_application_info.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: SUApplicationInfo Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUApplicationInfo Class Reference
    +
    +
    +
    +Inheritance diagram for SUApplicationInfo:
    +
    +
    + +
    + + + + + + +

    +Class Methods

    +(BOOL) + isBackgroundApplication:
     
    +(NSImage *) + bestIconForHost:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_application_info.png b/documentation/api-reference/interface_s_u_application_info.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5ebdd8f5f1f9982bddfcee8175858107ce5cd9 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^1wb6Y!3-q7O=9#1QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;^ijoyI=JOB!DN^uC;$ z*i%$LZL7hP!1%<8HoYA3OV%#=V_B+u>C{fNf}55-eniZFdid&cSCGTD75!1!YDboFyt=akR{07s_a#Q*>R literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_bundle_icon-members.html b/documentation/api-reference/interface_s_u_bundle_icon-members.html new file mode 100644 index 0000000..c155df9 --- /dev/null +++ b/documentation/api-reference/interface_s_u_bundle_icon-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUBundleIcon Member List
    +
    +
    + +

    This is the complete list of members for SUBundleIcon, including all inherited members.

    + + +
    iconURLForHost: (defined in SUBundleIcon)SUBundleIconstatic
    + + + + diff --git a/documentation/api-reference/interface_s_u_bundle_icon.html b/documentation/api-reference/interface_s_u_bundle_icon.html new file mode 100644 index 0000000..b53188c --- /dev/null +++ b/documentation/api-reference/interface_s_u_bundle_icon.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: SUBundleIcon Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUBundleIcon Class Reference
    +
    +
    +
    +Inheritance diagram for SUBundleIcon:
    +
    +
    + +
    + + + + +

    +Class Methods

    +(NSURL *_Nullable) + iconURLForHost:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_bundle_icon.png b/documentation/api-reference/interface_s_u_bundle_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..344791bbd1aafd53b3382912c6faaa48a7fab29f GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^(Lfx)!3-oF^?zmnDTx4|5ZC|z{{xvX-h3_XKQsZz z0^1Wy;okP61Pb8q(@R^V~zk2m`N|M=}G z4hF3qy|1!XyPjf6dhj6nchAho2?m~A7n8gvT|a*FE5$trf+}LUbL8Q8!_io?WeYy{@=TAtM7a<>D=>Y?~7htxSxD}Zsh-slb(D% znq$0Kg7Hi?Ge?j@_3cLw8sD&6@yMP0cgrp^r@^h8_rca13~{K`|CZb|F%=#K7ohN0 z$#0uC>{i?xw2(3CZTDAphw#?e8D}{jluowY@z`>SM$l!uUez1z)68(``|8}z9zVeP*8phChR+tDnm{r-UW|WU=DY literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_file_manager-members.html b/documentation/api-reference/interface_s_u_file_manager-members.html new file mode 100644 index 0000000..6631d40 --- /dev/null +++ b/documentation/api-reference/interface_s_u_file_manager-members.html @@ -0,0 +1,91 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUFileManager Member List
    +
    + + + + + diff --git a/documentation/api-reference/interface_s_u_file_manager.html b/documentation/api-reference/interface_s_u_file_manager.html new file mode 100644 index 0000000..896629a --- /dev/null +++ b/documentation/api-reference/interface_s_u_file_manager.html @@ -0,0 +1,552 @@ + + + + + + + +Sparkle: SUFileManager Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUFileManager Class Reference
    +
    +
    + +

    #import <SUFileManager.h>

    +
    +Inheritance diagram for SUFileManager:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    (instancetype) - init
     
    (NSURL *_Nullable) - makeTemporaryDirectoryWithPreferredName:appropriateForDirectoryURL:error:
     
    (BOOL) - makeDirectoryAtURL:error:
     
    (BOOL) - moveItemAtURL:toURL:error:
     
    (BOOL) - replaceItemAtURL:withItemAtURL:error:
     
    (BOOL) - copyItemAtURL:toURL:error:
     
    (BOOL) - removeItemAtURL:error:
     
    (BOOL) - changeOwnerAndGroupOfItemAtRootURL:toMatchURL:error:
     
    (BOOL) - updateModificationAndAccessTimeOfItemAtURL:error:
     
    (BOOL) - updateAccessTimeOfItemAtRootURL:error:
     
    (BOOL) - releaseItemFromQuarantineAtRootURL:error:
     
    +

    Detailed Description

    +

    A class used for performing file operations more suitable than NSFileManager for performing installation work. All operations on this class may be used on thread other than the main thread. This class provides just basic file operations and stays away from including much application-level logic.

    +

    Method Documentation

    + +

    ◆ changeOwnerAndGroupOfItemAtRootURL:toMatchURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (BOOL) changeOwnerAndGroupOfItemAtRootURL: (NSURL *) targetURL
    toMatchURL:(NSURL *) matchURL
    error:(NSError **) error 
    +
    +

    Changes the owner and group IDs of an item at a specified target URL to match another URL

    Parameters
    + + + + +
    targetURLA URL pointing to the target item whose owner and group IDs to alter. This will be applied recursively if the item is a directory. The item at this URL must exist.
    matchURLA URL pointing to the item whose owner and group IDs will be used for changing on the targetURL. The item at this URL must exist.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if the target item's owner and group IDs have changed to match the origin's ones, otherwise NO along with a populated error object
    +

    If the owner and group IDs match on the root items of targetURL and matchURL, this method stops and assumes that nothing needs to be done. Otherwise this method recursively changes the IDs if the target is a directory. If an item in the directory is encountered that is unable to be changed, then this method stops and returns NO. While this method will try to change the group ID, being unable to change the group ID does not result in a failure if the owner ID can be changed or matched.

    +

    This is not an atomic operation.

    + +
    +
    + +

    ◆ copyItemAtURL:toURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (BOOL) copyItemAtURL: (NSURL *) sourceURL
    toURL:(NSURL *) destinationURL
    error:(NSError **) error 
    +
    +

    Copies an item from a source to a destination

    Parameters
    + + + + +
    sourceURLA URL pointing to the item to move. The item at this URL must exist.
    destinationURLA URL pointing to the destination the item will be moved at. An item must not already exist at this URL.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if the item was copied successfully, otherwise NO along with a populated error object
    +

    This is not an atomic operation.

    + +
    +
    + +

    ◆ init

    + +
    +
    + + + + + + + +
    - (instancetype) init
    +
    +Initial value:
    {
    +
    NSFileManager *_fileManager
    +

    Initializes a new file manager

    +
    Returns
    A new file manager instance
    + +
    +
    + +

    ◆ makeDirectoryAtURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (BOOL) makeDirectoryAtURL: (NSURL *) targetURL
    error:(NSError **) error 
    +
    +

    Creates a directory at the target URL

    Parameters
    + + + +
    targetURLA URL pointing to the directory to create. The item at this URL must not exist, and the parent directory of this URL must already exist.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if the item was created successfully, otherwise NO along with a populated error object
    +

    This is an atomic operation.

    + +
    +
    + +

    ◆ makeTemporaryDirectoryWithPreferredName:appropriateForDirectoryURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (NSURL *) makeTemporaryDirectoryWithPreferredName: (NSString *) preferredName
    appropriateForDirectoryURL:(NSURL *) appropriateURL
    error:(NSError * __autoreleasing *) error 
    +
    +

    Creates a temporary directory on the same volume as a provided URL

    Parameters
    + + + + +
    preferredNameA name that may be used when creating the temporary directory. Note that in the uncothirdStageErrormmon case this name is used, the temporary directory will be created inside the directory pointed by appropriateURL
    appropriateURLA URL to a directory that resides on the volume that the temporary directory will be created on. In the uncommon case, the temporary directory may be created inside this directory.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    A URL pointing to the newly created temporary directory, or nil with a populated error object if an error occurs.
    +

    When moving an item from a source to a destination, it is desirable to create a temporary intermediate destination on the same volume as the destination to ensure that the item will be moved, and not copied, from the intermediate point to the final destination. This ensures file atomicity.

    + +
    +
    + +

    ◆ moveItemAtURL:toURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (BOOL) moveItemAtURL: (NSURL *) sourceURL
    toURL:(NSURL *) destinationURL
    error:(NSError **) error 
    +
    +

    Moves an item from a source to a destination

    Parameters
    + + + + +
    sourceURLA URL pointing to the item to move. The item at this URL must exist.
    destinationURLA URL pointing to the destination the item will be moved at. An item must not already exist at this URL.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if the item was moved successfully, otherwise NO along with a populated error object
    +

    If sourceURL and destinationURL reside on the same volume, this operation will be an atomic move operation. Otherwise this will be equivalent to a copy & remove which will be a nonatomic operation.

    + +
    +
    + +

    ◆ releaseItemFromQuarantineAtRootURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (BOOL) releaseItemFromQuarantineAtRootURL: (NSURL *) rootURL
    error:(NSError **) error 
    +
    +

    Releases Apple's quarantine extended attribute from the item at the specified root URL

    Parameters
    + + + +
    rootURLA URL pointing to the item to release from Apple's quarantine. This will be applied recursively if the item is a directory. The item at this URL must exist.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if all the items at the target could be released from quarantine, otherwise NO if any items couldn't along with a populated error object
    +

    This method removes quarantine attributes from an item, ideally an application, so that when the user launches a new application themselves, they don't have to witness the system dialog alerting them that they downloaded an application from the internet and asking if they want to continue. Note that this may not exactly mimic the system behavior when a user opens an application for the first time (i.e, the xattr isn't deleted), but this should be sufficient enough for our purposes.

    +

    This method may return NO even if some items do get released from quarantine if the target URL is pointing to a directory. Thus if an item cannot be released from quarantine, this method still continues on to the next enumerated item.

    +

    This is not an atomic operation.

    + +
    +
    + +

    ◆ removeItemAtURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (BOOL) removeItemAtURL: (NSURL *) url
    error:(NSError **) error 
    +
    +

    Removes an item at a URL

    Parameters
    + + + +
    urlA URL pointing to the item to remove. The item at this URL must exist.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if the item was removed successfully, otherwise NO along with a populated error object
    +

    This is not an atomic operation.

    + +
    +
    + +

    ◆ replaceItemAtURL:withItemAtURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (BOOL) replaceItemAtURL: (NSURL *) originalItemURL
    withItemAtURL:(NSURL *) newItemURL
    error:(10.13) __OSX_AVAILABLE 
    +
    +

    Replaces an original item with a new item atomically.

    Parameters
    + + + + +
    originalItemURLA URL pointing to the original item to replace. The item at this URL must exist.
    newItemURLA URL pointing to the new item that will replace the original item.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if the original item was replaced with the new item successfully, otherwise NO along with a populated error object
    +

    originalItemURL and newItemURL must reside on the same volume. If the operation succeeds, this will be be an atomic operation. Otherwise on failure you may need to re-try using move operations. This operation will fail on non-apfs volumes or volumes that don't support rename swapping. Both originalItemURL and newItemURL must exist.

    + +
    +
    + +

    ◆ updateAccessTimeOfItemAtRootURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (BOOL) updateAccessTimeOfItemAtRootURL: (NSURL *) targetURL
    error:(NSError * __autoreleasing *) error 
    +
    +

    Updates the access time of an item at a specified root URL to the current time

    Parameters
    + + + +
    targetURLA URL pointing to the target item whose access time to update to the current time. This will be applied recursively if the item is a directory. The item at this URL must exist.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if the target item's access times have been updated, otherwise NO along with a populated error object
    +

    This method updates the access time of an item to the current time, ideal for letting the system know not to remove a file or directory when placing it at a temporary directory.

    +

    This is not an atomic operation.

    + +
    +
    + +

    ◆ updateModificationAndAccessTimeOfItemAtURL:error:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (BOOL) updateModificationAndAccessTimeOfItemAtURL: (NSURL *) targetURL
    error:(NSError **) error 
    +
    +

    Updates the modification and access time of an item at a specified target URL to the current time

    Parameters
    + + + +
    targetURLA URL pointing to the target item whose modification and access time to update. The item at this URL must exist.
    errorIf an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, you may pass in NULL.
    +
    +
    +
    Returns
    YES if the target item's modification and access times have been updated, otherwise NO along with a populated error object
    +

    This method updates the modification and access time of an item to the current time, ideal for letting the system know we installed a new file or application.

    +

    This is not an atomic operation.

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_file_manager.png b/documentation/api-reference/interface_s_u_file_manager.png new file mode 100644 index 0000000000000000000000000000000000000000..84dd966b54224519abe2d1d12f61263a3c86da7a GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^DL@>+!3-pCTvxaYq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgJ3L(+Ln;{G&b>M5wE~Yzf83@2|BnmL zKFXoL)U)Y*h+b&sW{Vdd7k)?@Z@zd)C3B6M%cMiUj!!VzZzEp6#PQt|)!kEUdeW7btR9`=|291RUlSU!blXx*R_{r{43o066glS#f9O^Dy31zru61hnj(@or z-}EHw*5;RrC%NA{&tc@#+PNY6%pp_X_v`%Uo&0HQSrT5@p<=nW`0-)w|5hsd3hG{| zYOYz|G-D>O*a7{o3=(Ut75b0!PO(<-KUQ%{cY=P=^%jOBriu)Sz8nq_!b}3!S{Pbj z-2bLW&g5({XxKPQpkYH^+Zw$HwM)vklir&B|EBBUAR5%XJy*WScd;3RVxI=`@YX9T!%ovATTE7EZWp=%O;Nw*{n|m8? ziKqEuwSzYfS~r^t%>T0Q<8zs|AGH?QF_r1xkKCO;cX!lUzfX(j?smKTqq$;!>y~JP scekg0=gg@89Lz6pE!^?U8MfE#76+}X8|OD)2F4SEr>mdKI;Vst0HU(vga7~l literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_host-members.html b/documentation/api-reference/interface_s_u_host-members.html new file mode 100644 index 0000000..d5d880e --- /dev/null +++ b/documentation/api-reference/interface_s_u_host-members.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUHost Member List
    +
    +
    + +

    This is the complete list of members for SUHost, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    boolForInfoDictionaryKey: (defined in SUHost)SUHost
    boolForKey: (defined in SUHost)SUHost
    boolForUserDefaultsKey: (defined in SUHost)SUHost
    bundle (defined in SUHost)SUHost
    bundlePath (defined in SUHost)SUHost
    displayVersion (defined in SUHost)SUHost
    initWithBundle: (defined in SUHost)SUHost
    name (defined in SUHost)SUHost
    objectForInfoDictionaryKey: (defined in SUHost)SUHost
    objectForKey: (defined in SUHost)SUHost
    objectForUserDefaultsKey: (defined in SUHost)SUHost
    publicDSAKeyFileKey (defined in SUHost)SUHost
    publicKeys (defined in SUHost)SUHost
    runningOnReadOnlyVolume (defined in SUHost)SUHost
    runningTranslocated (defined in SUHost)SUHost
    setBool:forUserDefaultsKey: (defined in SUHost)SUHost
    setObject:forUserDefaultsKey: (defined in SUHost)SUHost
    validVersion (defined in SUHost)SUHost
    version (defined in SUHost)SUHost
    + + + + diff --git a/documentation/api-reference/interface_s_u_host.html b/documentation/api-reference/interface_s_u_host.html new file mode 100644 index 0000000..a31a80b --- /dev/null +++ b/documentation/api-reference/interface_s_u_host.html @@ -0,0 +1,155 @@ + + + + + + + +Sparkle: SUHost Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUHost Class Reference
    +
    +
    +
    +Inheritance diagram for SUHost:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithBundle:
     
    +(nullable id) - objectForInfoDictionaryKey:
     
    +(BOOL) - boolForInfoDictionaryKey:
     
    +(nullable id) - objectForUserDefaultsKey:
     
    +(void) - setObject:forUserDefaultsKey:
     
    +(BOOL) - boolForUserDefaultsKey:
     
    +(void) - setBool:forUserDefaultsKey:
     
    +(nullable id) - objectForKey:
     
    +(BOOL) - boolForKey:
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Properties

    +NSBundle * bundle
     
    +NSString * bundlePath
     
    +NSString * name
     
    +NSString * version
     
    +BOOL validVersion
     
    +NSString * displayVersion
     
    +SUPublicKeyspublicKeys
     
    +BOOL runningOnReadOnlyVolume
     
    +BOOL runningTranslocated
     
    +NSString * publicDSAKeyFileKey
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_host.png b/documentation/api-reference/interface_s_u_host.png new file mode 100644 index 0000000000000000000000000000000000000000..71bb1862d8967f7000ec5fdfebcf711ae152582f GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^PCy*M!3-p4O$qh_QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;EVJn`!tMbt-Dj44msEKvJR`_Ujy0)ig5v$nCqD(KWx2{{3zn94Uz$86$Vf_{ zw3K(pH#_^#ptIWix;GgEKfM%W(yOqQ(7$zi+sa;pjl$NdlkW+43$&MWq`p?^Ug)xG zMJ{*j#OHBqekVmueD?eEyO?dq%>_@Feysm!)}#{4)KD$U@L;lhp-f(ze4)^u9&v&C zB}$DPEDStcE(#0>v;_VOIZm=`WOxv$aIHhW{d4xtlkU5_IWL~qy3#l!P4VVj=h^G{ zjohbP-un8Q-&@z0`}sCnd+dLy)1B8Gf4kE49p5Hrn~#gWw7%kxp7^Tr&lv^>O#v>) cNqV&ma&>A<{PI680E3Ld)78&qol`;+0Pp;rg8%>k literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_operating_system-members.html b/documentation/api-reference/interface_s_u_operating_system-members.html new file mode 100644 index 0000000..c311394 --- /dev/null +++ b/documentation/api-reference/interface_s_u_operating_system-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUOperatingSystem Member List
    +
    +
    + +

    This is the complete list of members for SUOperatingSystem, including all inherited members.

    + + + + +
    isOperatingSystemAtLeastVersion: (defined in SUOperatingSystem)SUOperatingSystemstatic
    operatingSystemVersion (defined in SUOperatingSystem)SUOperatingSystemstatic
    systemVersionString (defined in SUOperatingSystem)SUOperatingSystemstatic
    + + + + diff --git a/documentation/api-reference/interface_s_u_operating_system.html b/documentation/api-reference/interface_s_u_operating_system.html new file mode 100644 index 0000000..a546b8f --- /dev/null +++ b/documentation/api-reference/interface_s_u_operating_system.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SUOperatingSystem Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUOperatingSystem Class Reference
    +
    +
    +
    +Inheritance diagram for SUOperatingSystem:
    +
    +
    + +
    + + + + + + + + +

    +Class Methods

    +(NSOperatingSystemVersion+ operatingSystemVersion
     
    +(BOOL) + isOperatingSystemAtLeastVersion:
     
    +(NSString *) + systemVersionString
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_operating_system.png b/documentation/api-reference/interface_s_u_operating_system.png new file mode 100644 index 0000000000000000000000000000000000000000..aa71c7522cbec1069d64be8554fcc36c13190703 GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^H9#D|!3-qdtb2G6NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~9`kf@45?szJNNFkM+!Wx`|s?y|G)S6 zDSuAZwSN3_BqLAfuAETQ^5$CfnKNmelb2XV6?jUmt7nkAmUDl$`(a<1BOjcn1!tZ= zD6IbZkHaLbSPuU=TPoInx10KH!nvf~OPD7uS$D7HxUt5=MDN1ne@dR`OLjfCjMv+e zR{3h_hltvnzoq1CeiRp^?{RzT|3=?)>b;69MUnU3Dp%dBKQ}wi|J;-%>(*5ruATC< zzM+0v%HP$VmkMf4@0`h*#PH9_ydiQH=l;8Dm(mZte^dEoiY`V7m-(t`fp8YNP{lUX?PfxqPz*}t z4#ytu|Li(%&a(~or`_(JC;#x=#D^-k3)(#l4fpV_=e@q>j_GDzeV*4rTk_*}?R{4% zKkrSzf#}sz$LGyE|7XrK`K;~73pe>aJW`;!cK2)p^R?HD8=CJ`u221M tWr + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUPhasedUpdateGroupInfo Member List
    +
    +
    + +

    This is the complete list of members for SUPhasedUpdateGroupInfo, including all inherited members.

    + + + +
    setNewUpdateGroupIdentifierForHost: (defined in SUPhasedUpdateGroupInfo)SUPhasedUpdateGroupInfostatic
    updateGroupForHost: (defined in SUPhasedUpdateGroupInfo)SUPhasedUpdateGroupInfostatic
    + + + + diff --git a/documentation/api-reference/interface_s_u_phased_update_group_info.html b/documentation/api-reference/interface_s_u_phased_update_group_info.html new file mode 100644 index 0000000..9cfa3f8 --- /dev/null +++ b/documentation/api-reference/interface_s_u_phased_update_group_info.html @@ -0,0 +1,100 @@ + + + + + + + +Sparkle: SUPhasedUpdateGroupInfo Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUPhasedUpdateGroupInfo Class Reference
    +
    +
    +
    +Inheritance diagram for SUPhasedUpdateGroupInfo:
    +
    +
    + +
    + + + + + + +

    +Class Methods

    +(NSUInteger) + updateGroupForHost:
     
    +(NSNumber *) + setNewUpdateGroupIdentifierForHost:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_phased_update_group_info.png b/documentation/api-reference/interface_s_u_phased_update_group_info.png new file mode 100644 index 0000000000000000000000000000000000000000..0a4585f8d9ea8a3e22b4194e22187652f228b849 GIT binary patch literal 624 zcmeAS@N?(olHy`uVBq!ia0vp^OMy6mgBeKruX1$)QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;#2nJ=Y!gmUN303I9CK zX_+vywJV}t(UZA8ab{~#!>oh97wgR4yn9a3Db-AQzG<4P*FJqUFYLm6l}z*YeW#5I zJ@0B{`R6)a zk7%E^`pX8DEwzt}Pk-ITBAK_$w)pjp-7{Ba&f(1sGYC6>`TeG4yVs@6s536i&AGjM zLiA1F37t>BRO|fx9DSmG)p{N8`OC~DWUF=Ohn`h){(5u!w7*B*zBnH(_d_qZ$$VP& z);+(Eea=@rHnFj*wOnarIrZK$#*gcIw k9u^wY{$4rr=1C2s+oTk`zX8RGz~sT;>FVdQ&MBb@0Oph+d;kCd literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_public_keys-members.html b/documentation/api-reference/interface_s_u_public_keys-members.html new file mode 100644 index 0000000..4226042 --- /dev/null +++ b/documentation/api-reference/interface_s_u_public_keys-members.html @@ -0,0 +1,87 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUPublicKeys Member List
    +
    +
    + +

    This is the complete list of members for SUPublicKeys, including all inherited members.

    + + + + + + + + +
    dsaPubKey (defined in SUPublicKeys)SUPublicKeys
    dsaPubKeyStatus (defined in SUPublicKeys)SUPublicKeys
    ed25519_public_key (defined in SUPublicKeys)SUPublicKeysprotected
    ed25519PubKey (defined in SUPublicKeys)SUPublicKeys
    ed25519PubKeyStatus (defined in SUPublicKeys)SUPublicKeys
    hasAnyKeysSUPublicKeys
    initWithDsa:ed: (defined in SUPublicKeys)SUPublicKeys
    + + + + diff --git a/documentation/api-reference/interface_s_u_public_keys.html b/documentation/api-reference/interface_s_u_public_keys.html new file mode 100644 index 0000000..1adaf6d --- /dev/null +++ b/documentation/api-reference/interface_s_u_public_keys.html @@ -0,0 +1,124 @@ + + + + + + + +Sparkle: SUPublicKeys Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUPublicKeys Class Reference
    +
    +
    +
    +Inheritance diagram for SUPublicKeys:
    +
    +
    + +
    + + + + +

    +Instance Methods

    +(instancetype) - initWithDsa:ed:
     
    + + + +

    +Protected Attributes

    +unsigned char ed25519_public_key [32]
     
    + + + + + + + + + + + + +

    +Properties

    +NSString * dsaPubKey
     
    +SUSigningInputStatus dsaPubKeyStatus
     
    +const unsigned char * ed25519PubKey
     
    +SUSigningInputStatus ed25519PubKeyStatus
     
    +BOOL hasAnyKeys
     Returns YES if either key is present (though they may be invalid).
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_public_keys.png b/documentation/api-reference/interface_s_u_public_keys.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c972137102aa9c71e69bf2fa6b92dd929a8150 GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^(Lfx)!3-oF^?zmnDTx4|5ZC|z{{xvX-h3_XKQsZz z0^5>FS$kP61Pb8iGM+q~@peX2 zxBjFnFRgAH{##pB{r^dLh05%YA5^Xuo;xSFE~}Y5n`& zv%TrdKiQq-GnM^Od&y$CZN!|e+D}b2^54I2@Za-d(yNM3<&`fl+)s|T-uy3FRr6Kz z&9t;)mV#LG2G3b1_T7DUP<_+;7nvVszUhBE`6%0qEjJhfyLkn+qEKJ`Z=|J7ZejGf zn8fU|w|%d8S+qxg$cwc3vv<9SW^~hfbLh<*X6t+9Vx=kacQ#7*XPLiUGV@t~^PD-G zcyCR7pZ$0JvK_aN*q-|SV!`~}JDkyNwU?g%mfrT>FYn6BrBQXK`M$o%E^pmyoqD0q z(bFhXasD(AhE?oN(7QOB_Me?-Fy{RJz&K&>boFyt=akR{0Er0ifdBvi literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_signatures-members.html b/documentation/api-reference/interface_s_u_signatures-members.html new file mode 100644 index 0000000..88c4376 --- /dev/null +++ b/documentation/api-reference/interface_s_u_signatures-members.html @@ -0,0 +1,86 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUSignatures Member List
    +
    +
    + +

    This is the complete list of members for SUSignatures, including all inherited members.

    + + + + + + + +
    dsaSignature (defined in SUSignatures)SUSignatures
    dsaSignatureStatus (defined in SUSignatures)SUSignatures
    ed25519_signature (defined in SUSignatures)SUSignaturesprotected
    ed25519Signature (defined in SUSignatures)SUSignatures
    ed25519SignatureStatus (defined in SUSignatures)SUSignatures
    initWithDsa:ed: (defined in SUSignatures)SUSignatures
    + + + + diff --git a/documentation/api-reference/interface_s_u_signatures.html b/documentation/api-reference/interface_s_u_signatures.html new file mode 100644 index 0000000..86e1719 --- /dev/null +++ b/documentation/api-reference/interface_s_u_signatures.html @@ -0,0 +1,120 @@ + + + + + + + +Sparkle: SUSignatures Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUSignatures Class Reference
    +
    +
    +
    +Inheritance diagram for SUSignatures:
    +
    +
    + +
    + + + + +

    +Instance Methods

    +(instancetype) - initWithDsa:ed:
     
    + + + +

    +Protected Attributes

    +unsigned char ed25519_signature [64]
     
    + + + + + + + + + +

    +Properties

    +NSData * dsaSignature
     
    +SUSigningInputStatus dsaSignatureStatus
     
    +const unsigned char * ed25519Signature
     
    +SUSigningInputStatus ed25519SignatureStatus
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_signatures.png b/documentation/api-reference/interface_s_u_signatures.png new file mode 100644 index 0000000000000000000000000000000000000000..51488e559322b4a1dadd99826fdc48fb60f7b866 GIT binary patch literal 772 zcmeAS@N?(olHy`uVBq!ia0y~yU}OTa12~w0ElK}Yw5@4M%lSWd4xL#ueZ!xbGrtP;sQf;mtZ>p!h)Gd^NztM&A@1{^ z|7#X}Re8 z=2nEdKIRVGkP`EPZ+*YN^})I!*@P-U%F{Oy+g62AcA>Y@dqf zi7|vpEtI*obwSVT*^ikHWWCMfXE498PktlYk@xRjrMOI3{ro`ZhETq64yn$7x7K+| zZ + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUStandardVersionComparator Member List
    +
    +
    + +

    This is the complete list of members for SUStandardVersionComparator, including all inherited members.

    + + + + +
    compareVersion:toVersion:SUStandardVersionComparator
    defaultComparatorSUStandardVersionComparatorstatic
    initSUStandardVersionComparator
    + + + + diff --git a/documentation/api-reference/interface_s_u_standard_version_comparator.html b/documentation/api-reference/interface_s_u_standard_version_comparator.html new file mode 100644 index 0000000..6a8ddfe --- /dev/null +++ b/documentation/api-reference/interface_s_u_standard_version_comparator.html @@ -0,0 +1,173 @@ + + + + + + + +Sparkle: SUStandardVersionComparator Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUStandardVersionComparator Class Reference
    +
    +
    + +

    Sparkle's default version comparator. + More...

    + +

    #import <SUStandardVersionComparator.h>

    +
    +Inheritance diagram for SUStandardVersionComparator:
    +
    +
    + + +<SUVersionComparison> + +
    + + + + + + + + +

    +Instance Methods

    +(instancetype) - init
     Initializes a new instance of the standard version comparator.
     
    (NSComparisonResult) - compareVersion:toVersion:
     Compares version strings through textual analysis. More...
     
    + + + + +

    +Class Methods

    (SUStandardVersionComparator *) + defaultComparator
     Returns a singleton instance of the comparator. More...
     
    +

    Detailed Description

    +

    Sparkle's default version comparator.

    +

    This comparator is adapted from MacPAD, by Kevin Ballard. It's "dumb" in that it does essentially string comparison, in components split by character type.

    +

    Method Documentation

    + +

    ◆ compareVersion:toVersion:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (NSComparisonResult) compareVersion: (NSString *) versionA
    toVersion:(NSString *) versionB 
    +
    + +

    Compares version strings through textual analysis.

    +

    See the implementation for more details.

    + +

    Reimplemented from <SUVersionComparison>.

    + +
    +
    + +

    ◆ defaultComparator

    + +
    +
    + + + + + + + +
    + (SUStandardVersionComparator *) defaultComparator
    +
    + +

    Returns a singleton instance of the comparator.

    +

    It is usually preferred to alloc/init new a comparator instead.

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_standard_version_comparator.png b/documentation/api-reference/interface_s_u_standard_version_comparator.png new file mode 100644 index 0000000000000000000000000000000000000000..17ded2bc0d9b23c2fb017e5b2f03c856ddca4d76 GIT binary patch literal 1078 zcmeAS@N?(olHy`uVBq!ia0y~yU~B=h12~w0q~7jNIY3Gxz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opQ7iV}ep_a(yJSwWo#tK^Pb*DD$4PTIIVU~w z@tB~J?$o4WS=`g2c`SKu+x;)g-%R{U6({%+FE_WZlaFhXzI67e@S zzCqD^lMJ5kes=fWlR2N8^1TgC*6TS=()sK<=?i1us+LLbEhB#aYj@t6&L-)pkS7pzUM6e z3tOxD+z~n$vXs*TeD8?xg*%7JBu2_Phlu zxk*Mh{A1^~xGoY`oc;FS6m_Y->@&fpU-l+yCce5FKP}hlGJs-3SV-mM%n1sf=UP}ii_#`c2=Yo_I=Nu?-Mn-38VCDpd2RFtkzwfnDVQny>#W2msdWv zWUh$I@4tE}D=_NUs}D7QYo^<^L{7b!?dSfDJNLi$rDG~zs=t~{el?HfZ_?r|x5ay} z-n81&YiNI4RC@DU&cF4OU88L|D~=v}s?B-YX7=fDp>?-ri0?h{BySeinwE8i<)5Cd zTq3;d+&?)^vm=}A{>3H#GwinaifFBic4881VX-z{zxhh}l(%nkQ_2NPZyNub*Ru29 z^xKA-$>-nfN}8!ZYfTW-)eO!=tM0k`e*KQ%&)v}~|2}@+lUKID(B3YmuEHSW4+-!& mooIo-v#$jhZrTj + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUStatusController Member List
    +
    +
    + +

    This is the complete list of members for SUStatusController, including all inherited members.

    + + + + + + + + + + + +
    actionButton (defined in SUStatusController)SUStatusController
    beginActionWithTitle:maxProgressValue:statusText: (defined in SUStatusController)SUStatusController
    buttonEnabled (defined in SUStatusController)SUStatusController
    initWithHost: (defined in SUStatusController)SUStatusController
    maxProgressValue (defined in SUStatusController)SUStatusController
    progressBar (defined in SUStatusController)SUStatusController
    progressValue (defined in SUStatusController)SUStatusController
    setButtonTitle:target:action:isDefault: (defined in SUStatusController)SUStatusController
    statusText (defined in SUStatusController)SUStatusController
    statusTextField (defined in SUStatusController)SUStatusController
    + + + + diff --git a/documentation/api-reference/interface_s_u_status_controller.html b/documentation/api-reference/interface_s_u_status_controller.html new file mode 100644 index 0000000..7e21edc --- /dev/null +++ b/documentation/api-reference/interface_s_u_status_controller.html @@ -0,0 +1,128 @@ + + + + + + + +Sparkle: SUStatusController Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUStatusController Class Reference
    +
    +
    +
    +Inheritance diagram for SUStatusController:
    +
    +
    + +
    + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithHost:
     
    +(void) - beginActionWithTitle:maxProgressValue:statusText:
     
    +(void) - setButtonTitle:target:action:isDefault:
     
    + + + + + + + + + + + + + + + +

    +Properties

    +IBOutlet NSButton * actionButton
     
    +IBOutlet NSProgressIndicator * progressBar
     
    +IBOutlet NSTextField * statusTextField
     
    +NSString * statusText
     
    +double progressValue
     
    +double maxProgressValue
     
    +BOOL buttonEnabled
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_status_controller.png b/documentation/api-reference/interface_s_u_status_controller.png new file mode 100644 index 0000000000000000000000000000000000000000..99274ec18cf2f6f6aa8dc982d118527e26104649 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^jX)g0!3-ohWuCnNQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;XLn;{G&b{4tRDr|QT>t6+{}ok& zJ3Z8wFP}NV$74ZO_pSrE^BrA6UMZwKbINa0D_{vPw&Ab!`d-98Q>owcOpeZ;$S^LJ zbZy7QqUmW{dmPjZH*aibF-(ka{`-0B=?-f*sfFC$f6u)SpYSCuYSJ5x-%bYGF0Eak z)>rbrC85*oVV&dMV=ofK928?yHy!i)e29~Mr%;O5m6Vh(;w)}2EgQSCj@=dJIkwz% zgVERRfqZYxnbsc^`2S7h&VL2fg7SmwR3_iq?;`B=-s%6;*$X&lHO%aN%i`iPm5*V4 z4Rb?~zWR-ASuI6PvI`^@&Rg)_N!Y{@gcuC2vG`s9qYw8vIy$^$Sr}UHvG`69m~+eK zUSGRxe+9!iHx7p6hiC2f_+Ak{aV~SVuulX-)_V@6lQWl9dITnw9*ammFRGFiVshJf zPLsdS@m&*MpS}6%+L4rvX&0?kt7L!pC^xQc^c7XG;AdgDGHG|hx%;9CQ@%YDu~UpF z`RmbnT9c)*HljIn*?qy5tToZ~^;|_eomXFf@XB&()(fQ*yLVrxPh~hZ3+Sf=ApybA aU;OrwUM3dOLK?uhWbkzLb6Mw<&;$TE6z5O? literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_system_profiler-members.html b/documentation/api-reference/interface_s_u_system_profiler-members.html new file mode 100644 index 0000000..109eaa0 --- /dev/null +++ b/documentation/api-reference/interface_s_u_system_profiler-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUSystemProfiler Member List
    +
    +
    + +

    This is the complete list of members for SUSystemProfiler, including all inherited members.

    + + +
    systemProfileArrayForHost: (defined in SUSystemProfiler)SUSystemProfilerstatic
    + + + + diff --git a/documentation/api-reference/interface_s_u_system_profiler.html b/documentation/api-reference/interface_s_u_system_profiler.html new file mode 100644 index 0000000..61a9789 --- /dev/null +++ b/documentation/api-reference/interface_s_u_system_profiler.html @@ -0,0 +1,97 @@ + + + + + + + +Sparkle: SUSystemProfiler Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUSystemProfiler Class Reference
    +
    +
    +
    +Inheritance diagram for SUSystemProfiler:
    +
    +
    + +
    + + + + +

    +Class Methods

    +(NSArray< NSDictionary< NSString *, NSString * > * > *) + systemProfileArrayForHost:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_system_profiler.png b/documentation/api-reference/interface_s_u_system_profiler.png new file mode 100644 index 0000000000000000000000000000000000000000..14dca2bae8575f17b719d31507a7a4b47b25aef4 GIT binary patch literal 529 zcmV+s0`C2ZP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004?Nkl~4xG+Kw^kNYKHrn3=5;CP}Nbagr3Ie+!ph z9@oQG=^_8f^G?&B$GgCl$d%xKNYbFUa3yjX)oS{FRj8%j<5m_ylFqt|%XRj+ltfO& z-y~_O>%FTHYB6JU&v_G#!pWhR@bP<^o!}U?Vb(#mg4p+ zR`Y48y3r+=vx?ul?zt8_hDxQB0-oWf&K&ow&8h4h-c{>Y-Qjuz-m*$RqJ_VU8$5Ow zciOxAxcOq%Js9q8BRgl#aP8&EnYT}s$YbXk7kbED;$n}~{Q&|9(#PY>%$Dg3pnE~J TzDd`V00000NkvXXu0mjfv`Pkr literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_touch_bar_button_group-members.html b/documentation/api-reference/interface_s_u_touch_bar_button_group-members.html new file mode 100644 index 0000000..754d9ee --- /dev/null +++ b/documentation/api-reference/interface_s_u_touch_bar_button_group-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUTouchBarButtonGroup Member List
    +
    +
    + +

    This is the complete list of members for SUTouchBarButtonGroup, including all inherited members.

    + + + +
    buttons (defined in SUTouchBarButtonGroup)SUTouchBarButtonGroup
    initByReferencingButtons: (defined in SUTouchBarButtonGroup)SUTouchBarButtonGroup
    + + + + diff --git a/documentation/api-reference/interface_s_u_touch_bar_button_group.html b/documentation/api-reference/interface_s_u_touch_bar_button_group.html new file mode 100644 index 0000000..1c2c0a9 --- /dev/null +++ b/documentation/api-reference/interface_s_u_touch_bar_button_group.html @@ -0,0 +1,104 @@ + + + + + + + +Sparkle: SUTouchBarButtonGroup Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUTouchBarButtonGroup Class Reference
    +
    +
    +
    +Inheritance diagram for SUTouchBarButtonGroup:
    +
    +
    + +
    + + + + +

    +Instance Methods

    +(instancetype) - initByReferencingButtons:
     
    + + + +

    +Properties

    +NSArray< NSButton * > * buttons
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_touch_bar_button_group.png b/documentation/api-reference/interface_s_u_touch_bar_button_group.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e8d0532113f7da5522d9ac69963d97fcb20b75 GIT binary patch literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^Gl4jOgBeKLrmBAdQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;r&HeOqBkg+zJh$em z>|DJ$=BQWD>gr8jBYn$M_I9lBn{?-E|A}o?J5#n6RLkx?`02{8b?42OSA|c0d-ZGJ zq*CU{*6K{6T_Fs@@zWK|i@Wp1H#xtJl-e&yQc{!){eLdh!IOL@C3zWncD?it^U^ftda(W_v%%73s=sT}TxU;v!)>N{Yfp;h zY=%HpNe3TKHi6(tj7O%VFc{+Ie%U`^YS5`Eix_-Xs4#bEo@7We+Egkdb~x?sbLIz2 z?%I5Mk#qmHW8dpD%A4lCh-lZe-qaYLEN^0ebja9TEd68=aXMd|C}@L z_nT>F<}SPcVpE#k$?8qroE6U3az8yzXV!Z literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_s_u_update_permission_response-members.html b/documentation/api-reference/interface_s_u_update_permission_response-members.html new file mode 100644 index 0000000..2864cf0 --- /dev/null +++ b/documentation/api-reference/interface_s_u_update_permission_response-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUUpdatePermissionResponse Member List
    +
    + + + + + diff --git a/documentation/api-reference/interface_s_u_update_permission_response.html b/documentation/api-reference/interface_s_u_update_permission_response.html new file mode 100644 index 0000000..cca0313 --- /dev/null +++ b/documentation/api-reference/interface_s_u_update_permission_response.html @@ -0,0 +1,157 @@ + + + + + + + +Sparkle: SUUpdatePermissionResponse Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUUpdatePermissionResponse Class Reference
    +
    +
    + +

    This class represents a response for permission to check updates. + More...

    + +

    #import <SUUpdatePermissionResponse.h>

    +
    +Inheritance diagram for SUUpdatePermissionResponse:
    +
    +
    + +
    + + + + + + + +

    +Instance Methods

    (instancetype) - initWithAutomaticUpdateChecks:sendSystemProfile:
     Initializes a new update permission response instance. More...
     
    +(instancetype) - NS_UNAVAILABLE
     
    + + + + + + + +

    +Properties

    +BOOL automaticUpdateChecks
     A read-only property indicating whether automatic update checks are allowed or not.
     
    +BOOL sendSystemProfile
     A read-only property indicating if system profile should be sent or not.
     
    +

    Detailed Description

    +

    This class represents a response for permission to check updates.

    +

    Method Documentation

    + +

    ◆ initWithAutomaticUpdateChecks:sendSystemProfile:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (instancetype) initWithAutomaticUpdateChecks: (BOOL) automaticUpdateChecks
    sendSystemProfile:(BOOL) sendSystemProfile 
    +
    + +

    Initializes a new update permission response instance.

    +
    Parameters
    + + + +
    automaticUpdateChecksFlag for whether to allow automatic update checks.
    sendSystemProfileFlag for if system profile information should be sent to the server hosting the appcast.
    +
    +
    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_update_permission_response.png b/documentation/api-reference/interface_s_u_update_permission_response.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f6923a16c3071748d6b260f521a0eccea53b1d GIT binary patch literal 1002 zcmeAS@N?(olHy`uVBq!ia0y~yV5|VL12~w0q{``e)j&!jz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opr_+PHn4KmqdAQ+`YNmzL9u-T0N2(_q1@t}n zS}Ht?9x!~o%q(~Nc#`ehGwh!?hp(@=f7R~e>wxJKRA0JZ(|y1EH+xabk2e*CvGN{4 z&9i@)h0KFsWX9>>o2eV*(!?|y#jf7Qd&l09#ozSr}6WEw^1CvRr1%WiuoZh!PrOO|t->&(OJmGquh7NqtVPx_*L{K^ki zquH{dS4#gp@80fu45(z?;p`V3@0VRk`^v7nE_GJu!`okGboKQAa4nL~nmH@CVwuY< zYw08TA@xgsWF39g67I|9S=D@3@;>KQ>3K_|c=l;Oo?eu}q!GS<#WC}Rw`z@@RhPDv zPX5|joV{n}w92RRnRS^@Wbco?rIIOMFMgl@>YLSb&pt@=+2*-d=znSmd&l%8^M4-D z{?<8t3BS-I)t4z}suVo;7q$KH-}CUdk==9^&szsHCG|boKTloiHfbAB2_j$>j(AUE zF8`>x)I`p$#!Iu8{lM}aj6G*oFmrrlcwW4lH?QsrV@pND=bi1g+kOVJ3p`?s={PES zpizMTfkOv-fx;1H3!s<`P&F`~7}%X`8kiO3z|sfamhJB4bzle(jAOtiPe40Ry28~< zlb7SbjULMuH0yRu_)+rz>E+*Q?{_zwx)+-_h@R~Y-7Rm;yyuzKqv(gxNB1W`>^&zg zeE%;)aL~Q&=Q%%GXwQC>ckZtH>h#k!#V>PbpXHA&HT(W*+SRS6r_S2<E5n6 zKk|C>kNB_ZGTCkN{fPO}WxKWK&R%~ZOlPx1e0^bU>YD8)UyfXVdGBQM=dX1?%zStM zcl^^P#lK`0%ld!o#XItP + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SUUpdateValidator Member List
    +
    +
    + +

    This is the complete list of members for SUUpdateValidator, including all inherited members.

    + + + + +
    initWithDownloadPath:signatures:host: (defined in SUUpdateValidator)SUUpdateValidator
    validateDownloadPathWithError: (defined in SUUpdateValidator)SUUpdateValidator
    validateWithUpdateDirectory:error: (defined in SUUpdateValidator)SUUpdateValidator
    + + + + diff --git a/documentation/api-reference/interface_s_u_update_validator.html b/documentation/api-reference/interface_s_u_update_validator.html new file mode 100644 index 0000000..9706628 --- /dev/null +++ b/documentation/api-reference/interface_s_u_update_validator.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: SUUpdateValidator Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    SUUpdateValidator Class Reference
    +
    +
    +
    +Inheritance diagram for SUUpdateValidator:
    +
    +
    + +
    + + + + + + + + +

    +Instance Methods

    +(instancetype) - initWithDownloadPath:signatures:host:
     
    +(BOOL) - validateDownloadPathWithError:
     
    +(BOOL) - validateWithUpdateDirectory:error:
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_s_u_update_validator.png b/documentation/api-reference/interface_s_u_update_validator.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1924b5922f0014c2100acfbb9c98470dc7af50 GIT binary patch literal 517 zcmeAS@N?(olHy`uVBq!ia0vp^Wk4Lj!3-pS_Y`sfDTx4|5ZC|z{{xvX-h3_XKQsZz z0^DV{ElAr*{o=ia^aN`c2UJnzo?|HtNw zW;8a19Y0{HYB*XUacP-th1mx;bh!O_`?BMDdfWlE zLw;Jko~yoy<|wJ0S3dSTY|-)`+ci~PC*7)ImwtS1_%z;x-8 zT25)@bJ;P;&eJOsy02xq{9dwERrLB*@eKZ@Z&L2x`gZ?zn)>p4lb3AU_i1X?|Bn9> zzYlW0miL%6=WB6<@#cq2KSInKKF(_1dv{sE^MvRY)O@A$gsaHQRX){reb?GcfiT#%G;oBJ$rc8Oy2AA(#mefEcude0^^Lq)78&qol`;+ E0Kp*h + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    ShowInstallerProgress Member List
    +
    +
    + +

    This is the complete list of members for ShowInstallerProgress, including all inherited members.

    + + + +
    installerProgressShouldDisplayWithHost: (defined in <InstallerProgressDelegate>)<InstallerProgressDelegate>
    installerProgressShouldStop (defined in <InstallerProgressDelegate>)<InstallerProgressDelegate>
    + + + + diff --git a/documentation/api-reference/interface_show_installer_progress.html b/documentation/api-reference/interface_show_installer_progress.html new file mode 100644 index 0000000..8c4ef91 --- /dev/null +++ b/documentation/api-reference/interface_show_installer_progress.html @@ -0,0 +1,102 @@ + + + + + + + +Sparkle: ShowInstallerProgress Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    ShowInstallerProgress Class Reference
    +
    +
    +
    +Inheritance diagram for ShowInstallerProgress:
    +
    +
    + + +<InstallerProgressDelegate> + +
    + + + + + + + +

    +Additional Inherited Members

    - Instance Methods inherited from <InstallerProgressDelegate>
    +(void) - installerProgressShouldDisplayWithHost:
     
    +(void) - installerProgressShouldStop
     
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/interface_show_installer_progress.png b/documentation/api-reference/interface_show_installer_progress.png new file mode 100644 index 0000000000000000000000000000000000000000..58adadb2e8e3feaa2b1866ebd1f2207d3174899c GIT binary patch literal 1427 zcmeAS@N?(olHy`uVBq!ia0y~yU`znAJ2;qu=BDn`uS#xDSkeeob$(LU=}m6kw^LVC=o!{pPH~vN z#Qt-1)B0Um8>X>bWLbY}^PjU1Q;+Xg+2PNp`jbzvMq$UZ3D-sb_dQU`D82r)-T7el z-P>V%r;GegVOif~e)OF}lleheK^;&2m4P>v(?u`Qnjc#H4L43GoN#$6B*^Pf`YQWjGH`dg8$`O~oDLAEVU|rUcDm zZg}v^nwf>ct|fuN{@il|o(FCmY#)+8O1ClY;W)^!t|gAa-N~RqSyAG^L;;=$9vo~1 zDlE(vLQRZ7(-?qZL8mLey?b8eeJqcA?tAd$nO|$?>aR`w@TuYP*R-^9iRE`@)!q0% z@4=%@R(H)*G9UaGukoKa^X9z5Q}!Y;G1E+=?&vumE$)1IdLhd$U}#l0T^35u-V&>< z_rB|aOygZg*fje-?=OcT`|WXiE2{cemdeKb!cV=&fVdiR9VW z3O0xFfBt9;i+^2D{f{mz^0kM3Uj;X{&oW)sv2knvo3p#?;|or1yPD~J>c0v5`{3oO z*|*~!gndvuH2LNR*`B|PWnyZl8BLe=PT0;gBi<#PSM}w287?~?!JTvBy=&q>yB{ol zQ1$f2)oI%IYo}*!6TUwC>FrsOx9wI?-p^Pe+6c+Sa9UQ*m1@1^O> zbfD(U=No7V{8MUE@y&gPHf7sCFE!UTiS9PNK_13>ztX?lz{f^OXpPuU#=g{4va}sWNY|*WLr?jKmz4G6U()Wvh z?o$dc{;;tnZ^^n%;&+}u_*<2HJ+?buz2eG@gd15gVH0(2qI=hr?@-+l^E+5`k$%x% zMfI!aE}j*+XuVgvqGH;855eP2{4%yD4sK`7SF&;3&-muYE~V|J1=hXSlD59_s_4I7 zuD>>|$?Dp!It^C_i_h1s+Y=hpZ$67_INp-bkbW|g@j)b(91SfF7}WnU&-(e{$Cdd> Re}E+@gQu&X%Q~loCIFa>lOzBD literal 0 HcmV?d00001 diff --git a/documentation/api-reference/interface_termination_listener-members.html b/documentation/api-reference/interface_termination_listener-members.html new file mode 100644 index 0000000..d644770 --- /dev/null +++ b/documentation/api-reference/interface_termination_listener-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    TerminationListener Member List
    +
    +
    + +

    This is the complete list of members for TerminationListener, including all inherited members.

    + + + + +
    initWithProcessIdentifier: (defined in TerminationListener)TerminationListener
    startListeningWithCompletion: (defined in TerminationListener)TerminationListener
    terminated (defined in TerminationListener)TerminationListener
    + + + + diff --git a/documentation/api-reference/interface_termination_listener.html b/documentation/api-reference/interface_termination_listener.html new file mode 100644 index 0000000..78c86e5 --- /dev/null +++ b/documentation/api-reference/interface_termination_listener.html @@ -0,0 +1,107 @@ + + + + + + + +Sparkle: TerminationListener Class Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    TerminationListener Class Reference
    +
    +
    +
    +Inheritance diagram for TerminationListener:
    +
    +
    + +
    + + + + + + +

    +Instance Methods

    +(instancetype) - initWithProcessIdentifier:
     
    +(void) - startListeningWithCompletion:
     
    + + + +

    +Properties

    +BOOL terminated
     
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/documentation/api-reference/interface_termination_listener.png b/documentation/api-reference/interface_termination_listener.png new file mode 100644 index 0000000000000000000000000000000000000000..27b30573fcb89bceb61113b8ded171119e5df780 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^RX`lT!3-oHZkX5xq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgXL!0ehEy=VoqN0JumX=uf83`3|Bv?` zR^`}`oi60D{7gkN{-35t?%pf7aJDt(7o?*sqx&s(sR?g*LcqR z=~l94&z{dxvU9#`ZrL2Y{1x+Q?@8Bx_G?dnBKz;>?tA~&?dJ2Zo3g}q@5}W!wLSmY z{8}pW+J3qU@0I!Z)Aj>fEZdHlbM@l&brMz rqi?%2_grye<^kiFEi-S5{AHLH+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/documentation/api-reference/js/jazzy.js b/documentation/api-reference/js/jazzy.js new file mode 100755 index 0000000..1e55d6e --- /dev/null +++ b/documentation/api-reference/js/jazzy.js @@ -0,0 +1,70 @@ +window.jazzy = {'docset': false} +if (typeof window.dash != 'undefined') { + document.documentElement.className += ' dash' + window.jazzy.docset = true +} +if (navigator.userAgent.match(/xcode/i)) { + document.documentElement.className += ' xcode' + window.jazzy.docset = true +} + +function toggleItem($link, $content) { + var animationDuration = 300; + $link.toggleClass('token-open'); + $content.slideToggle(animationDuration); +} + +function itemLinkToContent($link) { + return $link.parent().parent().next(); +} + +// On doc load + hash-change, open any targetted item +function openCurrentItemIfClosed() { + if (window.jazzy.docset) { + return; + } + var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); + $content = itemLinkToContent($link); + if ($content.is(':hidden')) { + toggleItem($link, $content); + } +} + +$(openCurrentItemIfClosed); +$(window).on('hashchange', openCurrentItemIfClosed); + +// On item link ('token') click, toggle its discussion +$('.token').on('click', function(event) { + if (window.jazzy.docset) { + return; + } + var $link = $(this); + toggleItem($link, itemLinkToContent($link)); + + // Keeps the document from jumping to the hash. + var href = $link.attr('href'); + if (history.pushState) { + history.pushState({}, '', href); + } else { + location.hash = href; + } + event.preventDefault(); +}); + +// Clicks on links to the current, closed, item need to open the item +$("a:not('.token')").on('click', function() { + if (location == this.href) { + openCurrentItemIfClosed(); + } +}); + +// KaTeX rendering +if ("katex" in window) { + $($('.math').each( (_, element) => { + katex.render(element.textContent, element, { + displayMode: $(element).hasClass('m-block'), + throwOnError: false, + trust: true + }); + })) +} diff --git a/documentation/api-reference/js/jazzy.search.js b/documentation/api-reference/js/jazzy.search.js new file mode 100644 index 0000000..e3d1ab9 --- /dev/null +++ b/documentation/api-reference/js/jazzy.search.js @@ -0,0 +1,70 @@ +$(function(){ + var $typeahead = $('[data-typeahead]'); + var $form = $typeahead.parents('form'); + var searchURL = $form.attr('action'); + + function displayTemplate(result) { + return result.name; + } + + function suggestionTemplate(result) { + var t = '
    '; + t += '' + result.name + ''; + if (result.parent_name) { + t += '' + result.parent_name + ''; + } + t += '
    '; + return t; + } + + $typeahead.one('focus', function() { + $form.addClass('loading'); + + $.getJSON(searchURL).then(function(searchData) { + const searchIndex = lunr(function() { + this.ref('url'); + this.field('name'); + this.field('abstract'); + for (const [url, doc] of Object.entries(searchData)) { + this.add({url: url, name: doc.name, abstract: doc.abstract}); + } + }); + + $typeahead.typeahead( + { + highlight: true, + minLength: 3, + autoselect: true + }, + { + limit: 10, + display: displayTemplate, + templates: { suggestion: suggestionTemplate }, + source: function(query, sync) { + const lcSearch = query.toLowerCase(); + const results = searchIndex.query(function(q) { + q.term(lcSearch, { boost: 100 }); + q.term(lcSearch, { + boost: 10, + wildcard: lunr.Query.wildcard.TRAILING + }); + }).map(function(result) { + var doc = searchData[result.ref]; + doc.url = result.ref; + return doc; + }); + sync(results); + } + } + ); + $form.removeClass('loading'); + $typeahead.trigger('focus'); + }); + }); + + var baseURL = searchURL.slice(0, -"search.json".length); + + $typeahead.on('typeahead:select', function(e, result) { + window.location = baseURL + result.url; + }); +}); diff --git a/documentation/api-reference/js/jquery.min.js b/documentation/api-reference/js/jquery.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/documentation/api-reference/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/documentation/api-reference/js/typeahead.jquery.js b/documentation/api-reference/js/typeahead.jquery.js new file mode 100644 index 0000000..3a2d2ab --- /dev/null +++ b/documentation/api-reference/js/typeahead.jquery.js @@ -0,0 +1,1694 @@ +/*! + * typeahead.js 1.3.1 + * https://github.com/corejavascript/typeahead.js + * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT + */ + + +(function(root, factory) { + if (typeof define === "function" && define.amd) { + define([ "jquery" ], function(a0) { + return factory(a0); + }); + } else if (typeof module === "object" && module.exports) { + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +})(this, function($) { + var _ = function() { + "use strict"; + return { + isMsie: function() { + return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; + }, + isBlankString: function(str) { + return !str || /^\s*$/.test(str); + }, + escapeRegExChars: function(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + }, + isString: function(obj) { + return typeof obj === "string"; + }, + isNumber: function(obj) { + return typeof obj === "number"; + }, + isArray: $.isArray, + isFunction: $.isFunction, + isObject: $.isPlainObject, + isUndefined: function(obj) { + return typeof obj === "undefined"; + }, + isElement: function(obj) { + return !!(obj && obj.nodeType === 1); + }, + isJQuery: function(obj) { + return obj instanceof $; + }, + toStr: function toStr(s) { + return _.isUndefined(s) || s === null ? "" : s + ""; + }, + bind: $.proxy, + each: function(collection, cb) { + $.each(collection, reverseArgs); + function reverseArgs(index, value) { + return cb(value, index); + } + }, + map: $.map, + filter: $.grep, + every: function(obj, test) { + var result = true; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (!(result = test.call(null, val, key, obj))) { + return false; + } + }); + return !!result; + }, + some: function(obj, test) { + var result = false; + if (!obj) { + return result; + } + $.each(obj, function(key, val) { + if (result = test.call(null, val, key, obj)) { + return false; + } + }); + return !!result; + }, + mixin: $.extend, + identity: function(x) { + return x; + }, + clone: function(obj) { + return $.extend(true, {}, obj); + }, + getIdGenerator: function() { + var counter = 0; + return function() { + return counter++; + }; + }, + templatify: function templatify(obj) { + return $.isFunction(obj) ? obj : template; + function template() { + return String(obj); + } + }, + defer: function(fn) { + setTimeout(fn, 0); + }, + debounce: function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments, later, callNow; + later = function() { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + throttle: function(func, wait) { + var context, args, timeout, result, previous, later; + previous = 0; + later = function() { + previous = new Date(); + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date(), remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }, + stringify: function(val) { + return _.isString(val) ? val : JSON.stringify(val); + }, + guid: function() { + function _p8(s) { + var p = (Math.random().toString(16) + "000000000").substr(2, 8); + return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; + } + return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); + }, + noop: function() {} + }; + }(); + var WWW = function() { + "use strict"; + var defaultClassNames = { + wrapper: "twitter-typeahead", + input: "tt-input", + hint: "tt-hint", + menu: "tt-menu", + dataset: "tt-dataset", + suggestion: "tt-suggestion", + selectable: "tt-selectable", + empty: "tt-empty", + open: "tt-open", + cursor: "tt-cursor", + highlight: "tt-highlight" + }; + return build; + function build(o) { + var www, classes; + classes = _.mixin({}, defaultClassNames, o); + www = { + css: buildCss(), + classes: classes, + html: buildHtml(classes), + selectors: buildSelectors(classes) + }; + return { + css: www.css, + html: www.html, + classes: www.classes, + selectors: www.selectors, + mixin: function(o) { + _.mixin(o, www); + } + }; + } + function buildHtml(c) { + return { + wrapper: '', + menu: '
    ' + }; + } + function buildSelectors(classes) { + var selectors = {}; + _.each(classes, function(v, k) { + selectors[k] = "." + v; + }); + return selectors; + } + function buildCss() { + var css = { + wrapper: { + position: "relative", + display: "inline-block" + }, + hint: { + position: "absolute", + top: "0", + left: "0", + borderColor: "transparent", + boxShadow: "none", + opacity: "1" + }, + input: { + position: "relative", + verticalAlign: "top", + backgroundColor: "transparent" + }, + inputWithNoHint: { + position: "relative", + verticalAlign: "top" + }, + menu: { + position: "absolute", + top: "100%", + left: "0", + zIndex: "100", + display: "none" + }, + ltr: { + left: "0", + right: "auto" + }, + rtl: { + left: "auto", + right: " 0" + } + }; + if (_.isMsie()) { + _.mixin(css.input, { + backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" + }); + } + return css; + } + }(); + var EventBus = function() { + "use strict"; + var namespace, deprecationMap; + namespace = "typeahead:"; + deprecationMap = { + render: "rendered", + cursorchange: "cursorchanged", + select: "selected", + autocomplete: "autocompleted" + }; + function EventBus(o) { + if (!o || !o.el) { + $.error("EventBus initialized without el"); + } + this.$el = $(o.el); + } + _.mixin(EventBus.prototype, { + _trigger: function(type, args) { + var $e = $.Event(namespace + type); + this.$el.trigger.call(this.$el, $e, args || []); + return $e; + }, + before: function(type) { + var args, $e; + args = [].slice.call(arguments, 1); + $e = this._trigger("before" + type, args); + return $e.isDefaultPrevented(); + }, + trigger: function(type) { + var deprecatedType; + this._trigger(type, [].slice.call(arguments, 1)); + if (deprecatedType = deprecationMap[type]) { + this._trigger(deprecatedType, [].slice.call(arguments, 1)); + } + } + }); + return EventBus; + }(); + var EventEmitter = function() { + "use strict"; + var splitter = /\s+/, nextTick = getNextTick(); + return { + onSync: onSync, + onAsync: onAsync, + off: off, + trigger: trigger + }; + function on(method, types, cb, context) { + var type; + if (!cb) { + return this; + } + types = types.split(splitter); + cb = context ? bindContext(cb, context) : cb; + this._callbacks = this._callbacks || {}; + while (type = types.shift()) { + this._callbacks[type] = this._callbacks[type] || { + sync: [], + async: [] + }; + this._callbacks[type][method].push(cb); + } + return this; + } + function onAsync(types, cb, context) { + return on.call(this, "async", types, cb, context); + } + function onSync(types, cb, context) { + return on.call(this, "sync", types, cb, context); + } + function off(types) { + var type; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + while (type = types.shift()) { + delete this._callbacks[type]; + } + return this; + } + function trigger(types) { + var type, callbacks, args, syncFlush, asyncFlush; + if (!this._callbacks) { + return this; + } + types = types.split(splitter); + args = [].slice.call(arguments, 1); + while ((type = types.shift()) && (callbacks = this._callbacks[type])) { + syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); + asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); + syncFlush() && nextTick(asyncFlush); + } + return this; + } + function getFlush(callbacks, context, args) { + return flush; + function flush() { + var cancelled; + for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { + cancelled = callbacks[i].apply(context, args) === false; + } + return !cancelled; + } + } + function getNextTick() { + var nextTickFn; + if (window.setImmediate) { + nextTickFn = function nextTickSetImmediate(fn) { + setImmediate(function() { + fn(); + }); + }; + } else { + nextTickFn = function nextTickSetTimeout(fn) { + setTimeout(function() { + fn(); + }, 0); + }; + } + return nextTickFn; + } + function bindContext(fn, context) { + return fn.bind ? fn.bind(context) : function() { + fn.apply(context, [].slice.call(arguments, 0)); + }; + } + }(); + var highlight = function(doc) { + "use strict"; + var defaults = { + node: null, + pattern: null, + tagName: "strong", + className: null, + wordsOnly: false, + caseSensitive: false, + diacriticInsensitive: false + }; + var accented = { + A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", + B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", + C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", + D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", + E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", + F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", + G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", + H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", + I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", + J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", + K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", + L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", + M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", + N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", + O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", + P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", + Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", + R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", + S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", + T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", + U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", + V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", + W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", + X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", + Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", + Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" + }; + return function hightlight(o) { + var regex; + o = _.mixin({}, defaults, o); + if (!o.node || !o.pattern) { + return; + } + o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; + regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); + traverse(o.node, hightlightTextNode); + function hightlightTextNode(textNode) { + var match, patternNode, wrapperNode; + if (match = regex.exec(textNode.data)) { + wrapperNode = doc.createElement(o.tagName); + o.className && (wrapperNode.className = o.className); + patternNode = textNode.splitText(match.index); + patternNode.splitText(match[0].length); + wrapperNode.appendChild(patternNode.cloneNode(true)); + textNode.parentNode.replaceChild(wrapperNode, patternNode); + } + return !!match; + } + function traverse(el, hightlightTextNode) { + var childNode, TEXT_NODE_TYPE = 3; + for (var i = 0; i < el.childNodes.length; i++) { + childNode = el.childNodes[i]; + if (childNode.nodeType === TEXT_NODE_TYPE) { + i += hightlightTextNode(childNode) ? 1 : 0; + } else { + traverse(childNode, hightlightTextNode); + } + } + } + }; + function accent_replacer(chr) { + return accented[chr.toUpperCase()] || chr; + } + function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { + var escapedPatterns = [], regexStr; + for (var i = 0, len = patterns.length; i < len; i++) { + var escapedWord = _.escapeRegExChars(patterns[i]); + if (diacriticInsensitive) { + escapedWord = escapedWord.replace(/\S/g, accent_replacer); + } + escapedPatterns.push(escapedWord); + } + regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; + return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); + } + }(window.document); + var Input = function() { + "use strict"; + var specialKeyCodeMap; + specialKeyCodeMap = { + 9: "tab", + 27: "esc", + 37: "left", + 39: "right", + 13: "enter", + 38: "up", + 40: "down" + }; + function Input(o, www) { + var id; + o = o || {}; + if (!o.input) { + $.error("input is missing"); + } + www.mixin(this); + this.$hint = $(o.hint); + this.$input = $(o.input); + this.$menu = $(o.menu); + id = this.$input.attr("id") || _.guid(); + this.$menu.attr("id", id + "_listbox"); + this.$hint.attr({ + "aria-hidden": true + }); + this.$input.attr({ + "aria-owns": id + "_listbox", + role: "combobox", + "aria-autocomplete": "list", + "aria-expanded": false + }); + this.query = this.$input.val(); + this.queryWhenFocused = this.hasFocus() ? this.query : null; + this.$overflowHelper = buildOverflowHelper(this.$input); + this._checkLanguageDirection(); + if (this.$hint.length === 0) { + this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; + } + this.onSync("cursorchange", this._updateDescendent); + } + Input.normalizeQuery = function(str) { + return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); + }; + _.mixin(Input.prototype, EventEmitter, { + _onBlur: function onBlur() { + this.resetInputValue(); + this.trigger("blurred"); + }, + _onFocus: function onFocus() { + this.queryWhenFocused = this.query; + this.trigger("focused"); + }, + _onKeydown: function onKeydown($e) { + var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; + this._managePreventDefault(keyName, $e); + if (keyName && this._shouldTrigger(keyName, $e)) { + this.trigger(keyName + "Keyed", $e); + } + }, + _onInput: function onInput() { + this._setQuery(this.getInputValue()); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + _managePreventDefault: function managePreventDefault(keyName, $e) { + var preventDefault; + switch (keyName) { + case "up": + case "down": + preventDefault = !withModifier($e); + break; + + default: + preventDefault = false; + } + preventDefault && $e.preventDefault(); + }, + _shouldTrigger: function shouldTrigger(keyName, $e) { + var trigger; + switch (keyName) { + case "tab": + trigger = !withModifier($e); + break; + + default: + trigger = true; + } + return trigger; + }, + _checkLanguageDirection: function checkLanguageDirection() { + var dir = (this.$input.css("direction") || "ltr").toLowerCase(); + if (this.dir !== dir) { + this.dir = dir; + this.$hint.attr("dir", dir); + this.trigger("langDirChanged", dir); + } + }, + _setQuery: function setQuery(val, silent) { + var areEquivalent, hasDifferentWhitespace; + areEquivalent = areQueriesEquivalent(val, this.query); + hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; + this.query = val; + if (!silent && !areEquivalent) { + this.trigger("queryChanged", this.query); + } else if (!silent && hasDifferentWhitespace) { + this.trigger("whitespaceChanged", this.query); + } + }, + _updateDescendent: function updateDescendent(event, id) { + this.$input.attr("aria-activedescendant", id); + }, + bind: function() { + var that = this, onBlur, onFocus, onKeydown, onInput; + onBlur = _.bind(this._onBlur, this); + onFocus = _.bind(this._onFocus, this); + onKeydown = _.bind(this._onKeydown, this); + onInput = _.bind(this._onInput, this); + this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); + if (!_.isMsie() || _.isMsie() > 9) { + this.$input.on("input.tt", onInput); + } else { + this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { + if (specialKeyCodeMap[$e.which || $e.keyCode]) { + return; + } + _.defer(_.bind(that._onInput, that, $e)); + }); + } + return this; + }, + focus: function focus() { + this.$input.focus(); + }, + blur: function blur() { + this.$input.blur(); + }, + getLangDir: function getLangDir() { + return this.dir; + }, + getQuery: function getQuery() { + return this.query || ""; + }, + setQuery: function setQuery(val, silent) { + this.setInputValue(val); + this._setQuery(val, silent); + }, + hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { + return this.query !== this.queryWhenFocused; + }, + getInputValue: function getInputValue() { + return this.$input.val(); + }, + setInputValue: function setInputValue(value) { + this.$input.val(value); + this.clearHintIfInvalid(); + this._checkLanguageDirection(); + }, + resetInputValue: function resetInputValue() { + this.setInputValue(this.query); + }, + getHint: function getHint() { + return this.$hint.val(); + }, + setHint: function setHint(value) { + this.$hint.val(value); + }, + clearHint: function clearHint() { + this.setHint(""); + }, + clearHintIfInvalid: function clearHintIfInvalid() { + var val, hint, valIsPrefixOfHint, isValid; + val = this.getInputValue(); + hint = this.getHint(); + valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; + isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); + !isValid && this.clearHint(); + }, + hasFocus: function hasFocus() { + return this.$input.is(":focus"); + }, + hasOverflow: function hasOverflow() { + var constraint = this.$input.width() - 2; + this.$overflowHelper.text(this.getInputValue()); + return this.$overflowHelper.width() >= constraint; + }, + isCursorAtEnd: function() { + var valueLength, selectionStart, range; + valueLength = this.$input.val().length; + selectionStart = this.$input[0].selectionStart; + if (_.isNumber(selectionStart)) { + return selectionStart === valueLength; + } else if (document.selection) { + range = document.selection.createRange(); + range.moveStart("character", -valueLength); + return valueLength === range.text.length; + } + return true; + }, + destroy: function destroy() { + this.$hint.off(".tt"); + this.$input.off(".tt"); + this.$overflowHelper.remove(); + this.$hint = this.$input = this.$overflowHelper = $("
    "); + }, + setAriaExpanded: function setAriaExpanded(value) { + this.$input.attr("aria-expanded", value); + } + }); + return Input; + function buildOverflowHelper($input) { + return $('').css({ + position: "absolute", + visibility: "hidden", + whiteSpace: "pre", + fontFamily: $input.css("font-family"), + fontSize: $input.css("font-size"), + fontStyle: $input.css("font-style"), + fontVariant: $input.css("font-variant"), + fontWeight: $input.css("font-weight"), + wordSpacing: $input.css("word-spacing"), + letterSpacing: $input.css("letter-spacing"), + textIndent: $input.css("text-indent"), + textRendering: $input.css("text-rendering"), + textTransform: $input.css("text-transform") + }).insertAfter($input); + } + function areQueriesEquivalent(a, b) { + return Input.normalizeQuery(a) === Input.normalizeQuery(b); + } + function withModifier($e) { + return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; + } + }(); + var Dataset = function() { + "use strict"; + var keys, nameGenerator; + keys = { + dataset: "tt-selectable-dataset", + val: "tt-selectable-display", + obj: "tt-selectable-object" + }; + nameGenerator = _.getIdGenerator(); + function Dataset(o, www) { + o = o || {}; + o.templates = o.templates || {}; + o.templates.notFound = o.templates.notFound || o.templates.empty; + if (!o.source) { + $.error("missing source"); + } + if (!o.node) { + $.error("missing node"); + } + if (o.name && !isValidName(o.name)) { + $.error("invalid dataset name: " + o.name); + } + www.mixin(this); + this.highlight = !!o.highlight; + this.name = _.toStr(o.name || nameGenerator()); + this.limit = o.limit || 5; + this.displayFn = getDisplayFn(o.display || o.displayKey); + this.templates = getTemplates(o.templates, this.displayFn); + this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; + this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; + this._resetLastSuggestion(); + this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); + } + Dataset.extractData = function extractData(el) { + var $el = $(el); + if ($el.data(keys.obj)) { + return { + dataset: $el.data(keys.dataset) || "", + val: $el.data(keys.val) || "", + obj: $el.data(keys.obj) || null + }; + } + return null; + }; + _.mixin(Dataset.prototype, EventEmitter, { + _overwrite: function overwrite(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (this.async && this.templates.pending) { + this._renderPending(query); + } else if (!this.async && this.templates.notFound) { + this._renderNotFound(query); + } else { + this._empty(); + } + this.trigger("rendered", suggestions, false, this.name); + }, + _append: function append(query, suggestions) { + suggestions = suggestions || []; + if (suggestions.length && this.$lastSuggestion.length) { + this._appendSuggestions(query, suggestions); + } else if (suggestions.length) { + this._renderSuggestions(query, suggestions); + } else if (!this.$lastSuggestion.length && this.templates.notFound) { + this._renderNotFound(query); + } + this.trigger("rendered", suggestions, true, this.name); + }, + _renderSuggestions: function renderSuggestions(query, suggestions) { + var $fragment; + $fragment = this._getSuggestionsFragment(query, suggestions); + this.$lastSuggestion = $fragment.children().last(); + this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); + }, + _appendSuggestions: function appendSuggestions(query, suggestions) { + var $fragment, $lastSuggestion; + $fragment = this._getSuggestionsFragment(query, suggestions); + $lastSuggestion = $fragment.children().last(); + this.$lastSuggestion.after($fragment); + this.$lastSuggestion = $lastSuggestion; + }, + _renderPending: function renderPending(query) { + var template = this.templates.pending; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _renderNotFound: function renderNotFound(query) { + var template = this.templates.notFound; + this._resetLastSuggestion(); + template && this.$el.html(template({ + query: query, + dataset: this.name + })); + }, + _empty: function empty() { + this.$el.empty(); + this._resetLastSuggestion(); + }, + _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { + var that = this, fragment; + fragment = document.createDocumentFragment(); + _.each(suggestions, function getSuggestionNode(suggestion) { + var $el, context; + context = that._injectQuery(query, suggestion); + $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); + fragment.appendChild($el[0]); + }); + this.highlight && highlight({ + className: this.classes.highlight, + node: fragment, + pattern: query + }); + return $(fragment); + }, + _getFooter: function getFooter(query, suggestions) { + return this.templates.footer ? this.templates.footer({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _getHeader: function getHeader(query, suggestions) { + return this.templates.header ? this.templates.header({ + query: query, + suggestions: suggestions, + dataset: this.name + }) : null; + }, + _resetLastSuggestion: function resetLastSuggestion() { + this.$lastSuggestion = $(); + }, + _injectQuery: function injectQuery(query, obj) { + return _.isObject(obj) ? _.mixin({ + _query: query + }, obj) : obj; + }, + update: function update(query) { + var that = this, canceled = false, syncCalled = false, rendered = 0; + this.cancel(); + this.cancel = function cancel() { + canceled = true; + that.cancel = $.noop; + that.async && that.trigger("asyncCanceled", query, that.name); + }; + this.source(query, sync, async); + !syncCalled && sync([]); + function sync(suggestions) { + if (syncCalled) { + return; + } + syncCalled = true; + suggestions = (suggestions || []).slice(0, that.limit); + rendered = suggestions.length; + that._overwrite(query, suggestions); + if (rendered < that.limit && that.async) { + that.trigger("asyncRequested", query, that.name); + } + } + function async(suggestions) { + suggestions = suggestions || []; + if (!canceled && rendered < that.limit) { + that.cancel = $.noop; + var idx = Math.abs(rendered - that.limit); + rendered += idx; + that._append(query, suggestions.slice(0, idx)); + that.async && that.trigger("asyncReceived", query, that.name); + } + } + }, + cancel: $.noop, + clear: function clear() { + this._empty(); + this.cancel(); + this.trigger("cleared"); + }, + isEmpty: function isEmpty() { + return this.$el.is(":empty"); + }, + destroy: function destroy() { + this.$el = $("
    "); + } + }); + return Dataset; + function getDisplayFn(display) { + display = display || _.stringify; + return _.isFunction(display) ? display : displayFn; + function displayFn(obj) { + return obj[display]; + } + } + function getTemplates(templates, displayFn) { + return { + notFound: templates.notFound && _.templatify(templates.notFound), + pending: templates.pending && _.templatify(templates.pending), + header: templates.header && _.templatify(templates.header), + footer: templates.footer && _.templatify(templates.footer), + suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate + }; + function userSuggestionTemplate(context) { + var template = templates.suggestion; + return $(template(context)).attr("id", _.guid()); + } + function suggestionTemplate(context) { + return $('
    ').attr("id", _.guid()).text(displayFn(context)); + } + } + function isValidName(str) { + return /^[_a-zA-Z0-9-]+$/.test(str); + } + }(); + var Menu = function() { + "use strict"; + function Menu(o, www) { + var that = this; + o = o || {}; + if (!o.node) { + $.error("node is required"); + } + www.mixin(this); + this.$node = $(o.node); + this.query = null; + this.datasets = _.map(o.datasets, initializeDataset); + function initializeDataset(oDataset) { + var node = that.$node.find(oDataset.node).first(); + oDataset.node = node.length ? node : $("
    ").appendTo(that.$node); + return new Dataset(oDataset, www); + } + } + _.mixin(Menu.prototype, EventEmitter, { + _onSelectableClick: function onSelectableClick($e) { + this.trigger("selectableClicked", $($e.currentTarget)); + }, + _onRendered: function onRendered(type, dataset, suggestions, async) { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetRendered", dataset, suggestions, async); + }, + _onCleared: function onCleared() { + this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); + this.trigger("datasetCleared"); + }, + _propagate: function propagate() { + this.trigger.apply(this, arguments); + }, + _allDatasetsEmpty: function allDatasetsEmpty() { + return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { + var isEmpty = dataset.isEmpty(); + this.$node.attr("aria-expanded", !isEmpty); + return isEmpty; + }, this)); + }, + _getSelectables: function getSelectables() { + return this.$node.find(this.selectors.selectable); + }, + _removeCursor: function _removeCursor() { + var $selectable = this.getActiveSelectable(); + $selectable && $selectable.removeClass(this.classes.cursor); + }, + _ensureVisible: function ensureVisible($el) { + var elTop, elBottom, nodeScrollTop, nodeHeight; + elTop = $el.position().top; + elBottom = elTop + $el.outerHeight(true); + nodeScrollTop = this.$node.scrollTop(); + nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); + if (elTop < 0) { + this.$node.scrollTop(nodeScrollTop + elTop); + } else if (nodeHeight < elBottom) { + this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); + } + }, + bind: function() { + var that = this, onSelectableClick; + onSelectableClick = _.bind(this._onSelectableClick, this); + this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); + this.$node.on("mouseover", this.selectors.selectable, function() { + that.setCursor($(this)); + }); + this.$node.on("mouseleave", function() { + that._removeCursor(); + }); + _.each(this.datasets, function(dataset) { + dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); + }); + return this; + }, + isOpen: function isOpen() { + return this.$node.hasClass(this.classes.open); + }, + open: function open() { + this.$node.scrollTop(0); + this.$node.addClass(this.classes.open); + }, + close: function close() { + this.$node.attr("aria-expanded", false); + this.$node.removeClass(this.classes.open); + this._removeCursor(); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.attr("dir", dir); + }, + selectableRelativeToCursor: function selectableRelativeToCursor(delta) { + var $selectables, $oldCursor, oldIndex, newIndex; + $oldCursor = this.getActiveSelectable(); + $selectables = this._getSelectables(); + oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; + newIndex = oldIndex + delta; + newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; + newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; + return newIndex === -1 ? null : $selectables.eq(newIndex); + }, + setCursor: function setCursor($selectable) { + this._removeCursor(); + if ($selectable = $selectable && $selectable.first()) { + $selectable.addClass(this.classes.cursor); + this._ensureVisible($selectable); + } + }, + getSelectableData: function getSelectableData($el) { + return $el && $el.length ? Dataset.extractData($el) : null; + }, + getActiveSelectable: function getActiveSelectable() { + var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); + return $selectable.length ? $selectable : null; + }, + getTopSelectable: function getTopSelectable() { + var $selectable = this._getSelectables().first(); + return $selectable.length ? $selectable : null; + }, + update: function update(query) { + var isValidUpdate = query !== this.query; + if (isValidUpdate) { + this.query = query; + _.each(this.datasets, updateDataset); + } + return isValidUpdate; + function updateDataset(dataset) { + dataset.update(query); + } + }, + empty: function empty() { + _.each(this.datasets, clearDataset); + this.query = null; + this.$node.addClass(this.classes.empty); + function clearDataset(dataset) { + dataset.clear(); + } + }, + destroy: function destroy() { + this.$node.off(".tt"); + this.$node = $("
    "); + _.each(this.datasets, destroyDataset); + function destroyDataset(dataset) { + dataset.destroy(); + } + } + }); + return Menu; + }(); + var Status = function() { + "use strict"; + function Status(options) { + this.$el = $("", { + role: "status", + "aria-live": "polite" + }).css({ + position: "absolute", + padding: "0", + border: "0", + height: "1px", + width: "1px", + "margin-bottom": "-1px", + "margin-right": "-1px", + overflow: "hidden", + clip: "rect(0 0 0 0)", + "white-space": "nowrap" + }); + options.$input.after(this.$el); + _.each(options.menu.datasets, _.bind(function(dataset) { + if (dataset.onSync) { + dataset.onSync("rendered", _.bind(this.update, this)); + dataset.onSync("cleared", _.bind(this.cleared, this)); + } + }, this)); + } + _.mixin(Status.prototype, { + update: function update(event, suggestions) { + var length = suggestions.length; + var words; + if (length === 1) { + words = { + result: "result", + is: "is" + }; + } else { + words = { + result: "results", + is: "are" + }; + } + this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); + }, + cleared: function() { + this.$el.text(""); + } + }); + return Status; + }(); + var DefaultMenu = function() { + "use strict"; + var s = Menu.prototype; + function DefaultMenu() { + Menu.apply(this, [].slice.call(arguments, 0)); + } + _.mixin(DefaultMenu.prototype, Menu.prototype, { + open: function open() { + !this._allDatasetsEmpty() && this._show(); + return s.open.apply(this, [].slice.call(arguments, 0)); + }, + close: function close() { + this._hide(); + return s.close.apply(this, [].slice.call(arguments, 0)); + }, + _onRendered: function onRendered() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onRendered.apply(this, [].slice.call(arguments, 0)); + }, + _onCleared: function onCleared() { + if (this._allDatasetsEmpty()) { + this._hide(); + } else { + this.isOpen() && this._show(); + } + return s._onCleared.apply(this, [].slice.call(arguments, 0)); + }, + setLanguageDirection: function setLanguageDirection(dir) { + this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); + return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); + }, + _hide: function hide() { + this.$node.hide(); + }, + _show: function show() { + this.$node.css("display", "block"); + } + }); + return DefaultMenu; + }(); + var Typeahead = function() { + "use strict"; + function Typeahead(o, www) { + var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; + o = o || {}; + if (!o.input) { + $.error("missing input"); + } + if (!o.menu) { + $.error("missing menu"); + } + if (!o.eventBus) { + $.error("missing event bus"); + } + www.mixin(this); + this.eventBus = o.eventBus; + this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; + this.input = o.input; + this.menu = o.menu; + this.enabled = true; + this.autoselect = !!o.autoselect; + this.active = false; + this.input.hasFocus() && this.activate(); + this.dir = this.input.getLangDir(); + this._hacks(); + this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); + onFocused = c(this, "activate", "open", "_onFocused"); + onBlurred = c(this, "deactivate", "_onBlurred"); + onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); + onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); + onEscKeyed = c(this, "isActive", "_onEscKeyed"); + onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); + onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); + onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); + onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); + onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); + onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); + this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); + } + _.mixin(Typeahead.prototype, { + _hacks: function hacks() { + var $input, $menu; + $input = this.input.$input || $("
    "); + $menu = this.menu.$node || $("
    "); + $input.on("blur.tt", function($e) { + var active, isActive, hasActive; + active = document.activeElement; + isActive = $menu.is(active); + hasActive = $menu.has(active).length > 0; + if (_.isMsie() && (isActive || hasActive)) { + $e.preventDefault(); + $e.stopImmediatePropagation(); + _.defer(function() { + $input.focus(); + }); + } + }); + $menu.on("mousedown.tt", function($e) { + $e.preventDefault(); + }); + }, + _onSelectableClicked: function onSelectableClicked(type, $el) { + this.select($el); + }, + _onDatasetCleared: function onDatasetCleared() { + this._updateHint(); + }, + _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { + this._updateHint(); + if (this.autoselect) { + var cursorClass = this.selectors.cursor.substr(1); + this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); + } + this.eventBus.trigger("render", suggestions, async, dataset); + }, + _onAsyncRequested: function onAsyncRequested(type, dataset, query) { + this.eventBus.trigger("asyncrequest", query, dataset); + }, + _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { + this.eventBus.trigger("asynccancel", query, dataset); + }, + _onAsyncReceived: function onAsyncReceived(type, dataset, query) { + this.eventBus.trigger("asyncreceive", query, dataset); + }, + _onFocused: function onFocused() { + this._minLengthMet() && this.menu.update(this.input.getQuery()); + }, + _onBlurred: function onBlurred() { + if (this.input.hasQueryChangedSinceLastFocus()) { + this.eventBus.trigger("change", this.input.getQuery()); + } + }, + _onEnterKeyed: function onEnterKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + if (this.select($selectable)) { + $e.preventDefault(); + $e.stopPropagation(); + } + } else if (this.autoselect) { + if (this.select(this.menu.getTopSelectable())) { + $e.preventDefault(); + $e.stopPropagation(); + } + } + }, + _onTabKeyed: function onTabKeyed(type, $e) { + var $selectable; + if ($selectable = this.menu.getActiveSelectable()) { + this.select($selectable) && $e.preventDefault(); + } else if (this.autoselect) { + if ($selectable = this.menu.getTopSelectable()) { + this.autocomplete($selectable) && $e.preventDefault(); + } + } + }, + _onEscKeyed: function onEscKeyed() { + this.close(); + }, + _onUpKeyed: function onUpKeyed() { + this.moveCursor(-1); + }, + _onDownKeyed: function onDownKeyed() { + this.moveCursor(+1); + }, + _onLeftKeyed: function onLeftKeyed() { + if (this.dir === "rtl" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onRightKeyed: function onRightKeyed() { + if (this.dir === "ltr" && this.input.isCursorAtEnd()) { + this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); + } + }, + _onQueryChanged: function onQueryChanged(e, query) { + this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); + }, + _onWhitespaceChanged: function onWhitespaceChanged() { + this._updateHint(); + }, + _onLangDirChanged: function onLangDirChanged(e, dir) { + if (this.dir !== dir) { + this.dir = dir; + this.menu.setLanguageDirection(dir); + } + }, + _openIfActive: function openIfActive() { + this.isActive() && this.open(); + }, + _minLengthMet: function minLengthMet(query) { + query = _.isString(query) ? query : this.input.getQuery() || ""; + return query.length >= this.minLength; + }, + _updateHint: function updateHint() { + var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; + $selectable = this.menu.getTopSelectable(); + data = this.menu.getSelectableData($selectable); + val = this.input.getInputValue(); + if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { + query = Input.normalizeQuery(val); + escapedQuery = _.escapeRegExChars(query); + frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); + match = frontMatchRegEx.exec(data.val); + match && this.input.setHint(val + match[1]); + } else { + this.input.clearHint(); + } + }, + isEnabled: function isEnabled() { + return this.enabled; + }, + enable: function enable() { + this.enabled = true; + }, + disable: function disable() { + this.enabled = false; + }, + isActive: function isActive() { + return this.active; + }, + activate: function activate() { + if (this.isActive()) { + return true; + } else if (!this.isEnabled() || this.eventBus.before("active")) { + return false; + } else { + this.active = true; + this.eventBus.trigger("active"); + return true; + } + }, + deactivate: function deactivate() { + if (!this.isActive()) { + return true; + } else if (this.eventBus.before("idle")) { + return false; + } else { + this.active = false; + this.close(); + this.eventBus.trigger("idle"); + return true; + } + }, + isOpen: function isOpen() { + return this.menu.isOpen(); + }, + open: function open() { + if (!this.isOpen() && !this.eventBus.before("open")) { + this.input.setAriaExpanded(true); + this.menu.open(); + this._updateHint(); + this.eventBus.trigger("open"); + } + return this.isOpen(); + }, + close: function close() { + if (this.isOpen() && !this.eventBus.before("close")) { + this.input.setAriaExpanded(false); + this.menu.close(); + this.input.clearHint(); + this.input.resetInputValue(); + this.eventBus.trigger("close"); + } + return !this.isOpen(); + }, + setVal: function setVal(val) { + this.input.setQuery(_.toStr(val)); + }, + getVal: function getVal() { + return this.input.getQuery(); + }, + select: function select($selectable) { + var data = this.menu.getSelectableData($selectable); + if (data && !this.eventBus.before("select", data.obj, data.dataset)) { + this.input.setQuery(data.val, true); + this.eventBus.trigger("select", data.obj, data.dataset); + this.close(); + return true; + } + return false; + }, + autocomplete: function autocomplete($selectable) { + var query, data, isValid; + query = this.input.getQuery(); + data = this.menu.getSelectableData($selectable); + isValid = data && query !== data.val; + if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { + this.input.setQuery(data.val); + this.eventBus.trigger("autocomplete", data.obj, data.dataset); + return true; + } + return false; + }, + moveCursor: function moveCursor(delta) { + var query, $candidate, data, suggestion, datasetName, cancelMove, id; + query = this.input.getQuery(); + $candidate = this.menu.selectableRelativeToCursor(delta); + data = this.menu.getSelectableData($candidate); + suggestion = data ? data.obj : null; + datasetName = data ? data.dataset : null; + id = $candidate ? $candidate.attr("id") : null; + this.input.trigger("cursorchange", id); + cancelMove = this._minLengthMet() && this.menu.update(query); + if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { + this.menu.setCursor($candidate); + if (data) { + if (typeof data.val === "string") { + this.input.setInputValue(data.val); + } + } else { + this.input.resetInputValue(); + this._updateHint(); + } + this.eventBus.trigger("cursorchange", suggestion, datasetName); + return true; + } + return false; + }, + destroy: function destroy() { + this.input.destroy(); + this.menu.destroy(); + } + }); + return Typeahead; + function c(ctx) { + var methods = [].slice.call(arguments, 1); + return function() { + var args = [].slice.call(arguments); + _.each(methods, function(method) { + return ctx[method].apply(ctx, args); + }); + }; + } + }(); + (function() { + "use strict"; + var old, keys, methods; + old = $.fn.typeahead; + keys = { + www: "tt-www", + attrs: "tt-attrs", + typeahead: "tt-typeahead" + }; + methods = { + initialize: function initialize(o, datasets) { + var www; + datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); + o = o || {}; + www = WWW(o.classNames); + return this.each(attach); + function attach() { + var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; + _.each(datasets, function(d) { + d.highlight = !!o.highlight; + }); + $input = $(this); + $wrapper = $(www.html.wrapper); + $hint = $elOrNull(o.hint); + $menu = $elOrNull(o.menu); + defaultHint = o.hint !== false && !$hint; + defaultMenu = o.menu !== false && !$menu; + defaultHint && ($hint = buildHintFromInput($input, www)); + defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); + $hint && $hint.val(""); + $input = prepInput($input, www); + if (defaultHint || defaultMenu) { + $wrapper.css(www.css.wrapper); + $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); + $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); + } + MenuConstructor = defaultMenu ? DefaultMenu : Menu; + eventBus = new EventBus({ + el: $input + }); + input = new Input({ + hint: $hint, + input: $input, + menu: $menu + }, www); + menu = new MenuConstructor({ + node: $menu, + datasets: datasets + }, www); + status = new Status({ + $input: $input, + menu: menu + }); + typeahead = new Typeahead({ + input: input, + menu: menu, + eventBus: eventBus, + minLength: o.minLength, + autoselect: o.autoselect + }, www); + $input.data(keys.www, www); + $input.data(keys.typeahead, typeahead); + } + }, + isEnabled: function isEnabled() { + var enabled; + ttEach(this.first(), function(t) { + enabled = t.isEnabled(); + }); + return enabled; + }, + enable: function enable() { + ttEach(this, function(t) { + t.enable(); + }); + return this; + }, + disable: function disable() { + ttEach(this, function(t) { + t.disable(); + }); + return this; + }, + isActive: function isActive() { + var active; + ttEach(this.first(), function(t) { + active = t.isActive(); + }); + return active; + }, + activate: function activate() { + ttEach(this, function(t) { + t.activate(); + }); + return this; + }, + deactivate: function deactivate() { + ttEach(this, function(t) { + t.deactivate(); + }); + return this; + }, + isOpen: function isOpen() { + var open; + ttEach(this.first(), function(t) { + open = t.isOpen(); + }); + return open; + }, + open: function open() { + ttEach(this, function(t) { + t.open(); + }); + return this; + }, + close: function close() { + ttEach(this, function(t) { + t.close(); + }); + return this; + }, + select: function select(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.select($el); + }); + return success; + }, + autocomplete: function autocomplete(el) { + var success = false, $el = $(el); + ttEach(this.first(), function(t) { + success = t.autocomplete($el); + }); + return success; + }, + moveCursor: function moveCursoe(delta) { + var success = false; + ttEach(this.first(), function(t) { + success = t.moveCursor(delta); + }); + return success; + }, + val: function val(newVal) { + var query; + if (!arguments.length) { + ttEach(this.first(), function(t) { + query = t.getVal(); + }); + return query; + } else { + ttEach(this, function(t) { + t.setVal(_.toStr(newVal)); + }); + return this; + } + }, + destroy: function destroy() { + ttEach(this, function(typeahead, $input) { + revert($input); + typeahead.destroy(); + }); + return this; + } + }; + $.fn.typeahead = function(method) { + if (methods[method]) { + return methods[method].apply(this, [].slice.call(arguments, 1)); + } else { + return methods.initialize.apply(this, arguments); + } + }; + $.fn.typeahead.noConflict = function noConflict() { + $.fn.typeahead = old; + return this; + }; + function ttEach($els, fn) { + $els.each(function() { + var $input = $(this), typeahead; + (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); + }); + } + function buildHintFromInput($input, www) { + return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ + readonly: true, + required: false + }).removeAttr("id name placeholder").removeClass("required").attr({ + spellcheck: "false", + tabindex: -1 + }); + } + function prepInput($input, www) { + $input.data(keys.attrs, { + dir: $input.attr("dir"), + autocomplete: $input.attr("autocomplete"), + spellcheck: $input.attr("spellcheck"), + style: $input.attr("style") + }); + $input.addClass(www.classes.input).attr({ + spellcheck: false + }); + try { + !$input.attr("dir") && $input.attr("dir", "auto"); + } catch (e) {} + return $input; + } + function getBackgroundStyles($el) { + return { + backgroundAttachment: $el.css("background-attachment"), + backgroundClip: $el.css("background-clip"), + backgroundColor: $el.css("background-color"), + backgroundImage: $el.css("background-image"), + backgroundOrigin: $el.css("background-origin"), + backgroundPosition: $el.css("background-position"), + backgroundRepeat: $el.css("background-repeat"), + backgroundSize: $el.css("background-size") + }; + } + function revert($input) { + var www, $wrapper; + www = $input.data(keys.www); + $wrapper = $input.parent().filter(www.selectors.wrapper); + _.each($input.data(keys.attrs), function(val, key) { + _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); + }); + $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); + if ($wrapper.length) { + $input.detach().insertAfter($wrapper); + $wrapper.remove(); + } + } + function $elOrNull(obj) { + var isValid, $el; + isValid = _.isJQuery(obj) || _.isElement(obj); + $el = isValid ? $(obj).first() : []; + return $el.length ? $el : null; + } + })(); +}); \ No newline at end of file diff --git a/documentation/api-reference/menu.js b/documentation/api-reference/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/documentation/api-reference/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/documentation/api-reference/menudata.js b/documentation/api-reference/menudata.js new file mode 100644 index 0000000..7eff031 --- /dev/null +++ b/documentation/api-reference/menudata.js @@ -0,0 +1,63 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"f",url:"functions.html#index_f"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"v",url:"functions.html#index_v"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"n",url:"functions_func.html#index_n"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"u",url:"functions_func.html#index_u"}, +{text:"v",url:"functions_func.html#index_v"}]}, +{text:"Properties",url:"functions_prop.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/documentation/api-reference/nav_f.png b/documentation/api-reference/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/documentation/api-reference/nav_g.png b/documentation/api-reference/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <InstallerProgressDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <InstallerProgressDelegate>, including all inherited members.

    + + + +
    installerProgressShouldDisplayWithHost: (defined in <InstallerProgressDelegate>)<InstallerProgressDelegate>
    installerProgressShouldStop (defined in <InstallerProgressDelegate>)<InstallerProgressDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_installer_progress_delegate-p.html b/documentation/api-reference/protocol_installer_progress_delegate-p.html new file mode 100644 index 0000000..e383859 --- /dev/null +++ b/documentation/api-reference/protocol_installer_progress_delegate-p.html @@ -0,0 +1,102 @@ + + + + + + + +Sparkle: <InstallerProgressDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <InstallerProgressDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <InstallerProgressDelegate>:
    +
    +
    + + +ShowInstallerProgress + +
    + + + + + + +

    +Instance Methods

    +(void) - installerProgressShouldDisplayWithHost:
     
    +(void) - installerProgressShouldStop
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_installer_progress_delegate-p.png b/documentation/api-reference/protocol_installer_progress_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..259bf7fd504feb966fb2472c0af6a0b93af8ec8b GIT binary patch literal 1008 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~*L%7+hEy=Vo%{CEW-AWY@PcJ`{>#d* zeHLB2=IC~H6=%ry7gN7+SQVuajQ!HZuB)< zKlgLK(r4N1BVH9>T|&2Bd>^44_GRK?%Y4@-5-(Fb9)^ehjo2P}Uwyg2F`g4^UJK`( z59Hlmn7?USzP(zO@O9a1Q&hfZ(dzEEVsEz>#zwA|y4{(5S>j)6 zO!2<3$*cJP)PMTwRDbs^^LNMj|L+@>zFX73z)m(iG}PE~^{Q2S=Y)n{jWf>XQ0!4; zsNT!KcF|$Y`s)@Om^YqVari*rkyo`04>&Eg8}`l-JrH+}D?vYHX2TV{m+k0O9`ORs?YkeC|XZiM>DZjoy$<~^8L3s8j-Pe1z z?238zQhQTgVdR@j2j6GjiMT#{>5si~)BaA8Ge7+72J^M=yprrL zGV8k^_u;y|HJc0N9*5qU7w>jHN-ch)M1$MX#lhF!ZP1nKG?*3seQAd3vOjN*p4Q%+ z-EVqt_hjbVai-aPr&D+I9xuFG?K$(kPo z+3D{e*VvwDT&r+>m)>uO!?(URW@+y3*8jGKf6d$%Tlg6wUTiyV&$Bl2wGHcz72Ivl z3jhAd|Gw*?uqDHX7HBxFU;4I9;E({*hU?r30=!3lRrNAk3%u^J;(6n-<{mr4yb1Wi z5Iu;OWzIVDb=I;>Bk{={Cj^SZ1O=-tS9f&m?TbA8Cz4HYV%*!Jf41jmojrQFQCe`~ zX{(f4>-XpP9^I9$p!8|sxybvEr6!kWBrSM;v`GEkG4YRb+s=NycS$Gmt1Dk}TVVEN@O1TaS?83{1OV5?^4I_X literal 0 HcmV?d00001 diff --git a/documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p-members.html b/documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p-members.html new file mode 100644 index 0000000..bb83719 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUBasicUpdateDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUBasicUpdateDriverDelegate>, including all inherited members.

    + + + + +
    basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
    basicDriverDidFinishLoadingAppcast (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
    basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUBasicUpdateDriverDelegate>)<SPUBasicUpdateDriverDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p.html b/documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p.html new file mode 100644 index 0000000..d66e2fc --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p.html @@ -0,0 +1,106 @@ + + + + + + + +Sparkle: <SPUBasicUpdateDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUBasicUpdateDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUBasicUpdateDriverDelegate>:
    +
    +
    + + +SPUCoreBasedUpdateDriver() +SPUProbingUpdateDriver() + +
    + + + + + + + + +

    +Instance Methods

    +(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:systemDomain:
     
    +(void) - basicDriverIsRequestingAbortUpdateWithError:
     
    +(void) - basicDriverDidFinishLoadingAppcast
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p.png b/documentation/api-reference/protocol_s_p_u_basic_update_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0913bd54158034ebec38c665dd4f28028b46e7 GIT binary patch literal 1525 zcmb`HX;4#F6vtm!9I#TEp;{yYS}prx$qTqJEOjAhA6h~RD2SsZA|KTO*DL9A-poiX$9#Mz~02p5h+~*&Xf>D>KnYB*lYx?dxozv4V);K$CVZ=Tk z5l{J)CxvVgc6q!pUbJl8v2Fn~ShP-~q5H#1RqHlLqZul&qc6-7SWRgu{5I7}etB)x zz|a!cMh00?@yfbkLnZSJ#}Uizkb7w~W-_C*e?Dz;+|<_WmNpSy7&p42O>X0Ls#X@z z49ji<***!y#d8}W)+2tkAcA@jRiQg{NBXc~m0Su^pH@&XXAilB|ME!8%KTzD8K0hh z8VbF^M6X~yrUGeBy6@;-BrMcqdZIL2f=p8CtJ#yW28+8muF{&lcFwfd^Bw0{gHU27a*4phBHO+kTO z#)P-coRRrvn!)wXZl*Wp_X9AnirH?u#am`%ZbLIL$pbN00$||DHV8n!DPxvk;g`by z2;te?|B_HTdHhdi2?t*tw~uV8Di36=DVhn+=f#C~mMn<+OxgHj&I7J`XPDxO4bAwJ ziZ2Nh)#re5w3kw?w&w86MeQSyS1~Rcwb%Nn(i_Us+HO_c=6;?q*T64uj)OydWq~sI_k-cT56d&eP?0sIZqOtCEbm! zTSTM24|s{y_V|^t*rT3fljTl53VAO(!j&4lR6O6_`=vW{r);&zc3f0m_Ue`tTnKIm zUoTT9@3G9_oux%5L?J(5_@;yT4Q|A`cFc2vg>dUkBtptHEX#i%h9n1X*1AKv2Efc( ztp_mXo8D3#-g+4L?Hy>>HVeO4G?}d*^Fw&LzfSSCX)qe}QEJUN?~8pvVT=>M&l%py z$auChcX+umF5*|NBGLiR<*JNn9=K2PKrZ*k09Y(WYl}h|dUeL?=hCF576xa-1`5Tj zv635}M^(w7a6wDOg_o1HzAwTdEJk;kAgLJgG4IGkQlG2;K9AJn&ft!<_;w|A5qnCw zg##?O-eB6Sxv^#@Z|oK zbQgq0B}tYIrJL=W)1mew^XUqT&BGK2o{Ls(Tl8&~CVMWi>v;4yt3MMt`Qm(iY4#X_ zn02a95DIS;ZH|z{KZ`C{Y|2dTn;{R>qWWV0qyT*i_zZS(Ma!j2#ODk!YvT7*H$n=c z#epW|ac|OYq3vmb2aKb3)1WEOd3lzgLpVu}sY%@shFf$8SGEgFX#x=b9A6m$N+VJ{ zE3bmsyJJLn^>Iut^EkIAdwdij4839mPDu{I^RjrwME8`Ojod_TdtMn+E<& + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUCoreBasedUpdateDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUCoreBasedUpdateDriverDelegate>, including all inherited members.

    + + + + + + + + + + + + + + +
    basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    basicDriverDidFinishLoadingAppcast (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    coreDriverDidStartExtractingUpdate (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    downloadDriverDidReceiveDataOfLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    downloadDriverDidReceiveExpectedContentLength: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    downloadDriverWillBeginDownload (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerDidExtractUpdateWithProgress: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerDidStartInstalling (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    installerIsSendingAppTerminationSignal (defined in <SPUCoreBasedUpdateDriverDelegate>)<SPUCoreBasedUpdateDriverDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_core_based_update_driver_delegate-p.html b/documentation/api-reference/protocol_s_p_u_core_based_update_driver_delegate-p.html new file mode 100644 index 0000000..79c435f --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_core_based_update_driver_delegate-p.html @@ -0,0 +1,136 @@ + + + + + + + +Sparkle: <SPUCoreBasedUpdateDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUCoreBasedUpdateDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUCoreBasedUpdateDriverDelegate>:
    +
    +
    + + +SPUAutomaticUpdateDriver() +SPUUIBasedUpdateDriver() + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    +(void) - basicDriverDidFindUpdateWithAppcastItem:secondaryAppcastItem:
     
    +(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
     
    +(void) - coreDriverIsRequestingAbortUpdateWithError:
     
    +(void) - basicDriverIsRequestingAbortUpdateWithError:
     
    +(void) - basicDriverDidFinishLoadingAppcast
     
    +(void) - downloadDriverWillBeginDownload
     
    +(void) - downloadDriverDidReceiveExpectedContentLength:
     
    +(void) - downloadDriverDidReceiveDataOfLength:
     
    +(void) - coreDriverDidStartExtractingUpdate
     
    +(void) - installerDidStartInstalling
     
    +(void) - installerDidExtractUpdateWithProgress:
     
    +(void) - installerIsSendingAppTerminationSignal
     
    +(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_core_based_update_driver_delegate-p.png b/documentation/api-reference/protocol_s_p_u_core_based_update_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa657cf7b1aeb21d6b54201f4ab1b45ec5604f4 GIT binary patch literal 1591 zcmb`HdoLg!p@jf z*pZPtp&<%8nE5I9h8bls6o$+}vxC`R``=#v*t2KfbKd8D-pltq=XpQRd9u&CyJ)ED zsR96?fp&HB1ONpQnm$onKr_$bFFqd4J4~jt-@4fdRBt ziT8BJ0??yRW26sf0jYmMJDtKMDJaGQ?wlLPq{tD^mP}N#E=`A#&q6|N#T~nwVo|=ky7*3 z5XbpBBJ}p=E?nmH88_(kvttDd4aX28f&qrlS_xh$7OhEnh#m^7@vUXk4ch%B9>qWN zgJvc7gX22yn=+O#@Bh>uk7g#v5N^#JpVujDKB&Tv2rn2S}^0;p7c+PoloRbA^K zNja-uScg>Xa;7VoryWvEccCl1FaiNcm$u>x|2nBu*AO|VuBA^>R>`&eAFlgD_h(Gm zKtJmiZvNLW4D;o7=?a+_C{j+#7}j~f*_zzLgh$7Dquz6(Tqg8dCd|QZuc^bbcUckl z73M!&69qpa%3R?c*xz976}DbO!|TLKQ+wg*5r<%0NZ)Ar%heeDa2xK+yVSB#R;_-s zju*Y~Fx+;0w6&FgC1{INpmJM6y|%@zd&z>MG3Fy^lUVqY~$T$(Sx`;9mvC^I=397=#q~b-(BayMh4bp^5e4wJ~&i8&U2paju$0V%()DkX%>MMma~8 z4kT11TQANCmV&`9-r}y9h{>Lm(3t2sVJd%)xmhQQs66UZ&X8q@$~iHXFgpp2rm^qd zsoXIEm=ZeRZsl{Nwo*EO=gsTFCeOg$#^)@D15wh6(Etwd1j}UZJ8e$nB-q9#`fMdy z85FI~Syi97UHLxsLJ4a9?`@ z5GDx~GKimatl{;>P6L~ceODbJg4vr&ARbRJf(+D5{sc1-oIZK8;NdIe&FLiFZ3WrD W>f7w}<1(nr189`HQ + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUDownloadDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUDownloadDriverDelegate>, including all inherited members.

    + + + + + + + +
    downloadDriverDidDownloadData: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidDownloadUpdate: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidFailToDownloadFileWithError: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidReceiveDataOfLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverDidReceiveExpectedContentLength: (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    downloadDriverWillBeginDownload (defined in <SPUDownloadDriverDelegate>)<SPUDownloadDriverDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_download_driver_delegate-p.html b/documentation/api-reference/protocol_s_p_u_download_driver_delegate-p.html new file mode 100644 index 0000000..456dd90 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_download_driver_delegate-p.html @@ -0,0 +1,116 @@ + + + + + + + +Sparkle: <SPUDownloadDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUDownloadDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUDownloadDriverDelegate>:
    +
    +
    + + +SPUCoreBasedUpdateDriver() +SPUReleaseNotesDriver +SUAppcastDriver() + +
    + + + + + + + + + + + + + + +

    +Instance Methods

    +(void) - downloadDriverDidFailToDownloadFileWithError:
     
    +(void) - downloadDriverWillBeginDownload
     
    +(void) - downloadDriverDidDownloadUpdate:
     
    +(void) - downloadDriverDidDownloadData:
     
    +(void) - downloadDriverDidReceiveExpectedContentLength:
     
    +(void) - downloadDriverDidReceiveDataOfLength:
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_download_driver_delegate-p.png b/documentation/api-reference/protocol_s_p_u_download_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6ca4903d82c78ae46b368799e5e12a8e4dd9b0 GIT binary patch literal 1988 zcmcgtZBSEJ8je(u4WhVhSwJdQT)MJ_DilF60Tu#5NpO;Tsfh&?+1RE5gc80&2unu+ zEriHGgf!@OBQ!SI8$m!IYycRS*uMcs=igtYz>~|_7yz@iwFSeOIU}9@ zT?LG`p9c>f*p`laz)Sl~0-lI~N!FqK9`HjTb`hf^!hoC|devs!de3j8v<-6die+K# zo57*#B6~x2k%rxovR<9+*ICKZvXAbTFFp+|EO+Tmch_*Sw%z-L2Sfc2y}k33NI?-| zpagKbgRop zuO>!*8UZ@ddx>HDAEoF217qsrc@xiNI#6fZa_%yLepfARtp6sdCpn)}KY=7y7o z&j;W4rc8ewP(HC{!$IavNE`8lukuNA%uWK+(s(zIB!biY&`975$UiozPD{O$guvpi z+yK#g$0*^>*KuXfzInJBSS3z(f5a^T2KP5l8wpJO9zIy(=3z^_N$bey7)<`jnj;c| zIUDAoAh?VtA*_&Mjv{Q19JLmeLBK>%xhxdE*>>j~q|Jxhln8J8!7nemT+6nzF^9Xq z8(QdW-MKz-EH11tavSb#NP9IdhF3M=4EpzsTkhP!(%>e-2Vz z`;IX6iP5+vf?_bVH8VdJZ=|4U>W%g8uG|7$CY_$H98KysB?^k_NHlzdS;eI;T}tJP z<1^dcy*9jXS#{(PNsbY!G#VGO0Q<$Qi(;IpHwtr0)LRbNab@&bUHdaxyl{$}ij~eU z`P~JhuOj$Y@UQ$%NOs3Y(}xVz0I}vgmhp;FU>qW6pXhEoB6Pa*=13LQ=LeJ!FAEg) zWfOeX6OG*|@$43%$mx!!FR6wq#|iDmFDUB&%F9;v=?N*Y%xBAw7(|;?A0@=YX+%9!61IlOI%mds&y=YpO9SRZZ?8luNF-& zv`l`LNVO*}0)88)IQ{=~Nym$vQwQXRoKsmlyZl+x8~DS6w$ZjL7(tOQ_E&(5PQ`NV zBF}vzl==gJ<~WOcQ6>&*|ujv z=_3gtep099G{0nB84yA9E!ETnU6W%lnWhm!V-vdwsMdqT?2wp;O^=UXD)3YW#)iBV z3MzeLPt)IdvN+?uN+g0(O6L>^zWygi7l*7@B-Op1a;QngRq69vb(CD=O8=zhrT<13 zt03*!vT1CXpxUHO9qA{^kkhC1eBtc_j6W1YP<#T1+AZoYUIs=C{mYv)wA7mN+cC@h z8MIb)L-n$n>LT9wgm|DN@zutIgoV+8l_t02+n$9u4NEPcs5s9&?=xIrPQnqWXf>IF$M(^|eXGTr&W3QEfqqxT(mXVDBc6 z4PW>w%(^Nn$*UL|yH~3P&&4+7f=ZNFKpuF}12p8nA6Q}f{NwRXAEmj!wE-7&eqTa` zj*>k48^zyL$jihME*s?p>w{LDp-VYwJ(b{#S<}zGoI4|}nt6U&T3I*gkbRfTntz?q z>S}fs&PTS@ewU{U9$l@s;I37F5eMp*1i%JoPP~f$cl866x^;Qa<^CyR!hFDU(J14w zvH}cmGWiI_UXnMT>V+XL)|vx%$v(!idv)Yx2x8FMWGQ^~?L@a>?NA+Za`e@SlD^Nm zNqOt`$3IeVkE2q;NxRoqR + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUInstallerAgentProtocol> Member List
    +
    +
    + +

    This is the complete list of members for <SPUInstallerAgentProtocol>, including all inherited members.

    + + + + + + + +
    registerApplicationBundlePath:reply: (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    registerInstallationInfoData: (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    relaunchApplication (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    sendTerminationSignal (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    showProgress (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    stopProgress (defined in <SPUInstallerAgentProtocol>)<SPUInstallerAgentProtocol>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_installer_agent_protocol-p.html b/documentation/api-reference/protocol_s_p_u_installer_agent_protocol-p.html new file mode 100644 index 0000000..edf2e98 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_installer_agent_protocol-p.html @@ -0,0 +1,114 @@ + + + + + + + +Sparkle: <SPUInstallerAgentProtocol> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUInstallerAgentProtocol> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUInstallerAgentProtocol>:
    +
    +
    + + +InstallerProgressAppController() + +
    + + + + + + + + + + + + + + +

    +Instance Methods

    +(void) - registerApplicationBundlePath:reply:
     
    +(void) - registerInstallationInfoData:
     
    +(void) - sendTerminationSignal
     
    +(void) - showProgress
     
    +(void) - stopProgress
     
    +(void) - relaunchApplication
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_installer_agent_protocol-p.png b/documentation/api-reference/protocol_s_p_u_installer_agent_protocol-p.png new file mode 100644 index 0000000000000000000000000000000000000000..ba75681cf2985dec7ff376d31086b39b04cd4de7 GIT binary patch literal 795 zcmeAS@N?(olHy`uVBq!ia0vp^hk!VMgBeKHOpNjdQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;CEhI+5O!=7#qeKD&2_;Z7tsW5PBurUN;=0`q3q?zesa`%6|`O@2*I zZ_4MnpTl*2J$B}n53Q`1ObmH?BJeOlf6AP*ZdNW8`T8RJxxZH5^LSXG>A$38yNLQEehudj@&1+*8T_t?a@TSu zPH}DU|FTwV$210u==dC!2JI~Z3~AYl3}>#jCG;3>7dx=Eis4T5clQdLyz>S1Exixk z@%(2zWHpiD8Ca1M!;H1932T z$!}WRik>&#|NqfOLtvG#rnJ{@BinC(UW(U=e=_5?-d3qpDxmT*c<-m+iEr{etHReh zhfcB!+{do6a;<&OgVQ>m%5z&D{QmI9ZPJqW*@_;Qa=_ujdoU_He{FsF3ymqN7rwp# Prep?BS3j3^P6 + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUInstallerDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUInstallerDriverDelegate>, including all inherited members.

    + + + + + + + + + + +
    installerDidExtractUpdateWithProgress: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidFailToApplyDeltaUpdate (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidFinishInstallationAndRelaunched:acknowledgement: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidFinishPreparationAndWillInstallImmediately:silently: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidStartExtracting (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerDidStartInstalling (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerIsRequestingAbortInstallWithError: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerIsSendingAppTerminationSignal (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    installerWillFinishInstallationAndRelaunch: (defined in <SPUInstallerDriverDelegate>)<SPUInstallerDriverDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_installer_driver_delegate-p.html b/documentation/api-reference/protocol_s_p_u_installer_driver_delegate-p.html new file mode 100644 index 0000000..68efcd7 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_installer_driver_delegate-p.html @@ -0,0 +1,123 @@ + + + + + + + +Sparkle: <SPUInstallerDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUInstallerDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUInstallerDriverDelegate>:
    +
    +
    + + +SPUCoreBasedUpdateDriver() + +
    + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    +(void) - installerDidStartInstalling
     
    +(void) - installerDidStartExtracting
     
    +(void) - installerDidExtractUpdateWithProgress:
     
    +(void) - installerDidFinishPreparationAndWillInstallImmediately:silently:
     
    +(void) - installerIsSendingAppTerminationSignal
     
    +(void) - installerWillFinishInstallationAndRelaunch:
     
    +(void) - installerDidFinishInstallationAndRelaunched:acknowledgement:
     
    +(void) - installerIsRequestingAbortInstallWithError:
     
    +(void) - installerDidFailToApplyDeltaUpdate
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_installer_driver_delegate-p.png b/documentation/api-reference/protocol_s_p_u_installer_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..0e2b043a9001ac09d6dab87b71c046f77efc76a5 GIT binary patch literal 1045 zcmeAS@N?(olHy`uVBq!ia0vp^+km)(gBeKH#yxxuq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0mw383hEy=Vo%_1)kpYjJe+=jT|I+!2 zXKj~mX0GVGrffH>d!xVX@z2u*oFe>LLa$zZa%0u1u%evMQ0={p)>b>}@2{_zBh!5N zyTGHbGx87kwanZiyJA(@FRnK(Gi;{HypQg*d;0&MNBg2xzpVFm{B1bV>8l#F;qhsi z^;c}-l-C3RiQT4tV`o=f=b!2~B4$FNqDDviwr|Zs?`}cOipHwIJuE=&667pK<_YUTbeaYm61N+ z)yJEldYo;;BoyfeH^r6>^Een*!*ob(l>h!E!+^i}hv|%~i}Q^CZrg6N-Ey(9j z)LzcFKU#OJFzGYj8_R!r(&^s||9QE&e|pEaxPQm@8B3FA-+mJ8d%JLZOUC)s19qz( zi+R}8Ro-|*$t)irgy?=Aay$?es(*_%&J-cu8HJM=@1mU7v>)oHe6xyFa(_Q*@L znnss=PY%*4-E_%N?9D4v_BYCBt~`s#ahvNl3V1|9a>m~Q5qwEFHh zkzH5#w$}F62Hy6aKI8nXtKr$ZU*CSbM|aZWw&{L>eyitXb=M|+UNZT}v(k&64EvnJ z1L8aG&M`gUa(~9#jcN>1wV4wcY+xZ)^8Pt6G-ff_EtNh{6(#(;EP7J4@0+<*uJ2qo z?w!nV0~SUELlqS04vTYdZ{vTtE%){}$&H;IYt)X532vN}+}#neGNJwN`wE+R{adq~ zU6urI5*3`8d0#v4)z!i)6;_`keT>RJ-M3F~l>Y9&<3H2yL&1;p4%i*`m+Z{`e)XHn zr7)|x$(MGl3}5W~(`wO?z<;rCe?~}exXd{xN!-0M=61^Vt4qu@fB)t8nsTakYaF|; z#n-8Gu6^r>4GB+?{(W+`YJd8T;NSbAZuTCYiiucpfbB|+ge?RVc zrF7DxvKK0aD?eXh4s$%89qsbOc-O0wN=o6g%p3$Ko_}e7Y~J5ualuIUK3%0GRZuWo h>e~wpoH_p(el}0ce<>vX515A;JYD@<);T3K0RRqY3J?GQ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/protocol_s_p_u_resumable_update-p-members.html b/documentation/api-reference/protocol_s_p_u_resumable_update-p-members.html new file mode 100644 index 0000000..95a99cd --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_resumable_update-p-members.html @@ -0,0 +1,82 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUResumableUpdate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUResumableUpdate>, including all inherited members.

    + + + +
    secondaryUpdateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
    updateItem (defined in <SPUResumableUpdate>)<SPUResumableUpdate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_resumable_update-p.html b/documentation/api-reference/protocol_s_p_u_resumable_update-p.html new file mode 100644 index 0000000..6915d5a --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_resumable_update-p.html @@ -0,0 +1,103 @@ + + + + + + + +Sparkle: <SPUResumableUpdate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUResumableUpdate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUResumableUpdate>:
    +
    +
    + + +SPUDownloadedUpdate +SPUInformationalUpdate + +
    + + + + + + +

    +Properties

    +SUAppcastItemupdateItem
     
    +SUAppcastItemsecondaryUpdateItem
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_resumable_update-p.png b/documentation/api-reference/protocol_s_p_u_resumable_update-p.png new file mode 100644 index 0000000000000000000000000000000000000000..cd637d7993faf994693fdc561cdb6efdd4ef3ace GIT binary patch literal 1314 zcmeAS@N?(olHy`uVBq!ia0y~yU^D}=J2;quWYkr2Eg&Tk;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z_QWP#WAFU@$KBV(-v6?xSAi0y7qhj z$Izc1O^&vAzr|cJe$3`{Y2l5KpnAr*QwBVTKQdUDIHx_kxMABFAIa>~XQpg~F@8Ga zUY3vPn?A|h^jUZ1y4jjv(-~x>{!SHhUcK_0l5uhK)>xS{ZPWJaSeCtudZYWZ+)~$b z=FFcm^2^?8CHk&O?G($Md?qrp_|lo$DchmO#NZx`F-Wx$osyxS7kou`OuMnwaop#>f2>YVs1^pZE39&D;kC&}_`s{XQbo0L5+pj9+$(CLDHh25t)6KI|*e!H6 zH(Fg#O8kAyHU4#hq@nK4qTP31WJFu9t_oJSK9HEXd2QsB>h7(x!_1>*@x1xI{qQ}5 z+tU`zzi8(0lQ-c1zP$YCyHjm*Z{G{M6vTN-Y45eGzN)&D?}S`>c`Z6TsKNf}Pxr{# zTN(ebWi$V9Uc>8f>=r``l)C3|8<@5pGW-zpV_(=?q&-Ia3T2Lq7fKy3tl@3%&+qB5klMPf zqhoPmuArdNH8DZOWEdkjTl(DpXP3X$>B zvwq^ctnB48?v+)2487~S=JtuD47Vp0q`_nJKa^KpQ$$dUf^=KkMeDP)ps-8{@J6!|lDgN{{?A#gkoJ`uBp^{gqk{+1(w_ z(m|nm{EC?1#~J?vqg{?TuhCU + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUStandardUserDriverDelegate> Member List
    +
    + + + + + diff --git a/documentation/api-reference/protocol_s_p_u_standard_user_driver_delegate-p.html b/documentation/api-reference/protocol_s_p_u_standard_user_driver_delegate-p.html new file mode 100644 index 0000000..976f8b5 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_standard_user_driver_delegate-p.html @@ -0,0 +1,141 @@ + + + + + + + +Sparkle: <SPUStandardUserDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUStandardUserDriverDelegate> Protocol Reference
    +
    +
    + +

    A protocol for Sparkle's standard user driver's delegate. + More...

    + +

    #import <SPUStandardUserDriverDelegate.h>

    +
    +Inheritance diagram for <SPUStandardUserDriverDelegate>:
    +
    +
    + +
    + + + + + + + + + + + +

    +Instance Methods

    +(void) - standardUserDriverWillShowModalAlert
     Called before showing a modal alert window, to give the opportunity to hide attached windows that may get in the way.
     
    +(void) - standardUserDriverDidShowModalAlert
     Called after showing a modal alert window, to give the opportunity to hide attached windows that may get in the way.
     
    (_Nullable id< SUVersionDisplay >) - standardUserDriverRequestsVersionDisplayer
     Returns an object that formats version numbers for display to the user. More...
     
    +

    Detailed Description

    +

    A protocol for Sparkle's standard user driver's delegate.

    +

    This includes methods related to UI interactions

    +

    Method Documentation

    + +

    ◆ standardUserDriverRequestsVersionDisplayer

    + +
    +
    + + + + + +
    + + + + + + + +
    - (_Nullable id <SUVersionDisplay>) standardUserDriverRequestsVersionDisplayer
    +
    +optional
    +
    + +

    Returns an object that formats version numbers for display to the user.

    +

    If you don't implement this method or return nil, the standard version formatter will be used.

    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_standard_user_driver_delegate-p.png b/documentation/api-reference/protocol_s_p_u_standard_user_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..be4fca4f7609c9dcd62a1d94f2ece88428903716 GIT binary patch literal 736 zcmeAS@N?(olHy`uVBq!ia0vp^SAjTygBeKfe0<;*kdg@S332`Z|38rV;?396{zDUh zEHFNB-~emq9eE&^qa?^Lm;tB=1g@S6F=Aj~%J+0}45?szJNNFSCkh;H{N`tW@Bdhq z)RW-zE&a{Rql>iSw+AkgaopqTl47a2YE`%9%8<}x4G@uG7dkWl_ua0*N=vEZLDNN- z=f7cJp>=@sk@TunbCm)@8>|YuFI2BMboE7Uz3GxwtBOsgXMO+3<9&9&TWAD-(sy(5 z9JQ%u_f{>~6~VjWoXFf0rv0m`LS@WenlI5}Ju;uz0fnwfTncT(;|JP8f{}h42a>$B8YDn?SHN4* zCo6h>|M-}EpYc17)&1D#%NhJiKiyuhZ&n_*o$u$nSEnA^KbW_FSyj>JW6xfPl$ZSG zle51)J#~Xm;hQ)Af_C}LIPc%>IP=YnC9}#VOUyR*e6=C+qD6^w>5_XBPJNNjeslTe zwam0#0=JTRt%}VzZ_i9#X8LBkXRX_DQ@!V_zU^i)p2zU$>ES!PalX1!w@L<9n$McA zd%5TI--RzO?>-lB=-&H$?X3oQMTvVJN7e`Y)bql zd@rasr>3muQ8n8Wq1Cs3>WAbp-(ART*nfVV*s0UA_Xq7OS-0!=s_Ojj5t^2{#lEgq zfl*E~buvy~2zpjj;%>%ox + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUIBasedUpdateDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUIBasedUpdateDriverDelegate>, including all inherited members.

    + + + + + + +
    basicDriverDidFinishLoadingAppcast (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    basicDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    coreDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    uiDriverDidShowUpdate (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    uiDriverIsRequestingAbortUpdateWithError: (defined in <SPUUIBasedUpdateDriverDelegate>)<SPUUIBasedUpdateDriverDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_u_i_based_update_driver_delegate-p.html b/documentation/api-reference/protocol_s_p_u_u_i_based_update_driver_delegate-p.html new file mode 100644 index 0000000..5e780b3 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_u_i_based_update_driver_delegate-p.html @@ -0,0 +1,112 @@ + + + + + + + +Sparkle: <SPUUIBasedUpdateDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUIBasedUpdateDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUUIBasedUpdateDriverDelegate>:
    +
    +
    + + +SPUScheduledUpdateDriver() +SPUUserInitiatedUpdateDriver() + +
    + + + + + + + + + + + + +

    +Instance Methods

    +(void) - basicDriverIsRequestingAbortUpdateWithError:
     
    +(void) - coreDriverIsRequestingAbortUpdateWithError:
     
    +(void) - uiDriverIsRequestingAbortUpdateWithError:
     
    +(void) - uiDriverDidShowUpdate
     
    +(void) - basicDriverDidFinishLoadingAppcast
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_u_i_based_update_driver_delegate-p.png b/documentation/api-reference/protocol_s_p_u_u_i_based_update_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..fea82edff73d5ed8ea925f56792f2c1dbb1384e7 GIT binary patch literal 1550 zcmb_cX;4#F6n;Ta)M4qxh-;EN?^qT0~ zX$pg(QKn11((kP5$Wwm&xc+_A1%3Ovjw3&`HoS_icY|=2-XTUH!o7SX4w&) z%zX(jCVt}9U+#VY=byflu9>hs!)T$(5x(y4C+Se(fE!%kL~bbcDS={gqJ{&YFWl?^ z2yh@GRC!HkhzA7MNg!_Vv|rDO#A8dV=)Ysv5aA*!AuNj51mIce*9zzi&%&x?xX zsXYo(dIJ@F&dFq6|599B4QZYlAvSi8Z5(>ixTIBL+_EN}wQ`-VWccC(ia8Go8mo%H zE`L^!z$p}y6!!g;FRs4#k)Uw7*LY0^VYhvlsLh!rs(*4|M5ZGndi_#gJ>i-6SGhHW z)|96c`z#7E6U{0HSku#qQ6jmoWYeR7TnJGrcsY9O@J4+5OS48uz4d&Mp#I6FCs5EX z-{@)hkN<;dDx1d7wX(TpfZ8}d2v9RLhtEpIu1JIv%xOciZ6PkR17o$_nNuzK5doSy)e)zsyjz5Y6SkubPy zmWu8Z&8ZI|$3!tYej6d^;Bc}@2~;kW)Sj$@BtkqaTwcU>i0ayJquBSC5@EJ_-eefT zPDE6n=xZ!JG6JbjutaaBej#)EV1r_LjU5gy^Aw8Cj8*Em@-(~sFx + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUpdateDriver> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUpdateDriver>, including all inherited members.

    + + + + + + + +
    abortUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    abortUpdateWithError: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    resumeInstallingUpdateWithCompletion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    resumeUpdate:completion: (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    showingUpdate (defined in <SPUUpdateDriver>)<SPUUpdateDriver>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_update_driver-p.html b/documentation/api-reference/protocol_s_p_u_update_driver-p.html new file mode 100644 index 0000000..fb08441 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_update_driver-p.html @@ -0,0 +1,121 @@ + + + + + + + +Sparkle: <SPUUpdateDriver> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUpdateDriver> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUUpdateDriver>:
    +
    +
    + + +SPUAutomaticUpdateDriver +SPUProbingUpdateDriver +SPUScheduledUpdateDriver +SPUUserInitiatedUpdateDriver + +
    + + + + + + + + + + + + +

    +Instance Methods

    +(void) - checkForUpdatesAtAppcastURL:withUserAgent:httpHeaders:preventingInstallerInteraction:completion:
     
    +(void) - resumeInstallingUpdateWithCompletion:
     
    +(void) - resumeUpdate:completion:
     
    +(void) - abortUpdate
     
    +(void) - abortUpdateWithError:
     
    + + + +

    +Properties

    +BOOL showingUpdate
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_update_driver-p.png b/documentation/api-reference/protocol_s_p_u_update_driver-p.png new file mode 100644 index 0000000000000000000000000000000000000000..520fa17dd10849c49599ca3cd5c2a9cb6f04a1f9 GIT binary patch literal 2042 zcmb_d2~bjL97i*=($(D#GfS;at*mJBs!VLtG%M6nGV@+5rZ%IzFcq-PBD%;9%{<5> zO*FLAc!sz#W@ToIhD!J{GY}Dv#AhI|51Msnnw@5LrZ@Ax_kZvE{jcBe|IMTL`FI)4 zS~v@VKp1&%^Vp3*=t^Pxtid#RrHfufI|H_=)oR!jNo4WVy34Soy=!Z0r&Hcp z!mkE#yM6o-Fi3N?zYJK1K+K?cd;AuVs52{G6sO5rGR_tZ4bObrA~p1UI(IOvF?#n(N8)~wGRMG zsTu+$ByujX5GOAnmsF=Abmk8~Og`1=#VIil<;7z)eooDSP`4yM-yaRq7M5FzmF)K6 zpG5#eF%OQls?SVD{OCG=wEIK4l$?2sG|#526&Ey_o5kJnq4?}f$V9NDcDJ@|98W1* ztm)<&6bQkzWd1U>HO0v0I5NWg)}fo9_^AjTm8ryPb1EARe z%dz}L(XuL5ZHERtTInK8Lbfa83p_Qn900&Jl^+XIE4?Bnc_6Vv&is9ShpCbidMr~5 zzw9z2()ZbGF|h*`ZIoQtn8a?TT2fIqF)%ATPSoZWo@U7kV+h5{ZJ;^O90t-z9(@|e z7+x;rq!(^TOiWxs+&*4;`e0o>|MQJut%f~fREvTkEom=pE6iHkvZ;Ns?o%rH-G&Td zFkm@o!9ew+07;P|Zpg2{XN}h5IR2&*m*UPQZA3}N#j0TS4bpno5MpsMDT%_-A`VE) zZ6h^BQKnS*4nJtF1E{ZOFwBmap`$w)4a+*AkR*)25}){LM^lGP-dD_lskJ#P`9HEw z?2sf>hjt7mR9Er`6K1F4daGyeZRKFkN-I}-8`G8m9QrcXlry5A%C3wJn-#c}Z~u{- z&c!(XV}fz@<7j@><*{h~ZE zUBn|VD-0vMUKEv`w*apy4$A+SBEqH$$MAT>UKlE8bF%WACOyrCZN+FompF^kl1w%5EDtH z?%O>FP+?AsB%sXOo}7tGiD`Xyr$3+NZ-=eu`V|0^VvSu5dlZb~nQ#>hDQ~wW7C%?C zYOpd1TFwv=V{2?F7#RU3uR(^{6Pmu2mgkIfu2HL`tOvB{MidHA)( z`xR|bK)89`ez|W?3Da|CI1TQqY>pf8TBb6jQO3~pWDj0-qJ}zPu#F4dpS)qYJtEoJ z^nE!a?Op2dz>TN4`0xRb78L6R*|{$m7b=*N2^n*!h(?>}nK-ls%Vjv8>m2+1+4T!5 zRPK+?&FJ*2u&lcvy^0gvd7h&myA|Thql$>Y=o1X4Deb&j$SsA$d_ET&X=G~{UkFP=SG*L~NsWMx8DLe7U>0-SM= znSj^4AQ~mzyjQ8>I>c?v*+8JGSOE>q&p(bw z;*& zv8BQ-EUbYk5Qt&rbqd2UGCQdVUJVN?E1Fo_;Yqa*+i*_CWycu6Q|#H;+28^Mw(qA% zF&O+ro*0!fw=fygZmpegltUi|gS7f)roTV@oG=JJF~}%~KKS^Ad$v|Z^NDBF2))s1 WDE-n`tKlCt!h5Ta2V+abpML{53m{1V literal 0 HcmV?d00001 diff --git a/documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p-members.html b/documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p-members.html new file mode 100644 index 0000000..6a1c254 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUpdaterCycleDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUpdaterCycleDelegate>, including all inherited members.

    + + +
    resetUpdateCycle (defined in <SPUUpdaterCycleDelegate>)<SPUUpdaterCycleDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p.html b/documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p.html new file mode 100644 index 0000000..2aac2f2 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: <SPUUpdaterCycleDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUpdaterCycleDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUUpdaterCycleDelegate>:
    +
    +
    + + +SPUUpdater() + +
    + + + + +

    +Instance Methods

    +(void) - resetUpdateCycle
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p.png b/documentation/api-reference/protocol_s_p_u_updater_cycle_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..695d0aceac3bc05d6b404f7092ab3a9c208b52d1 GIT binary patch literal 931 zcmeAS@N?(olHy`uVBq!ia0vp^8-cikgBeK9Z~8R}NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~8+p1ohEy=Vo%{OIDgz#d?TN?s{Fj#B z`h`t&i`3sLwZ79!TQ@Dq{Nc@^=)>w5TB>v>BJ`@5d06Pyr?HPKzUNj)AN!bM8^M0B z_kUW)Ju|7{~mFF z+0DJmws|qnoxL9T_E;aY%x#Tv zCm%msuu`;Mw}1YM<9DMzPJ0)=uX4WJ{oc?}X*;_;wLPJs_MOtJSKWGaY}Kl5F}=XYI_K17$@o_F;Cbh7WV1Gy=J6zSOEceibc|u!4#NgrJlw*ctpbNa z1Q^r~^)luZCNo5r9s7QDN7#hw`a4T%i(mg+Ax4TVcXBVx_cvWbZo9+D4eue1S9gpwt5#K*SS^mo8>YUzqvApSw2l#>?H*$Qp zd++eI{;I@-?a%-^z1F8);E)T$i~`0PT`zm|r{A2i+;|_C|1z8T8?SRQWZ#iEAZE_C z;V3ki@Ngf0ik_Cb@xdmY(@Bio9Vc9NZ0zXJ&C^jzIz6Ls$G>ZLYwPp1fB!mlE>OHoMp@A}FW=HLJ6OE2fF&6v}AZSg6CeNN?eE-vRJV=LP$ zV`L^@KDJ|*yUP>RW7)2ztJRNv+?y2i#Qe{?!sLpqJ87=F{`E`FfBNzJ=0)f3zuL3q zeU@v^sjZLHD|M7UH7s}87k$^oh3|)d@BUv?#RPv!f*jT@-Q97c$TV(R>demiJ(_(E U>mskH0do|Cr>mdKI;Vst0PU{I?*IS* literal 0 HcmV?d00001 diff --git a/documentation/api-reference/protocol_s_p_u_updater_delegate-p-members.html b/documentation/api-reference/protocol_s_p_u_updater_delegate-p-members.html new file mode 100644 index 0000000..848e908 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_updater_delegate-p-members.html @@ -0,0 +1,110 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUpdaterDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUpdaterDelegate>, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    allowedChannelsForUpdater:<SPUUpdaterDelegate>
    allowedSystemProfileKeysForUpdater:<SPUUpdaterDelegate>
    bestValidUpdateInAppcast:forUpdater:<SPUUpdaterDelegate>
    decryptionPasswordForUpdater:<SPUUpdaterDelegate>
    feedParametersForUpdater:sendingSystemProfile:<SPUUpdaterDelegate>
    feedURLStringForUpdater:<SPUUpdaterDelegate>
    updater:didAbortWithError:<SPUUpdaterDelegate>
    updater:didDownloadUpdate:<SPUUpdaterDelegate>
    updater:didExtractUpdate:<SPUUpdaterDelegate>
    updater:didFindValidUpdate:<SPUUpdaterDelegate>
    updater:didFinishLoadingAppcast:<SPUUpdaterDelegate>
    updater:failedToDownloadUpdate:error:<SPUUpdaterDelegate>
    updater:shouldAllowInstallerInteractionForUpdateCheck:<SPUUpdaterDelegate>
    updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:<SPUUpdaterDelegate>
    updater:userDidSkipThisVersion:<SPUUpdaterDelegate>
    updater:willDownloadUpdate:withRequest:<SPUUpdaterDelegate>
    updater:willExtractUpdate:<SPUUpdaterDelegate>
    updater:willInstallUpdate:<SPUUpdaterDelegate>
    updater:willInstallUpdateOnQuit:immediateInstallationBlock:<SPUUpdaterDelegate>
    updater:willScheduleUpdateCheckAfterDelay:<SPUUpdaterDelegate>
    updaterDidNotFindUpdate:<SPUUpdaterDelegate>
    updaterDidNotFindUpdate:error:<SPUUpdaterDelegate>
    updaterMayCheckForUpdates:<SPUUpdaterDelegate>
    updaterShouldDownloadReleaseNotes:<SPUUpdaterDelegate>
    updaterShouldPromptForPermissionToCheckForUpdates:<SPUUpdaterDelegate>
    updaterShouldRelaunchApplication:<SPUUpdaterDelegate>
    updaterWillIdleSchedulingUpdates:<SPUUpdaterDelegate>
    updaterWillRelaunchApplication:<SPUUpdaterDelegate>
    userDidCancelDownload:<SPUUpdaterDelegate>
    versionComparatorForUpdater:<SPUUpdaterDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_updater_delegate-p.html b/documentation/api-reference/protocol_s_p_u_updater_delegate-p.html new file mode 100644 index 0000000..2a0749d --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_updater_delegate-p.html @@ -0,0 +1,1460 @@ + + + + + + + +Sparkle: <SPUUpdaterDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUpdaterDelegate> Protocol Reference
    +
    +
    + +

    Provides methods to control the behavior of an SPUUpdater object. + More...

    + +

    #import <SPUUpdaterDelegate.h>

    +
    +Inheritance diagram for <SPUUpdaterDelegate>:
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    (void) - updater:willScheduleUpdateCheckAfterDelay:
     Called when a background update will be scheduled after a delay. More...
     
    (void) - updaterWillIdleSchedulingUpdates:
     Called when no updates will be scheduled in the future. More...
     
    (BOOL) - updaterMayCheckForUpdates:
     Returns whether to allow Sparkle to pop up. More...
     
    (NSArray *) - feedParametersForUpdater:sendingSystemProfile:
     Returns additional parameters to append to the appcast URL's query string. More...
     
    (NSArray *) - allowedSystemProfileKeysForUpdater:
     Returns a list of system profile keys to be appended to the appcast URL's query string. More...
     
    (nullable NSString *) - feedURLStringForUpdater:
     Returns a custom appcast URL. More...
     
    (BOOL) - updaterShouldPromptForPermissionToCheckForUpdates:
     Returns whether Sparkle should prompt the user about automatic update checks. More...
     
    (void) - updater:didFinishLoadingAppcast:
     Called after Sparkle has downloaded the appcast from the remote server. More...
     
    (NSSet< NSString * > *) - allowedChannelsForUpdater:
     Returns the set of Sparkle channels the updater is allowed to find new updates from. More...
     
    (nullable SUAppcastItem *) - bestValidUpdateInAppcast:forUpdater:
     Returns the item in the appcast corresponding to the update that should be installed. More...
     
    (void) - updater:didFindValidUpdate:
     Called when a valid update is found by the update driver. More...
     
    (void) - updaterDidNotFindUpdate:error:
     Called when a valid update is not found. More...
     
    (void) - updaterDidNotFindUpdate:
     Called when a valid update is not found. More...
     
    (void) - updater:userDidSkipThisVersion:
     Called when an update is skipped by the user. More...
     
    (BOOL) - updaterShouldDownloadReleaseNotes:
     Returns whether the release notes (if available) should be downloaded after an update is found and shown. More...
     
    (void) - updater:willDownloadUpdate:withRequest:
     Called immediately before downloading the specified update. More...
     
    (void) - updater:didDownloadUpdate:
     Called immediately after succesfull download of the specified update. More...
     
    (void) - updater:failedToDownloadUpdate:error:
     Called after the specified update failed to download. More...
     
    (void) - userDidCancelDownload:
     Called when the user clicks the cancel button while and update is being downloaded. More...
     
    (void) - updater:willExtractUpdate:
     Called immediately before extracting the specified downloaded update. More...
     
    (void) - updater:didExtractUpdate:
     Called immediately after extracting the specified downloaded update. More...
     
    (void) - updater:willInstallUpdate:
     Called immediately before installing the specified update. More...
     
    (BOOL) - updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:
     Returns whether the relaunch should be delayed in order to perform other tasks. More...
     
    (BOOL) - updaterShouldRelaunchApplication:
     Returns whether the application should be relaunched at all. More...
     
    (void) - updaterWillRelaunchApplication:
     Called immediately before relaunching. More...
     
    (nullable id< SUVersionComparison >) - versionComparatorForUpdater:
     Returns an object that compares version numbers to determine their arithmetic relation to each other. More...
     
    (BOOL) - updater:shouldAllowInstallerInteractionForUpdateCheck:
     Returns whether or not the updater should allow interaction from the installer. More...
     
    (nullable NSString *) - decryptionPasswordForUpdater:
     Returns the decryption password (if any) which is used to extract the update archive DMG. More...
     
    (BOOL) - updater:willInstallUpdateOnQuit:immediateInstallationBlock:
     Called when an update is scheduled to be silently installed on quit after downloading the update automatically. More...
     
    (void) - updater:didAbortWithError:
     Called after an update is aborted due to an error. More...
     
    +

    Detailed Description

    +

    Provides methods to control the behavior of an SPUUpdater object.

    +

    Method Documentation

    + +

    ◆ allowedChannelsForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (NSSet<NSString *> *) allowedChannelsForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns the set of Sparkle channels the updater is allowed to find new updates from.

    +

    An appcast item can specify a channel the update is posted to. Without specifying a channel, the appcast item is posted to the default channel. For instance: <sparkle:version>2.0 Beta 1</sparkle:version> <sparkle:channel>beta</sparkle:channel>

    +

    This example posts an update to the 'beta' channel, so only updaters that are allowed to use the 'beta' channel can find this update.

    +

    If the <sparkle:channel> is not present, the update item is posted to the default channel and can be found by any updater.

    +

    You can pick any name you'd like for the channel. The valid characters for channel names are letters, numbers, dashes, underscores, and periods.

    +

    Note to use this feature, all app versions that your users may update from in your feed must use a version of Sparkle that supports this feature. This feature was added in Sparkle 2.

    +
    Returns
    The set of channel names the updater is allowed to find new updates in. An empty set is the default behavior, which means the updater will only look for updates in the default channel.
    + +
    +
    + +

    ◆ allowedSystemProfileKeysForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (NSArray *) allowedSystemProfileKeysForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns a list of system profile keys to be appended to the appcast URL's query string.

    +

    If this is unimplemented then all keys will be included.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    An array of system profile keys to include in the appcast URL's query string. Elements must be one of the SUSystemProfiler*Key constants
    + +
    +
    + +

    ◆ bestValidUpdateInAppcast:forUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (nullable SUAppcastItem *) bestValidUpdateInAppcast: (SUAppcast *) appcast
    forUpdater:(SPUUpdater *) updater 
    +
    +optional
    +
    + +

    Returns the item in the appcast corresponding to the update that should be installed.

    +

    Please consider using or migrating to other supported features before adopting this method. Specifically: If you want to filter out certain tagged updates (like beta updates), consider -[SPUUpdaterDelegate allowedChannelsForUpdater:] instead. If you want to treat certain updates as informational-only, consider supplying <sparkle:informationalUpdate> with a set of affected versions users are updating from.

    +

    If you're using special logic or extensions in your appcast, implement this to use your own logic for finding a valid update, if any, in the given appcast.

    +

    Do not base your logic by filtering out items with a minimum or maximum OS version or minimum autoupdate version, because Sparkle already has logic for determining whether or not those items should be filtered out. Also do not return a non-top level item from the appcast such as a delta item. Delta items will be ignored. Sparkle picks the delta item from your selection if the appropriate one is available.

    +

    This method will not be invoked with an appcast that has zero items. Pick the best item from the appcast. If an item is available that has the same version as the application or bundle to update, do not pick an item that is worse than that version.

    +

    This method may be called multiple times for different selections and filters. This method should be efficient.

    +
    Parameters
    + + + +
    appcastThe appcast that was downloaded from the remote server.
    updaterThe updater instance.
    +
    +
    +
    Returns
    The best valid appcast item. Return SUAppcastItem.emptyAppcastItem if no appcast item is valid. Return nil if you don't want to be delegated this task and want to let Sparkle handle picking the best valid update.
    + +
    +
    + +

    ◆ decryptionPasswordForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (nullable NSString *) decryptionPasswordForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns the decryption password (if any) which is used to extract the update archive DMG.

    +

    Return nil if no password should be used.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    The password used for decrypting the archive, or nil if no password should be used.
    + +
    +
    + +

    ◆ feedParametersForUpdater:sendingSystemProfile:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (NSArray *) feedParametersForUpdater: (SPUUpdater *) updater
    sendingSystemProfile:(BOOL) sendingProfile 
    +
    +optional
    +
    + +

    Returns additional parameters to append to the appcast URL's query string.

    +

    This is potentially based on whether or not Sparkle will also be sending along the system profile.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    sendingProfileWhether the system profile will also be sent.
    +
    +
    +
    Returns
    An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user.
    + +
    +
    + +

    ◆ feedURLStringForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (nullable NSString *) feedURLStringForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns a custom appcast URL.

    +

    Override this to dynamically specify the entire URL. Alternatively you may want to consider adding a feed parameter using -feedParametersForUpdater:sendingSystemProfile: and having the server which appcast to serve.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updater:didAbortWithError:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didAbortWithError:(NSError *) error 
    +
    +optional
    +
    + +

    Called after an update is aborted due to an error.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    errorThe error that caused the abort
    +
    +
    + +
    +
    + +

    ◆ updater:didDownloadUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didDownloadUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called immediately after succesfull download of the specified update.

    +
    Parameters
    + + + +
    updaterThe SUUpdater instance.
    itemThe appcast item corresponding to the update that has been downloaded.
    +
    +
    + +
    +
    + +

    ◆ updater:didExtractUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didExtractUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called immediately after extracting the specified downloaded update.

    +
    Parameters
    + + + +
    updaterThe SUUpdater instance.
    itemThe appcast item corresponding to the update that has been extracted.
    +
    +
    + +
    +
    + +

    ◆ updater:didFindValidUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didFindValidUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called when a valid update is found by the update driver.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be installed.
    +
    +
    + +
    +
    + +

    ◆ updater:didFinishLoadingAppcast:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    didFinishLoadingAppcast:(SUAppcast *) appcast 
    +
    +optional
    +
    + +

    Called after Sparkle has downloaded the appcast from the remote server.

    +

    Implement this if you want to do some special handling with the appcast once it finishes loading.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    appcastThe appcast that was downloaded from the remote server.
    +
    +
    + +
    +
    + +

    ◆ updater:failedToDownloadUpdate:error:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    failedToDownloadUpdate:(SUAppcastItem *) item
    error:(NSError *) error 
    +
    +optional
    +
    + +

    Called after the specified update failed to download.

    +
    Parameters
    + + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that failed to download.
    errorThe error generated by the failed download.
    +
    +
    + +
    +
    + +

    ◆ updater:shouldAllowInstallerInteractionForUpdateCheck:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (BOOL) updater: (SPUUpdater *) updater
    shouldAllowInstallerInteractionForUpdateCheck:(SPUUpdateCheck) updateCheck 
    +
    +optional
    +
    + +

    Returns whether or not the updater should allow interaction from the installer.

    +

    Use this to override the default behavior which is to allow interaction with the installer.

    +

    If interaction is allowed, then an authorization prompt may show up to the user if they do not curently have sufficient privileges to perform the installation of the new update. The installer may also show UI and progress when interaction is allowed.

    +

    On the other hand, if interaction is not allowed, then an installation may fail if the user does not have sufficient privileges to perform the installation. In this case, the feed and update may not even be downloaded.

    +

    Note this has no effect if the update has already been downloaded in the background silently and ready to be resumed.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    updateCheckThe type of update check being performed.
    +
    +
    + +
    +
    + +

    ◆ updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (BOOL) updater: (SPUUpdater *) updater
    shouldPostponeRelaunchForUpdate:(SUAppcastItem *) item
    untilInvokingBlock:(void(^)(void)) installHandler 
    +
    +optional
    +
    + +

    Returns whether the relaunch should be delayed in order to perform other tasks.

    +

    This is not called if the user didn't relaunch on the previous update, in that case it will immediately restart.

    +

    This may also not be called if the application is not going to relaunch after it terminates.

    +
    Parameters
    + + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be installed.
    installHandlerThe install handler that must be completed before continuing with the relaunch.
    +
    +
    +
    Returns
    YES to delay the relaunch until installHandler is invoked.
    + +
    +
    + +

    ◆ updater:userDidSkipThisVersion:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    userDidSkipThisVersion:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called when an update is skipped by the user.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that the user skipped.
    +
    +
    + +
    +
    + +

    ◆ updater:willDownloadUpdate:withRequest:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    willDownloadUpdate:(SUAppcastItem *) item
    withRequest:(NSMutableURLRequest *) request 
    +
    +optional
    +
    + +

    Called immediately before downloading the specified update.

    +
    Parameters
    + + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be downloaded.
    requestThe mutable URL request that will be used to download the update.
    +
    +
    + +
    +
    + +

    ◆ updater:willExtractUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    willExtractUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called immediately before extracting the specified downloaded update.

    +
    Parameters
    + + + +
    updaterThe SUUpdater instance.
    itemThe appcast item corresponding to the update that is proposed to be extracted.
    +
    +
    + +
    +
    + +

    ◆ updater:willInstallUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    willInstallUpdate:(SUAppcastItem *) item 
    +
    +optional
    +
    + +

    Called immediately before installing the specified update.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be installed.
    +
    +
    + +
    +
    + +

    ◆ updater:willInstallUpdateOnQuit:immediateInstallationBlock:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (BOOL) updater: (SPUUpdater *) updater
    willInstallUpdateOnQuit:(SUAppcastItem *) item
    immediateInstallationBlock:(void(^)(void)) immediateInstallHandler 
    +
    +optional
    +
    + +

    Called when an update is scheduled to be silently installed on quit after downloading the update automatically.

    +
    Parameters
    + + + + +
    updaterThe updater instance.
    itemThe appcast item corresponding to the update that is proposed to be installed.
    immediateInstallHandlerThe install handler to immediately install the update. No UI interaction will be shown and the application will be relaunched after installation.
    +
    +
    +
    Returns
    Return YES if the delegate will handle installing the update or NO if the updater should be given responsibility.
    +

    If the updater is given responsibility, it can later remind the user an update is available if they have not terminated the application for a long time. Also if the updater is given responsibility and the update item is marked critical, the new update will be presented to the user immediately after. Even if the immediateInstallHandler is not invoked, the installer will attempt to install the update on termination.

    + +
    +
    + +

    ◆ updater:willScheduleUpdateCheckAfterDelay:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updater: (SPUUpdater *) updater
    willScheduleUpdateCheckAfterDelay:(NSTimeInterval) delay 
    +
    +optional
    +
    + +

    Called when a background update will be scheduled after a delay.

    +

    Automatic update checks need to be enabled for this to trigger.

    +
    Parameters
    + + + +
    delayThe delay until the next scheduled update will occur.
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterDidNotFindUpdate:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (void) updaterDidNotFindUpdate: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Called when a valid update is not found.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterDidNotFindUpdate:error:

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    - (void) updaterDidNotFindUpdate: (SPUUpdater *) updater
    error:(NSError *) error 
    +
    +optional
    +
    + +

    Called when a valid update is not found.

    +
    Parameters
    + + + +
    updaterThe updater instance.
    errorAn error containing information on why a new valid update was not found There are various reasons a new update is unavailable and can't be installed. The userInfo dictionary on the error is also populated with three keys: SPULatestAppcastItemFoundKey: if available, this may provide the latest SUAppcastItem that was found. This will be nil if it's unavailable. SPUNoUpdateFoundReasonKey: This will provide the SUNoUpdateFoundReason. For example the reason could be because the latest version in the feed requires a newer OS version or could be because the user is already on the latest version. SPUNoUpdateFoundUserInitiatedKey: A boolean that indicates if a new update was not found when the user intitiated an update check manually.
    +
    +
    + +
    +
    + +

    ◆ updaterMayCheckForUpdates:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (BOOL) updaterMayCheckForUpdates: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns whether to allow Sparkle to pop up.

    +

    For example, this may be used to prevent Sparkle from interrupting a setup assistant. Alternatively, you may want to consider starting the updater after eg: the setup assistant finishes

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterShouldDownloadReleaseNotes:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (BOOL) updaterShouldDownloadReleaseNotes: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns whether the release notes (if available) should be downloaded after an update is found and shown.

    +

    This is specifically for the releaseNotesLink element in the appcast.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    YES to download and show the release notes if available, otherwise NO. The default behavior is YES.
    + +
    +
    + +

    ◆ updaterShouldPromptForPermissionToCheckForUpdates:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (BOOL) updaterShouldPromptForPermissionToCheckForUpdates: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns whether Sparkle should prompt the user about automatic update checks.

    +

    Use this to override the default behavior.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterShouldRelaunchApplication:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (BOOL) updaterShouldRelaunchApplication: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns whether the application should be relaunched at all.

    +

    Some apps cannot be relaunched under certain circumstances. This method can be used to explicitly prevent a relaunch.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    YES if the updater should be relaunched, otherwise NO if it shouldn't.
    + +
    +
    + +

    ◆ updaterWillIdleSchedulingUpdates:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (void) updaterWillIdleSchedulingUpdates: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Called when no updates will be scheduled in the future.

    +

    This may later change if automatic update checks become enabled.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ updaterWillRelaunchApplication:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (void) updaterWillRelaunchApplication: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Called immediately before relaunching.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ userDidCancelDownload:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (void) userDidCancelDownload: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Called when the user clicks the cancel button while and update is being downloaded.

    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    + +
    +
    + +

    ◆ versionComparatorForUpdater:

    + +
    +
    + + + + + +
    + + + + + + + + +
    - (nullable id<SUVersionComparison>) versionComparatorForUpdater: (SPUUpdater *) updater
    +
    +optional
    +
    + +

    Returns an object that compares version numbers to determine their arithmetic relation to each other.

    +

    This method allows you to provide a custom version comparator. If you don't implement this method or return nil, the standard version comparator will be used. Note that the standard version comparator may be used during installation for preventing a downgrade, even if you provide a custom comparator here.

    +
    See also
    SUStandardVersionComparator
    +
    Parameters
    + + +
    updaterThe updater instance.
    +
    +
    +
    Returns
    The custom version comparator or nil if you don't want to be delegated this task.
    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_updater_delegate-p.png b/documentation/api-reference/protocol_s_p_u_updater_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e5958b287e3a3609d1771bb5fa580c8aa4f1c9 GIT binary patch literal 596 zcmeAS@N?(olHy`uVBq!ia0vp^6M#5?gBeI3Ea0&NQW60^A+G=b{|7Q(y!l$%e+Z-k zj1L?*z}k679?0b=3GxeO04f53tEWPY7#J8Id%8G=R4~4sdwWx}0*`BW+^qlqA7Acz zsOGkIx$LsZGxJTaBx-mh&^;yq6aC=u?c5UiZz{X^lWV3$-1(f6MTAM=*NL(9S8|eV{~c zh2Jz$fANKk0q0)6%=KfMd3a0s)b)x1t3Gc#<*&3?a3RYTk?#slvA6$Lw|McIHZME9 zFUDE@+``1^u?v5m@T|Rj|2^~FQt|le&`^KIC97U#x+w@w>}2_%U&U}{$;}42{*xVP z%vGPxxSGfYlt?zLXJGmu;=nMEiQ_;p17ii30)syz%LB~@1{+p^hUEy!%kP;wJI<)E zB*;O|=k$c#rATvvO{yB-$b*D=G zN%y#QZoAWx7np|I1xQVwX#2GH?NYbX)oG%kjHf2&@ruT$-C%s$D!X7~5BgQSyxwPDqmrcVcM#AV(R6+p~h0PbCpvjw>!9-hLqpjEA{H!!go8* zDeX6(m^MlgJi&-Tu WY}Stpy9IzrfWgz%&t;ucLK6VwDFn0t literal 0 HcmV?d00001 diff --git a/documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p-members.html b/documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p-members.html new file mode 100644 index 0000000..81e0b85 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUpdaterTimerDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SPUUpdaterTimerDelegate>, including all inherited members.

    + + +
    updaterTimerDidFire (defined in <SPUUpdaterTimerDelegate>)<SPUUpdaterTimerDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p.html b/documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p.html new file mode 100644 index 0000000..3183d01 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p.html @@ -0,0 +1,99 @@ + + + + + + + +Sparkle: <SPUUpdaterTimerDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUpdaterTimerDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SPUUpdaterTimerDelegate>:
    +
    +
    + + +SPUUpdater() + +
    + + + + +

    +Instance Methods

    +(void) - updaterTimerDidFire
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p.png b/documentation/api-reference/protocol_s_p_u_updater_timer_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..edd3a924323bfbd0e3b272dee9b2a5cc18e4c4b5 GIT binary patch literal 914 zcmeAS@N?(olHy`uVBq!ia0vp^>w&m~gBeIJd+L1>NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~D|)&(hEy=VoqPAvY6TvK=@ysw{Fj#3 zRot4Z9M9#eJDR*XD!e%qc~~4nOC|1vhhF9T9vZs!vFrUCKkD|Zzgw|U>{?y< z-Th+o!)qtsS{5N55-Pp#_3SG_`j)FcuU#@%sm^|BWzKzxhHcPp0(N(H* z^(E`my!%GNL66Kn+J3kzwCwth%jSFaSBab~cp*JKVK0MqZ+w6Lm$ldKI@ZkQeSG=j z*`Lv(tNuRR{^>ja@AnV?edv0lzAr!j-M!k-tv~kfF8};v)vA4hAeSAk4Gn!eqt=-t zQHDWh2P4msgnip@M;vPYd2W|8XaBR;znL3U-*G3j|7N=Ja34e24*dpMJlyxcxD{I( z6&QG$q3Yk%OgG)}PU`gE3XkWjUhWIYvEXN(xXUiDHt>Gg?O&xo=4phiubBUSWqHq8 zsr{-!KPUXsp64h2v#jRmwOtyvZ@%6r_iZV@A8~GJ$=1C)vi9<<-??{h!u4N)>sw2{ z-PQ8{Z2o4@EWX`;NYSb9-Cejcm*Jr8V07 zz3*E&S^npLygM~lc=D=}JFo5bt^9Q9yH@@G8T?0G)Bl8k*~FLa&a%u|JPAUA zl5F2a1veh9b#;03;uG)Zd|Tb;OZDcTR_FJMR##Fwf9WwW41X?r?&>mc!R_x?tdHf{ zt-Bl`H|@9lSKr{D7s@Y3dbh^Q9C#Sh(GhcL=RLpA=F)15k8RITR{F$q_qVg*eDQsS zA%?QsKGt5^{%QA@wVxGj{|E02|M~l6jmGC~JI;OG{Z}z8_xEA(PvI_480#$C=W&SbBeCb)RlF?xiFat4oy85}Sb4q9e E09zi-v;Y7A literal 0 HcmV?d00001 diff --git a/documentation/api-reference/protocol_s_p_u_user_driver-p-members.html b/documentation/api-reference/protocol_s_p_u_user_driver-p-members.html new file mode 100644 index 0000000..51388aa --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_user_driver-p-members.html @@ -0,0 +1,101 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SPUUserDriver> Member List
    +
    + + + + + diff --git a/documentation/api-reference/protocol_s_p_u_user_driver-p.html b/documentation/api-reference/protocol_s_p_u_user_driver-p.html new file mode 100644 index 0000000..4310776 --- /dev/null +++ b/documentation/api-reference/protocol_s_p_u_user_driver-p.html @@ -0,0 +1,706 @@ + + + + + + + +Sparkle: <SPUUserDriver> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SPUUserDriver> Protocol Reference
    +
    +
    + +

    The API in Sparkle for controlling the user interaction. + More...

    + +

    #import <SPUUserDriver.h>

    +
    +Inheritance diagram for <SPUUserDriver>:
    +
    +
    + + +SPUStandardUserDriver + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Instance Methods

    (void) - showUpdatePermissionRequest:reply:
     Show an updater permission request to the user. More...
     
    (void) - showUserInitiatedUpdateCheckWithCancellation:
     Show the user initating an update check. More...
     
    (void) - showUpdateFoundWithAppcastItem:state:reply:
     Show the user a new update is found. More...
     
    (void) - showUpdateReleaseNotesWithDownloadData:
     Show the user the release notes for the new update. More...
     
    (void) - showUpdateReleaseNotesFailedToDownloadWithError:
     Show the user that the new update's release notes could not be downloaded. More...
     
    (void) - showUpdateNotFoundWithError:acknowledgement:
     Show the user a new update was not found. More...
     
    (void) - showUpdaterError:acknowledgement:
     Show the user an update error occurred. More...
     
    (void) - showDownloadInitiatedWithCancellation:
     Show the user that downloading the new update initiated. More...
     
    (void) - showDownloadDidReceiveExpectedContentLength:
     Show the user the content length of the new update that will be downloaded. More...
     
    (void) - showDownloadDidReceiveDataOfLength:
     Show the user that the update download received more data. More...
     
    (void) - showDownloadDidStartExtractingUpdate
     Show the user that the update finished downloading and started extracting. More...
     
    (void) - showExtractionReceivedProgress:
     Show the user that the update is extracting with progress. More...
     
    (void) - showInstallingUpdate
     Show the user that the update is installing. More...
     
    (void) - showReadyToInstallAndRelaunch:
     Show the user that the update is ready to install & relaunch. More...
     
    (void) - showSendingTerminationSignal
     Show or dismiss progress while a termination signal is being sent to the application from Sparkle's installer. More...
     
    (void) - showUpdateInstalledAndRelaunched:acknowledgement:
     Show the user that the update installation finished. More...
     
    (void) - showUpdateInFocus
     Show the user the current presented update or its progress in utmost focus. More...
     
    (void) - dismissUpdateInstallation
     Dismiss the current update installation. More...
     
    +(void) - showUpdateNotFoundWithAcknowledgement:
     
    +(void) - showUpdateInstallationDidFinishWithAcknowledgement:
     
    +("Transition to new UI appropriately when a new update is shown, when no update is found, or when an update error occurs.") - __deprecated_msg
     
    +

    Detailed Description

    +

    The API in Sparkle for controlling the user interaction.

    +

    This protocol is used for implementing a user interface for the Sparkle updater. Sparkle's internal drivers tell an object that implements this protocol what actions to take and show to the user.

    +

    Every method in this protocol can be assumed to be called from the main thread.

    +

    Method Documentation

    + +

    ◆ dismissUpdateInstallation

    + +
    +
    + + + + + + + +
    - (void) dismissUpdateInstallation
    +
    + +

    Dismiss the current update installation.

    +

    Stop and tear down everything. Dismiss all update windows, alerts, progress, etc from the user. Basically, stop everything that could have been started. Sparkle may invoke this when aborting or finishing an update.

    + +
    +
    + +

    ◆ showDownloadDidReceiveDataOfLength:

    + +
    +
    + + + + + + + + +
    - (void) showDownloadDidReceiveDataOfLength: (uint64_t) length
    +
    + +

    Show the user that the update download received more data.

    +

    This may be an appropriate time to advance a visible progress indicator of the download

    Parameters
    + + +
    lengthThe length of the data that was just downloaded
    +
    +
    + +
    +
    + +

    ◆ showDownloadDidReceiveExpectedContentLength:

    + +
    +
    + + + + + + + + +
    - (void) showDownloadDidReceiveExpectedContentLength: (uint64_t) expectedContentLength
    +
    + +

    Show the user the content length of the new update that will be downloaded.

    +
    Parameters
    + + +
    expectedContentLengthThe expected content length of the new update being downloaded. An implementor should be able to handle if this value is invalid (more or less than actual content length downloaded). Additionally, this method may be called more than once for the same download in rare scenarios.
    +
    +
    + +
    +
    + +

    ◆ showDownloadDidStartExtractingUpdate

    + +
    +
    + + + + + + + +
    - (void) showDownloadDidStartExtractingUpdate
    +
    + +

    Show the user that the update finished downloading and started extracting.

    +

    Sparkle uses this to show an indeterminate progress bar.

    +

    Note that an update can resume at this point after having been downloaded before, so this may be called without any of the download callbacks being invoked prior.

    + +
    +
    + +

    ◆ showDownloadInitiatedWithCancellation:

    + +
    +
    + + + + + + + + +
    - (void) showDownloadInitiatedWithCancellation: (void(^)(void)) cancellation
    +
    + +

    Show the user that downloading the new update initiated.

    +

    Let the user know that downloading the new update started.

    +
    Parameters
    + + +
    cancellationInvoke this cancellation block to cancel the download at any point before -showDownloadDidStartExtractingUpdate is invoked.
    +
    +
    + +
    +
    + +

    ◆ showExtractionReceivedProgress:

    + +
    +
    + + + + + + + + +
    - (void) showExtractionReceivedProgress: (double) progress
    +
    + +

    Show the user that the update is extracting with progress.

    +

    Let the user know how far along the update extraction is.

    +

    Before this point, -showDownloadDidStartExtractingUpdate is called.

    +
    Parameters
    + + +
    progressThe progress of the extraction from a 0.0 to 1.0 scale
    +
    +
    + +
    +
    + +

    ◆ showInstallingUpdate

    + +
    +
    + + + + + + + +
    - (void) showInstallingUpdate
    +
    + +

    Show the user that the update is installing.

    +

    Let the user know that the update is currently installing. Sparkle uses this to show an indeterminate progress bar.

    +

    Before this point, -showExtractionReceivedProgress: may be called.

    + +
    +
    + +

    ◆ showReadyToInstallAndRelaunch:

    + +
    +
    + + + + + + + + +
    - (void) showReadyToInstallAndRelaunch: (void(^)(SPUUserUpdateChoice)) reply
    +
    + +

    Show the user that the update is ready to install & relaunch.

    +

    Let the user know that the update is ready to install and relaunch, and ask them whether they want to proceed. Note if the target application has already terminated, this method may not be invoked.

    +
    Parameters
    + + +
    replyA reply of SPUUserUpdateChoiceInstall installs the update the new update immediately. The application is relaunched only if it is still running by the time this reply is invoked. If the application terminates on its own, Sparkle will attempt to automatically install the update.
    +
    +
    +

    A reply of SPUUserUpdateChoiceDismiss dismisses the update installation for the time being. Note the update may still be installed automatically after the application terminates.

    +

    A reply of SPUUserUpdateChoiceSkip cancels the current update that has begun installing and dismisses the update. In this circumstance, the update is canceled but this update version is not skipped in the future.

    +

    Before this point, -showInstallingUpdate will be called.

    + +
    +
    + +

    ◆ showSendingTerminationSignal

    + +
    +
    + + + + + + + +
    - (void) showSendingTerminationSignal
    +
    + +

    Show or dismiss progress while a termination signal is being sent to the application from Sparkle's installer.

    +

    Terminating and relaunching the application (if requested to be relaunched) may happen quickly, or it may take some time to perform the final installation, or the termination signal can be canceled or delayed by the application or user.

    +

    It is up to the implementor whether or not to decide to continue showing installation progress or dismissing UI that won't remain obscuring other parts of the user interface.

    +

    This will not be invoked if the application that is being updated is already terminated.

    + +
    +
    + +

    ◆ showUpdateFoundWithAppcastItem:state:reply:

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    - (void) showUpdateFoundWithAppcastItem: (SUAppcastItem *) appcastItem
    state:(SPUUserUpdateState *) state
    reply:(void(^)(SPUUserUpdateChoice)) reply 
    +
    + +

    Show the user a new update is found.

    +

    Let the user know a new update is found and ask them what they want to do. Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.

    +
    Parameters
    + + + +
    appcastItemThe Appcast Item containing information that reflects the new update.
    stateThe current state of the user update. The state.stage values are: SPUUpdateStateNotDownloaded - Update has not been downloaded yet. SPUUpdateStateDownloaded - Update has already been downloaded but not started installing yet. SPUUpdateStateInstalling - Update has been downloaded and already started installing.
    +
    +
    +

    state.userInitiated indicates if the update was initiated by the user or if it was automatically scheduled in the background.

    +

    Additionally, these properties on the appcastItem are of importance: appcastItem.informationOnlyUpdate indicates if the update is only informational and should not be downloaded. You can direct the user to the infoURL property of the appcastItem in their web browser. Sometimes information only updates are used as a fallback in case a bad update is shipped, so you'll want to support this case. appcastItem.majorUpgrade indicates if the update is a major or paid upgrade. appcastItem.criticalUpdate indicates if the update is a critical update.

    +
    Parameters
    + + +
    replyA reply of SPUUserUpdateChoiceInstall begins or resumes downloading or installing the update. If the state.stage is SPUUserUpdateStateInstalling, this may send a quit event to the application and relaunch it immediately (in this state, this behaves as a fast "install and Relaunch"). Do not use this reply if appcastItem.informationOnlyUpdate is YES.
    +
    +
    +

    A reply of SPUUserUpdateChoiceDismiss dismisses the update for the time being. The user may be reminded of the update at a later point. If the state.stage is SPUUserUpdateStateDownloaded, the downloaded update is kept after dismissing until the next time an update is shown to the user. If the state.stage is SPUUserUpdateStateInstalling, the installing update is also preserved after dismissing. In this state however, the update will also still be installed after the application is terminated.

    +

    A reply of SPUUserUpdateChoiceSkip skips this particular version and won't notify the user again, unless they initiate an update check themselves. If appcastItem.majorUpgrade is YES, the major update and any future minor updates to that major release are skipped. If the state.stage is SPUUpdateStateInstalling, the installation is also canceled when the update is skipped.

    + +
    +
    + +

    ◆ showUpdateInFocus

    + +
    +
    + + + + + + + +
    - (void) showUpdateInFocus
    +
    + +

    Show the user the current presented update or its progress in utmost focus.

    +

    The user wishes to check for updates while the user is being shown update progress. Bring whatever is on screen to frontmost focus (permission request, update information, downloading or extraction status, choice to install update, etc).

    + +
    +
    + +

    ◆ showUpdateInstalledAndRelaunched:acknowledgement:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) showUpdateInstalledAndRelaunched: (BOOL) relaunched
    acknowledgement:(void(^)(void)) acknowledgement 
    +
    + +

    Show the user that the update installation finished.

    +

    Let the user know that the update finished installing.

    +

    This will only be invoked if the updater process is still alive, which is typically not the case if the updater's lifetime is tied to the application it is updating. This implementation must not try to reference the old bundle prior to the installation, which will no longer be around.

    +

    Before this point, -showSendingTerminationSignal or -showReadyToInstallAndRelaunch: may be called.

    +
    Parameters
    + + + +
    relaunchedIndicates if the update was relaunched.
    acknowledgementAcknowledge to the updater that the finished installation was shown.
    +
    +
    + +
    +
    + +

    ◆ showUpdateNotFoundWithError:acknowledgement:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) showUpdateNotFoundWithError: (NSError *) error
    acknowledgement:(void(^)(void)) acknowledgement 
    +
    + +

    Show the user a new update was not found.

    +

    Let the user know a new update was not found after they tried initiating an update check. Before this point, -showUserInitiatedUpdateCheckWithCancellation: may be called.

    +
    Parameters
    + + +
    errorThe error associated with why a new update was not found. There are various reasons a new update is unavailable and can't be installed. This error object is populated with recovery and suggestion strings suitable to be shown in an alert.
    +
    +
    +

    The userInfo dictionary is also populated with two keys: SPULatestAppcastItemFoundKey: if available, this may provide the latest SUAppcastItem that was found. SPUNoUpdateFoundReasonKey: if available, this will provide the SUNoUpdateFoundReason. For example the reason could be because the latest version in the feed requires a newer OS version or could be because the user is already on the latest version.

    +
    Parameters
    + + +
    acknowledgementAcknowledge to the updater that no update found error was shown.
    +
    +
    + +
    +
    + +

    ◆ showUpdatePermissionRequest:reply:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) showUpdatePermissionRequest: (SPUUpdatePermissionRequest *) request
    reply:(void(^)(SUUpdatePermissionResponse *)) reply 
    +
    + +

    Show an updater permission request to the user.

    +

    Ask the user for their permission regarding update checks. This is typically only called once per app installation.

    +
    Parameters
    + + + +
    requestThe update permission request.
    replyA reply with a update permission response.
    +
    +
    + +
    +
    + +

    ◆ showUpdateReleaseNotesFailedToDownloadWithError:

    + +
    +
    + + + + + + + + +
    - (void) showUpdateReleaseNotesFailedToDownloadWithError: (NSError *) error
    +
    + +

    Show the user that the new update's release notes could not be downloaded.

    +

    This will be called after showing the new update. This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.

    +
    Parameters
    + + +
    errorThe error associated with why the new update's release notes could not be downloaded.
    +
    +
    + +
    +
    + +

    ◆ showUpdateReleaseNotesWithDownloadData:

    + +
    +
    + + + + + + + + +
    - (void) showUpdateReleaseNotesWithDownloadData: (SPUDownloadData *) downloadData
    +
    + +

    Show the user the release notes for the new update.

    +

    Display the release notes to the user. This will be called after showing the new update. This is only applicable if the release notes are linked from the appcast, and are not directly embedded inside of the appcast file. That is, this may be invoked if the releaseNotesURL from the appcast item is non-nil.

    +
    Parameters
    + + +
    downloadDataThe data for the release notes that was downloaded from the new update's appcast.
    +
    +
    + +
    +
    + +

    ◆ showUpdaterError:acknowledgement:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) showUpdaterError: (NSError *) error
    acknowledgement:(void(^)(void)) acknowledgement 
    +
    + +

    Show the user an update error occurred.

    +

    Let the user know that the updater failed with an error. This will not be invoked without the user having been aware that an update was in progress.

    +

    Before this point, any of the non-error user driver methods may have been invoked.

    +
    Parameters
    + + + +
    errorThe error associated with what update error occurred..
    acknowledgementAcknowledge to the updater that the error was shown.
    +
    +
    + +
    +
    + +

    ◆ showUserInitiatedUpdateCheckWithCancellation:

    + +
    +
    + + + + + + + + +
    - (void) showUserInitiatedUpdateCheckWithCancellation: (void(^)(void)) cancellation
    +
    + +

    Show the user initating an update check.

    +

    Respond to the user initiating an update check. Sparkle uses this to show the user a window with an indeterminate progress bar.

    +
    Parameters
    + + +
    cancellationInvoke this cancellation block to cancel the update check before the update check is completed.
    +
    +
    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_p_u_user_driver-p.png b/documentation/api-reference/protocol_s_p_u_user_driver-p.png new file mode 100644 index 0000000000000000000000000000000000000000..ff05e94dcedb08828d7af2cd09ef80a01010922f GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^Q-QdHgBeKPG>NnTQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Cd%W%k_hU^RJheCNH~ZXsN*=uh6UR5i3{ys>qvqyIyvGmuh^D{kDaE z%69X9NQb#5h;OtH36=iW7AmMA+s~of-xbq&@A}G?kkG5gjaPq_t&TYLOE&Cgsj=De z^d$c^ueNG)UOloZd8__MX8rx4lBWANMD1G_s>d+cAhub7$tO{-52y*giQO-N`hPxjOxuf>cX6w?|W zN?gjC=YB=%Qr1MNfNY=DD;yd06ImZ9uVJWZ5pC$-!1O^djKS^@*8%qk#vdHo4Dv{l z_w#|q9Cl=q=z%Je3Cs4)*}Ci7iS{D44O6B)}o3`_GhcMZd%N25)(Z$ z?)UBWVH?WcRnB`>`ueL?n3>w$ocwulQ8RsN^~07v*Iuo*-iP&!y={seoSy%2mUD%zPx68~RZ0X&53jEu6gJx}O zHqpMZb=A9k=QVX-*YAxi^`0bif0yIsJ3TS?QaA0LAO3V-7SAtXp+3_G!d~#SPznt@^$?_|>eQ&UzU^LHR^grANwZ oTwH2ergn7nAI$=K-sB%c`I9o+`z|f~z+A)N>FVdQ&MBb@09v`ABLDyZ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/protocol_s_u_appcast_driver_delegate-p-members.html b/documentation/api-reference/protocol_s_u_appcast_driver_delegate-p-members.html new file mode 100644 index 0000000..f66ac21 --- /dev/null +++ b/documentation/api-reference/protocol_s_u_appcast_driver_delegate-p-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUAppcastDriverDelegate> Member List
    +
    +
    + +

    This is the complete list of members for <SUAppcastDriverDelegate>, including all inherited members.

    + + + + + +
    didFailToFetchAppcastWithError: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
    didFindValidUpdateWithAppcastItem:secondaryAppcastItem: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
    didFinishLoadingAppcast: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
    didNotFindUpdateWithLatestAppcastItem:hostToLatestAppcastItemComparisonResult:background: (defined in <SUAppcastDriverDelegate>)<SUAppcastDriverDelegate>
    + + + + diff --git a/documentation/api-reference/protocol_s_u_appcast_driver_delegate-p.html b/documentation/api-reference/protocol_s_u_appcast_driver_delegate-p.html new file mode 100644 index 0000000..cb9f359 --- /dev/null +++ b/documentation/api-reference/protocol_s_u_appcast_driver_delegate-p.html @@ -0,0 +1,108 @@ + + + + + + + +Sparkle: <SUAppcastDriverDelegate> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUAppcastDriverDelegate> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SUAppcastDriverDelegate>:
    +
    +
    + + +SPUBasicUpdateDriver() + +
    + + + + + + + + + + +

    +Instance Methods

    +(void) - didFailToFetchAppcastWithError:
     
    +(void) - didFinishLoadingAppcast:
     
    +(void) - didFindValidUpdateWithAppcastItem:secondaryAppcastItem:
     
    +(void) - didNotFindUpdateWithLatestAppcastItem:hostToLatestAppcastItemComparisonResult:background:
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_u_appcast_driver_delegate-p.png b/documentation/api-reference/protocol_s_u_appcast_driver_delegate-p.png new file mode 100644 index 0000000000000000000000000000000000000000..ebbca789c373d43e9ecbe2b989625d060628bf21 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0vp^>wvg}gBeJAsw;d4QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;OU%0IDzj>T? zk!bbCvw1UpkNXQGS+q^~r`jU$Owcj3RLpYSs#Q~E!b7im$v-+a{r&gf8+-Yy)4x|2 z{J&Wx|440<&yBK>Q0u?JcU-3JnKENtaHrML-}jdI287ne%Rk8Le(ta=L}SNCig`A*Z*T5q`%_t>oLBsW?c!Unqw#%t zC+{x19MU%b)Lrpc?=~3K9QbAa@9MtS_X9WilZy?#`u=2LXz1D}J65dSy2pwwxwRfR2lIDUVYpNs>fM3OnS@| zak7wc&66DrVJOnO|2lCb$_X;0O@yi_IdHe{eyz>jxPSAm>dD>9VptHIUHq=j;@)Gm zGflsX{>*e)H|hJLd`> z-wtI<$?sfYqB@K5)oSDXHxeIK(! z`>oHO$q%bi88%GD6_8lM`Oe$zI;WEs+}@;f`ukBOC8KVcaF-)qecDP%OAYfP>Z>Jmw7MO zI;klY#r{`(XI+0tNol|4aZ$mIlOA_ + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUInstallerAgentInitiationProtocol> Member List
    +
    +
    + +

    This is the complete list of members for <SUInstallerAgentInitiationProtocol>, including all inherited members.

    + + + +
    connectionDidInitiateWithReply: (defined in <SUInstallerAgentInitiationProtocol>)<SUInstallerAgentInitiationProtocol>
    connectionWillInvalidateWithError: (defined in <SUInstallerAgentInitiationProtocol>)<SUInstallerAgentInitiationProtocol>
    + + + + diff --git a/documentation/api-reference/protocol_s_u_installer_agent_initiation_protocol-p.html b/documentation/api-reference/protocol_s_u_installer_agent_initiation_protocol-p.html new file mode 100644 index 0000000..4e7b353 --- /dev/null +++ b/documentation/api-reference/protocol_s_u_installer_agent_initiation_protocol-p.html @@ -0,0 +1,93 @@ + + + + + + + +Sparkle: <SUInstallerAgentInitiationProtocol> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUInstallerAgentInitiationProtocol> Protocol Reference
    +
    +
    + + + + + + +

    +Instance Methods

    +(void) - connectionDidInitiateWithReply:
     
    +(void) - connectionWillInvalidateWithError:
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_u_installer_protocol-p-members.html b/documentation/api-reference/protocol_s_u_installer_protocol-p-members.html new file mode 100644 index 0000000..b2794d1 --- /dev/null +++ b/documentation/api-reference/protocol_s_u_installer_protocol-p-members.html @@ -0,0 +1,84 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUInstallerProtocol> Member List
    +
    +
    + +

    This is the complete list of members for <SUInstallerProtocol>, including all inherited members.

    + + + + + +
    canInstallSilently (defined in <SUInstallerProtocol>)<SUInstallerProtocol>
    installationPath (defined in <SUInstallerProtocol>)<SUInstallerProtocol>
    performFinalInstallationProgressBlock:error: (defined in <SUInstallerProtocol>)<SUInstallerProtocol>
    performInitialInstallation: (defined in <SUInstallerProtocol>)<SUInstallerProtocol>
    + + + + diff --git a/documentation/api-reference/protocol_s_u_installer_protocol-p.html b/documentation/api-reference/protocol_s_u_installer_protocol-p.html new file mode 100644 index 0000000..83dc76c --- /dev/null +++ b/documentation/api-reference/protocol_s_u_installer_protocol-p.html @@ -0,0 +1,105 @@ + + + + + + + +Sparkle: <SUInstallerProtocol> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUInstallerProtocol> Protocol Reference
    +
    +
    +
    +Inheritance diagram for <SUInstallerProtocol>:
    +
    +
    + +
    + + + + + + + + + + +

    +Instance Methods

    +(BOOL) - performInitialInstallation:
     
    +(BOOL) - performFinalInstallationProgressBlock:error:
     
    +(BOOL) - canInstallSilently
     
    +(NSString *) - installationPath
     
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_u_installer_protocol-p.png b/documentation/api-reference/protocol_s_u_installer_protocol-p.png new file mode 100644 index 0000000000000000000000000000000000000000..7b127fdd47cf08592386873eb020cde9b5d91aed GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^tw0>W!3-oBzPn8Vk`e(vA+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;F1Wv71?Ow-yN%Bma|Pdx)VpdFdiA}j+sCe(%VMuD4i?!q^+N112RDs3 zQCFHc;@$*oQI&pRv3y0K7t>~$-6Bg9YIn{nj`_4GV29S-k4ibS&R1M~eaQ5V+|TY^ z5t zy?F1=HT|#FQNLT}8a8K(Jzna*En6k>`pa~S-bYv8IKLLCwp^ys?|narqlI~)ymrsW zMP-kEeAxDN>)CszbHtDRE4?u7(6!c`lK0E^&fDa+UF_$s4VQCo{%YBESoerVYvH}> zjlpwm4<78gab&uNS=^RS)=Ml_b}M#$-u2-=_vgDGv^QO=xye@6&(gI^T<^VLgQZv3 k5{3@1F6p3-jx*Q9Ig9*fJa+i-78th-p00i_>zopr0NSeoIsgCw literal 0 HcmV?d00001 diff --git a/documentation/api-reference/protocol_s_u_version_comparison-p-members.html b/documentation/api-reference/protocol_s_u_version_comparison-p-members.html new file mode 100644 index 0000000..a059b4a --- /dev/null +++ b/documentation/api-reference/protocol_s_u_version_comparison-p-members.html @@ -0,0 +1,81 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUVersionComparison> Member List
    +
    +
    + +

    This is the complete list of members for <SUVersionComparison>, including all inherited members.

    + + +
    compareVersion:toVersion:<SUVersionComparison>
    + + + + diff --git a/documentation/api-reference/protocol_s_u_version_comparison-p.html b/documentation/api-reference/protocol_s_u_version_comparison-p.html new file mode 100644 index 0000000..7469c5e --- /dev/null +++ b/documentation/api-reference/protocol_s_u_version_comparison-p.html @@ -0,0 +1,140 @@ + + + + + + + +Sparkle: <SUVersionComparison> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUVersionComparison> Protocol Reference
    +
    +
    + +

    Provides version comparison facilities for Sparkle. + More...

    + +

    #import <SUVersionComparisonProtocol.h>

    +
    +Inheritance diagram for <SUVersionComparison>:
    +
    +
    + + +SUStandardVersionComparator + +
    + + + + + +

    +Instance Methods

    (NSComparisonResult) - compareVersion:toVersion:
     An abstract method to compare two version strings. More...
     
    +

    Detailed Description

    +

    Provides version comparison facilities for Sparkle.

    +

    Method Documentation

    + +

    ◆ compareVersion:toVersion:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (NSComparisonResult) compareVersion: (NSString *) versionA
    toVersion:(NSString *) versionB 
    +
    + +

    An abstract method to compare two version strings.

    +

    Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent.

    + +

    Reimplemented in SUStandardVersionComparator.

    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/protocol_s_u_version_comparison-p.png b/documentation/api-reference/protocol_s_u_version_comparison-p.png new file mode 100644 index 0000000000000000000000000000000000000000..b0805395abe9c741473bc5acb6e01e2bad489144 GIT binary patch literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^dx1EBgBeIxUv7y5QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;HH-2DYn9*k3I6Y*+-rULA55LgP`6(eCkWJD%)bpx?Ld9cO`t`PQ{Y&i4h(6knU&R22X7 z{L8tMS86|chHstw$Z{`d;H5j4;y={i`~B@oSXI42&8_zr?|a;r|88gf?qzLTd5Z2d z^XpmnF3aZ~h=08=^XAsl=`FKrw%9KJrh47|RPfoeFYmT8SOhNL{mpx_UsXf9)NHv2 z+_Szg)SA3x{Pm(Xw?*L40;V4e;}{NSW&FCHo$_blOYt9#ACE7aZ_B=5x|*$nyl+*5 z9ZW;UCFU;|VIebFZb3hqf^#CtJ^L?fACst8U!=mj%2VGHXpid3ey!SwfA{2He}A@J z<-3f8c<`osWgZ_@U(Vxm6aVE?`$O}jZU0NvldIoMQn`D{{a2ajYrfp|M<yU+Fgt9{cpubupN3wwm`m2WXN3-teP|9M9J zZpqYJ#iz82g*VJywQ|m-m>5fm;<{Bk+v1;Zw|#EEH(NfIadO + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    <SUVersionDisplay> Member List
    +
    +
    + +

    This is the complete list of members for <SUVersionDisplay>, including all inherited members.

    + + +
    formatVersion:andVersion:<SUVersionDisplay>
    + + + + diff --git a/documentation/api-reference/protocol_s_u_version_display-p.html b/documentation/api-reference/protocol_s_u_version_display-p.html new file mode 100644 index 0000000..416112a --- /dev/null +++ b/documentation/api-reference/protocol_s_u_version_display-p.html @@ -0,0 +1,129 @@ + + + + + + + +Sparkle: <SUVersionDisplay> Protocol Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    <SUVersionDisplay> Protocol Reference
    +
    +
    + +

    Applies special display formatting to version numbers. + More...

    + +

    #import <SUVersionDisplayProtocol.h>

    + + + + + +

    +Instance Methods

    (void) - formatVersion:andVersion:
     Formats two version strings. More...
     
    +

    Detailed Description

    +

    Applies special display formatting to version numbers.

    +

    Method Documentation

    + +

    ◆ formatVersion:andVersion:

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    - (void) formatVersion: (NSString *_Nonnull *_Nonnull) inOutVersionA
    andVersion:(NSString *_Nonnull *_Nonnull) inOutVersionB 
    +
    + +

    Formats two version strings.

    +

    Both versions are provided so that important distinguishing information can be displayed while also leaving out unnecessary/confusing parts.

    + +
    +
    +
    The documentation for this protocol was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/search.json b/documentation/api-reference/search.json new file mode 100644 index 0000000..8a0cad3 --- /dev/null +++ b/documentation/api-reference/search.json @@ -0,0 +1 @@ +{"Protocols/SUVersionDisplay.html#/c:objc(pl)SUVersionDisplay(im)formatVersion:andVersion:":{"name":"-formatVersion:andVersion:","abstract":"

    Formats two version strings.

    ","parent_name":"SUVersionDisplay"},"Protocols/SUVersionComparison.html#/c:objc(pl)SUVersionComparison(im)compareVersion:toVersion:":{"name":"-compareVersion:toVersion:","abstract":"

    An abstract method to compare two version strings.

    ","parent_name":"SUVersionComparison"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterMayCheckForUpdates:":{"name":"-updaterMayCheckForUpdates:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)feedParametersForUpdater:sendingSystemProfile:":{"name":"-feedParametersForUpdater:sendingSystemProfile:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)feedURLStringForUpdater:":{"name":"-feedURLStringForUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterShouldPromptForPermissionToCheckForUpdates:":{"name":"-updaterShouldPromptForPermissionToCheckForUpdates:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didFinishLoadingAppcast:":{"name":"-updater:didFinishLoadingAppcast:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)bestValidUpdateInAppcast:forUpdater:":{"name":"-bestValidUpdateInAppcast:forUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didFindValidUpdate:":{"name":"-updater:didFindValidUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterDidNotFindUpdate:":{"name":"-updaterDidNotFindUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willDownloadUpdate:withRequest:":{"name":"-updater:willDownloadUpdate:withRequest:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didDownloadUpdate:":{"name":"-updater:didDownloadUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:failedToDownloadUpdate:error:":{"name":"-updater:failedToDownloadUpdate:error:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)userDidCancelDownload:":{"name":"-userDidCancelDownload:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willExtractUpdate:":{"name":"-updater:willExtractUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didExtractUpdate:":{"name":"-updater:didExtractUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willInstallUpdate:":{"name":"-updater:willInstallUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:userDidSkipThisVersion:":{"name":"-updater:userDidSkipThisVersion:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:shouldPostponeRelaunchForUpdate:untilInvoking:":{"name":"-updater:shouldPostponeRelaunchForUpdate:untilInvoking:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:shouldPostponeRelaunchForUpdate:":{"name":"-updater:shouldPostponeRelaunchForUpdate:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterShouldRelaunchApplication:":{"name":"-updaterShouldRelaunchApplication:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterWillRelaunchApplication:":{"name":"-updaterWillRelaunchApplication:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterDidRelaunchApplication:":{"name":"-updaterDidRelaunchApplication:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)versionComparatorForUpdater:":{"name":"-versionComparatorForUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)versionDisplayerForUpdater:":{"name":"-versionDisplayerForUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)pathToRelaunchForUpdater:":{"name":"-pathToRelaunchForUpdater:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterWillShowModalAlert:":{"name":"-updaterWillShowModalAlert:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updaterDidShowModalAlert:":{"name":"-updaterDidShowModalAlert:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willInstallUpdateOnQuit:immediateInstallationInvocation:":{"name":"-updater:willInstallUpdateOnQuit:immediateInstallationInvocation:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:willInstallUpdateOnQuit:immediateInstallationBlock:":{"name":"-updater:willInstallUpdateOnQuit:immediateInstallationBlock:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didCancelInstallUpdateOnQuit:":{"name":"-updater:didCancelInstallUpdateOnQuit:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SUUpdaterDelegate.html#/c:objc(pl)SUUpdaterDelegate(im)updater:didAbortWithError:":{"name":"-updater:didAbortWithError:","abstract":"

    Undocumented

    ","parent_name":"SUUpdaterDelegate"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdatePermissionRequest:reply:":{"name":"-showUpdatePermissionRequest:reply:","abstract":"

    Show an updater permission request to the user

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUserInitiatedUpdateCheckWithCancellation:":{"name":"-showUserInitiatedUpdateCheckWithCancellation:","abstract":"

    Show the user initating an update check

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateFoundWithAppcastItem:state:reply:":{"name":"-showUpdateFoundWithAppcastItem:state:reply:","abstract":"

    Show the user a new update is found.

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateReleaseNotesWithDownloadData:":{"name":"-showUpdateReleaseNotesWithDownloadData:","abstract":"

    Show the user the release notes for the new update

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateReleaseNotesFailedToDownloadWithError:":{"name":"-showUpdateReleaseNotesFailedToDownloadWithError:","abstract":"

    Show the user that the new update’s release notes could not be downloaded

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateNotFoundWithError:acknowledgement:":{"name":"-showUpdateNotFoundWithError:acknowledgement:","abstract":"

    Show the user a new update was not found

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdaterError:acknowledgement:":{"name":"-showUpdaterError:acknowledgement:","abstract":"

    Show the user an update error occurred

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showDownloadInitiatedWithCancellation:":{"name":"-showDownloadInitiatedWithCancellation:","abstract":"

    Show the user that downloading the new update initiated

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showDownloadDidReceiveExpectedContentLength:":{"name":"-showDownloadDidReceiveExpectedContentLength:","abstract":"

    Show the user the content length of the new update that will be downloaded

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showDownloadDidReceiveDataOfLength:":{"name":"-showDownloadDidReceiveDataOfLength:","abstract":"

    Show the user that the update download received more data

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showDownloadDidStartExtractingUpdate":{"name":"-showDownloadDidStartExtractingUpdate","abstract":"

    Show the user that the update finished downloading and started extracting

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showExtractionReceivedProgress:":{"name":"-showExtractionReceivedProgress:","abstract":"

    Show the user that the update is extracting with progress

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showInstallingUpdate":{"name":"-showInstallingUpdate","abstract":"

    Show the user that the update is installing

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showReadyToInstallAndRelaunch:":{"name":"-showReadyToInstallAndRelaunch:","abstract":"

    Show the user that the update is ready to install & relaunch

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showSendingTerminationSignal":{"name":"-showSendingTerminationSignal","abstract":"

    Show or dismiss progress while a termination signal is being sent to the application from Sparkle’s installer

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateInstalledAndRelaunched:acknowledgement:":{"name":"-showUpdateInstalledAndRelaunched:acknowledgement:","abstract":"

    Show the user that the update installation finished

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateInFocus":{"name":"-showUpdateInFocus","abstract":"

    Show the user the current presented update or its progress in utmost focus

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)dismissUpdateInstallation":{"name":"-dismissUpdateInstallation","abstract":"

    Dismiss the current update installation

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateNotFoundWithAcknowledgement:":{"name":"-showUpdateNotFoundWithAcknowledgement:","abstract":"

    Undocumented

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)showUpdateInstallationDidFinishWithAcknowledgement:":{"name":"-showUpdateInstallationDidFinishWithAcknowledgement:","abstract":"

    Undocumented

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUserDriver.html#/c:objc(pl)SPUUserDriver(im)dismissUserInitiatedUpdateCheck":{"name":"-dismissUserInitiatedUpdateCheck","abstract":"

    Undocumented

    ","parent_name":"SPUUserDriver"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:mayPerformUpdateCheck:error:":{"name":"-updater:mayPerformUpdateCheck:error:","abstract":"

    Returns whether to allow Sparkle to check for updates.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)allowedChannelsForUpdater:":{"name":"-allowedChannelsForUpdater:","abstract":"

    Returns the set of Sparkle channels the updater is allowed to find new updates from.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)feedURLStringForUpdater:":{"name":"-feedURLStringForUpdater:","abstract":"

    Returns a custom appcast URL used for checking for new updates.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)feedParametersForUpdater:sendingSystemProfile:":{"name":"-feedParametersForUpdater:sendingSystemProfile:","abstract":"

    Returns additional parameters to append to the appcast URL’s query string.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterShouldPromptForPermissionToCheckForUpdates:":{"name":"-updaterShouldPromptForPermissionToCheckForUpdates:","abstract":"

    Returns whether Sparkle should prompt the user about checking for new updates automatically.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)allowedSystemProfileKeysForUpdater:":{"name":"-allowedSystemProfileKeysForUpdater:","abstract":"

    Returns an allowed list of system profile keys to be appended to the appcast URL’s query string.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFinishLoadingAppcast:":{"name":"-updater:didFinishLoadingAppcast:","abstract":"

    Called after Sparkle has downloaded the appcast from the remote server.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFindValidUpdate:":{"name":"-updater:didFindValidUpdate:","abstract":"

    Called when a new valid update is found by the update driver.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:error:":{"name":"-updaterDidNotFindUpdate:error:","abstract":"

    Called when a valid new update is not found.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:":{"name":"-updaterDidNotFindUpdate:","abstract":"

    Called when a valid new update is not found.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)bestValidUpdateInAppcast:forUpdater:":{"name":"-bestValidUpdateInAppcast:forUpdater:","abstract":"

    Returns the item in the appcast corresponding to the update that should be installed.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldProceedWithUpdate:updateCheck:error:":{"name":"-updater:shouldProceedWithUpdate:updateCheck:error:","abstract":"

    Returns whether or not the updater should proceed with the new chosen update from the appcast.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:userDidSkipThisVersion:":{"name":"-updater:userDidSkipThisVersion:","abstract":"

    Called when an update is skipped by the user.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldDownloadReleaseNotesForUpdate:":{"name":"-updater:shouldDownloadReleaseNotesForUpdate:","abstract":"

    Returns whether the release notes (if available) should be downloaded after an update is found and shown.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willDownloadUpdate:withRequest:":{"name":"-updater:willDownloadUpdate:withRequest:","abstract":"

    Called immediately before downloading the specified update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didDownloadUpdate:":{"name":"-updater:didDownloadUpdate:","abstract":"

    Called immediately after succesfull download of the specified update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:failedToDownloadUpdate:error:":{"name":"-updater:failedToDownloadUpdate:error:","abstract":"

    Called after the specified update failed to download.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)userDidCancelDownload:":{"name":"-userDidCancelDownload:","abstract":"

    Called when the user cancels an update while it is being downloaded.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willExtractUpdate:":{"name":"-updater:willExtractUpdate:","abstract":"

    Called immediately before extracting the specified downloaded update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didExtractUpdate:":{"name":"-updater:didExtractUpdate:","abstract":"

    Called immediately after extracting the specified downloaded update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willInstallUpdate:":{"name":"-updater:willInstallUpdate:","abstract":"

    Called immediately before installing the specified update.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:":{"name":"-updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:","abstract":"

    Returns whether the relaunch should be delayed in order to perform other tasks.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterShouldRelaunchApplication:":{"name":"-updaterShouldRelaunchApplication:","abstract":"

    Returns whether the application should be relaunched at all.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterWillRelaunchApplication:":{"name":"-updaterWillRelaunchApplication:","abstract":"

    Called immediately before relaunching.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)versionComparatorForUpdater:":{"name":"-versionComparatorForUpdater:","abstract":"

    Returns an object that compares version numbers to determine their arithmetic relation to each other.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willScheduleUpdateCheckAfterDelay:":{"name":"-updater:willScheduleUpdateCheckAfterDelay:","abstract":"

    Called when a background update will be scheduled after a delay.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterWillNotScheduleUpdateCheck:":{"name":"-updaterWillNotScheduleUpdateCheck:","abstract":"

    Called when no update checks will be scheduled in the future.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)decryptionPasswordForUpdater:":{"name":"-decryptionPasswordForUpdater:","abstract":"

    Returns the decryption password (if any) which is used to extract the update archive DMG.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:willInstallUpdateOnQuit:immediateInstallationBlock:":{"name":"-updater:willInstallUpdateOnQuit:immediateInstallationBlock:","abstract":"

    Called when an update is scheduled to be silently installed on quit after downloading the update automatically.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didAbortWithError:":{"name":"-updater:didAbortWithError:","abstract":"

    Called after the update driver aborts due to an error.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updater:didFinishUpdateCycleForUpdateCheck:error:":{"name":"-updater:didFinishUpdateCycleForUpdateCheck:error:","abstract":"

    Called after the update driver finishes.

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterMayCheckForUpdates:":{"name":"-updaterMayCheckForUpdates:","abstract":"

    Undocumented

    ","parent_name":"SPUUpdaterDelegate"},"Protocols/SPUStandardUserDriverDelegate.html#/c:objc(pl)SPUStandardUserDriverDelegate(im)standardUserDriverWillShowModalAlert":{"name":"-standardUserDriverWillShowModalAlert","abstract":"

    Called before showing a modal alert window,","parent_name":"SPUStandardUserDriverDelegate"},"Protocols/SPUStandardUserDriverDelegate.html#/c:objc(pl)SPUStandardUserDriverDelegate(im)standardUserDriverDidShowModalAlert":{"name":"-standardUserDriverDidShowModalAlert","abstract":"

    Called after showing a modal alert window,","parent_name":"SPUStandardUserDriverDelegate"},"Protocols/SPUStandardUserDriverDelegate.html#/c:objc(pl)SPUStandardUserDriverDelegate(im)standardUserDriverRequestsVersionDisplayer":{"name":"-standardUserDriverRequestsVersionDisplayer","abstract":"

    Returns an object that formats version numbers for display to the user.","parent_name":"SPUStandardUserDriverDelegate"},"Protocols/SPUStandardUserDriverDelegate.html":{"name":"SPUStandardUserDriverDelegate","abstract":"

    A protocol for Sparkle’s standard user driver’s delegate

    "},"Protocols/SPUUpdaterDelegate.html":{"name":"SPUUpdaterDelegate","abstract":"

    Provides delegation methods to control the behavior of an SPUUpdater object.

    "},"Protocols/SPUUserDriver.html":{"name":"SPUUserDriver","abstract":"

    The API in Sparkle for controlling the user interaction.

    "},"Protocols/SUUpdaterDelegate.html":{"name":"SUUpdaterDelegate","abstract":"

    Undocumented

    "},"Protocols/SUVersionComparison.html":{"name":"SUVersionComparison","abstract":"

    Provides version comparison facilities for Sparkle.

    "},"Protocols/SUVersionDisplay.html":{"name":"SUVersionDisplay","abstract":"

    Applies special display formatting to version numbers.

    "},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonUnknown":{"name":"SPUNoUpdateFoundReasonUnknown","abstract":"

    A new update is unavailable for an unknown reason.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonOnLatestVersion":{"name":"SPUNoUpdateFoundReasonOnLatestVersion","abstract":"

    A new update is unavailable because the user is on the latest known version in the appcast feed.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonOnNewerThanLatestVersion":{"name":"SPUNoUpdateFoundReasonOnNewerThanLatestVersion","abstract":"

    A new update is unavailable because the user is on a version newer than the latest known version in the appcast feed.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonSystemIsTooOld":{"name":"SPUNoUpdateFoundReasonSystemIsTooOld","abstract":"

    A new update is unavailable because the user’s operating system version is too old for the update.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SPUNoUpdateFoundReason.html#/c:@E@SPUNoUpdateFoundReason@SPUNoUpdateFoundReasonSystemIsTooNew":{"name":"SPUNoUpdateFoundReasonSystemIsTooNew","abstract":"

    A new update is unavailable because the user’s operating system version is too new for the update.

    ","parent_name":"SPUNoUpdateFoundReason"},"Enums/SUError.html#/c:@E@SUError@SUNoPublicDSAFoundError":{"name":"SUNoPublicDSAFoundError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInsufficientSigningError":{"name":"SUInsufficientSigningError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInsecureFeedURLError":{"name":"SUInsecureFeedURLError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInvalidFeedURLError":{"name":"SUInvalidFeedURLError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInvalidUpdaterError":{"name":"SUInvalidUpdaterError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInvalidHostBundleIdentifierError":{"name":"SUInvalidHostBundleIdentifierError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInvalidHostVersionError":{"name":"SUInvalidHostVersionError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUAppcastParseError":{"name":"SUAppcastParseError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUNoUpdateError":{"name":"SUNoUpdateError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUAppcastError":{"name":"SUAppcastError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SURunningFromDiskImageError":{"name":"SURunningFromDiskImageError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUResumeAppcastError":{"name":"SUResumeAppcastError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SURunningTranslocated":{"name":"SURunningTranslocated","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUWebKitTerminationError":{"name":"SUWebKitTerminationError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUTemporaryDirectoryError":{"name":"SUTemporaryDirectoryError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUDownloadError":{"name":"SUDownloadError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUUnarchivingError":{"name":"SUUnarchivingError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUSignatureError":{"name":"SUSignatureError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUValidationError":{"name":"SUValidationError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUFileCopyFailure":{"name":"SUFileCopyFailure","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUAuthenticationFailure":{"name":"SUAuthenticationFailure","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUMissingUpdateError":{"name":"SUMissingUpdateError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUMissingInstallerToolError":{"name":"SUMissingInstallerToolError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SURelaunchError":{"name":"SURelaunchError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInstallationError":{"name":"SUInstallationError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUDowngradeError":{"name":"SUDowngradeError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInstallationCanceledError":{"name":"SUInstallationCanceledError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUInstallationAuthorizeLaterError":{"name":"SUInstallationAuthorizeLaterError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUNotValidUpdateError":{"name":"SUNotValidUpdateError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUAgentInvalidationError":{"name":"SUAgentInvalidationError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SUError.html#/c:@E@SUError@SUIncorrectAPIUsageError":{"name":"SUIncorrectAPIUsageError","abstract":"

    Undocumented

    ","parent_name":"SUError"},"Enums/SPUUserUpdateStage.html#/c:@E@SPUUserUpdateStage@SPUUserUpdateStageNotDownloaded":{"name":"SPUUserUpdateStageNotDownloaded","abstract":"

    The update has not been downloaded.

    ","parent_name":"SPUUserUpdateStage"},"Enums/SPUUserUpdateStage.html#/c:@E@SPUUserUpdateStage@SPUUserUpdateStageDownloaded":{"name":"SPUUserUpdateStageDownloaded","abstract":"

    The update has already been downloaded but not begun installing.

    ","parent_name":"SPUUserUpdateStage"},"Enums/SPUUserUpdateStage.html#/c:@E@SPUUserUpdateStage@SPUUserUpdateStageInstalling":{"name":"SPUUserUpdateStageInstalling","abstract":"

    The update has already been downloaded and began installing in the background.

    ","parent_name":"SPUUserUpdateStage"},"Enums/SPUUserUpdateChoice.html#/c:@E@SPUUserUpdateChoice@SPUUserUpdateChoiceSkip":{"name":"SPUUserUpdateChoiceSkip","abstract":"

    Dismisses the update and skips being notified of it in the future.

    ","parent_name":"SPUUserUpdateChoice"},"Enums/SPUUserUpdateChoice.html#/c:@E@SPUUserUpdateChoice@SPUUserUpdateChoiceInstall":{"name":"SPUUserUpdateChoiceInstall","abstract":"

    Downloads (if needed) and installs the update.

    ","parent_name":"SPUUserUpdateChoice"},"Enums/SPUUserUpdateChoice.html#/c:@E@SPUUserUpdateChoice@SPUUserUpdateChoiceDismiss":{"name":"SPUUserUpdateChoiceDismiss","abstract":"

    Dismisses the update until Sparkle reminds the user of it at a later time.

    ","parent_name":"SPUUserUpdateChoice"},"Enums/SPUUpdateCheck.html#/c:@E@SPUUpdateCheck@SPUUpdateCheckUpdates":{"name":"SPUUpdateCheckUpdates","abstract":"

    The user-initiated update check corresponding to -[SPUUpdater checkForUpdates].

    ","parent_name":"SPUUpdateCheck"},"Enums/SPUUpdateCheck.html#/c:@E@SPUUpdateCheck@SPUUpdateCheckUpdatesInBackground":{"name":"SPUUpdateCheckUpdatesInBackground","abstract":"

    The background scheduled update check corresponding to -[SPUUpdater checkForUpdatesInBackground].

    ","parent_name":"SPUUpdateCheck"},"Enums/SPUUpdateCheck.html#/c:@E@SPUUpdateCheck@SPUUpdateCheckUpdateInformation":{"name":"SPUUpdateCheckUpdateInformation","abstract":"

    The informational probe update check corresponding to -[SPUUpdater checkForUpdateInformation].

    ","parent_name":"SPUUpdateCheck"},"Enums/SPUUpdateCheck.html":{"name":"SPUUpdateCheck","abstract":"

    Describes the type of update check being performed.

    "},"Enums/SPUUserUpdateChoice.html":{"name":"SPUUserUpdateChoice","abstract":"

    A choice made by the user when prompted with a new update.

    "},"Enums/SPUUserUpdateStage.html":{"name":"SPUUserUpdateStage","abstract":"

    Describes the current stage an update is undergoing.

    "},"Enums/SUError.html":{"name":"SUError","abstract":"

    Undocumented

    "},"Enums/SPUNoUpdateFoundReason.html":{"name":"SPUNoUpdateFoundReason","abstract":"

    The reason why a new update is not available.

    "},"Constants.html#/c:@SUUpdaterDidFinishLoadingAppCastNotification":{"name":"SUUpdaterDidFinishLoadingAppCastNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterDidFindValidUpdateNotification":{"name":"SUUpdaterDidFindValidUpdateNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterDidNotFindUpdateNotification":{"name":"SUUpdaterDidNotFindUpdateNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterWillRestartNotification":{"name":"SUUpdaterWillRestartNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterAppcastItemNotificationKey":{"name":"SUUpdaterAppcastItemNotificationKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUUpdaterAppcastNotificationKey":{"name":"SUUpdaterAppcastNotificationKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerApplicationNameKey":{"name":"SUSystemProfilerApplicationNameKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerApplicationVersionKey":{"name":"SUSystemProfilerApplicationVersionKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPU64bitKey":{"name":"SUSystemProfilerCPU64bitKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPUCountKey":{"name":"SUSystemProfilerCPUCountKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPUFrequencyKey":{"name":"SUSystemProfilerCPUFrequencyKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPUTypeKey":{"name":"SUSystemProfilerCPUTypeKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerCPUSubtypeKey":{"name":"SUSystemProfilerCPUSubtypeKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerHardwareModelKey":{"name":"SUSystemProfilerHardwareModelKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerMemoryKey":{"name":"SUSystemProfilerMemoryKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerOperatingSystemVersionKey":{"name":"SUSystemProfilerOperatingSystemVersionKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSystemProfilerPreferredLanguageKey":{"name":"SUSystemProfilerPreferredLanguageKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SUSparkleErrorDomain":{"name":"SUSparkleErrorDomain","abstract":"

    Error domain used by Sparkle

    "},"Constants.html#/c:@SPUNoUpdateFoundReasonKey":{"name":"SPUNoUpdateFoundReasonKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SPULatestAppcastItemFoundKey":{"name":"SPULatestAppcastItemFoundKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SPUNoUpdateFoundUserInitiatedKey":{"name":"SPUNoUpdateFoundUserInitiatedKey","abstract":"

    Undocumented

    "},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)delegate":{"name":"delegate","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(cm)sharedUpdater":{"name":"+sharedUpdater","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(cm)updaterForBundle:":{"name":"+updaterForBundle:","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)initForBundle:":{"name":"-initForBundle:","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)checkForUpdates:":{"name":"-checkForUpdates:","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)validateMenuItem:":{"name":"-validateMenuItem:","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)checkForUpdatesInBackground":{"name":"-checkForUpdatesInBackground","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)automaticallyChecksForUpdates":{"name":"automaticallyChecksForUpdates","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)automaticallyDownloadsUpdates":{"name":"automaticallyDownloadsUpdates","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)updateCheckInterval":{"name":"updateCheckInterval","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)checkForUpdateInformation":{"name":"-checkForUpdateInformation","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)feedURL":{"name":"feedURL","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)hostBundle":{"name":"hostBundle","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)sparkleBundle":{"name":"sparkleBundle","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)userAgentString":{"name":"userAgentString","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)httpHeaders":{"name":"httpHeaders","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)sendsSystemProfile":{"name":"sendsSystemProfile","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)decryptionPassword":{"name":"decryptionPassword","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)lastUpdateCheckDate":{"name":"lastUpdateCheckDate","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(im)resetUpdateCycle":{"name":"-resetUpdateCycle","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdater.html#/c:objc(cs)SUUpdater(py)updateInProgress":{"name":"updateInProgress","abstract":"

    Undocumented

    ","parent_name":"SUUpdater"},"Classes/SUUpdatePermissionResponse.html#/c:objc(cs)SUUpdatePermissionResponse(im)initWithAutomaticUpdateChecks:sendSystemProfile:":{"name":"-initWithAutomaticUpdateChecks:sendSystemProfile:","abstract":"

    Initializes a new update permission response instance.

    ","parent_name":"SUUpdatePermissionResponse"},"Classes/SUUpdatePermissionResponse.html#/c:objc(cs)SUUpdatePermissionResponse(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SUUpdatePermissionResponse"},"Classes/SUUpdatePermissionResponse.html#/c:objc(cs)SUUpdatePermissionResponse(py)automaticUpdateChecks":{"name":"automaticUpdateChecks","abstract":"

    A read-only property indicating whether automatic update checks are allowed or not.

    ","parent_name":"SUUpdatePermissionResponse"},"Classes/SUUpdatePermissionResponse.html#/c:objc(cs)SUUpdatePermissionResponse(py)sendSystemProfile":{"name":"sendSystemProfile","abstract":"

    A read-only property indicating if system profile should be sent or not.

    ","parent_name":"SUUpdatePermissionResponse"},"Classes/SUStandardVersionComparator.html#/c:objc(cs)SUStandardVersionComparator(im)init":{"name":"-init","abstract":"

    Initializes a new instance of the standard version comparator.

    ","parent_name":"SUStandardVersionComparator"},"Classes/SUStandardVersionComparator.html#/c:objc(cs)SUStandardVersionComparator(cpy)defaultComparator":{"name":"defaultComparator","abstract":"

    A singleton instance of the comparator.

    ","parent_name":"SUStandardVersionComparator"},"Classes/SUStandardVersionComparator.html#/c:objc(cs)SUStandardVersionComparator(im)compareVersion:toVersion:":{"name":"-compareVersion:toVersion:","abstract":"

    Compares two version strings through textual analysis.

    ","parent_name":"SUStandardVersionComparator"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)versionString":{"name":"versionString","abstract":"

    The version of the update item.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)displayVersionString":{"name":"displayVersionString","abstract":"

    The human-readable display version of the update item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)fileURL":{"name":"fileURL","abstract":"

    The file URL to the update item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)contentLength":{"name":"contentLength","abstract":"

    The content length of the download in bytes.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)infoURL":{"name":"infoURL","abstract":"

    The info URL to the update item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)informationOnlyUpdate":{"name":"informationOnlyUpdate","abstract":"

    Indicates whether or not the update item is only informational and has no download.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)title":{"name":"title","abstract":"

    The title of the appcast item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)dateString":{"name":"dateString","abstract":"

    The date string of the appcast item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)date":{"name":"date","abstract":"

    The date constructed from the dateString property if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)releaseNotesURL":{"name":"releaseNotesURL","abstract":"

    The release notes URL of the appcast item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)itemDescription":{"name":"itemDescription","abstract":"

    The description of the appcast item if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)minimumSystemVersion":{"name":"minimumSystemVersion","abstract":"

    The required minimum system operating version string for this update if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)minimumOperatingSystemVersionIsOK":{"name":"minimumOperatingSystemVersionIsOK","abstract":"

    Indicates whether or not the current running system passes the minimumSystemVersion requirement.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)maximumSystemVersion":{"name":"maximumSystemVersion","abstract":"

    The required maximum system operating version string for this update if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)maximumOperatingSystemVersionIsOK":{"name":"maximumOperatingSystemVersionIsOK","abstract":"

    Indicates whether or not the current running system passes the maximumSystemVersion requirement.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)channel":{"name":"channel","abstract":"

    The channel the update item is on if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)installationType":{"name":"installationType","abstract":"

    The installation type of the update at fileURL

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)phasedRolloutInterval":{"name":"phasedRolloutInterval","abstract":"

    The phased rollout interval of the update item in seconds if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)minimumAutoupdateVersion":{"name":"minimumAutoupdateVersion","abstract":"

    The minimum bundle version string this update requires for automatically downloading and installing updates if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)majorUpgrade":{"name":"majorUpgrade","abstract":"

    Indicates whether or not the update item is a major upgrade.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)criticalUpdate":{"name":"criticalUpdate","abstract":"

    Indicates whether or not the update item is critical.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)osString":{"name":"osString","abstract":"

    Specifies the operating system the download update is available for if provided.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)macOsUpdate":{"name":"macOsUpdate","abstract":"

    Indicates whether or not this update item is for macOS.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)deltaUpdates":{"name":"deltaUpdates","abstract":"

    The delta updates for this update item.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)deltaUpdate":{"name":"deltaUpdate","abstract":"

    Indicates whether or not the update item is a delta update.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(py)propertiesDictionary":{"name":"propertiesDictionary","abstract":"

    The dictionary representing the entire appcast item.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(cm)emptyAppcastItem":{"name":"+emptyAppcastItem","abstract":"

    An empty appcast item.

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(im)initWithDictionary:":{"name":"-initWithDictionary:","abstract":"

    Undocumented

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(im)initWithDictionary:failureReason:":{"name":"-initWithDictionary:failureReason:","abstract":"

    Undocumented

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcastItem.html#/c:objc(cs)SUAppcastItem(im)initWithDictionary:relativeToURL:failureReason:":{"name":"-initWithDictionary:relativeToURL:failureReason:","abstract":"

    Undocumented

    ","parent_name":"SUAppcastItem"},"Classes/SUAppcast.html#/c:objc(cs)SUAppcast(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SUAppcast"},"Classes/SUAppcast.html#/c:objc(cs)SUAppcast(py)items":{"name":"items","abstract":"

    The collection of update items.

    ","parent_name":"SUAppcast"},"Classes/SPUUserUpdateState.html#/c:objc(cs)SPUUserUpdateState(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SPUUserUpdateState"},"Classes/SPUUserUpdateState.html#/c:objc(cs)SPUUserUpdateState(py)stage":{"name":"stage","abstract":"

    The current update stage.

    ","parent_name":"SPUUserUpdateState"},"Classes/SPUUserUpdateState.html#/c:objc(cs)SPUUserUpdateState(py)userInitiated":{"name":"userInitiated","abstract":"

    Indicates whether or not the update check was initiated by the user.

    ","parent_name":"SPUUserUpdateState"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(im)initWithHostBundle:":{"name":"-initWithHostBundle:","abstract":"

    Undocumented

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)automaticallyChecksForUpdates":{"name":"automaticallyChecksForUpdates","abstract":"

    Indicates whether or not automatic update checks are enabled.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)updateCheckInterval":{"name":"updateCheckInterval","abstract":"

    The regular update check interval.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)allowsAutomaticUpdates":{"name":"allowsAutomaticUpdates","abstract":"

    Indicates whether or not automatically downloading updates is allowed to be turned on by the user.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)automaticallyDownloadsUpdates":{"name":"automaticallyDownloadsUpdates","abstract":"

    Indicates whether or not automatically downloading updates is enabled by the user or developer.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdaterSettings.html#/c:objc(cs)SPUUpdaterSettings(py)sendsSystemProfile":{"name":"sendsSystemProfile","abstract":"

    Indicates whether or not anonymous system profile information is sent when checking for updates.

    ","parent_name":"SPUUpdaterSettings"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)initWithHostBundle:applicationBundle:userDriver:delegate:":{"name":"-initWithHostBundle:applicationBundle:userDriver:delegate:","abstract":"

    Initializes a new SPUUpdater instance

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)init":{"name":"-init","abstract":"

    Use -initWithHostBundle:applicationBundle:userDriver:delegate: or SPUStandardUpdaterController standard adapter instead.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)startUpdater:":{"name":"-startUpdater:","abstract":"

    Starts the updater.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)checkForUpdates":{"name":"-checkForUpdates","abstract":"

    Checks for updates, and displays progress while doing so if needed.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)checkForUpdatesInBackground":{"name":"-checkForUpdatesInBackground","abstract":"

    Checks for updates, but does not display any UI unless an update is found.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)checkForUpdateInformation":{"name":"-checkForUpdateInformation","abstract":"

    Begins a “probing” check for updates which will not actually offer to","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)canCheckForUpdates":{"name":"canCheckForUpdates","abstract":"

    A property indicating whether or not updates can be checked by the user.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)sessionInProgress":{"name":"sessionInProgress","abstract":"

    A property indicating whether or not an update session is in progress.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)automaticallyChecksForUpdates":{"name":"automaticallyChecksForUpdates","abstract":"

    A property indicating whether or not to check for updates automatically.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)updateCheckInterval":{"name":"updateCheckInterval","abstract":"

    A property indicating the current automatic update check interval in seconds.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)automaticallyDownloadsUpdates":{"name":"automaticallyDownloadsUpdates","abstract":"

    A property indicating whether or not updates can be automatically downloaded in the background.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)feedURL":{"name":"feedURL","abstract":"

    The URL of the appcast used to download update information.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)hostBundle":{"name":"hostBundle","abstract":"

    The host bundle that is being updated.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)userAgentString":{"name":"userAgentString","abstract":"

    The user agent used when checking for updates.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)httpHeaders":{"name":"httpHeaders","abstract":"

    The HTTP headers used when checking for updates, downloading release notes, and downloading updates.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)sendsSystemProfile":{"name":"sendsSystemProfile","abstract":"

    A property indicating whether or not the user’s system profile information is sent when checking for updates.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)lastUpdateCheckDate":{"name":"lastUpdateCheckDate","abstract":"

    The date of the last update check or nil if no check has been performed yet.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)resetUpdateCycle":{"name":"-resetUpdateCycle","abstract":"

    Appropriately schedules or cancels the update checking timer according to the preferences for time interval and automatic checks.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)systemProfileArray":{"name":"systemProfileArray","abstract":"

    The system profile information that is sent when checking for updates.

    ","parent_name":"SPUUpdater"},"Classes/SPUUpdatePermissionRequest.html#/c:objc(cs)SPUUpdatePermissionRequest(im)initWithSystemProfile:":{"name":"-initWithSystemProfile:","abstract":"

    Initializes a new update permission request instance.

    ","parent_name":"SPUUpdatePermissionRequest"},"Classes/SPUUpdatePermissionRequest.html#/c:objc(cs)SPUUpdatePermissionRequest(py)systemProfile":{"name":"systemProfile","abstract":"

    A read-only property for the user’s system profile.

    ","parent_name":"SPUUpdatePermissionRequest"},"Classes/SPUStandardUserDriver.html#/c:objc(cs)SPUStandardUserDriver(im)initWithHostBundle:delegate:":{"name":"-initWithHostBundle:delegate:","abstract":"

    Initializes a Sparkle’s standard user driver for user update interactions

    ","parent_name":"SPUStandardUserDriver"},"Classes/SPUStandardUserDriver.html#/c:objc(cs)SPUStandardUserDriver(im)init":{"name":"-init","abstract":"

    Use initWithHostBundle:delegate: instead.

    ","parent_name":"SPUStandardUserDriver"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(py)updaterDelegate":{"name":"updaterDelegate","abstract":"

    Interface builder outlet for the updater’s delegate.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(py)userDriverDelegate":{"name":"userDriverDelegate","abstract":"

    Interface builder outlet for the user driver’s delegate.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(py)updater":{"name":"updater","abstract":"

    Accessible property for the updater. Some properties on the updater can be binded via KVO

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(py)userDriver":{"name":"userDriver","abstract":"

    Accessible property for the updater’s user driver.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)init":{"name":"-init","abstract":"

    Create a new SPUStandardUpdaterController from a nib.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)initWithUpdaterDelegate:userDriverDelegate:":{"name":"-initWithUpdaterDelegate:userDriverDelegate:","abstract":"

    Create a new SPUStandardUpdaterController programmatically.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)initWithStartingUpdater:updaterDelegate:userDriverDelegate:":{"name":"-initWithStartingUpdater:updaterDelegate:userDriverDelegate:","abstract":"

    Create a new SPUStandardUpdaterController programmatically allowing you to specify whether or not to start the updater immediately.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)startUpdater":{"name":"-startUpdater","abstract":"

    Starts the updater if it has not already been started.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)checkForUpdates:":{"name":"-checkForUpdates:","abstract":"

    Explicitly checks for updates and displays a progress dialog while doing so.

    ","parent_name":"SPUStandardUpdaterController"},"Classes/SPUDownloadData.html#/c:objc(cs)SPUDownloadData(py)data":{"name":"data","abstract":"

    The raw data that was downloaded.

    ","parent_name":"SPUDownloadData"},"Classes/SPUDownloadData.html#/c:objc(cs)SPUDownloadData(py)URL":{"name":"URL","abstract":"

    The URL that was fetched from.

    ","parent_name":"SPUDownloadData"},"Classes/SPUDownloadData.html#/c:objc(cs)SPUDownloadData(py)textEncodingName":{"name":"textEncodingName","abstract":"

    The IANA charset encoding name if available. Eg: “utf-8”

    ","parent_name":"SPUDownloadData"},"Classes/SPUDownloadData.html#/c:objc(cs)SPUDownloadData(py)MIMEType":{"name":"MIMEType","abstract":"

    The MIME type if available. Eg: “text/plain”

    ","parent_name":"SPUDownloadData"},"Classes/SPUDownloadData.html":{"name":"SPUDownloadData","abstract":"

    A class for containing downloaded data along with some information about it.

    "},"Classes/SPUStandardUpdaterController.html":{"name":"SPUStandardUpdaterController","abstract":"

    A controller class that instantiates a SPUUpdater and allows binding UI to its updater settings.

    "},"Classes/SPUStandardUserDriver.html":{"name":"SPUStandardUserDriver","abstract":"

    Sparkle’s standard built-in user driver for updater interactions

    "},"Classes/SPUUpdatePermissionRequest.html":{"name":"SPUUpdatePermissionRequest","abstract":"

    This class represents information needed to make a permission request for checking updates.

    "},"Classes/SPUUpdater.html":{"name":"SPUUpdater","abstract":"

    The main API in Sparkle for controlling the update mechanism.

    "},"Classes/SPUUpdaterSettings.html":{"name":"SPUUpdaterSettings","abstract":"

    This class can be used for reading certain updater settings.

    "},"Classes/SPUUserUpdateState.html":{"name":"SPUUserUpdateState","abstract":"

    This represents the user’s current update state.

    "},"Classes/SUAppcast.html":{"name":"SUAppcast","abstract":"

    The appcast representing a collection of SUAppcastItem items in the feed.

    "},"Classes/SUAppcastItem.html":{"name":"SUAppcastItem","abstract":"

    The appcast item describing an update in the application’s appcast feed.

    "},"Classes/SUStandardVersionComparator.html":{"name":"SUStandardVersionComparator","abstract":"

    Sparkle’s default version comparator.

    "},"Classes/SUUpdatePermissionResponse.html":{"name":"SUUpdatePermissionResponse","abstract":"

    This class represents a response for permission to check updates.

    "},"Classes/SUUpdater.html":{"name":"SUUpdater","abstract":"

    The legacy API in Sparkle for controlling the update mechanism.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Constants.html":{"name":"Constants","abstract":"

    The following constants are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "}} \ No newline at end of file diff --git a/documentation/api-reference/search/all_0.html b/documentation/api-reference/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/documentation/api-reference/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_0.js b/documentation/api-reference/search/all_0.js new file mode 100644 index 0000000..605bdd6 --- /dev/null +++ b/documentation/api-reference/search/all_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['allowedchannelsforupdater_3a_0',['allowedChannelsForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a717db8ad85d47309e3f4deebdc09e7b4',1,'SPUUpdaterDelegate-p']]], + ['allowedsystemprofilekeysforupdater_3a_1',['allowedSystemProfileKeysForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#aec7e4b19a2fc4afdcc86286c3bbf06b1',1,'SPUUpdaterDelegate-p']]], + ['allowsautomaticupdates_2',['allowsAutomaticUpdates',['../interface_s_p_u_updater_settings.html#ae9b58785573e4d3e2abea0c57544681f',1,'SPUUpdaterSettings']]], + ['automaticallychecksforupdates_3',['automaticallyChecksForUpdates',['../interface_s_p_u_updater.html#a9a154002bdbe3306e763d000502a0980',1,'SPUUpdater::automaticallyChecksForUpdates()'],['../interface_s_p_u_updater_settings.html#a41e4d0f0e10e9afa92fe5c81d21bfde3',1,'SPUUpdaterSettings::automaticallyChecksForUpdates()']]], + ['automaticallydownloadsupdates_4',['automaticallyDownloadsUpdates',['../interface_s_p_u_updater.html#aa5f5578c29e6496cb90546aca35804e6',1,'SPUUpdater::automaticallyDownloadsUpdates()'],['../interface_s_p_u_updater_settings.html#af1a1fba7d6dcd05b52339f173c7a0a8d',1,'SPUUpdaterSettings::automaticallyDownloadsUpdates()']]], + ['automaticupdatechecks_5',['automaticUpdateChecks',['../interface_s_u_update_permission_response.html#a84a21b766bcbbe1fff16c26b8689aa56',1,'SUUpdatePermissionResponse']]] +]; diff --git a/documentation/api-reference/search/all_1.html b/documentation/api-reference/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/documentation/api-reference/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_1.js b/documentation/api-reference/search/all_1.js new file mode 100644 index 0000000..797ad91 --- /dev/null +++ b/documentation/api-reference/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bestvalidupdateinappcast_3aforupdater_3a_6',['bestValidUpdateInAppcast:forUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a0f38585740c428ce8904bf38f712396d',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/search/all_2.html b/documentation/api-reference/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/documentation/api-reference/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_2.js b/documentation/api-reference/search/all_2.js new file mode 100644 index 0000000..712d85e --- /dev/null +++ b/documentation/api-reference/search/all_2.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['cancheckforupdates_7',['canCheckForUpdates',['../interface_s_p_u_updater.html#aa8ec4e87308007ae49228165534e683c',1,'SPUUpdater']]], + ['changeownerandgroupofitematrooturl_3atomatchurl_3aerror_3a_8',['changeOwnerAndGroupOfItemAtRootURL:toMatchURL:error:',['../interface_s_u_file_manager.html#af0defc82017c43bd1f0eab5540c05f09',1,'SUFileManager']]], + ['checkforupdateinformation_9',['checkForUpdateInformation',['../interface_s_p_u_updater.html#ad38751e23aa42be220206e7e671c697d',1,'SPUUpdater']]], + ['checkforupdates_10',['checkForUpdates',['../interface_s_p_u_updater.html#a7df56bb150d327beb72b7b050799790d',1,'SPUUpdater']]], + ['checkforupdates_3a_11',['checkForUpdates:',['../interface_s_p_u_standard_updater_controller.html#af2d2c860e3f3ae9d8feba95d196c4dc9',1,'SPUStandardUpdaterController']]], + ['checkforupdatesinbackground_12',['checkForUpdatesInBackground',['../interface_s_p_u_updater.html#a2e1e3ca715f29bae7ee0b16e15e34850',1,'SPUUpdater']]], + ['compareversion_3atoversion_3a_13',['compareVersion:toVersion:',['../interface_s_u_standard_version_comparator.html#a50d145ce078dd80d55346f17e946d282',1,'SUStandardVersionComparator::compareVersion:toVersion:()'],['../protocol_s_u_version_comparison-p.html#a0f94aedcc244ce41757e1fa620d0eb40',1,'SUVersionComparison-p::compareVersion:toVersion:()']]], + ['copyitematurl_3atourl_3aerror_3a_14',['copyItemAtURL:toURL:error:',['../interface_s_u_file_manager.html#ac33297bd6dfbf11a23c3c0ded059f4d0',1,'SUFileManager']]] +]; diff --git a/documentation/api-reference/search/all_3.html b/documentation/api-reference/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/documentation/api-reference/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_3.js b/documentation/api-reference/search/all_3.js new file mode 100644 index 0000000..6409f82 --- /dev/null +++ b/documentation/api-reference/search/all_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['data_15',['data',['../interface_s_p_u_download_data.html#ae8c680d14f0213633c117684e58fbef2',1,'SPUDownloadData']]], + ['decryptionpasswordforupdater_3a_16',['decryptionPasswordForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#aaf8dbbcdef45b16d2fc43a4cc5487051',1,'SPUUpdaterDelegate-p']]], + ['defaultcomparator_17',['defaultComparator',['../interface_s_u_standard_version_comparator.html#a67be5d5bf36c4774432d912261cb3048',1,'SUStandardVersionComparator']]], + ['dismissupdateinstallation_18',['dismissUpdateInstallation',['../protocol_s_p_u_user_driver-p.html#a5df3b42fd77ab1b5c971c8df9ef35048',1,'SPUUserDriver-p']]] +]; diff --git a/documentation/api-reference/search/all_4.html b/documentation/api-reference/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/documentation/api-reference/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_4.js b/documentation/api-reference/search/all_4.js new file mode 100644 index 0000000..62f3039 --- /dev/null +++ b/documentation/api-reference/search/all_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['feedparametersforupdater_3asendingsystemprofile_3a_19',['feedParametersForUpdater:sendingSystemProfile:',['../protocol_s_p_u_updater_delegate-p.html#a43cee9820784cffdffc3b48d8b07407e',1,'SPUUpdaterDelegate-p']]], + ['feedurl_20',['feedURL',['../interface_s_p_u_updater.html#af49bc6a058dc0e758943a4b4b1ff98dc',1,'SPUUpdater']]], + ['feedurlstringforupdater_3a_21',['feedURLStringForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#afd1a89b0133a35faf849b58944349516',1,'SPUUpdaterDelegate-p']]], + ['formatversion_3aandversion_3a_22',['formatVersion:andVersion:',['../protocol_s_u_version_display-p.html#afb8728137859a22c1ed795637e654dbd',1,'SUVersionDisplay-p']]] +]; diff --git a/documentation/api-reference/search/all_5.html b/documentation/api-reference/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/documentation/api-reference/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_5.js b/documentation/api-reference/search/all_5.js new file mode 100644 index 0000000..96e99e0 --- /dev/null +++ b/documentation/api-reference/search/all_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hasanykeys_23',['hasAnyKeys',['../interface_s_u_public_keys.html#ae2a53f6befe084d9a6fa7369a0dbe78a',1,'SUPublicKeys']]], + ['hostbundle_24',['hostBundle',['../interface_s_p_u_updater.html#aeae19dba9dc83ae9098279b0eed76d47',1,'SPUUpdater']]], + ['httpheaders_25',['httpHeaders',['../interface_s_p_u_updater.html#a2e2747823e204ebc07800ae31c201ad1',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/all_6.html b/documentation/api-reference/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/documentation/api-reference/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_6.js b/documentation/api-reference/search/all_6.js new file mode 100644 index 0000000..550eedf --- /dev/null +++ b/documentation/api-reference/search/all_6.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['init_26',['init',['../interface_s_u_file_manager.html#a972da7c2fb112d09d4903ada3564126a',1,'SUFileManager::init()'],['../interface_s_u_standard_version_comparator.html#aef2dc178fc9895961ccb8ba966c1446b',1,'SUStandardVersionComparator::init()']]], + ['initwithautomaticupdatechecks_3asendsystemprofile_3a_27',['initWithAutomaticUpdateChecks:sendSystemProfile:',['../interface_s_u_update_permission_response.html#a09be7ccbcaf1521fc9a3f5dd420785ee',1,'SUUpdatePermissionResponse']]], + ['initwithdictionary_3arelativetourl_3astateresolver_3afailurereason_3a_28',['initWithDictionary:relativeToURL:stateResolver:failureReason:',['../category_s_u_appcast_item_07_private_08.html#a0687fe14843337befdfa749e77de60a0',1,'SUAppcastItem(Private)::initWithDictionary:relativeToURL:stateResolver:failureReason:()'],['../interface_s_u_appcast_item.html#a0687fe14843337befdfa749e77de60a0',1,'SUAppcastItem::initWithDictionary:relativeToURL:stateResolver:failureReason:()']]], + ['initwithhostbundle_3aapplicationbundle_3auserdriver_3adelegate_3a_29',['initWithHostBundle:applicationBundle:userDriver:delegate:',['../interface_s_p_u_updater.html#aed247e3fde0667e50b8d2345e84033e1',1,'SPUUpdater']]], + ['initwithhostbundle_3adelegate_3a_30',['initWithHostBundle:delegate:',['../interface_s_p_u_standard_user_driver.html#a153eafa16df66af096947673762c2deb',1,'SPUStandardUserDriver']]], + ['initwithstartingupdater_3aupdaterdelegate_3auserdriverdelegate_3a_31',['initWithStartingUpdater:updaterDelegate:userDriverDelegate:',['../interface_s_p_u_standard_updater_controller.html#a5612aa1955b41cd306200dc451c2079c',1,'SPUStandardUpdaterController']]], + ['initwithsystemprofile_3a_32',['initWithSystemProfile:',['../interface_s_p_u_update_permission_request.html#a111cc1f6605e481954f1ea57f833b6ab',1,'SPUUpdatePermissionRequest']]], + ['initwithupdaterdelegate_3auserdriverdelegate_3a_33',['initWithUpdaterDelegate:userDriverDelegate:',['../interface_s_p_u_standard_updater_controller.html#a696072b114786259d2e6744914b55850',1,'SPUStandardUpdaterController']]], + ['installerprogressappcontroller_34',['InstallerProgressAppController',['../interface_installer_progress_app_controller.html',1,'']]], + ['installerprogressappcontroller_28_29_35',['InstallerProgressAppController()',['../category_installer_progress_app_controller_07_08.html',1,'']]], + ['installerprogressdelegate_2dp_36',['InstallerProgressDelegate-p',['../protocol_installer_progress_delegate-p.html',1,'']]] +]; diff --git a/documentation/api-reference/search/all_7.html b/documentation/api-reference/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/documentation/api-reference/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_7.js b/documentation/api-reference/search/all_7.js new file mode 100644 index 0000000..a25460b --- /dev/null +++ b/documentation/api-reference/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lastupdatecheckdate_37',['lastUpdateCheckDate',['../interface_s_p_u_updater.html#a22a62559c6938c7a34b1787f22043010',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/all_8.html b/documentation/api-reference/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/documentation/api-reference/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_8.js b/documentation/api-reference/search/all_8.js new file mode 100644 index 0000000..2402d38 --- /dev/null +++ b/documentation/api-reference/search/all_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['makedirectoryaturl_3aerror_3a_38',['makeDirectoryAtURL:error:',['../interface_s_u_file_manager.html#ace4c529974dc1b64360db12689c2e9aa',1,'SUFileManager']]], + ['maketemporarydirectorywithpreferredname_3aappropriatefordirectoryurl_3aerror_3a_39',['makeTemporaryDirectoryWithPreferredName:appropriateForDirectoryURL:error:',['../interface_s_u_file_manager.html#a055d2ef9910e85c90a7d0dc34b34ce92',1,'SUFileManager']]], + ['mimetype_40',['MIMEType',['../interface_s_p_u_download_data.html#a108d9dec279550089dbea559e449321c',1,'SPUDownloadData']]], + ['moveitematurl_3atourl_3aerror_3a_41',['moveItemAtURL:toURL:error:',['../interface_s_u_file_manager.html#a8f9d15f622a08284e2d5157ebea440f3',1,'SUFileManager']]] +]; diff --git a/documentation/api-reference/search/all_9.html b/documentation/api-reference/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/documentation/api-reference/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_9.js b/documentation/api-reference/search/all_9.js new file mode 100644 index 0000000..ee69966 --- /dev/null +++ b/documentation/api-reference/search/all_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ns_5funavailable_42',['NS_UNAVAILABLE',['../interface_s_p_u_standard_updater_controller.html#a3c582fd7f0de322edc97915c9405eced',1,'SPUStandardUpdaterController::NS_UNAVAILABLE()'],['../interface_s_p_u_standard_user_driver.html#a9ad2b659b5760b2f4274e5c63b1f8094',1,'SPUStandardUserDriver::NS_UNAVAILABLE()'],['../interface_s_p_u_updater.html#ac2907583983833ce9f09bee2867d7654',1,'SPUUpdater::NS_UNAVAILABLE()']]], + ['nsbutton_28sierrasdk_29_43',['NSButton(SierraSDK)',['../category_n_s_button_07_sierra_s_d_k_08.html',1,'']]], + ['nsdata_28susignatureverifier_29_44',['NSData(SUSignatureVerifier)',['../category_n_s_data_07_s_u_signature_verifier_08.html',1,'']]], + ['nsobject_28privatedelegatemethods_29_45',['NSObject(PrivateDelegateMethods)',['../category_n_s_object_07_private_delegate_methods_08.html',1,'']]], + ['nsoperatingsystemversion_46',['NSOperatingSystemVersion',['../struct_n_s_operating_system_version.html',1,'']]], + ['nsprocessinfo_28_29_47',['NSProcessInfo()',['../category_n_s_process_info_07_08.html',1,'']]] +]; diff --git a/documentation/api-reference/search/all_a.html b/documentation/api-reference/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/documentation/api-reference/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_a.js b/documentation/api-reference/search/all_a.js new file mode 100644 index 0000000..9bbc556 --- /dev/null +++ b/documentation/api-reference/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['releaseitemfromquarantineatrooturl_3aerror_3a_48',['releaseItemFromQuarantineAtRootURL:error:',['../interface_s_u_file_manager.html#a8599b8160422edbb38f34e547889f727',1,'SUFileManager']]], + ['removeitematurl_3aerror_3a_49',['removeItemAtURL:error:',['../interface_s_u_file_manager.html#aea79ee52a31937c33f5e00e60f873b4b',1,'SUFileManager']]], + ['replaceitematurl_3awithitematurl_3aerror_3a_50',['replaceItemAtURL:withItemAtURL:error:',['../interface_s_u_file_manager.html#aec3de47f6e37353f905b855951b37c65',1,'SUFileManager']]], + ['resetupdatecycle_51',['resetUpdateCycle',['../interface_s_p_u_updater.html#aefe1e7f5ae5b8e02f1d7beab189b51af',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/all_b.html b/documentation/api-reference/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/documentation/api-reference/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_b.js b/documentation/api-reference/search/all_b.js new file mode 100644 index 0000000..ec526d6 --- /dev/null +++ b/documentation/api-reference/search/all_b.js @@ -0,0 +1,121 @@ +var searchData= +[ + ['sendssystemprofile_52',['sendsSystemProfile',['../interface_s_p_u_updater.html#a521d2f6d09ceec6af979f6116bc58f7f',1,'SPUUpdater::sendsSystemProfile()'],['../interface_s_p_u_updater_settings.html#a97b5102512608a905bda83b33dd0bb5d',1,'SPUUpdaterSettings::sendsSystemProfile()']]], + ['sendsystemprofile_53',['sendSystemProfile',['../interface_s_u_update_permission_response.html#af9436f4e07219513c68dbad51daf9c8d',1,'SUUpdatePermissionResponse']]], + ['sessioninprogress_54',['sessionInProgress',['../interface_s_p_u_updater.html#aebc820be90ea36d0d97c6f11e80f3a4f',1,'SPUUpdater']]], + ['setfeedurl_3a_55',['setFeedURL:',['../interface_s_p_u_updater.html#adfaabdc767d7a7668c8e472e45abd635',1,'SPUUpdater']]], + ['showdownloaddidreceivedataoflength_3a_56',['showDownloadDidReceiveDataOfLength:',['../protocol_s_p_u_user_driver-p.html#ac86c11d9dd8f66cc54bc3f3dd303fb6c',1,'SPUUserDriver-p']]], + ['showdownloaddidreceiveexpectedcontentlength_3a_57',['showDownloadDidReceiveExpectedContentLength:',['../protocol_s_p_u_user_driver-p.html#abf58b5974797500618b7745f1987833a',1,'SPUUserDriver-p']]], + ['showdownloaddidstartextractingupdate_58',['showDownloadDidStartExtractingUpdate',['../protocol_s_p_u_user_driver-p.html#a19ada57d6b77c7ea3ed402833dcda44c',1,'SPUUserDriver-p']]], + ['showdownloadinitiatedwithcancellation_3a_59',['showDownloadInitiatedWithCancellation:',['../protocol_s_p_u_user_driver-p.html#a3c6cd7f7b93f6d2777b04f3c9f0bb62c',1,'SPUUserDriver-p']]], + ['showextractionreceivedprogress_3a_60',['showExtractionReceivedProgress:',['../protocol_s_p_u_user_driver-p.html#a3ffb49c0f51864011685049b7225dfbf',1,'SPUUserDriver-p']]], + ['showinstallerprogress_61',['ShowInstallerProgress',['../interface_show_installer_progress.html',1,'']]], + ['showinstallerprogress_28_29_62',['ShowInstallerProgress()',['../category_show_installer_progress_07_08.html',1,'']]], + ['showinstallingupdate_63',['showInstallingUpdate',['../protocol_s_p_u_user_driver-p.html#ab774cef0a00dbc7c074f8850c1e6c21f',1,'SPUUserDriver-p']]], + ['showreadytoinstallandrelaunch_3a_64',['showReadyToInstallAndRelaunch:',['../protocol_s_p_u_user_driver-p.html#a91ad34f8469dc022c7b1ed42b0f1575d',1,'SPUUserDriver-p']]], + ['showsendingterminationsignal_65',['showSendingTerminationSignal',['../protocol_s_p_u_user_driver-p.html#a3eb11e826fe5c1f68112a73600c23bf2',1,'SPUUserDriver-p']]], + ['showupdatefoundwithappcastitem_3astate_3areply_3a_66',['showUpdateFoundWithAppcastItem:state:reply:',['../protocol_s_p_u_user_driver-p.html#ac0f8e99c60962476ea55729833a0e3f2',1,'SPUUserDriver-p']]], + ['showupdateinfocus_67',['showUpdateInFocus',['../protocol_s_p_u_user_driver-p.html#ac6d613d4689dbc6415774d0ab63afd55',1,'SPUUserDriver-p']]], + ['showupdateinstalledandrelaunched_3aacknowledgement_3a_68',['showUpdateInstalledAndRelaunched:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#aa8b7ae192288db21ab43b4413b2d80c3',1,'SPUUserDriver-p']]], + ['showupdatenotfoundwitherror_3aacknowledgement_3a_69',['showUpdateNotFoundWithError:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#abf3ca2a6bb84fe26a4ce53ae5b6f2233',1,'SPUUserDriver-p']]], + ['showupdatepermissionrequest_3areply_3a_70',['showUpdatePermissionRequest:reply:',['../protocol_s_p_u_user_driver-p.html#a6382048832f06216f505659c251dc1e0',1,'SPUUserDriver-p']]], + ['showupdatereleasenotesfailedtodownloadwitherror_3a_71',['showUpdateReleaseNotesFailedToDownloadWithError:',['../protocol_s_p_u_user_driver-p.html#ab304bc81459aa83fc617eb5047cd93a1',1,'SPUUserDriver-p']]], + ['showupdatereleasenoteswithdownloaddata_3a_72',['showUpdateReleaseNotesWithDownloadData:',['../protocol_s_p_u_user_driver-p.html#ae5fe75d599aae6597d81bd2449919be8',1,'SPUUserDriver-p']]], + ['showupdatererror_3aacknowledgement_3a_73',['showUpdaterError:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#ac10bbf2fbe588106bf3a8c951caa2d53',1,'SPUUserDriver-p']]], + ['showuserinitiatedupdatecheckwithcancellation_3a_74',['showUserInitiatedUpdateCheckWithCancellation:',['../protocol_s_p_u_user_driver-p.html#a797fb61eacdd1fba10a232d7b2b5ceac',1,'SPUUserDriver-p']]], + ['sparklebundle_75',['sparkleBundle',['../interface_s_p_u_updater.html#aa0e335f7212dbd90668ea0bbef0f00c2',1,'SPUUpdater']]], + ['spuappcastitemstate_76',['SPUAppcastItemState',['../interface_s_p_u_appcast_item_state.html',1,'']]], + ['spuappcastitemstate_28_29_77',['SPUAppcastItemState()',['../category_s_p_u_appcast_item_state_07_08.html',1,'']]], + ['spuappcastitemstateresolver_78',['SPUAppcastItemStateResolver',['../interface_s_p_u_appcast_item_state_resolver.html',1,'']]], + ['spuautomaticupdatedriver_79',['SPUAutomaticUpdateDriver',['../interface_s_p_u_automatic_update_driver.html',1,'']]], + ['spuautomaticupdatedriver_28_29_80',['SPUAutomaticUpdateDriver()',['../category_s_p_u_automatic_update_driver_07_08.html',1,'']]], + ['spubasicupdatedriver_81',['SPUBasicUpdateDriver',['../interface_s_p_u_basic_update_driver.html',1,'']]], + ['spubasicupdatedriver_28_29_82',['SPUBasicUpdateDriver()',['../category_s_p_u_basic_update_driver_07_08.html',1,'']]], + ['spubasicupdatedriverdelegate_2dp_83',['SPUBasicUpdateDriverDelegate-p',['../protocol_s_p_u_basic_update_driver_delegate-p.html',1,'']]], + ['spucorebasedupdatedriver_84',['SPUCoreBasedUpdateDriver',['../interface_s_p_u_core_based_update_driver.html',1,'']]], + ['spucorebasedupdatedriver_28_29_85',['SPUCoreBasedUpdateDriver()',['../category_s_p_u_core_based_update_driver_07_08.html',1,'']]], + ['spucorebasedupdatedriverdelegate_2dp_86',['SPUCoreBasedUpdateDriverDelegate-p',['../protocol_s_p_u_core_based_update_driver_delegate-p.html',1,'']]], + ['spudownloaddata_87',['SPUDownloadData',['../interface_s_p_u_download_data.html',1,'']]], + ['spudownloaddriver_88',['SPUDownloadDriver',['../interface_s_p_u_download_driver.html',1,'']]], + ['spudownloaddriver_28_29_89',['SPUDownloadDriver()',['../category_s_p_u_download_driver_07_08.html',1,'']]], + ['spudownloaddriverdelegate_2dp_90',['SPUDownloadDriverDelegate-p',['../protocol_s_p_u_download_driver_delegate-p.html',1,'']]], + ['spudownloadedupdate_91',['SPUDownloadedUpdate',['../interface_s_p_u_downloaded_update.html',1,'']]], + ['spuinformationalupdate_92',['SPUInformationalUpdate',['../interface_s_p_u_informational_update.html',1,'']]], + ['spuinstalleragentprotocol_2dp_93',['SPUInstallerAgentProtocol-p',['../protocol_s_p_u_installer_agent_protocol-p.html',1,'']]], + ['spuinstallerdriver_94',['SPUInstallerDriver',['../interface_s_p_u_installer_driver.html',1,'']]], + ['spuinstallerdriver_28_29_95',['SPUInstallerDriver()',['../category_s_p_u_installer_driver_07_08.html',1,'']]], + ['spuinstallerdriverdelegate_2dp_96',['SPUInstallerDriverDelegate-p',['../protocol_s_p_u_installer_driver_delegate-p.html',1,'']]], + ['spulocalcachedirectory_97',['SPULocalCacheDirectory',['../interface_s_p_u_local_cache_directory.html',1,'']]], + ['spuprobeinstallstatus_98',['SPUProbeInstallStatus',['../interface_s_p_u_probe_install_status.html',1,'']]], + ['spuprobingupdatedriver_99',['SPUProbingUpdateDriver',['../interface_s_p_u_probing_update_driver.html',1,'']]], + ['spuprobingupdatedriver_28_29_100',['SPUProbingUpdateDriver()',['../category_s_p_u_probing_update_driver_07_08.html',1,'']]], + ['spureleasenotesdriver_101',['SPUReleaseNotesDriver',['../interface_s_p_u_release_notes_driver.html',1,'']]], + ['spuresumableupdate_2dp_102',['SPUResumableUpdate-p',['../protocol_s_p_u_resumable_update-p.html',1,'']]], + ['spuscheduledupdatedriver_103',['SPUScheduledUpdateDriver',['../interface_s_p_u_scheduled_update_driver.html',1,'']]], + ['spuscheduledupdatedriver_28_29_104',['SPUScheduledUpdateDriver()',['../category_s_p_u_scheduled_update_driver_07_08.html',1,'']]], + ['spuskippedupdate_105',['SPUSkippedUpdate',['../interface_s_p_u_skipped_update.html',1,'']]], + ['spustandardupdatercontroller_106',['SPUStandardUpdaterController',['../interface_s_p_u_standard_updater_controller.html',1,'']]], + ['spustandarduserdriver_107',['SPUStandardUserDriver',['../interface_s_p_u_standard_user_driver.html',1,'']]], + ['spustandarduserdriverdelegate_2dp_108',['SPUStandardUserDriverDelegate-p',['../protocol_s_p_u_standard_user_driver_delegate-p.html',1,'']]], + ['spuuibasedupdatedriver_109',['SPUUIBasedUpdateDriver',['../interface_s_p_u_u_i_based_update_driver.html',1,'']]], + ['spuuibasedupdatedriver_28_29_110',['SPUUIBasedUpdateDriver()',['../category_s_p_u_u_i_based_update_driver_07_08.html',1,'']]], + ['spuuibasedupdatedriverdelegate_2dp_111',['SPUUIBasedUpdateDriverDelegate-p',['../protocol_s_p_u_u_i_based_update_driver_delegate-p.html',1,'']]], + ['spuupdatedriver_2dp_112',['SPUUpdateDriver-p',['../protocol_s_p_u_update_driver-p.html',1,'']]], + ['spuupdatepermissionrequest_113',['SPUUpdatePermissionRequest',['../interface_s_p_u_update_permission_request.html',1,'']]], + ['spuupdater_114',['SPUUpdater',['../interface_s_p_u_updater.html',1,'']]], + ['spuupdater_28_29_115',['SPUUpdater()',['../category_s_p_u_updater_07_08.html',1,'']]], + ['spuupdatercycle_116',['SPUUpdaterCycle',['../interface_s_p_u_updater_cycle.html',1,'']]], + ['spuupdatercycle_28_29_117',['SPUUpdaterCycle()',['../category_s_p_u_updater_cycle_07_08.html',1,'']]], + ['spuupdatercycledelegate_2dp_118',['SPUUpdaterCycleDelegate-p',['../protocol_s_p_u_updater_cycle_delegate-p.html',1,'']]], + ['spuupdaterdelegate_2dp_119',['SPUUpdaterDelegate-p',['../protocol_s_p_u_updater_delegate-p.html',1,'']]], + ['spuupdatersettings_120',['SPUUpdaterSettings',['../interface_s_p_u_updater_settings.html',1,'']]], + ['spuupdatersettings_28_29_121',['SPUUpdaterSettings()',['../category_s_p_u_updater_settings_07_08.html',1,'']]], + ['spuupdatertimer_122',['SPUUpdaterTimer',['../interface_s_p_u_updater_timer.html',1,'']]], + ['spuupdatertimer_28_29_123',['SPUUpdaterTimer()',['../category_s_p_u_updater_timer_07_08.html',1,'']]], + ['spuupdatertimerdelegate_2dp_124',['SPUUpdaterTimerDelegate-p',['../protocol_s_p_u_updater_timer_delegate-p.html',1,'']]], + ['spuurlrequest_125',['SPUURLRequest',['../interface_s_p_u_u_r_l_request.html',1,'']]], + ['spuurlrequest_28_29_126',['SPUURLRequest()',['../category_s_p_u_u_r_l_request_07_08.html',1,'']]], + ['spuuserdriver_2dp_127',['SPUUserDriver-p',['../protocol_s_p_u_user_driver-p.html',1,'']]], + ['spuuserinitiatedupdatedriver_128',['SPUUserInitiatedUpdateDriver',['../interface_s_p_u_user_initiated_update_driver.html',1,'']]], + ['spuuserinitiatedupdatedriver_28_29_129',['SPUUserInitiatedUpdateDriver()',['../category_s_p_u_user_initiated_update_driver_07_08.html',1,'']]], + ['spuuserupdatestate_130',['SPUUserUpdateState',['../interface_s_p_u_user_update_state.html',1,'']]], + ['spuuserupdatestate_28_29_131',['SPUUserUpdateState()',['../category_s_p_u_user_update_state_07_08.html',1,'']]], + ['spuuserupdatestate_28private_29_132',['SPUUserUpdateState(Private)',['../category_s_p_u_user_update_state_07_private_08.html',1,'']]], + ['standarduserdriverdidshowmodalalert_133',['standardUserDriverDidShowModalAlert',['../protocol_s_p_u_standard_user_driver_delegate-p.html#aaaafb308354867990fed28c308dc881d',1,'SPUStandardUserDriverDelegate-p']]], + ['standarduserdriverrequestsversiondisplayer_134',['standardUserDriverRequestsVersionDisplayer',['../protocol_s_p_u_standard_user_driver_delegate-p.html#ae96836bc3c2fb3104d6586e5067001b3',1,'SPUStandardUserDriverDelegate-p']]], + ['standarduserdriverwillshowmodalalert_135',['standardUserDriverWillShowModalAlert',['../protocol_s_p_u_standard_user_driver_delegate-p.html#ad3bbc4db85bf302e8d6db6b4f030969a',1,'SPUStandardUserDriverDelegate-p']]], + ['startupdater_136',['startUpdater',['../interface_s_p_u_standard_updater_controller.html#a13632a2dd07a4d49333ec23091a3c6a5',1,'SPUStandardUpdaterController']]], + ['startupdater_3a_137',['startUpdater:',['../interface_s_p_u_updater.html#a30c0f163e0fbc7b100f84c64b491b353',1,'SPUUpdater']]], + ['suappcast_138',['SUAppcast',['../interface_s_u_appcast.html',1,'']]], + ['suappcast_28_29_139',['SUAppcast()',['../category_s_u_appcast_07_08.html',1,'']]], + ['suappcast_28private_29_140',['SUAppcast(Private)',['../category_s_u_appcast_07_private_08.html',1,'']]], + ['suappcastdriver_141',['SUAppcastDriver',['../interface_s_u_appcast_driver.html',1,'']]], + ['suappcastdriver_28_29_142',['SUAppcastDriver()',['../category_s_u_appcast_driver_07_08.html',1,'']]], + ['suappcastdriverdelegate_2dp_143',['SUAppcastDriverDelegate-p',['../protocol_s_u_appcast_driver_delegate-p.html',1,'']]], + ['suappcastitem_144',['SUAppcastItem',['../interface_s_u_appcast_item.html',1,'']]], + ['suappcastitem_28_29_145',['SUAppcastItem()',['../category_s_u_appcast_item_07_08.html',1,'']]], + ['suappcastitem_28private_29_146',['SUAppcastItem(Private)',['../category_s_u_appcast_item_07_private_08.html',1,'']]], + ['suapplicationinfo_147',['SUApplicationInfo',['../interface_s_u_application_info.html',1,'']]], + ['subundleicon_148',['SUBundleIcon',['../interface_s_u_bundle_icon.html',1,'']]], + ['sufilemanager_149',['SUFileManager',['../interface_s_u_file_manager.html',1,'']]], + ['suhost_150',['SUHost',['../interface_s_u_host.html',1,'']]], + ['suhost_28_29_151',['SUHost()',['../category_s_u_host_07_08.html',1,'']]], + ['suinstalleragentinitiationprotocol_2dp_152',['SUInstallerAgentInitiationProtocol-p',['../protocol_s_u_installer_agent_initiation_protocol-p.html',1,'']]], + ['suinstallerprotocol_2dp_153',['SUInstallerProtocol-p',['../protocol_s_u_installer_protocol-p.html',1,'']]], + ['suoperatingsystem_154',['SUOperatingSystem',['../interface_s_u_operating_system.html',1,'']]], + ['suphasedupdategroupinfo_155',['SUPhasedUpdateGroupInfo',['../interface_s_u_phased_update_group_info.html',1,'']]], + ['supublickeys_156',['SUPublicKeys',['../interface_s_u_public_keys.html',1,'']]], + ['susignatures_157',['SUSignatures',['../interface_s_u_signatures.html',1,'']]], + ['sustandardversioncomparator_158',['SUStandardVersionComparator',['../interface_s_u_standard_version_comparator.html',1,'']]], + ['sustatuscontroller_159',['SUStatusController',['../interface_s_u_status_controller.html',1,'']]], + ['sustatuscontroller_28_29_160',['SUStatusController()',['../category_s_u_status_controller_07_08.html',1,'']]], + ['susystemprofiler_161',['SUSystemProfiler',['../interface_s_u_system_profiler.html',1,'']]], + ['sutouchbarbuttongroup_162',['SUTouchBarButtonGroup',['../interface_s_u_touch_bar_button_group.html',1,'']]], + ['suupdatepermissionresponse_163',['SUUpdatePermissionResponse',['../interface_s_u_update_permission_response.html',1,'']]], + ['suupdatevalidator_164',['SUUpdateValidator',['../interface_s_u_update_validator.html',1,'']]], + ['suupdatevalidator_28_29_165',['SUUpdateValidator()',['../category_s_u_update_validator_07_08.html',1,'']]], + ['suversioncomparison_2dp_166',['SUVersionComparison-p',['../protocol_s_u_version_comparison-p.html',1,'']]], + ['suversiondisplay_2dp_167',['SUVersionDisplay-p',['../protocol_s_u_version_display-p.html',1,'']]], + ['systemprofile_168',['systemProfile',['../interface_s_p_u_update_permission_request.html#a318086878d3e1ec1efa9b8d2424f9844',1,'SPUUpdatePermissionRequest']]], + ['systemprofilearray_169',['systemProfileArray',['../interface_s_p_u_updater.html#a90e21876539a0dab3eacfccad863aaa2',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/all_c.html b/documentation/api-reference/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/documentation/api-reference/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_c.js b/documentation/api-reference/search/all_c.js new file mode 100644 index 0000000..cc57e5f --- /dev/null +++ b/documentation/api-reference/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['terminationlistener_170',['TerminationListener',['../interface_termination_listener.html',1,'']]], + ['terminationlistener_28_29_171',['TerminationListener()',['../category_termination_listener_07_08.html',1,'']]], + ['textencodingname_172',['textEncodingName',['../interface_s_p_u_download_data.html#a8316fe998bf3afa7bc4d6df7dc0ac070',1,'SPUDownloadData']]] +]; diff --git a/documentation/api-reference/search/all_d.html b/documentation/api-reference/search/all_d.html new file mode 100644 index 0000000..af7f2f0 --- /dev/null +++ b/documentation/api-reference/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_d.js b/documentation/api-reference/search/all_d.js new file mode 100644 index 0000000..1d6772a --- /dev/null +++ b/documentation/api-reference/search/all_d.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['updateaccesstimeofitematrooturl_3aerror_3a_173',['updateAccessTimeOfItemAtRootURL:error:',['../interface_s_u_file_manager.html#ae7b47ef3936d2ab36d32d1f496c9b133',1,'SUFileManager']]], + ['updatecheckinterval_174',['updateCheckInterval',['../interface_s_p_u_updater.html#a1b2a4bc575d1f9de57e189ca93bda22a',1,'SPUUpdater::updateCheckInterval()'],['../interface_s_p_u_updater_settings.html#affb7ac205324036803bda21826bde524',1,'SPUUpdaterSettings::updateCheckInterval()']]], + ['updatemodificationandaccesstimeofitematurl_3aerror_3a_175',['updateModificationAndAccessTimeOfItemAtURL:error:',['../interface_s_u_file_manager.html#ad81e3246bf42d50c7c0ed2df06ff41de',1,'SUFileManager']]], + ['updater_176',['updater',['../interface_s_p_u_standard_updater_controller.html#afa35dd9683576ac1126d1ebbb6d0f3d3',1,'SPUStandardUpdaterController']]], + ['updater_3adidabortwitherror_3a_177',['updater:didAbortWithError:',['../protocol_s_p_u_updater_delegate-p.html#a71df9732bf67636a1b61a76a54d57878',1,'SPUUpdaterDelegate-p']]], + ['updater_3adiddownloadupdate_3a_178',['updater:didDownloadUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a3f8066b02a7a3c1c215bee70458e6db0',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidextractupdate_3a_179',['updater:didExtractUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a8d7a087d6f25ded00f80acfd3555e504',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidfindvalidupdate_3a_180',['updater:didFindValidUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a155defe95c694f91c46f81baff2c99d9',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidfinishloadingappcast_3a_181',['updater:didFinishLoadingAppcast:',['../protocol_s_p_u_updater_delegate-p.html#a67f5d81863a898df881ddbbaed9371a8',1,'SPUUpdaterDelegate-p']]], + ['updater_3afailedtodownloadupdate_3aerror_3a_182',['updater:failedToDownloadUpdate:error:',['../protocol_s_p_u_updater_delegate-p.html#ab446fa17e9b9adfda488ca48641c203a',1,'SPUUpdaterDelegate-p']]], + ['updater_3ashouldallowinstallerinteractionforupdatecheck_3a_183',['updater:shouldAllowInstallerInteractionForUpdateCheck:',['../protocol_s_p_u_updater_delegate-p.html#a232aa864ac8c86b266bc043dfd1136b4',1,'SPUUpdaterDelegate-p']]], + ['updater_3ashouldpostponerelaunchforupdate_3auntilinvokingblock_3a_184',['updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:',['../protocol_s_p_u_updater_delegate-p.html#aeef90220bddc5727c5e6529b58e48164',1,'SPUUpdaterDelegate-p']]], + ['updater_3auserdidskipthisversion_3a_185',['updater:userDidSkipThisVersion:',['../protocol_s_p_u_updater_delegate-p.html#a1f8fcf730b45b3b650b19627dd1ac36c',1,'SPUUpdaterDelegate-p']]], + ['updater_3awilldownloadupdate_3awithrequest_3a_186',['updater:willDownloadUpdate:withRequest:',['../protocol_s_p_u_updater_delegate-p.html#a2255ef7b18b135306e871e1471a4a399',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillextractupdate_3a_187',['updater:willExtractUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a2573857b492ea895f099407a92321a3f',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillinstallupdate_3a_188',['updater:willInstallUpdate:',['../protocol_s_p_u_updater_delegate-p.html#acf34be619b8fb7f66693837849d5e228',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillinstallupdateonquit_3aimmediateinstallationblock_3a_189',['updater:willInstallUpdateOnQuit:immediateInstallationBlock:',['../protocol_s_p_u_updater_delegate-p.html#a64585159f4bef97e47de8359e202f3ad',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillscheduleupdatecheckafterdelay_3a_190',['updater:willScheduleUpdateCheckAfterDelay:',['../protocol_s_p_u_updater_delegate-p.html#aafac150db4d32c06c84ee3ad01b0f036',1,'SPUUpdaterDelegate-p']]], + ['updaterdelegate_191',['updaterDelegate',['../interface_s_p_u_standard_updater_controller.html#a8ee554e7555314565b582ea7ddfb91fe',1,'SPUStandardUpdaterController']]], + ['updaterdidnotfindupdate_3a_192',['updaterDidNotFindUpdate:',['../protocol_s_p_u_updater_delegate-p.html#ad112453ce92617e3356a7cd5c4d0658b',1,'SPUUpdaterDelegate-p']]], + ['updaterdidnotfindupdate_3aerror_3a_193',['updaterDidNotFindUpdate:error:',['../protocol_s_p_u_updater_delegate-p.html#a5ad88d4c57d19fe73080273b13ded22d',1,'SPUUpdaterDelegate-p']]], + ['updatermaycheckforupdates_3a_194',['updaterMayCheckForUpdates:',['../protocol_s_p_u_updater_delegate-p.html#a1745cb021956a38c2439b370e9cda904',1,'SPUUpdaterDelegate-p']]], + ['updatershoulddownloadreleasenotes_3a_195',['updaterShouldDownloadReleaseNotes:',['../protocol_s_p_u_updater_delegate-p.html#a8b966f752f5a19942534698d5271544a',1,'SPUUpdaterDelegate-p']]], + ['updatershouldpromptforpermissiontocheckforupdates_3a_196',['updaterShouldPromptForPermissionToCheckForUpdates:',['../protocol_s_p_u_updater_delegate-p.html#a5cd8012b35bec5de906e70c4dabce602',1,'SPUUpdaterDelegate-p']]], + ['updatershouldrelaunchapplication_3a_197',['updaterShouldRelaunchApplication:',['../protocol_s_p_u_updater_delegate-p.html#a703e4aa94c2b4fe835c99b1f2b8f1c48',1,'SPUUpdaterDelegate-p']]], + ['updaterwillidleschedulingupdates_3a_198',['updaterWillIdleSchedulingUpdates:',['../protocol_s_p_u_updater_delegate-p.html#afccc281852fd4f497d815cda9b4695bb',1,'SPUUpdaterDelegate-p']]], + ['updaterwillrelaunchapplication_3a_199',['updaterWillRelaunchApplication:',['../protocol_s_p_u_updater_delegate-p.html#a6fa486e14d915cd18ac3791a905647f2',1,'SPUUpdaterDelegate-p']]], + ['url_200',['URL',['../interface_s_p_u_download_data.html#a5eabdc79a39c2de6e0c79b2d6d4e5b0e',1,'SPUDownloadData']]], + ['useragentstring_201',['userAgentString',['../interface_s_p_u_updater.html#a62757b3c7dea957c737527e854408e96',1,'SPUUpdater']]], + ['userdidcanceldownload_3a_202',['userDidCancelDownload:',['../protocol_s_p_u_updater_delegate-p.html#a06e1e03dea92513fd284e263b9f80d02',1,'SPUUpdaterDelegate-p']]], + ['userdriver_203',['userDriver',['../interface_s_p_u_standard_updater_controller.html#a22c96bbd966c2d92884a2cfc6fb4f6f6',1,'SPUStandardUpdaterController']]], + ['userdriverdelegate_204',['userDriverDelegate',['../interface_s_p_u_standard_updater_controller.html#a4afcf2d6fc104bf1186a0e757aa267d7',1,'SPUStandardUpdaterController']]] +]; diff --git a/documentation/api-reference/search/all_e.html b/documentation/api-reference/search/all_e.html new file mode 100644 index 0000000..e25df42 --- /dev/null +++ b/documentation/api-reference/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/all_e.js b/documentation/api-reference/search/all_e.js new file mode 100644 index 0000000..9e8d984 --- /dev/null +++ b/documentation/api-reference/search/all_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['versioncomparatorforupdater_3a_205',['versionComparatorForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a8bea6508b8e81a51c1087a1f3b501c1d',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/search/classes_0.html b/documentation/api-reference/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/documentation/api-reference/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/classes_0.js b/documentation/api-reference/search/classes_0.js new file mode 100644 index 0000000..9e35133 --- /dev/null +++ b/documentation/api-reference/search/classes_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['installerprogressappcontroller_206',['InstallerProgressAppController',['../interface_installer_progress_app_controller.html',1,'']]], + ['installerprogressappcontroller_28_29_207',['InstallerProgressAppController()',['../category_installer_progress_app_controller_07_08.html',1,'']]], + ['installerprogressdelegate_2dp_208',['InstallerProgressDelegate-p',['../protocol_installer_progress_delegate-p.html',1,'']]] +]; diff --git a/documentation/api-reference/search/classes_1.html b/documentation/api-reference/search/classes_1.html new file mode 100644 index 0000000..576e916 --- /dev/null +++ b/documentation/api-reference/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/classes_1.js b/documentation/api-reference/search/classes_1.js new file mode 100644 index 0000000..8da5fe2 --- /dev/null +++ b/documentation/api-reference/search/classes_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['nsbutton_28sierrasdk_29_209',['NSButton(SierraSDK)',['../category_n_s_button_07_sierra_s_d_k_08.html',1,'']]], + ['nsdata_28susignatureverifier_29_210',['NSData(SUSignatureVerifier)',['../category_n_s_data_07_s_u_signature_verifier_08.html',1,'']]], + ['nsobject_28privatedelegatemethods_29_211',['NSObject(PrivateDelegateMethods)',['../category_n_s_object_07_private_delegate_methods_08.html',1,'']]], + ['nsoperatingsystemversion_212',['NSOperatingSystemVersion',['../struct_n_s_operating_system_version.html',1,'']]], + ['nsprocessinfo_28_29_213',['NSProcessInfo()',['../category_n_s_process_info_07_08.html',1,'']]] +]; diff --git a/documentation/api-reference/search/classes_2.html b/documentation/api-reference/search/classes_2.html new file mode 100644 index 0000000..956405e --- /dev/null +++ b/documentation/api-reference/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/classes_2.js b/documentation/api-reference/search/classes_2.js new file mode 100644 index 0000000..be0d489 --- /dev/null +++ b/documentation/api-reference/search/classes_2.js @@ -0,0 +1,92 @@ +var searchData= +[ + ['showinstallerprogress_214',['ShowInstallerProgress',['../interface_show_installer_progress.html',1,'']]], + ['showinstallerprogress_28_29_215',['ShowInstallerProgress()',['../category_show_installer_progress_07_08.html',1,'']]], + ['spuappcastitemstate_216',['SPUAppcastItemState',['../interface_s_p_u_appcast_item_state.html',1,'']]], + ['spuappcastitemstate_28_29_217',['SPUAppcastItemState()',['../category_s_p_u_appcast_item_state_07_08.html',1,'']]], + ['spuappcastitemstateresolver_218',['SPUAppcastItemStateResolver',['../interface_s_p_u_appcast_item_state_resolver.html',1,'']]], + ['spuautomaticupdatedriver_219',['SPUAutomaticUpdateDriver',['../interface_s_p_u_automatic_update_driver.html',1,'']]], + ['spuautomaticupdatedriver_28_29_220',['SPUAutomaticUpdateDriver()',['../category_s_p_u_automatic_update_driver_07_08.html',1,'']]], + ['spubasicupdatedriver_221',['SPUBasicUpdateDriver',['../interface_s_p_u_basic_update_driver.html',1,'']]], + ['spubasicupdatedriver_28_29_222',['SPUBasicUpdateDriver()',['../category_s_p_u_basic_update_driver_07_08.html',1,'']]], + ['spubasicupdatedriverdelegate_2dp_223',['SPUBasicUpdateDriverDelegate-p',['../protocol_s_p_u_basic_update_driver_delegate-p.html',1,'']]], + ['spucorebasedupdatedriver_224',['SPUCoreBasedUpdateDriver',['../interface_s_p_u_core_based_update_driver.html',1,'']]], + ['spucorebasedupdatedriver_28_29_225',['SPUCoreBasedUpdateDriver()',['../category_s_p_u_core_based_update_driver_07_08.html',1,'']]], + ['spucorebasedupdatedriverdelegate_2dp_226',['SPUCoreBasedUpdateDriverDelegate-p',['../protocol_s_p_u_core_based_update_driver_delegate-p.html',1,'']]], + ['spudownloaddata_227',['SPUDownloadData',['../interface_s_p_u_download_data.html',1,'']]], + ['spudownloaddriver_228',['SPUDownloadDriver',['../interface_s_p_u_download_driver.html',1,'']]], + ['spudownloaddriver_28_29_229',['SPUDownloadDriver()',['../category_s_p_u_download_driver_07_08.html',1,'']]], + ['spudownloaddriverdelegate_2dp_230',['SPUDownloadDriverDelegate-p',['../protocol_s_p_u_download_driver_delegate-p.html',1,'']]], + ['spudownloadedupdate_231',['SPUDownloadedUpdate',['../interface_s_p_u_downloaded_update.html',1,'']]], + ['spuinformationalupdate_232',['SPUInformationalUpdate',['../interface_s_p_u_informational_update.html',1,'']]], + ['spuinstalleragentprotocol_2dp_233',['SPUInstallerAgentProtocol-p',['../protocol_s_p_u_installer_agent_protocol-p.html',1,'']]], + ['spuinstallerdriver_234',['SPUInstallerDriver',['../interface_s_p_u_installer_driver.html',1,'']]], + ['spuinstallerdriver_28_29_235',['SPUInstallerDriver()',['../category_s_p_u_installer_driver_07_08.html',1,'']]], + ['spuinstallerdriverdelegate_2dp_236',['SPUInstallerDriverDelegate-p',['../protocol_s_p_u_installer_driver_delegate-p.html',1,'']]], + ['spulocalcachedirectory_237',['SPULocalCacheDirectory',['../interface_s_p_u_local_cache_directory.html',1,'']]], + ['spuprobeinstallstatus_238',['SPUProbeInstallStatus',['../interface_s_p_u_probe_install_status.html',1,'']]], + ['spuprobingupdatedriver_239',['SPUProbingUpdateDriver',['../interface_s_p_u_probing_update_driver.html',1,'']]], + ['spuprobingupdatedriver_28_29_240',['SPUProbingUpdateDriver()',['../category_s_p_u_probing_update_driver_07_08.html',1,'']]], + ['spureleasenotesdriver_241',['SPUReleaseNotesDriver',['../interface_s_p_u_release_notes_driver.html',1,'']]], + ['spuresumableupdate_2dp_242',['SPUResumableUpdate-p',['../protocol_s_p_u_resumable_update-p.html',1,'']]], + ['spuscheduledupdatedriver_243',['SPUScheduledUpdateDriver',['../interface_s_p_u_scheduled_update_driver.html',1,'']]], + ['spuscheduledupdatedriver_28_29_244',['SPUScheduledUpdateDriver()',['../category_s_p_u_scheduled_update_driver_07_08.html',1,'']]], + ['spuskippedupdate_245',['SPUSkippedUpdate',['../interface_s_p_u_skipped_update.html',1,'']]], + ['spustandardupdatercontroller_246',['SPUStandardUpdaterController',['../interface_s_p_u_standard_updater_controller.html',1,'']]], + ['spustandarduserdriver_247',['SPUStandardUserDriver',['../interface_s_p_u_standard_user_driver.html',1,'']]], + ['spustandarduserdriverdelegate_2dp_248',['SPUStandardUserDriverDelegate-p',['../protocol_s_p_u_standard_user_driver_delegate-p.html',1,'']]], + ['spuuibasedupdatedriver_249',['SPUUIBasedUpdateDriver',['../interface_s_p_u_u_i_based_update_driver.html',1,'']]], + ['spuuibasedupdatedriver_28_29_250',['SPUUIBasedUpdateDriver()',['../category_s_p_u_u_i_based_update_driver_07_08.html',1,'']]], + ['spuuibasedupdatedriverdelegate_2dp_251',['SPUUIBasedUpdateDriverDelegate-p',['../protocol_s_p_u_u_i_based_update_driver_delegate-p.html',1,'']]], + ['spuupdatedriver_2dp_252',['SPUUpdateDriver-p',['../protocol_s_p_u_update_driver-p.html',1,'']]], + ['spuupdatepermissionrequest_253',['SPUUpdatePermissionRequest',['../interface_s_p_u_update_permission_request.html',1,'']]], + ['spuupdater_254',['SPUUpdater',['../interface_s_p_u_updater.html',1,'']]], + ['spuupdater_28_29_255',['SPUUpdater()',['../category_s_p_u_updater_07_08.html',1,'']]], + ['spuupdatercycle_256',['SPUUpdaterCycle',['../interface_s_p_u_updater_cycle.html',1,'']]], + ['spuupdatercycle_28_29_257',['SPUUpdaterCycle()',['../category_s_p_u_updater_cycle_07_08.html',1,'']]], + ['spuupdatercycledelegate_2dp_258',['SPUUpdaterCycleDelegate-p',['../protocol_s_p_u_updater_cycle_delegate-p.html',1,'']]], + ['spuupdaterdelegate_2dp_259',['SPUUpdaterDelegate-p',['../protocol_s_p_u_updater_delegate-p.html',1,'']]], + ['spuupdatersettings_260',['SPUUpdaterSettings',['../interface_s_p_u_updater_settings.html',1,'']]], + ['spuupdatersettings_28_29_261',['SPUUpdaterSettings()',['../category_s_p_u_updater_settings_07_08.html',1,'']]], + ['spuupdatertimer_262',['SPUUpdaterTimer',['../interface_s_p_u_updater_timer.html',1,'']]], + ['spuupdatertimer_28_29_263',['SPUUpdaterTimer()',['../category_s_p_u_updater_timer_07_08.html',1,'']]], + ['spuupdatertimerdelegate_2dp_264',['SPUUpdaterTimerDelegate-p',['../protocol_s_p_u_updater_timer_delegate-p.html',1,'']]], + ['spuurlrequest_265',['SPUURLRequest',['../interface_s_p_u_u_r_l_request.html',1,'']]], + ['spuurlrequest_28_29_266',['SPUURLRequest()',['../category_s_p_u_u_r_l_request_07_08.html',1,'']]], + ['spuuserdriver_2dp_267',['SPUUserDriver-p',['../protocol_s_p_u_user_driver-p.html',1,'']]], + ['spuuserinitiatedupdatedriver_268',['SPUUserInitiatedUpdateDriver',['../interface_s_p_u_user_initiated_update_driver.html',1,'']]], + ['spuuserinitiatedupdatedriver_28_29_269',['SPUUserInitiatedUpdateDriver()',['../category_s_p_u_user_initiated_update_driver_07_08.html',1,'']]], + ['spuuserupdatestate_270',['SPUUserUpdateState',['../interface_s_p_u_user_update_state.html',1,'']]], + ['spuuserupdatestate_28_29_271',['SPUUserUpdateState()',['../category_s_p_u_user_update_state_07_08.html',1,'']]], + ['spuuserupdatestate_28private_29_272',['SPUUserUpdateState(Private)',['../category_s_p_u_user_update_state_07_private_08.html',1,'']]], + ['suappcast_273',['SUAppcast',['../interface_s_u_appcast.html',1,'']]], + ['suappcast_28_29_274',['SUAppcast()',['../category_s_u_appcast_07_08.html',1,'']]], + ['suappcast_28private_29_275',['SUAppcast(Private)',['../category_s_u_appcast_07_private_08.html',1,'']]], + ['suappcastdriver_276',['SUAppcastDriver',['../interface_s_u_appcast_driver.html',1,'']]], + ['suappcastdriver_28_29_277',['SUAppcastDriver()',['../category_s_u_appcast_driver_07_08.html',1,'']]], + ['suappcastdriverdelegate_2dp_278',['SUAppcastDriverDelegate-p',['../protocol_s_u_appcast_driver_delegate-p.html',1,'']]], + ['suappcastitem_279',['SUAppcastItem',['../interface_s_u_appcast_item.html',1,'']]], + ['suappcastitem_28_29_280',['SUAppcastItem()',['../category_s_u_appcast_item_07_08.html',1,'']]], + ['suappcastitem_28private_29_281',['SUAppcastItem(Private)',['../category_s_u_appcast_item_07_private_08.html',1,'']]], + ['suapplicationinfo_282',['SUApplicationInfo',['../interface_s_u_application_info.html',1,'']]], + ['subundleicon_283',['SUBundleIcon',['../interface_s_u_bundle_icon.html',1,'']]], + ['sufilemanager_284',['SUFileManager',['../interface_s_u_file_manager.html',1,'']]], + ['suhost_285',['SUHost',['../interface_s_u_host.html',1,'']]], + ['suhost_28_29_286',['SUHost()',['../category_s_u_host_07_08.html',1,'']]], + ['suinstalleragentinitiationprotocol_2dp_287',['SUInstallerAgentInitiationProtocol-p',['../protocol_s_u_installer_agent_initiation_protocol-p.html',1,'']]], + ['suinstallerprotocol_2dp_288',['SUInstallerProtocol-p',['../protocol_s_u_installer_protocol-p.html',1,'']]], + ['suoperatingsystem_289',['SUOperatingSystem',['../interface_s_u_operating_system.html',1,'']]], + ['suphasedupdategroupinfo_290',['SUPhasedUpdateGroupInfo',['../interface_s_u_phased_update_group_info.html',1,'']]], + ['supublickeys_291',['SUPublicKeys',['../interface_s_u_public_keys.html',1,'']]], + ['susignatures_292',['SUSignatures',['../interface_s_u_signatures.html',1,'']]], + ['sustandardversioncomparator_293',['SUStandardVersionComparator',['../interface_s_u_standard_version_comparator.html',1,'']]], + ['sustatuscontroller_294',['SUStatusController',['../interface_s_u_status_controller.html',1,'']]], + ['sustatuscontroller_28_29_295',['SUStatusController()',['../category_s_u_status_controller_07_08.html',1,'']]], + ['susystemprofiler_296',['SUSystemProfiler',['../interface_s_u_system_profiler.html',1,'']]], + ['sutouchbarbuttongroup_297',['SUTouchBarButtonGroup',['../interface_s_u_touch_bar_button_group.html',1,'']]], + ['suupdatepermissionresponse_298',['SUUpdatePermissionResponse',['../interface_s_u_update_permission_response.html',1,'']]], + ['suupdatevalidator_299',['SUUpdateValidator',['../interface_s_u_update_validator.html',1,'']]], + ['suupdatevalidator_28_29_300',['SUUpdateValidator()',['../category_s_u_update_validator_07_08.html',1,'']]], + ['suversioncomparison_2dp_301',['SUVersionComparison-p',['../protocol_s_u_version_comparison-p.html',1,'']]], + ['suversiondisplay_2dp_302',['SUVersionDisplay-p',['../protocol_s_u_version_display-p.html',1,'']]] +]; diff --git a/documentation/api-reference/search/classes_3.html b/documentation/api-reference/search/classes_3.html new file mode 100644 index 0000000..d33343b --- /dev/null +++ b/documentation/api-reference/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/classes_3.js b/documentation/api-reference/search/classes_3.js new file mode 100644 index 0000000..5ee7f50 --- /dev/null +++ b/documentation/api-reference/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['terminationlistener_303',['TerminationListener',['../interface_termination_listener.html',1,'']]], + ['terminationlistener_28_29_304',['TerminationListener()',['../category_termination_listener_07_08.html',1,'']]] +]; diff --git a/documentation/api-reference/search/close.svg b/documentation/api-reference/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/documentation/api-reference/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/documentation/api-reference/search/functions_0.html b/documentation/api-reference/search/functions_0.html new file mode 100644 index 0000000..eb4c501 --- /dev/null +++ b/documentation/api-reference/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_0.js b/documentation/api-reference/search/functions_0.js new file mode 100644 index 0000000..a7361fe --- /dev/null +++ b/documentation/api-reference/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['allowedchannelsforupdater_3a_305',['allowedChannelsForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a717db8ad85d47309e3f4deebdc09e7b4',1,'SPUUpdaterDelegate-p']]], + ['allowedsystemprofilekeysforupdater_3a_306',['allowedSystemProfileKeysForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#aec7e4b19a2fc4afdcc86286c3bbf06b1',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/search/functions_1.html b/documentation/api-reference/search/functions_1.html new file mode 100644 index 0000000..ef4088b --- /dev/null +++ b/documentation/api-reference/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_1.js b/documentation/api-reference/search/functions_1.js new file mode 100644 index 0000000..107de75 --- /dev/null +++ b/documentation/api-reference/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bestvalidupdateinappcast_3aforupdater_3a_307',['bestValidUpdateInAppcast:forUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a0f38585740c428ce8904bf38f712396d',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/search/functions_2.html b/documentation/api-reference/search/functions_2.html new file mode 100644 index 0000000..ca5aa10 --- /dev/null +++ b/documentation/api-reference/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_2.js b/documentation/api-reference/search/functions_2.js new file mode 100644 index 0000000..15be9ff --- /dev/null +++ b/documentation/api-reference/search/functions_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['changeownerandgroupofitematrooturl_3atomatchurl_3aerror_3a_308',['changeOwnerAndGroupOfItemAtRootURL:toMatchURL:error:',['../interface_s_u_file_manager.html#af0defc82017c43bd1f0eab5540c05f09',1,'SUFileManager']]], + ['checkforupdateinformation_309',['checkForUpdateInformation',['../interface_s_p_u_updater.html#ad38751e23aa42be220206e7e671c697d',1,'SPUUpdater']]], + ['checkforupdates_310',['checkForUpdates',['../interface_s_p_u_updater.html#a7df56bb150d327beb72b7b050799790d',1,'SPUUpdater']]], + ['checkforupdates_3a_311',['checkForUpdates:',['../interface_s_p_u_standard_updater_controller.html#af2d2c860e3f3ae9d8feba95d196c4dc9',1,'SPUStandardUpdaterController']]], + ['checkforupdatesinbackground_312',['checkForUpdatesInBackground',['../interface_s_p_u_updater.html#a2e1e3ca715f29bae7ee0b16e15e34850',1,'SPUUpdater']]], + ['compareversion_3atoversion_3a_313',['compareVersion:toVersion:',['../interface_s_u_standard_version_comparator.html#a50d145ce078dd80d55346f17e946d282',1,'SUStandardVersionComparator::compareVersion:toVersion:()'],['../protocol_s_u_version_comparison-p.html#a0f94aedcc244ce41757e1fa620d0eb40',1,'SUVersionComparison-p::compareVersion:toVersion:()']]], + ['copyitematurl_3atourl_3aerror_3a_314',['copyItemAtURL:toURL:error:',['../interface_s_u_file_manager.html#ac33297bd6dfbf11a23c3c0ded059f4d0',1,'SUFileManager']]] +]; diff --git a/documentation/api-reference/search/functions_3.html b/documentation/api-reference/search/functions_3.html new file mode 100644 index 0000000..d79f55b --- /dev/null +++ b/documentation/api-reference/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_3.js b/documentation/api-reference/search/functions_3.js new file mode 100644 index 0000000..2b2a29f --- /dev/null +++ b/documentation/api-reference/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['decryptionpasswordforupdater_3a_315',['decryptionPasswordForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#aaf8dbbcdef45b16d2fc43a4cc5487051',1,'SPUUpdaterDelegate-p']]], + ['defaultcomparator_316',['defaultComparator',['../interface_s_u_standard_version_comparator.html#a67be5d5bf36c4774432d912261cb3048',1,'SUStandardVersionComparator']]], + ['dismissupdateinstallation_317',['dismissUpdateInstallation',['../protocol_s_p_u_user_driver-p.html#a5df3b42fd77ab1b5c971c8df9ef35048',1,'SPUUserDriver-p']]] +]; diff --git a/documentation/api-reference/search/functions_4.html b/documentation/api-reference/search/functions_4.html new file mode 100644 index 0000000..1657cad --- /dev/null +++ b/documentation/api-reference/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_4.js b/documentation/api-reference/search/functions_4.js new file mode 100644 index 0000000..cfb2484 --- /dev/null +++ b/documentation/api-reference/search/functions_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['feedparametersforupdater_3asendingsystemprofile_3a_318',['feedParametersForUpdater:sendingSystemProfile:',['../protocol_s_p_u_updater_delegate-p.html#a43cee9820784cffdffc3b48d8b07407e',1,'SPUUpdaterDelegate-p']]], + ['feedurlstringforupdater_3a_319',['feedURLStringForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#afd1a89b0133a35faf849b58944349516',1,'SPUUpdaterDelegate-p']]], + ['formatversion_3aandversion_3a_320',['formatVersion:andVersion:',['../protocol_s_u_version_display-p.html#afb8728137859a22c1ed795637e654dbd',1,'SUVersionDisplay-p']]] +]; diff --git a/documentation/api-reference/search/functions_5.html b/documentation/api-reference/search/functions_5.html new file mode 100644 index 0000000..9301d6b --- /dev/null +++ b/documentation/api-reference/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_5.js b/documentation/api-reference/search/functions_5.js new file mode 100644 index 0000000..f86fe25 --- /dev/null +++ b/documentation/api-reference/search/functions_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['init_321',['init',['../interface_s_u_file_manager.html#a972da7c2fb112d09d4903ada3564126a',1,'SUFileManager::init()'],['../interface_s_u_standard_version_comparator.html#aef2dc178fc9895961ccb8ba966c1446b',1,'SUStandardVersionComparator::init()']]], + ['initwithautomaticupdatechecks_3asendsystemprofile_3a_322',['initWithAutomaticUpdateChecks:sendSystemProfile:',['../interface_s_u_update_permission_response.html#a09be7ccbcaf1521fc9a3f5dd420785ee',1,'SUUpdatePermissionResponse']]], + ['initwithdictionary_3arelativetourl_3astateresolver_3afailurereason_3a_323',['initWithDictionary:relativeToURL:stateResolver:failureReason:',['../category_s_u_appcast_item_07_private_08.html#a0687fe14843337befdfa749e77de60a0',1,'SUAppcastItem(Private)::initWithDictionary:relativeToURL:stateResolver:failureReason:()'],['../interface_s_u_appcast_item.html#a0687fe14843337befdfa749e77de60a0',1,'SUAppcastItem::initWithDictionary:relativeToURL:stateResolver:failureReason:()']]], + ['initwithhostbundle_3aapplicationbundle_3auserdriver_3adelegate_3a_324',['initWithHostBundle:applicationBundle:userDriver:delegate:',['../interface_s_p_u_updater.html#aed247e3fde0667e50b8d2345e84033e1',1,'SPUUpdater']]], + ['initwithhostbundle_3adelegate_3a_325',['initWithHostBundle:delegate:',['../interface_s_p_u_standard_user_driver.html#a153eafa16df66af096947673762c2deb',1,'SPUStandardUserDriver']]], + ['initwithstartingupdater_3aupdaterdelegate_3auserdriverdelegate_3a_326',['initWithStartingUpdater:updaterDelegate:userDriverDelegate:',['../interface_s_p_u_standard_updater_controller.html#a5612aa1955b41cd306200dc451c2079c',1,'SPUStandardUpdaterController']]], + ['initwithsystemprofile_3a_327',['initWithSystemProfile:',['../interface_s_p_u_update_permission_request.html#a111cc1f6605e481954f1ea57f833b6ab',1,'SPUUpdatePermissionRequest']]], + ['initwithupdaterdelegate_3auserdriverdelegate_3a_328',['initWithUpdaterDelegate:userDriverDelegate:',['../interface_s_p_u_standard_updater_controller.html#a696072b114786259d2e6744914b55850',1,'SPUStandardUpdaterController']]] +]; diff --git a/documentation/api-reference/search/functions_6.html b/documentation/api-reference/search/functions_6.html new file mode 100644 index 0000000..9c4f5fc --- /dev/null +++ b/documentation/api-reference/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_6.js b/documentation/api-reference/search/functions_6.js new file mode 100644 index 0000000..04d86f2 --- /dev/null +++ b/documentation/api-reference/search/functions_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['makedirectoryaturl_3aerror_3a_329',['makeDirectoryAtURL:error:',['../interface_s_u_file_manager.html#ace4c529974dc1b64360db12689c2e9aa',1,'SUFileManager']]], + ['maketemporarydirectorywithpreferredname_3aappropriatefordirectoryurl_3aerror_3a_330',['makeTemporaryDirectoryWithPreferredName:appropriateForDirectoryURL:error:',['../interface_s_u_file_manager.html#a055d2ef9910e85c90a7d0dc34b34ce92',1,'SUFileManager']]], + ['moveitematurl_3atourl_3aerror_3a_331',['moveItemAtURL:toURL:error:',['../interface_s_u_file_manager.html#a8f9d15f622a08284e2d5157ebea440f3',1,'SUFileManager']]] +]; diff --git a/documentation/api-reference/search/functions_7.html b/documentation/api-reference/search/functions_7.html new file mode 100644 index 0000000..46b5c0f --- /dev/null +++ b/documentation/api-reference/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_7.js b/documentation/api-reference/search/functions_7.js new file mode 100644 index 0000000..5631163 --- /dev/null +++ b/documentation/api-reference/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ns_5funavailable_332',['NS_UNAVAILABLE',['../interface_s_p_u_standard_updater_controller.html#a3c582fd7f0de322edc97915c9405eced',1,'SPUStandardUpdaterController::NS_UNAVAILABLE()'],['../interface_s_p_u_standard_user_driver.html#a9ad2b659b5760b2f4274e5c63b1f8094',1,'SPUStandardUserDriver::NS_UNAVAILABLE()'],['../interface_s_p_u_updater.html#ac2907583983833ce9f09bee2867d7654',1,'SPUUpdater::NS_UNAVAILABLE()']]] +]; diff --git a/documentation/api-reference/search/functions_8.html b/documentation/api-reference/search/functions_8.html new file mode 100644 index 0000000..31a1d95 --- /dev/null +++ b/documentation/api-reference/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_8.js b/documentation/api-reference/search/functions_8.js new file mode 100644 index 0000000..c761fdd --- /dev/null +++ b/documentation/api-reference/search/functions_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['releaseitemfromquarantineatrooturl_3aerror_3a_333',['releaseItemFromQuarantineAtRootURL:error:',['../interface_s_u_file_manager.html#a8599b8160422edbb38f34e547889f727',1,'SUFileManager']]], + ['removeitematurl_3aerror_3a_334',['removeItemAtURL:error:',['../interface_s_u_file_manager.html#aea79ee52a31937c33f5e00e60f873b4b',1,'SUFileManager']]], + ['replaceitematurl_3awithitematurl_3aerror_3a_335',['replaceItemAtURL:withItemAtURL:error:',['../interface_s_u_file_manager.html#aec3de47f6e37353f905b855951b37c65',1,'SUFileManager']]], + ['resetupdatecycle_336',['resetUpdateCycle',['../interface_s_p_u_updater.html#aefe1e7f5ae5b8e02f1d7beab189b51af',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/functions_9.html b/documentation/api-reference/search/functions_9.html new file mode 100644 index 0000000..9a8e429 --- /dev/null +++ b/documentation/api-reference/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_9.js b/documentation/api-reference/search/functions_9.js new file mode 100644 index 0000000..0aeed47 --- /dev/null +++ b/documentation/api-reference/search/functions_9.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['setfeedurl_3a_337',['setFeedURL:',['../interface_s_p_u_updater.html#adfaabdc767d7a7668c8e472e45abd635',1,'SPUUpdater']]], + ['showdownloaddidreceivedataoflength_3a_338',['showDownloadDidReceiveDataOfLength:',['../protocol_s_p_u_user_driver-p.html#ac86c11d9dd8f66cc54bc3f3dd303fb6c',1,'SPUUserDriver-p']]], + ['showdownloaddidreceiveexpectedcontentlength_3a_339',['showDownloadDidReceiveExpectedContentLength:',['../protocol_s_p_u_user_driver-p.html#abf58b5974797500618b7745f1987833a',1,'SPUUserDriver-p']]], + ['showdownloaddidstartextractingupdate_340',['showDownloadDidStartExtractingUpdate',['../protocol_s_p_u_user_driver-p.html#a19ada57d6b77c7ea3ed402833dcda44c',1,'SPUUserDriver-p']]], + ['showdownloadinitiatedwithcancellation_3a_341',['showDownloadInitiatedWithCancellation:',['../protocol_s_p_u_user_driver-p.html#a3c6cd7f7b93f6d2777b04f3c9f0bb62c',1,'SPUUserDriver-p']]], + ['showextractionreceivedprogress_3a_342',['showExtractionReceivedProgress:',['../protocol_s_p_u_user_driver-p.html#a3ffb49c0f51864011685049b7225dfbf',1,'SPUUserDriver-p']]], + ['showinstallingupdate_343',['showInstallingUpdate',['../protocol_s_p_u_user_driver-p.html#ab774cef0a00dbc7c074f8850c1e6c21f',1,'SPUUserDriver-p']]], + ['showreadytoinstallandrelaunch_3a_344',['showReadyToInstallAndRelaunch:',['../protocol_s_p_u_user_driver-p.html#a91ad34f8469dc022c7b1ed42b0f1575d',1,'SPUUserDriver-p']]], + ['showsendingterminationsignal_345',['showSendingTerminationSignal',['../protocol_s_p_u_user_driver-p.html#a3eb11e826fe5c1f68112a73600c23bf2',1,'SPUUserDriver-p']]], + ['showupdatefoundwithappcastitem_3astate_3areply_3a_346',['showUpdateFoundWithAppcastItem:state:reply:',['../protocol_s_p_u_user_driver-p.html#ac0f8e99c60962476ea55729833a0e3f2',1,'SPUUserDriver-p']]], + ['showupdateinfocus_347',['showUpdateInFocus',['../protocol_s_p_u_user_driver-p.html#ac6d613d4689dbc6415774d0ab63afd55',1,'SPUUserDriver-p']]], + ['showupdateinstalledandrelaunched_3aacknowledgement_3a_348',['showUpdateInstalledAndRelaunched:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#aa8b7ae192288db21ab43b4413b2d80c3',1,'SPUUserDriver-p']]], + ['showupdatenotfoundwitherror_3aacknowledgement_3a_349',['showUpdateNotFoundWithError:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#abf3ca2a6bb84fe26a4ce53ae5b6f2233',1,'SPUUserDriver-p']]], + ['showupdatepermissionrequest_3areply_3a_350',['showUpdatePermissionRequest:reply:',['../protocol_s_p_u_user_driver-p.html#a6382048832f06216f505659c251dc1e0',1,'SPUUserDriver-p']]], + ['showupdatereleasenotesfailedtodownloadwitherror_3a_351',['showUpdateReleaseNotesFailedToDownloadWithError:',['../protocol_s_p_u_user_driver-p.html#ab304bc81459aa83fc617eb5047cd93a1',1,'SPUUserDriver-p']]], + ['showupdatereleasenoteswithdownloaddata_3a_352',['showUpdateReleaseNotesWithDownloadData:',['../protocol_s_p_u_user_driver-p.html#ae5fe75d599aae6597d81bd2449919be8',1,'SPUUserDriver-p']]], + ['showupdatererror_3aacknowledgement_3a_353',['showUpdaterError:acknowledgement:',['../protocol_s_p_u_user_driver-p.html#ac10bbf2fbe588106bf3a8c951caa2d53',1,'SPUUserDriver-p']]], + ['showuserinitiatedupdatecheckwithcancellation_3a_354',['showUserInitiatedUpdateCheckWithCancellation:',['../protocol_s_p_u_user_driver-p.html#a797fb61eacdd1fba10a232d7b2b5ceac',1,'SPUUserDriver-p']]], + ['standarduserdriverdidshowmodalalert_355',['standardUserDriverDidShowModalAlert',['../protocol_s_p_u_standard_user_driver_delegate-p.html#aaaafb308354867990fed28c308dc881d',1,'SPUStandardUserDriverDelegate-p']]], + ['standarduserdriverrequestsversiondisplayer_356',['standardUserDriverRequestsVersionDisplayer',['../protocol_s_p_u_standard_user_driver_delegate-p.html#ae96836bc3c2fb3104d6586e5067001b3',1,'SPUStandardUserDriverDelegate-p']]], + ['standarduserdriverwillshowmodalalert_357',['standardUserDriverWillShowModalAlert',['../protocol_s_p_u_standard_user_driver_delegate-p.html#ad3bbc4db85bf302e8d6db6b4f030969a',1,'SPUStandardUserDriverDelegate-p']]], + ['startupdater_358',['startUpdater',['../interface_s_p_u_standard_updater_controller.html#a13632a2dd07a4d49333ec23091a3c6a5',1,'SPUStandardUpdaterController']]], + ['startupdater_3a_359',['startUpdater:',['../interface_s_p_u_updater.html#a30c0f163e0fbc7b100f84c64b491b353',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/functions_a.html b/documentation/api-reference/search/functions_a.html new file mode 100644 index 0000000..5ecc152 --- /dev/null +++ b/documentation/api-reference/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_a.js b/documentation/api-reference/search/functions_a.js new file mode 100644 index 0000000..0b01297 --- /dev/null +++ b/documentation/api-reference/search/functions_a.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['updateaccesstimeofitematrooturl_3aerror_3a_360',['updateAccessTimeOfItemAtRootURL:error:',['../interface_s_u_file_manager.html#ae7b47ef3936d2ab36d32d1f496c9b133',1,'SUFileManager']]], + ['updatemodificationandaccesstimeofitematurl_3aerror_3a_361',['updateModificationAndAccessTimeOfItemAtURL:error:',['../interface_s_u_file_manager.html#ad81e3246bf42d50c7c0ed2df06ff41de',1,'SUFileManager']]], + ['updater_3adidabortwitherror_3a_362',['updater:didAbortWithError:',['../protocol_s_p_u_updater_delegate-p.html#a71df9732bf67636a1b61a76a54d57878',1,'SPUUpdaterDelegate-p']]], + ['updater_3adiddownloadupdate_3a_363',['updater:didDownloadUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a3f8066b02a7a3c1c215bee70458e6db0',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidextractupdate_3a_364',['updater:didExtractUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a8d7a087d6f25ded00f80acfd3555e504',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidfindvalidupdate_3a_365',['updater:didFindValidUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a155defe95c694f91c46f81baff2c99d9',1,'SPUUpdaterDelegate-p']]], + ['updater_3adidfinishloadingappcast_3a_366',['updater:didFinishLoadingAppcast:',['../protocol_s_p_u_updater_delegate-p.html#a67f5d81863a898df881ddbbaed9371a8',1,'SPUUpdaterDelegate-p']]], + ['updater_3afailedtodownloadupdate_3aerror_3a_367',['updater:failedToDownloadUpdate:error:',['../protocol_s_p_u_updater_delegate-p.html#ab446fa17e9b9adfda488ca48641c203a',1,'SPUUpdaterDelegate-p']]], + ['updater_3ashouldallowinstallerinteractionforupdatecheck_3a_368',['updater:shouldAllowInstallerInteractionForUpdateCheck:',['../protocol_s_p_u_updater_delegate-p.html#a232aa864ac8c86b266bc043dfd1136b4',1,'SPUUpdaterDelegate-p']]], + ['updater_3ashouldpostponerelaunchforupdate_3auntilinvokingblock_3a_369',['updater:shouldPostponeRelaunchForUpdate:untilInvokingBlock:',['../protocol_s_p_u_updater_delegate-p.html#aeef90220bddc5727c5e6529b58e48164',1,'SPUUpdaterDelegate-p']]], + ['updater_3auserdidskipthisversion_3a_370',['updater:userDidSkipThisVersion:',['../protocol_s_p_u_updater_delegate-p.html#a1f8fcf730b45b3b650b19627dd1ac36c',1,'SPUUpdaterDelegate-p']]], + ['updater_3awilldownloadupdate_3awithrequest_3a_371',['updater:willDownloadUpdate:withRequest:',['../protocol_s_p_u_updater_delegate-p.html#a2255ef7b18b135306e871e1471a4a399',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillextractupdate_3a_372',['updater:willExtractUpdate:',['../protocol_s_p_u_updater_delegate-p.html#a2573857b492ea895f099407a92321a3f',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillinstallupdate_3a_373',['updater:willInstallUpdate:',['../protocol_s_p_u_updater_delegate-p.html#acf34be619b8fb7f66693837849d5e228',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillinstallupdateonquit_3aimmediateinstallationblock_3a_374',['updater:willInstallUpdateOnQuit:immediateInstallationBlock:',['../protocol_s_p_u_updater_delegate-p.html#a64585159f4bef97e47de8359e202f3ad',1,'SPUUpdaterDelegate-p']]], + ['updater_3awillscheduleupdatecheckafterdelay_3a_375',['updater:willScheduleUpdateCheckAfterDelay:',['../protocol_s_p_u_updater_delegate-p.html#aafac150db4d32c06c84ee3ad01b0f036',1,'SPUUpdaterDelegate-p']]], + ['updaterdidnotfindupdate_3a_376',['updaterDidNotFindUpdate:',['../protocol_s_p_u_updater_delegate-p.html#ad112453ce92617e3356a7cd5c4d0658b',1,'SPUUpdaterDelegate-p']]], + ['updaterdidnotfindupdate_3aerror_3a_377',['updaterDidNotFindUpdate:error:',['../protocol_s_p_u_updater_delegate-p.html#a5ad88d4c57d19fe73080273b13ded22d',1,'SPUUpdaterDelegate-p']]], + ['updatermaycheckforupdates_3a_378',['updaterMayCheckForUpdates:',['../protocol_s_p_u_updater_delegate-p.html#a1745cb021956a38c2439b370e9cda904',1,'SPUUpdaterDelegate-p']]], + ['updatershoulddownloadreleasenotes_3a_379',['updaterShouldDownloadReleaseNotes:',['../protocol_s_p_u_updater_delegate-p.html#a8b966f752f5a19942534698d5271544a',1,'SPUUpdaterDelegate-p']]], + ['updatershouldpromptforpermissiontocheckforupdates_3a_380',['updaterShouldPromptForPermissionToCheckForUpdates:',['../protocol_s_p_u_updater_delegate-p.html#a5cd8012b35bec5de906e70c4dabce602',1,'SPUUpdaterDelegate-p']]], + ['updatershouldrelaunchapplication_3a_381',['updaterShouldRelaunchApplication:',['../protocol_s_p_u_updater_delegate-p.html#a703e4aa94c2b4fe835c99b1f2b8f1c48',1,'SPUUpdaterDelegate-p']]], + ['updaterwillidleschedulingupdates_3a_382',['updaterWillIdleSchedulingUpdates:',['../protocol_s_p_u_updater_delegate-p.html#afccc281852fd4f497d815cda9b4695bb',1,'SPUUpdaterDelegate-p']]], + ['updaterwillrelaunchapplication_3a_383',['updaterWillRelaunchApplication:',['../protocol_s_p_u_updater_delegate-p.html#a6fa486e14d915cd18ac3791a905647f2',1,'SPUUpdaterDelegate-p']]], + ['userdidcanceldownload_3a_384',['userDidCancelDownload:',['../protocol_s_p_u_updater_delegate-p.html#a06e1e03dea92513fd284e263b9f80d02',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/search/functions_b.html b/documentation/api-reference/search/functions_b.html new file mode 100644 index 0000000..e301fed --- /dev/null +++ b/documentation/api-reference/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/functions_b.js b/documentation/api-reference/search/functions_b.js new file mode 100644 index 0000000..ffd4c8e --- /dev/null +++ b/documentation/api-reference/search/functions_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['versioncomparatorforupdater_3a_385',['versionComparatorForUpdater:',['../protocol_s_p_u_updater_delegate-p.html#a8bea6508b8e81a51c1087a1f3b501c1d',1,'SPUUpdaterDelegate-p']]] +]; diff --git a/documentation/api-reference/search/mag_sel.svg b/documentation/api-reference/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/documentation/api-reference/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/documentation/api-reference/search/nomatches.html b/documentation/api-reference/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/documentation/api-reference/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/documentation/api-reference/search/properties_0.html b/documentation/api-reference/search/properties_0.html new file mode 100644 index 0000000..91e9306 --- /dev/null +++ b/documentation/api-reference/search/properties_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_0.js b/documentation/api-reference/search/properties_0.js new file mode 100644 index 0000000..eb0e85c --- /dev/null +++ b/documentation/api-reference/search/properties_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['allowsautomaticupdates_386',['allowsAutomaticUpdates',['../interface_s_p_u_updater_settings.html#ae9b58785573e4d3e2abea0c57544681f',1,'SPUUpdaterSettings']]], + ['automaticallychecksforupdates_387',['automaticallyChecksForUpdates',['../interface_s_p_u_updater.html#a9a154002bdbe3306e763d000502a0980',1,'SPUUpdater::automaticallyChecksForUpdates()'],['../interface_s_p_u_updater_settings.html#a41e4d0f0e10e9afa92fe5c81d21bfde3',1,'SPUUpdaterSettings::automaticallyChecksForUpdates()']]], + ['automaticallydownloadsupdates_388',['automaticallyDownloadsUpdates',['../interface_s_p_u_updater.html#aa5f5578c29e6496cb90546aca35804e6',1,'SPUUpdater::automaticallyDownloadsUpdates()'],['../interface_s_p_u_updater_settings.html#af1a1fba7d6dcd05b52339f173c7a0a8d',1,'SPUUpdaterSettings::automaticallyDownloadsUpdates()']]], + ['automaticupdatechecks_389',['automaticUpdateChecks',['../interface_s_u_update_permission_response.html#a84a21b766bcbbe1fff16c26b8689aa56',1,'SUUpdatePermissionResponse']]] +]; diff --git a/documentation/api-reference/search/properties_1.html b/documentation/api-reference/search/properties_1.html new file mode 100644 index 0000000..19753dc --- /dev/null +++ b/documentation/api-reference/search/properties_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_1.js b/documentation/api-reference/search/properties_1.js new file mode 100644 index 0000000..16f4ef4 --- /dev/null +++ b/documentation/api-reference/search/properties_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cancheckforupdates_390',['canCheckForUpdates',['../interface_s_p_u_updater.html#aa8ec4e87308007ae49228165534e683c',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/properties_2.html b/documentation/api-reference/search/properties_2.html new file mode 100644 index 0000000..5799756 --- /dev/null +++ b/documentation/api-reference/search/properties_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_2.js b/documentation/api-reference/search/properties_2.js new file mode 100644 index 0000000..260b853 --- /dev/null +++ b/documentation/api-reference/search/properties_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['data_391',['data',['../interface_s_p_u_download_data.html#ae8c680d14f0213633c117684e58fbef2',1,'SPUDownloadData']]] +]; diff --git a/documentation/api-reference/search/properties_3.html b/documentation/api-reference/search/properties_3.html new file mode 100644 index 0000000..b1eb716 --- /dev/null +++ b/documentation/api-reference/search/properties_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_3.js b/documentation/api-reference/search/properties_3.js new file mode 100644 index 0000000..263fe17 --- /dev/null +++ b/documentation/api-reference/search/properties_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['feedurl_392',['feedURL',['../interface_s_p_u_updater.html#af49bc6a058dc0e758943a4b4b1ff98dc',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/properties_4.html b/documentation/api-reference/search/properties_4.html new file mode 100644 index 0000000..6f3262e --- /dev/null +++ b/documentation/api-reference/search/properties_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_4.js b/documentation/api-reference/search/properties_4.js new file mode 100644 index 0000000..7b164c0 --- /dev/null +++ b/documentation/api-reference/search/properties_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hasanykeys_393',['hasAnyKeys',['../interface_s_u_public_keys.html#ae2a53f6befe084d9a6fa7369a0dbe78a',1,'SUPublicKeys']]], + ['hostbundle_394',['hostBundle',['../interface_s_p_u_updater.html#aeae19dba9dc83ae9098279b0eed76d47',1,'SPUUpdater']]], + ['httpheaders_395',['httpHeaders',['../interface_s_p_u_updater.html#a2e2747823e204ebc07800ae31c201ad1',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/properties_5.html b/documentation/api-reference/search/properties_5.html new file mode 100644 index 0000000..b14d3a8 --- /dev/null +++ b/documentation/api-reference/search/properties_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_5.js b/documentation/api-reference/search/properties_5.js new file mode 100644 index 0000000..da1bed1 --- /dev/null +++ b/documentation/api-reference/search/properties_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lastupdatecheckdate_396',['lastUpdateCheckDate',['../interface_s_p_u_updater.html#a22a62559c6938c7a34b1787f22043010',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/properties_6.html b/documentation/api-reference/search/properties_6.html new file mode 100644 index 0000000..19d3d2a --- /dev/null +++ b/documentation/api-reference/search/properties_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_6.js b/documentation/api-reference/search/properties_6.js new file mode 100644 index 0000000..97dd548 --- /dev/null +++ b/documentation/api-reference/search/properties_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mimetype_397',['MIMEType',['../interface_s_p_u_download_data.html#a108d9dec279550089dbea559e449321c',1,'SPUDownloadData']]] +]; diff --git a/documentation/api-reference/search/properties_7.html b/documentation/api-reference/search/properties_7.html new file mode 100644 index 0000000..42aa68a --- /dev/null +++ b/documentation/api-reference/search/properties_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_7.js b/documentation/api-reference/search/properties_7.js new file mode 100644 index 0000000..e78b4cc --- /dev/null +++ b/documentation/api-reference/search/properties_7.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['sendssystemprofile_398',['sendsSystemProfile',['../interface_s_p_u_updater.html#a521d2f6d09ceec6af979f6116bc58f7f',1,'SPUUpdater::sendsSystemProfile()'],['../interface_s_p_u_updater_settings.html#a97b5102512608a905bda83b33dd0bb5d',1,'SPUUpdaterSettings::sendsSystemProfile()']]], + ['sendsystemprofile_399',['sendSystemProfile',['../interface_s_u_update_permission_response.html#af9436f4e07219513c68dbad51daf9c8d',1,'SUUpdatePermissionResponse']]], + ['sessioninprogress_400',['sessionInProgress',['../interface_s_p_u_updater.html#aebc820be90ea36d0d97c6f11e80f3a4f',1,'SPUUpdater']]], + ['sparklebundle_401',['sparkleBundle',['../interface_s_p_u_updater.html#aa0e335f7212dbd90668ea0bbef0f00c2',1,'SPUUpdater']]], + ['systemprofile_402',['systemProfile',['../interface_s_p_u_update_permission_request.html#a318086878d3e1ec1efa9b8d2424f9844',1,'SPUUpdatePermissionRequest']]], + ['systemprofilearray_403',['systemProfileArray',['../interface_s_p_u_updater.html#a90e21876539a0dab3eacfccad863aaa2',1,'SPUUpdater']]] +]; diff --git a/documentation/api-reference/search/properties_8.html b/documentation/api-reference/search/properties_8.html new file mode 100644 index 0000000..f13fcd8 --- /dev/null +++ b/documentation/api-reference/search/properties_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_8.js b/documentation/api-reference/search/properties_8.js new file mode 100644 index 0000000..04e96d9 --- /dev/null +++ b/documentation/api-reference/search/properties_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['textencodingname_404',['textEncodingName',['../interface_s_p_u_download_data.html#a8316fe998bf3afa7bc4d6df7dc0ac070',1,'SPUDownloadData']]] +]; diff --git a/documentation/api-reference/search/properties_9.html b/documentation/api-reference/search/properties_9.html new file mode 100644 index 0000000..f8bedc8 --- /dev/null +++ b/documentation/api-reference/search/properties_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documentation/api-reference/search/properties_9.js b/documentation/api-reference/search/properties_9.js new file mode 100644 index 0000000..7f9ab55 --- /dev/null +++ b/documentation/api-reference/search/properties_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['updatecheckinterval_405',['updateCheckInterval',['../interface_s_p_u_updater.html#a1b2a4bc575d1f9de57e189ca93bda22a',1,'SPUUpdater::updateCheckInterval()'],['../interface_s_p_u_updater_settings.html#affb7ac205324036803bda21826bde524',1,'SPUUpdaterSettings::updateCheckInterval()']]], + ['updater_406',['updater',['../interface_s_p_u_standard_updater_controller.html#afa35dd9683576ac1126d1ebbb6d0f3d3',1,'SPUStandardUpdaterController']]], + ['updaterdelegate_407',['updaterDelegate',['../interface_s_p_u_standard_updater_controller.html#a8ee554e7555314565b582ea7ddfb91fe',1,'SPUStandardUpdaterController']]], + ['url_408',['URL',['../interface_s_p_u_download_data.html#a5eabdc79a39c2de6e0c79b2d6d4e5b0e',1,'SPUDownloadData']]], + ['useragentstring_409',['userAgentString',['../interface_s_p_u_updater.html#a62757b3c7dea957c737527e854408e96',1,'SPUUpdater']]], + ['userdriver_410',['userDriver',['../interface_s_p_u_standard_updater_controller.html#a22c96bbd966c2d92884a2cfc6fb4f6f6',1,'SPUStandardUpdaterController']]], + ['userdriverdelegate_411',['userDriverDelegate',['../interface_s_p_u_standard_updater_controller.html#a4afcf2d6fc104bf1186a0e757aa267d7',1,'SPUStandardUpdaterController']]] +]; diff --git a/documentation/api-reference/search/search.css b/documentation/api-reference/search/search.css new file mode 100644 index 0000000..9074198 --- /dev/null +++ b/documentation/api-reference/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/documentation/api-reference/search/search.js b/documentation/api-reference/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/documentation/api-reference/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/documentation/api-reference/search/search_r.png b/documentation/api-reference/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/documentation/api-reference/search/searchdata.js b/documentation/api-reference/search/searchdata.js new file mode 100644 index 0000000..afac925 --- /dev/null +++ b/documentation/api-reference/search/searchdata.js @@ -0,0 +1,24 @@ +var indexSectionsWithContent = +{ + 0: "abcdfhilmnrstuv", + 1: "inst", + 2: "abcdfimnrsuv", + 3: "acdfhlmstu" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "functions", + 3: "properties" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Functions", + 3: "Properties" +}; + diff --git a/documentation/api-reference/splitbar.png b/documentation/api-reference/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/documentation/api-reference/struct_n_s_operating_system_version-members.html b/documentation/api-reference/struct_n_s_operating_system_version-members.html new file mode 100644 index 0000000..dcf4b75 --- /dev/null +++ b/documentation/api-reference/struct_n_s_operating_system_version-members.html @@ -0,0 +1,83 @@ + + + + + + + +Sparkle: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    NSOperatingSystemVersion Member List
    +
    +
    + +

    This is the complete list of members for NSOperatingSystemVersion, including all inherited members.

    + + + + +
    majorVersion (defined in NSOperatingSystemVersion)NSOperatingSystemVersion
    minorVersion (defined in NSOperatingSystemVersion)NSOperatingSystemVersion
    patchVersion (defined in NSOperatingSystemVersion)NSOperatingSystemVersion
    + + + + diff --git a/documentation/api-reference/struct_n_s_operating_system_version.html b/documentation/api-reference/struct_n_s_operating_system_version.html new file mode 100644 index 0000000..17e9d07 --- /dev/null +++ b/documentation/api-reference/struct_n_s_operating_system_version.html @@ -0,0 +1,96 @@ + + + + + + + +Sparkle: NSOperatingSystemVersion Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    Sparkle +  2.0.0 +
    +
    A software update framework for macOS
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    NSOperatingSystemVersion Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    +NSInteger majorVersion
     
    +NSInteger minorVersion
     
    +NSInteger patchVersion
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/documentation/api-reference/sync_off.png b/documentation/api-reference/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/documentation/api-reference/sync_on.png b/documentation/api-reference/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/documentation/api-reference/tab_a.png b/documentation/api-reference/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/documentation/api-reference/tab_b.png b/documentation/api-reference/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/documentation/api-reference/tabs.css b/documentation/api-reference/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/documentation/api-reference/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/documentation/api-reference/undocumented.json b/documentation/api-reference/undocumented.json new file mode 100644 index 0000000..eea2899 --- /dev/null +++ b/documentation/api-reference/undocumented.json @@ -0,0 +1,866 @@ +{ + "warnings": [ + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 29, + "symbol": "SUUpdaterDidFinishLoadingAppCastNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 30, + "symbol": "SUUpdaterDidFindValidUpdateNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 31, + "symbol": "SUUpdaterDidNotFindUpdateNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 32, + "symbol": "SUUpdaterWillRestartNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 37, + "symbol": "SUUpdaterAppcastItemNotificationKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 39, + "symbol": "SUUpdaterAppcastNotificationKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 45, + "symbol": "SUSystemProfilerApplicationNameKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 46, + "symbol": "SUSystemProfilerApplicationVersionKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 47, + "symbol": "SUSystemProfilerCPU64bitKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 48, + "symbol": "SUSystemProfilerCPUCountKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 49, + "symbol": "SUSystemProfilerCPUFrequencyKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 50, + "symbol": "SUSystemProfilerCPUTypeKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 51, + "symbol": "SUSystemProfilerCPUSubtypeKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 52, + "symbol": "SUSystemProfilerHardwareModelKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 53, + "symbol": "SUSystemProfilerMemoryKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 54, + "symbol": "SUSystemProfilerOperatingSystemVersionKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 55, + "symbol": "SUSystemProfilerPreferredLanguageKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterDelegate.h", + "line": 447, + "symbol": "SPUUpdaterDelegate.-updaterMayCheckForUpdates:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUpdaterSettings.h", + "line": 29, + "symbol": "SPUUpdaterSettings.-initWithHostBundle:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUserDriver.h", + "line": 278, + "symbol": "SPUUserDriver.-showUpdateNotFoundWithAcknowledgement:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUserDriver.h", + "line": 280, + "symbol": "SPUUserDriver.-showUpdateInstallationDidFinishWithAcknowledgement:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUserDriver.h", + "line": 282, + "symbol": "SPUUserDriver.-dismissUserInitiatedUpdateCheck", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SPUUserUpdateState.h", + "line": 66, + "symbol": "SPUUserUpdateState.-init", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcast.h", + "line": 31, + "symbol": "SUAppcast.-init", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcastItem.h", + "line": 332, + "symbol": "SUAppcastItem.-init", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcastItem.h", + "line": 342, + "symbol": "SUAppcastItem.-initWithDictionary:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcastItem.h", + "line": 343, + "symbol": "SUAppcastItem.-initWithDictionary:failureReason:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUAppcastItem.h", + "line": 344, + "symbol": "SUAppcastItem.-initWithDictionary:relativeToURL:failureReason:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 36, + "symbol": "SUError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 36, + "symbol": "SUError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 38, + "symbol": "SUError.SUNoPublicDSAFoundError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 39, + "symbol": "SUError.SUInsufficientSigningError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 40, + "symbol": "SUError.SUInsecureFeedURLError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 41, + "symbol": "SUError.SUInvalidFeedURLError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 42, + "symbol": "SUError.SUInvalidUpdaterError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 43, + "symbol": "SUError.SUInvalidHostBundleIdentifierError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 44, + "symbol": "SUError.SUInvalidHostVersionError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 47, + "symbol": "SUError.SUAppcastParseError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 48, + "symbol": "SUError.SUNoUpdateError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 49, + "symbol": "SUError.SUAppcastError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 50, + "symbol": "SUError.SURunningFromDiskImageError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 51, + "symbol": "SUError.SUResumeAppcastError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 52, + "symbol": "SUError.SURunningTranslocated", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 53, + "symbol": "SUError.SUWebKitTerminationError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 56, + "symbol": "SUError.SUTemporaryDirectoryError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 57, + "symbol": "SUError.SUDownloadError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 60, + "symbol": "SUError.SUUnarchivingError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 61, + "symbol": "SUError.SUSignatureError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 62, + "symbol": "SUError.SUValidationError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 65, + "symbol": "SUError.SUFileCopyFailure", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 66, + "symbol": "SUError.SUAuthenticationFailure", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 67, + "symbol": "SUError.SUMissingUpdateError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 68, + "symbol": "SUError.SUMissingInstallerToolError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 69, + "symbol": "SUError.SURelaunchError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 70, + "symbol": "SUError.SUInstallationError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 71, + "symbol": "SUError.SUDowngradeError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 72, + "symbol": "SUError.SUInstallationCanceledError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 73, + "symbol": "SUError.SUInstallationAuthorizeLaterError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 74, + "symbol": "SUError.SUNotValidUpdateError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 75, + "symbol": "SUError.SUAgentInvalidationError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 78, + "symbol": "SUError.SUIncorrectAPIUsageError", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 107, + "symbol": "SPUNoUpdateFoundReasonKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 108, + "symbol": "SPULatestAppcastItemFoundKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUErrors.h", + "line": 109, + "symbol": "SPUNoUpdateFoundUserInitiatedKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdatePermissionResponse.h", + "line": 35, + "symbol": "SUUpdatePermissionResponse.-init", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 39, + "symbol": "SUUpdater.delegate", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 46, + "symbol": "SUUpdater.+sharedUpdater", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 52, + "symbol": "SUUpdater.+updaterForBundle:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.class", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 59, + "symbol": "SUUpdater.-initForBundle:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 71, + "symbol": "SUUpdater.-checkForUpdates:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 76, + "symbol": "SUUpdater.-validateMenuItem:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 91, + "symbol": "SUUpdater.-checkForUpdatesInBackground", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 100, + "symbol": "SUUpdater.automaticallyChecksForUpdates", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 110, + "symbol": "SUUpdater.automaticallyDownloadsUpdates", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 119, + "symbol": "SUUpdater.updateCheckInterval", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 132, + "symbol": "SUUpdater.-checkForUpdateInformation", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 143, + "symbol": "SUUpdater.feedURL", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 148, + "symbol": "SUUpdater.hostBundle", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 153, + "symbol": "SUUpdater.sparkleBundle", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 160, + "symbol": "SUUpdater.userAgentString", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 167, + "symbol": "SUUpdater.httpHeaders", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 174, + "symbol": "SUUpdater.sendsSystemProfile", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 179, + "symbol": "SUUpdater.decryptionPassword", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 186, + "symbol": "SUUpdater.lastUpdateCheckDate", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 195, + "symbol": "SUUpdater.-resetUpdateCycle", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdater.h", + "line": 203, + "symbol": "SUUpdater.updateInProgress", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 28, + "symbol": "SUUpdaterDidFinishLoadingAppCastNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 29, + "symbol": "SUUpdaterDidFindValidUpdateNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 30, + "symbol": "SUUpdaterDidNotFindUpdateNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 31, + "symbol": "SUUpdaterWillRestartNotification", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 36, + "symbol": "SUUpdaterAppcastItemNotificationKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 38, + "symbol": "SUUpdaterAppcastNotificationKey", + "symbol_kind": "sourcekitten.source.lang.objc.decl.constant", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 48, + "symbol": "SUUpdaterDelegate", + "symbol_kind": "sourcekitten.source.lang.objc.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 58, + "symbol": "SUUpdaterDelegate.-updaterMayCheckForUpdates:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 70, + "symbol": "SUUpdaterDelegate.-feedParametersForUpdater:sendingSystemProfile:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 82, + "symbol": "SUUpdaterDelegate.-feedURLStringForUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 91, + "symbol": "SUUpdaterDelegate.-updaterShouldPromptForPermissionToCheckForUpdates:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 101, + "symbol": "SUUpdaterDelegate.-updater:didFinishLoadingAppcast:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 113, + "symbol": "SUUpdaterDelegate.-bestValidUpdateInAppcast:forUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 121, + "symbol": "SUUpdaterDelegate.-updater:didFindValidUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 128, + "symbol": "SUUpdaterDelegate.-updaterDidNotFindUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 137, + "symbol": "SUUpdaterDelegate.-updater:willDownloadUpdate:withRequest:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 145, + "symbol": "SUUpdaterDelegate.-updater:didDownloadUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 154, + "symbol": "SUUpdaterDelegate.-updater:failedToDownloadUpdate:error:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 161, + "symbol": "SUUpdaterDelegate.-userDidCancelDownload:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 169, + "symbol": "SUUpdaterDelegate.-updater:willExtractUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 177, + "symbol": "SUUpdaterDelegate.-updater:didExtractUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 185, + "symbol": "SUUpdaterDelegate.-updater:willInstallUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 193, + "symbol": "SUUpdaterDelegate.-updater:userDidSkipThisVersion:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 209, + "symbol": "SUUpdaterDelegate.-updater:shouldPostponeRelaunchForUpdate:untilInvoking:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 224, + "symbol": "SUUpdaterDelegate.-updater:shouldPostponeRelaunchForUpdate:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 234, + "symbol": "SUUpdaterDelegate.-updaterShouldRelaunchApplication:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 241, + "symbol": "SUUpdaterDelegate.-updaterWillRelaunchApplication:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 248, + "symbol": "SUUpdaterDelegate.-updaterDidRelaunchApplication:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 263, + "symbol": "SUUpdaterDelegate.-versionComparatorForUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 272, + "symbol": "SUUpdaterDelegate.-versionDisplayerForUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 283, + "symbol": "SUUpdaterDelegate.-pathToRelaunchForUpdater:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 291, + "symbol": "SUUpdaterDelegate.-updaterWillShowModalAlert:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 299, + "symbol": "SUUpdaterDelegate.-updaterDidShowModalAlert:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 311, + "symbol": "SUUpdaterDelegate.-updater:willInstallUpdateOnQuit:immediateInstallationInvocation:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 322, + "symbol": "SUUpdaterDelegate.-updater:willInstallUpdateOnQuit:immediateInstallationBlock:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 332, + "symbol": "SUUpdaterDelegate.-updater:didCancelInstallUpdateOnQuit:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/msp/Documents/Programming/Sparkle/Sparkle/SUUpdaterDelegate.h", + "line": 340, + "symbol": "SUUpdaterDelegate.-updater:didAbortWithError:", + "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", + "warning": "undocumented" + } + ], + "source_directory": "/Users/msp/Documents/Programming/Sparkle" +} \ No newline at end of file diff --git a/documentation/bundles/index.md b/documentation/bundles/index.md index daf7ea8..65240b1 100644 --- a/documentation/bundles/index.md +++ b/documentation/bundles/index.md @@ -38,13 +38,13 @@ The subclass only needs to implement the following two methods: } ``` -### Sparkle 2 (Beta) +### Sparkle 2 #### Bundles The story with updating bundles between Sparkle 1 and 2 is a bit different. -First, Sparkle 2 supports updating any Sparkle-based bundle, which is not just limited to your own application or process. The updater distinguishes the `hostBundle` from the `applicationBundle`. The `hostBundle` is the bundle that Sparkle updates and the `applicationBundle` is the bundle that can be terminated and re-launched (if applicable). See [Sparkle 2's APIs](/documentation/customization#sparkle-2x-apis-beta) for more information on instantiating your own updater. Some kinds of plug-ins in particular may want to use `SURelaunchHostBundle` key there for re-launching the host bundle. +First, Sparkle 2 supports updating any Sparkle-based bundle, which is not just limited to your own application or process. The updater distinguishes the `hostBundle` from the `applicationBundle`. The `hostBundle` is the bundle that Sparkle updates and the `applicationBundle` is the bundle that can be terminated and re-launched (if applicable). See the [SPUUpdater API Reference](/documentation/api-reference/Classes/SPUUpdater.html) for more information on instantiating your own updater. Some kinds of plug-ins may also want to use `SURelaunchHostBundle` key in [Customizing Sparkle](/documentation/customization) for re-launching the host bundle. Second, Sparkle 2 doesn't keep track of shared updater instances and doesn't try to prohibit multiple updater instances from existing -- either inside the same process or multiple updaters updating the same bundle from different processes. In fact, it is even possible for one updater to start an update (say a silent deferred one), and for a second updater (say sparkle-cli) to resume that same update for the same bundle. diff --git a/documentation/customization/index.md b/documentation/customization/index.md index 91e0239..2bea1c0 100644 --- a/documentation/customization/index.md +++ b/documentation/customization/index.md @@ -13,18 +13,22 @@ Here are the main routes by which you can bend Sparkle's behavior to your will: | Key | Type | Value | | --- | ---- | ----- | ------- | | `SUFeedURL` | String | The URL of your appcast, e.g. `https://example.com/appcast.xml`. It's recommended to always set it in Info.plist, even if you change it later programmatically. | -| `SUEnableAutomaticChecks` | Boolean | Setting to `YES` (recommended) enables checking for updates (but not installation) by default, without asking your users for permission first.
    By default, if it's not set to any value, users will be prompted for permission before the first update check.
    Setting to `NO` disables update checks, but can be overridden by a call to `SUUpdater`'s (or `SPUUpdater`'s in 'Sparkle 2) `setAutomaticallyChecksForUpdates:` | +| `SUEnableAutomaticChecks` | Boolean | Setting to `YES` enables checking for updates (but not installation) by default, without asking your users for permission first.
    By default, if it's not set to any value, users will be prompted for permission before the first update check.
    Setting to `NO` disables update checks, but can be overridden by setting [automaticallyChecksForUpdates](http://127.0.0.1:4000/documentation/api-reference/Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)automaticallyChecksForUpdates). | | `SUPublicEDKey` | String | The base64-encoded public EdDSA key. Use Sparkle's `generate_keys` tool to get it. | | `SUEnableSystemProfiling` | Boolean | Default: `NO`. Enables anonymous system profiling. See [System Profiling](/documentation/system-profiling) for more. | | `SUScheduledCheckInterval` | Number | The number of seconds between updates. The default is `86400` (1 day). Setting to 0 disables updates.

    **Note:** this has a minimum bound of 1 hour in order to keep you from accidentally overloading your servers. | | `SUAllowsAutomaticUpdates` | Boolean | Default: `YES`. Sparkle presents your users with the *option* to allow to automatically download and install any available updates. Set this to `NO` to disallow automatic updates and require manual installation every time. | -| `SUAutomaticallyUpdate` | Boolean | Default: `NO`. Enables automatic download and installation of updates. If set to `YES`, users will not be informed about updates, and updates will be silently installed when the app quits. +| `SUAutomaticallyUpdate` | Boolean | Default: `NO`. Enables automatic download and installation of updates. If set to `YES`, Sparkle will attempt to download and install new updates silently in the background. In Sparkle 1, updates won't be opted into this if users need to provide authorization. In Sparkle 2, updates will be downloaded but not installed automatically if authorization is required. | `SUShowReleaseNotes` | Boolean | Default: `YES`. Set this to `NO` to hide release notes display from the update alert. | | `SUBundleName` | String | Optional alternative bundle display name. For example, if your bundle name already has a version number appended to it, setting this may help smooth out certain messages, e.g. "MyApp 3 4.0 is now available" vs "MyApp 4.0 is now available". | | `SUDefaultsDomain` | String | Optional alternative `NSUserDefaults` domain name if you don't want to use the standard user defaults, for example when accessing preferences from an App Group suite. | | `SUEnableJavaScript` | Boolean | Default: `NO`. Set this to `YES` if you want to allow JavaScript in your release notes. | | `SURelaunchHostBundle` | Boolean | Default: `NO`. For plug-ins in Sparkle 2, set this to `YES` to re-launch the host targetted bundle instead of the application bundle. For example, this can be used to re-open a System Preferences prefpane after an update has been installed. +### Sparkle 2 APIs + +Please visit the [Sparkle 2 API Reference](/documentation/api-reference). + ### Sparkle 1 APIs #### Calls to SUUpdater @@ -146,145 +150,3 @@ You can control the SUUpdater's behavior a little more closely by providing it w #### Other options If these methods aren't enough to do what you need, you're going to have to dig into Sparkle's code. You might start by creating a different update driver: check out SUBasicUpdateDriver.h to get an idea. - ---- - -### Sparkle 2 APIs (Beta) - -#### Calls to SPUUpdater - -The `SPUUpdater` object is the main controller for the updating system in your app. If you are using `SPUStandardUpdaterController`, you can retrieve the updater via its `updater` property. Otherwise you will have had to create an `SPUStandardUpdaterController` or `SPUUpdater` and may need to start the updater (`-startUpdater` or `-startUpdater:error:` respectively) yourself. - -Once you have the `SPUUpdater` instance, there are a few interesting accessors you could use. Please use them only if you need dynamic behavior (e.g. user preferences). Do not use these functions to set default configuration. Use Info.plist keys to set default configuration instead. - -```objc -@property (nonatomic) BOOL automaticallyChecksForUpdates; - -@property (nonatomic) NSTimeInterval updateCheckInterval; - -@property (nonatomic, readonly) NSURL *feedURL; - -// Using this method is discouraged. Consider -[SPUUpdaterDelegate feedURLStringForUpdater:] or -[SPUUpdaterDelegate feedParametersForUpdater:sendingSystemProfile:] instead. -- (void)setFeedURL:(NSURL *)feedURL; - -@property (nonatomic) BOOL sendsSystemProfile; - -@property (nonatomic) BOOL automaticallyDownloadsUpdates; -``` - -There is a risk of race conditions. If you want to make sure these settings are changed before the first automatic update check, you should do this as soon as possible. For an application instantiating `SPUStandardUpdaterController` in a nib, this will be in the `NSApplication` delegate method `-applicationWillFinishLaunching:`. Otherwise this will be right after a `SPUUpdater` instance is instantiated and before you start the updater in your code. - -A few methods of interest if you are instantiating `SPUUpdater` programmatically: - -```objc -// This is the SPUUpdater initializer. You choose: -// `hostBundle` - The bundle that should be targetted for updating. -// `applicationBundle` - The application bundle that should be relaunched and waited for termination. Usually this can be the same as hostBundle. This may differ when updating a plug-in or other non-application bundle. -// `userDriver` - The user driver that Sparkle uses for user update interaction. Use a `SPUStandardUserDriver` for Sparkle's standard UI. -// `delegate` - The optional delegate for SPUUpdater. -- (instancetype)initWithHostBundle:(NSBundle *)hostBundle applicationBundle:(NSBundle *)applicationBundle userDriver:(id )userDriver delegate:(id _Nullable)delegate; - -// This method checks if Sparkle is configured properly, may show a prompt asking for automatic updates (if needed), -// and may start an update check if automatic update checking is enabled. Must be called to start the updater. -- (BOOL)startUpdater:error:; - -// Checks for updates and display progress while doing so. This is meant for users initiating an update check. -- (void)checkForUpdates; -``` - -The `SPUUserDriver` protocol is the API in Sparkle for controlling the user interface and interaction. If you are using `SPUStandardUpdaterController` in a nib, you can retrieve the user driver via its `userDriver` property. If you are interested in creating your own user interface, please see the header documentation in [`SPUUserDriver.h`](https://github.com/sparkle-project/Sparkle/blob/2.x/Sparkle/SPUUserDriver.h). Note few of the user-facing delegate methods in Sparkle 1's `SUUpdaterDelegate` were moved to `SPUStandardUserDriverDelegate`. - -Properties of interest if you are instantiating the standard user driver `SPUStandardUserDriver` yourself: - -```objc -// Indicates whether or not an update is in progress as far as the user's perspective is concerned -// A typical application may rely on this property for its check for updates menu item validation -// If you were using -[SUUpdater updateInProgress] in Sparkle 1.x, you can use !canCheckForUpdates instead. -@property (nonatomic, readonly) BOOL canCheckForUpdates; -``` - -These are properties of interest if you are using `SPUStandardUpdaterController`. You should hook the outlets in Xcode's interface builder and not programmatically. - -```objc -// Interface builder outlet for the updater's delegate -@property (nonatomic, weak, nullable) IBOutlet id updaterDelegate; - -// Interface builder outlet for the user driver's delegate. -@property (nonatomic, weak, nullable) IBOutlet id userDriverDelegate; - -// Explicitly lets the user check for updates and displays a progress dialog while doing so. -// Connect this action to a main menu item if so desired. -- (IBAction)checkForUpdates:(id)sender; -``` - -More methods of interest on `SPUUpdater`: - -```objc -// This kicks off an update meant to be programmatically initiated. That is, -// it will display no UI unless it actually finds an update, in which case it -// proceeds as usual. If the automated downloading is turned on, however, -// this will invoke that behavior, and if an update is found, it will be -// downloaded and prepped for installation. -// -// You do not need to call this. Sparkle calls it automatically according to -// the update schedule. -- (void)checkForUpdatesInBackground; - -// This begins a "probing" check for updates which will not actually offer to -// update to that version. The delegate methods, though, (up to updater:didFindValidUpdate: -// and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. -// Essentially, you can use this to UI-lessly determine if there's an update. -- (void)checkForUpdateInformation; - -// Date of last update check. Returns nil if no check has been performed. -@property (nonatomic, readonly, copy, nullable) NSDate *lastUpdateCheckDate; - -// Call this to appropriately schedule or cancel the update checking timer according -// to the preferences for time interval and automatic checks. -- (void)resetUpdateCycle; -``` - -#### Delegate methods - -You can control the SPUUpdater's behavior a little more closely by providing it with a delegate. Here are the delegate methods you might implement: - -```objc -// Use this to override the default behavior for Sparkle prompting the -// user about automatic update checks. You could use this to make Sparkle -// prompt for permission on the first launch instead of the second. -- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SPUUpdater *)updater; - -- (void)updater:(SPUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; - -- (void)updater:(SPUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item; -- (void)updaterDidNotFindUpdate:(SPUUpdater *)updater error:(NSError *)error; - -// Sent immediately before installing the specified update. -- (void)updater:(SPUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item; - -// Return YES to delay the relaunch until you do some processing. -// Invoke the provided installHandler block to continue the relaunch. -- (BOOL)updater:(SPUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvokingBlock:(void (^)(void))installHandler; - -// Called immediately before relaunching. -- (BOOL)updaterShouldRelaunchApplication:(SPUUpdater *)updater; - -// Specifies what update channels the updater is allowed to look in -// Useful for eg beta updates -- (NSSet *)allowedChannelsForUpdater:(SPUUpdater *)updater; - -// Specifies what feed URL to use -- (nullable NSString *)feedURLStringForUpdater:(SPUUpdater *)updater; - -// This method allows you to provide a custom version comparator. -// If you don't implement this method or return nil, the standard version -// comparator will be used. See SUVersionComparisonProtocol.h for more. -- (nullable id)versionComparatorForUpdater:(SPUUpdater *)updater; - -// This method allows you to add extra parameters to the appcast URL, -// potentially based on whether or not Sparkle will also be sending along -// the system profile. This method should return an array of dictionaries -// with keys: "key", "value", "displayKey", "displayValue", the latter two -// being human-readable variants of the former two. -- (NSArray *)feedParametersForUpdater:(SPUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; -``` diff --git a/documentation/index.md b/documentation/index.md index 5120eb3..3b29952 100644 --- a/documentation/index.md +++ b/documentation/index.md @@ -7,7 +7,7 @@ title: Documentation If your app already has an older version of Sparkle or you wish to migrate to Sparkle 2.0 beta, see [upgrading from previous versions](/documentation/upgrading/). -Note [sandboxed applications](/documentation/sandboxing) are only supported in Sparkle 2 (beta). +Note [sandboxed applications](/documentation/sandboxing) are only supported in Sparkle 2. ### 1. Add the Sparkle framework to your project diff --git a/documentation/package-updates/index.md b/documentation/package-updates/index.md index 362026d..96a9662 100644 --- a/documentation/package-updates/index.md +++ b/documentation/package-updates/index.md @@ -11,7 +11,7 @@ Package installation allows Sparkle to update your application by downloading an An automatic archived installation occurs when Sparkle finds a `*.pkg` or `*.mpkg` file in the root of the download archive. [Older versions](/documentation/upgrading/) of Sparkle required the filename to be `*.sparkle_guided.pkg` to perform an automatic installation, so you may want to keep that name until majority of your users update to your application with Sparkle 1.16 or later. -**Note**: For Sparkle 2.0 (Beta), you must add `sparkle:installationType="package"` to your appcast item for updating automatic packages that are archived. +**Note**: For Sparkle 2, you must add `sparkle:installationType="package"` to your appcast item for updating automatic packages that are archived. ### Automatic Bare Installation @@ -23,4 +23,4 @@ An interactive installation occurs when Sparkle finds a `*.sparkle_interactive.p The package will be installed using macOS's built-in GUI installer. The installation will require user to manually click through the steps, so we don't recommend this type of installation. You must also archive your package update to get this behavior. This type of installation is deprecated in Sparkle 2 and may be removed one day. -**Note**: For Sparkle 2.0 (Beta), you must add `sparkle:installationType="interactive-package"` to your appcast item for updating interactive packages. +**Note**: For Sparkle 2, you must add `sparkle:installationType="interactive-package"` to your appcast item for updating interactive packages. diff --git a/documentation/preferences-ui/index.md b/documentation/preferences-ui/index.md index 38cd099..0749726 100644 --- a/documentation/preferences-ui/index.md +++ b/documentation/preferences-ui/index.md @@ -47,7 +47,7 @@ Then just bind the controls to the File's Owner, and start the Model Key Path wi --- -### Sparkle 2 (Beta) +### Sparkle 2 #### Add the updater to your preferences diff --git a/documentation/programmatic-setup/index.md b/documentation/programmatic-setup/index.md index 50f780f..22d67fc 100644 --- a/documentation/programmatic-setup/index.md +++ b/documentation/programmatic-setup/index.md @@ -28,18 +28,16 @@ import Sparkle } ``` -In Sparkle 2 you can also choose to instantiate and use `SPUUpdater` directly instead of the `SPUStandardUpdaterController` wrapper if you need more control over your user interface or what bundle to update. +In Sparkle 2 you can also choose to instantiate and use [SPUUpdater](/documentation/api-reference/Classes/SPUUpdater.html) directly instead of the [SPUStandardUpdaterController](/documentation/api-reference/Classes/SPUStandardUpdaterController.html) wrapper if you need more control over your user interface or what bundle to update. If you use another UI toolkit, these are the relevant APIs in Sparkle 2 for checking for updates and handling menu item validation: -* `-[SPUStandardUpdaterController startUpdater]` or `-[SPUUpdater startUpdater:]` for starting the updater (unless it is specified to be automatically started) -* `-[SPUStandardUpdaterController checkForUpdates:]` or `-[SPUUpdater checkForUpdates]` for checking for updates -* `-[SPUUpdater canCheckForUpdates]` for menu item validation +* [-[SPUStandardUpdaterController startUpdater]](/documentation/api-reference/Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)startUpdater) or [-[SPUUpdater startUpdater:]](/documentation/api-reference/Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)startUpdater:) for starting the updater (unless it is specified to be automatically started) +* [-[SPUStandardUpdaterController checkForUpdates:]](/documentation/api-reference/Classes/SPUStandardUpdaterController.html#/c:objc(cs)SPUStandardUpdaterController(im)checkForUpdates:) or [-[SPUUpdater checkForUpdates]](/documentation/api-reference/Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(im)checkForUpdates) for checking for updates +* [-[SPUUpdater canCheckForUpdates]](/documentation/api-reference/Classes/SPUUpdater.html#/c:objc(cs)SPUUpdater(py)canCheckForUpdates) for menu item validation If you are using Sparkle 1, you will need to use these APIs: * `+[SUUpdater sharedUpdater]` for creating and starting the updater automatically * `-[SUUpdater checkForUpdates:]` for checking for updates * `-[SUUpdater validateMenuItem:]` for menu item validation - -Check [Sparkle's APIs](/documentation/customization) for more information. diff --git a/documentation/publishing/index.md b/documentation/publishing/index.md index 23b717e..6c8d2d0 100644 --- a/documentation/publishing/index.md +++ b/documentation/publishing/index.md @@ -249,7 +249,7 @@ Updates are posted on the default channel unless specified otherwise. This examp ``` -Only updaters that are allowed to look in the beta channel can find this update. An updater may use `-[SPUUpdaterDelegate allowedChannelsForUpdater:]` to find this update in addition to updates that are on the default channel: +Only updaters that are allowed to look in the beta channel can find this update. An updater may use [-[SPUUpdaterDelegate allowedChannelsForUpdater:]](/documentation/api-reference/Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)allowedChannelsForUpdater:) to find this update in addition to updates that are on the default channel: ```swift func allowedChannels(for updater: SPUUpdater) -> Set { @@ -268,7 +268,7 @@ The appcast feed URL can be changed programmatically at runtime. If the feed URL If you want to set the feed programmatically to provide beta/nightly updates, please try to adopt [channels](#channels) in the future instead. If you are supporting older Sparkle versions, continue reading on. -The recommended way to change the feed URL programmatically is using `-[SUUpdaterDelegate feedURLStringForUpdater:]` (or `-[SPUUpdaterDelegate feedURLStringForUpdater:]` in Sparkle 2). +The recommended way to change the feed URL programmatically is using `-[SUUpdaterDelegate feedURLStringForUpdater:]` or [-[SPUUpdaterDelegate feedURLStringForUpdater:]](/documentation/api-reference/Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)feedURLStringForUpdater:) in Sparkle 2. Here is an example: @@ -338,7 +338,7 @@ You can define your own top level elements in the appcast item using your own cu ``` -In Sparkle 2, one place to parse this custom property is in `-[SPUUpdaterDelegate updaterDidNotFindUpdate:error:]`. Here's an example: +In Sparkle 2, one place to parse this custom property is in [-[SPUUpdaterDelegate updaterDidNotFindUpdate:error:]](/documentation/api-reference/Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)updaterDidNotFindUpdate:error:). Here's an example: ```swift func updaterDidNotFindUpdate(_ updater: SPUUpdater, error: Error) { diff --git a/documentation/upgrading/index.md b/documentation/upgrading/index.md index c1a0125..4c41180 100644 --- a/documentation/upgrading/index.md +++ b/documentation/upgrading/index.md @@ -15,9 +15,9 @@ Sparkle 2 now requires macOS 10.11 (El Capitan) or later. The `SUUpdater` class has been deprecated and split up in Sparkle 2, but it is still functional for transitional purposes. Sparkle 2 includes three new classes / protocols: -* **SPUUpdater** - The main API in Sparkle for controlling the update mechanism. -* **SPUUserDriver** - The API in Sparkle for controlling the user interface & interaction (`SPUStandardUserDriver` is the standard one). -* **SPUStandardUpdaterController** - A convenient controller class that instantiates a `SPUUpdater` targeting the main application bundle and uses Sparkle's standard user interface (`SPUStandardUserDriver`). This class can also be instantiated in a nib and allows [binding UI](/documentation/preferences-ui#sparkle-2x-beta) to it. +* **[SPUUpdater](/documentation/api-reference/Classes/SPUUpdater.html)** - The main API in Sparkle for controlling the update mechanism. +* **[SPUUserDriver](/documentation/api-reference/Protocols/SPUUserDriver.html)** - The API in Sparkle for controlling the user interface & interaction (`SPUStandardUserDriver` is the standard one). +* **[SPUStandardUpdaterController](/documentation/api-reference/Classes/SPUStandardUpdaterController.html)** - A convenient controller class that instantiates a `SPUUpdater` targeting the main application bundle and uses Sparkle's standard user interface (`SPUStandardUserDriver`). This class can also be instantiated in a nib and allows [binding UI](/documentation/preferences-ui#sparkle-2) to it. If you were previously instantiating a `SUUpdater` in a nib, you will want to adopt `SPUStandardUpdaterController` as shown in the [basic setup](/documentation#2-set-up-a-sparkle-updater-object). @@ -29,7 +29,7 @@ If you create a `SPUUpdater` instance directly, you can now create an updater th `SPUUpdater` and its delegate `SPUUpdaterDelegate` (unlike `SUUpdater`) do not contain any user-interface or AppKit logic. The UI bits were separated into classes implementing `SPUUserDriver` and its delegates. A developer writing their own updater user interface may choose to build Sparkle with `SPARKLE_BUILD_UI_BITS=0` which strips out the standard UI bits that Sparkle provides out of the box. -`SPUUpdater` does not maintain singleton or global instances (unlike `SUUpdater`). Plug-ins that share the same process as their host should prefer to use an external tool like [sparkle-cli](/documentation/sparkle-cli) instead, rather than sharing or injecting a Sparkle.framework in its host. A bit more details about updating bundles [here](/documentation/bundles#sparkle-2x-beta). +`SPUUpdater` does not maintain singleton or global instances (unlike `SUUpdater`). Plug-ins that share the same process as their host should prefer to use an external tool like [sparkle-cli](/documentation/sparkle-cli) instead, rather than sharing or injecting a Sparkle.framework in its host. A bit more details about updating bundles [here](/documentation/bundles#sparkle-2). Downgrades were poorly supported in Sparkle 1 (via `SPARKLE_AUTOMATED_DOWNGRADES`) and are now unavailable in Sparkle 2. @@ -60,7 +60,7 @@ If you use package (pkg) based updates, please see [Package Updates](/documentat Sparkle 2 enhances support for [major upgrades](/documentation/publishing#Major-upgrades). -See [Sparkle 2's APIs](/documentation/customization#sparkle-2x-apis-beta) for more information. +See [Sparkle 2's APIs](/documentation/api-reference) for more information. ## Upgrading from Sparkle 1.25 and older