autopilot-core-sandbox 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -0
- package/dist/Provider.d.ts +21 -0
- package/dist/Provider.d.ts.map +1 -0
- package/dist/Provider.js +61 -0
- package/dist/Provider.js.map +1 -0
- package/dist/dist/Provider.d.ts +21 -0
- package/dist/dist/Provider.d.ts.map +1 -0
- package/dist/dist/Provider.js +61 -0
- package/dist/dist/Provider.js.map +1 -0
- package/dist/dist/index.d.ts +45 -0
- package/dist/dist/index.d.ts.map +1 -0
- package/dist/dist/index.js +61 -0
- package/dist/dist/index.js.map +1 -0
- package/dist/dist/interfaces/index.d.ts +1238 -0
- package/dist/dist/interfaces/index.d.ts.map +1 -0
- package/dist/dist/interfaces/index.js +3 -0
- package/dist/dist/interfaces/index.js.map +1 -0
- package/dist/dist/migrations/20260608222757_remote_schema.sql +5666 -0
- package/dist/dist/migrations/20260611174826_add_job_item_recurring_id_to_job_item.sql +7 -0
- package/dist/dist/migrations/20260625224612_add_dashboard_guided_tour_dismissed_to_settings_user.sql +5 -0
- package/dist/dist/migrations/20260627031433_support_chat_tables.sql +115 -0
- package/dist/dist/migrations/20260627031434_support_chat_rls.sql +37 -0
- package/dist/dist/migrations/20260704170209_add_estimate_scheduling.sql +121 -0
- package/dist/dist/migrations/20260704170210_add_estimate_scheduling_rls.sql +42 -0
- package/dist/dist/migrations/20260704235034_add_estimate_reminder_settings.sql +11 -0
- package/dist/dist/migrations/20260707003825_blocked_number_table.sql +32 -0
- package/dist/dist/migrations/20260707003826_blocked_number_rls.sql +22 -0
- package/dist/dist/migrations/20260709191055_sms_opt_out_table.sql +38 -0
- package/dist/dist/migrations/20260709191056_sms_opt_out_rls.sql +21 -0
- package/dist/dist/migrations/20260709214507_job_time_entry_table.sql +70 -0
- package/dist/dist/migrations/20260709214508_job_time_entry_rls.sql +21 -0
- package/dist/dist/migrations/20260711185956_phone_call_table.sql +99 -0
- package/dist/dist/migrations/20260711185957_phone_call_rls.sql +25 -0
- package/dist/dist/migrations/20260712014705_ai_voice_assistant_settings.sql +71 -0
- package/dist/dist/migrations/20260712014706_ai_voice_assistant_settings_rls.sql +14 -0
- package/dist/dist/migrations/20260712014707_ai_prompt_templates.sql +28 -0
- package/dist/dist/migrations/20260712014708_ai_prompt_templates_rls.sql +5 -0
- package/dist/dist/migrations/20260712014709_ai_prompt_templates_seed.sql +77 -0
- package/dist/dist/migrations/20260715011550_reminder_dispatch_table.sql +47 -0
- package/dist/dist/migrations/20260715011551_reminder_dispatch_rls.sql +22 -0
- package/dist/dist/migrations/20260715192923_dedup_sequence_contact_add_unique_constraint.sql +27 -0
- package/dist/dist/migrations/20260716194420_add_employee_location_tracking.sql +146 -0
- package/dist/dist/migrations/20260716194421_add_employee_location_tracking_rls.sql +154 -0
- package/dist/dist/migrations/20260716194422_get_client_map_last_completed_jobs.sql +28 -0
- package/dist/dist/migrations/20260717144535_add_blast_email_invalid_skipped_count.sql +2 -0
- package/dist/dist/migrations/20260717162900_create_blast_email_chunk.sql +36 -0
- package/dist/dist/migrations/20260717162901_add_blast_email_chunk_rls.sql +5 -0
- package/dist/dist/migrations/20260717162902_add_blast_email_chunk_progress_columns.sql +3 -0
- package/dist/dist/migrations/20260717162903_add_blast_email_bounce_tracking_columns.sql +4 -0
- package/dist/dist/migrations/20260717162904_create_email_hard_bounced.sql +23 -0
- package/dist/dist/migrations/20260717162905_add_email_hard_bounced_rls.sql +5 -0
- package/dist/dist/migrations/20260717164837_add_sequence_contact_sent_at.sql +19 -0
- package/dist/dist/migrations/20260717170920_add_sequence_contact_claim_index.sql +12 -0
- package/dist/dist/migrations/20260719215139_create_outbound_event.sql +59 -0
- package/dist/dist/migrations/20260719215140_create_outbound_event_rls.sql +16 -0
- package/dist/dist/migrations/20260719215141_create_webhook_delivery.sql +99 -0
- package/dist/dist/migrations/20260719215142_create_webhook_delivery_rls.sql +11 -0
- package/dist/dist/migrations/20260719215143_outbound_event_triggers.sql +219 -0
- package/dist/dist/migrations/20260719215144_create_api_key.sql +34 -0
- package/dist/dist/migrations/20260719215146_create_api_key_rls.sql +12 -0
- package/dist/dist/migrations/20260719215147_webhook_subscription_add_secret_active.sql +28 -0
- package/dist/dist/migrations/20260719215148_api_aggregate_create_functions.sql +479 -0
- package/dist/dist/migrations/20260721174837_webhook_subscription_generic_endpoints.sql +41 -0
- package/dist/dist/migrations/20260721185631_webhook_outbox_retention.sql +87 -0
- package/dist/dist/migrations/20260721190304_create_qb_sync_task.sql +120 -0
- package/dist/dist/migrations/20260721190306_qb_sync_task_rls.sql +8 -0
- package/dist/dist/migrations/20260721190307_qb_mapping_orphan_fks.sql +29 -0
- package/dist/dist/migrations/20260721190308_qb_task_retention.sql +90 -0
- package/dist/dist/migrations/20260721234401_create_permission_role.sql +83 -0
- package/dist/dist/migrations/20260721234402_permission_role_rls.sql +22 -0
- package/dist/dist/migrations/20260721234403_user_role_add_permission_role_id.sql +12 -0
- package/dist/dist/migrations/20260721234404_seed_permission_roles.sql +100 -0
- package/dist/dist/migrations/20260721234405_backfill_user_role_permission_role_id.sql +20 -0
- package/dist/dist/migrations/20260722193800_permission_role_add_manage_employees.sql +56 -0
- package/dist/dist/migrations/20260723025606_staging_new_employee_company_read_rls.sql +10 -0
- package/dist/dist/migrations/20260723134328_create_google_lsa_integration.sql +1016 -0
- package/dist/dist/migrations/20260723134329_google_lsa_integration_rls.sql +205 -0
- package/dist/dist/migrations/20260723150640_google_lsa_hardening.sql +169 -0
- package/dist/dist/migrations/20260723150641_google_lsa_hardening_rls.sql +12 -0
- package/dist/dist/migrations/20260724230721_google_lsa_facebook_exclusivity_attach.sql +104 -0
- package/dist/dist/migrations/20260724230722_google_lsa_facebook_exclusivity_attach_rls.sql +20 -0
- package/dist/dist/migrations/20260725172630_add_message_pagination_and_search.sql +265 -0
- package/dist/dist/migrations/20260725172631_add_message_pagination_and_search_rls.sql +72 -0
- package/dist/dist/migrations/20260725172632_optimize_message_thread_pagination_search.sql +245 -0
- package/dist/dist/migrations/20260725172633_harden_message_search_and_photo_pagination.sql +256 -0
- package/dist/dist/migrations/20260725172634_fix_message_thread_line_filter.sql +250 -0
- package/dist/dist/migrations/20260725174948_google_lsa_attach_bing_exclusivity_guard.sql +23 -0
- package/dist/dist/migrations/20260725200430_client_portal_settings.sql +41 -0
- package/dist/dist/migrations/20260725200431_client_portal_settings_rls.sql +21 -0
- package/dist/dist/migrations/20260725200433_client_portal_auth_tables.sql +81 -0
- package/dist/dist/migrations/20260725200434_client_portal_auth_rls.sql +18 -0
- package/dist/dist/migrations/20260725200435_portal_claim_login_attempt.sql +36 -0
- package/dist/dist/migrations/20260725200436_portal_appointment_request.sql +39 -0
- package/dist/dist/migrations/20260725200437_portal_appointment_request_rls.sql +10 -0
- package/dist/dist/migrations/20260725210000_google_reserve_integration.sql +85 -0
- package/dist/dist/migrations/20260725210001_google_reserve_integration_rls.sql +10 -0
- package/dist/dist/migrations/20260725220000_add_analytics_query_indexes.sql +47 -0
- package/dist/dist/migrations/20260725230000_onboarding_preload_data.sql +1074 -0
- package/dist/dist/migrations/20260725230001_onboarding_preload_data_rls.sql +40 -0
- package/dist/dist/migrations/20260725230002_add_pricebook_query_indexes.sql +13 -0
- package/dist/dist/migrations/20260726000000_facebook_ads_integration.sql +1538 -0
- package/dist/dist/migrations/20260726000001_facebook_ads_integration_rls.sql +356 -0
- package/dist/dist/migrations/20260726000002_facebook_ads_attach_lsa_exclusivity_guard.sql +25 -0
- package/dist/dist/migrations/20260726000003_facebook_ads_attach_bing_exclusivity_guard.sql +22 -0
- package/dist/dist/migrations/20260726010000_create_bing_ads_integration.sql +1112 -0
- package/dist/dist/migrations/20260726010001_bing_ads_integration_rls.sql +227 -0
- package/dist/dist/migrations/20260726220000_add_document_theme_settings.sql +11 -0
- package/dist/dist/migrations/20260726220001_update_document_theme_comments.sql +7 -0
- package/dist/dist/migrations/20260727210319_evolve_tier_for_pricing.sql +68 -0
- package/dist/dist/migrations/20260727210320_create_billing_addon.sql +85 -0
- package/dist/dist/migrations/20260727210321_create_billing_addon_rls.sql +21 -0
- package/dist/dist/migrations/20260728213930_create_usage_metering.sql +189 -0
- package/dist/dist/migrations/20260728213931_create_usage_metering_rls.sql +32 -0
- package/dist/dist/migrations/20260729004305_marketing_charge_txn_functions.sql +242 -0
- package/dist/dist/migrations/20260729004306_marketing_charge_txn_functions_rls.sql +37 -0
- package/dist/dist/migrations/20260729005524_update_deduct_from_balance_errcode.sql +42 -0
- package/dist/dist/migrations/20260730193601_fix_deduct_from_balance_lost_update.sql +46 -0
- package/dist/dist/migrations/20260730193602_add_blast_sms_chunk_reaper_columns.sql +27 -0
- package/dist/dist/migrations/20260731011415_create_google_calendar_connection.sql +84 -0
- package/dist/dist/migrations/20260731011416_google_calendar_connection_rls.sql +23 -0
- package/dist/dist/migrations/20260731011417_create_google_calendar_sync.sql +157 -0
- package/dist/dist/migrations/20260731011418_google_calendar_sync_rls.sql +26 -0
- package/dist/dist/migrations/20260731011419_event_outbound_triggers.sql +28 -0
- package/dist/dist/migrations/20260731011420_add_google_calendar_addon_key.sql +24 -0
- package/dist/dist/migrations/20260731011421_gcal_task_retention.sql +109 -0
- package/dist/dist/migrations/20260731234245_create_estimate_proposal.sql +157 -0
- package/dist/dist/migrations/20260731234247_estimate_proposal_rls.sql +46 -0
- package/dist/dist/migrations/20260731234248_add_proposal_estimate_settings.sql +17 -0
- package/dist/dist/migrations/20260731234249_add_estimate_proposals_addon_key.sql +25 -0
- package/dist/dist/migrations/20260731234250_approve_estimate_proposal_function.sql +133 -0
- package/dist/dist/migrations/20260801010609_save_estimate_proposal_function.sql +154 -0
- package/dist/dist/migrations/20260801173554_add_hide_autopilot_branding_setting.sql +6 -0
- package/dist/dist/migrations/20260806230917_add_client_billing_address_columns.sql +9 -0
- package/dist/dist/migrations/20260806230944_api_create_client_billing_address.sql +93 -0
- package/dist/dist/migrations/20260807014702_create_parent_id_company_id_keys.sql +20 -0
- package/dist/dist/migrations/20260807014703_create_contract_template.sql +30 -0
- package/dist/dist/migrations/20260807014704_create_contract.sql +233 -0
- package/dist/dist/migrations/20260807014705_create_contract_signature.sql +39 -0
- package/dist/dist/migrations/20260807014706_create_item_contract_requirement.sql +38 -0
- package/dist/dist/migrations/20260807014707_create_settings_contract.sql +23 -0
- package/dist/dist/migrations/20260807014708_contract_rls.sql +74 -0
- package/dist/dist/migrations/20260807014709_sign_contract_function.sql +92 -0
- package/dist/dist/migrations/20260807014710_create_settings_rental.sql +34 -0
- package/dist/dist/migrations/20260807014711_create_saved_location.sql +56 -0
- package/dist/dist/migrations/20260807014712_create_rental_task_option.sql +52 -0
- package/dist/dist/migrations/20260807014713_create_asset.sql +90 -0
- package/dist/dist/migrations/20260807014714_add_job_schedule_asset_fkeys.sql +39 -0
- package/dist/dist/migrations/20260807014715_rental_rls.sql +48 -0
- package/dist/dist/migrations/20260807014716_add_job_schedule_any_time.sql +7 -0
- package/dist/dist/migrations/20260807014717_add_job_schedule_target_location.sql +48 -0
- package/dist/dist/migrations/20260807014718_job_schedule_completion_guard.sql +53 -0
- package/dist/dist/migrations/20260807014719_add_job_schedule_list_sort_key.sql +7 -0
- package/dist/dist/migrations/20260807014720_add_item_duration.sql +11 -0
- package/dist/dist/migrations/20260807014721_add_settings_booking_enforce_rental_availability.sql +9 -0
- package/dist/dist/migrations/20260807014722_add_job_unsigned_rental_agreement.sql +10 -0
- package/dist/dist/migrations/20260807014723_add_item_size.sql +12 -0
- package/dist/dist/migrations/20260809193533_add_booking_path_button_labels.sql +11 -0
- package/dist/dist/migrations/20260809231721_add_route_distance_cache.sql +37 -0
- package/dist/dist/migrations/20260809231722_route_distance_cache_rls.sql +15 -0
- package/dist/dist/migrations/20260809231723_apply_rental_route_plan_function.sql +275 -0
- package/dist/dist/migrations/20260810171550_add_settings_job_default_job_types.sql +9 -0
- package/dist/dist/migrations/20260810212430_backfill_rental_task_option_sort_order.sql +61 -0
- package/dist/dist/migrations/20260811224317_add_settings_user_dnd_hint_dismissed.sql +9 -0
- package/dist/dist/migrations/20260813174503_repair_user_role_email_drift.sql +59 -0
- package/dist/dist/migrations/20260813174504_sync_user_role_email_trigger.sql +30 -0
- package/dist/dist/migrations/20260813175210_add_event_list_sort_key.sql +5 -0
- package/dist/dist/migrations/20260814172222_add_client_auto_bill_on_completion.sql +6 -0
- package/dist/dist/migrations/20260816160252_create_automation_rule.sql +99 -0
- package/dist/dist/migrations/20260816160253_automation_rule_rls.sql +19 -0
- package/dist/dist/migrations/20260816160254_create_settings_automation.sql +36 -0
- package/dist/dist/migrations/20260816160255_settings_automation_rls.sql +18 -0
- package/dist/dist/migrations/20260816160256_create_automation_event.sql +71 -0
- package/dist/dist/migrations/20260816160257_automation_event_rls.sql +12 -0
- package/dist/dist/migrations/20260816160258_create_automation_run.sql +129 -0
- package/dist/dist/migrations/20260816160259_automation_run_rls.sql +19 -0
- package/dist/dist/migrations/20260816160300_add_client_created_via.sql +25 -0
- package/dist/dist/migrations/20260816160301_add_estimate_sent_at.sql +39 -0
- package/dist/dist/migrations/20260816160302_add_message_automation_ref.sql +10 -0
- package/dist/dist/migrations/20260816160303_automation_event_triggers.sql +236 -0
- package/dist/dist/migrations/20260816160304_automation_retention.sql +142 -0
- package/dist/dist/migrations/20260816202404_add_automation_center_addon_key.sql +26 -0
- package/dist/dist/migrations/20260816225501_widen_automation_rule_trigger_action_checks.sql +25 -0
- package/dist/dist/migrations/20260816225502_widen_automation_event_type_check.sql +18 -0
- package/dist/dist/migrations/20260816225503_add_invoice_id_to_automation_tables.sql +18 -0
- package/dist/dist/migrations/20260816225504_add_job_rescheduled_capture_trigger.sql +51 -0
- package/dist/dist/migrations/20260816225505_add_lead_converted_capture_trigger.sql +26 -0
- package/dist/dist/migrations/20260816225506_fix_booking_request_import_guard.sql +27 -0
- package/dist/dist/migrations/20260816225507_widen_outbound_event_for_automation.sql +38 -0
- package/dist/dist/migrations/20260817002626_add_user_last_login_platform_columns.sql +14 -0
- package/dist/dist/migrations/20260817221703_create_deletion.sql +34 -0
- package/dist/dist/migrations/20260817221707_deletion_rls.sql +21 -0
- package/dist/dist/migrations/20260817221708_add_soft_delete_columns.sql +82 -0
- package/dist/dist/migrations/20260817221709_trash_functions.sql +434 -0
- package/dist/dist/migrations/20260817221710_outbound_event_soft_delete.sql +55 -0
- package/dist/dist/migrations/20260817221711_automation_soft_delete_events.sql +77 -0
- package/dist/dist/migrations/20260817221712_fix_estimate_address_cascade.sql +14 -0
- package/dist/dist/migrations/20260817232630_trash_batch_function.sql +67 -0
- package/dist/dist/migrations/20260819170204_create_email_spam_complaint.sql +23 -0
- package/dist/dist/migrations/20260819170205_add_email_spam_complaint_rls.sql +5 -0
- package/dist/dist/migrations/20260819170206_email_unsubscribed_upsert_constraints.sql +14 -0
- package/dist/dist/migrations/20260819180151_get_suppressed_emails_function.sql +23 -0
- package/dist/dist/migrations/20260819191143_is_deleted_backfill_guard.sql +29 -0
- package/dist/dist/migrations/20260819191144_trash_functions_no_dual_write.sql +319 -0
- package/dist/dist/migrations/20260819191145_client_map_jobs_deleted_at.sql +33 -0
- package/dist/dist/migrations/20260819191147_booking_declined_deleted_at.sql +28 -0
- package/dist/dist/migrations/20260819191148_onboarding_preload_no_address_is_deleted.sql +1019 -0
- package/dist/dist/migrations/20260820222756_add_settings_job_hide_task_timer.sql +2 -0
- package/dist/dist/migrations/20260824234151_add_blast_chunk_recipients.sql +13 -0
- package/dist/dist/migrations/20260824234152_add_blast_pause_cancel_columns.sql +10 -0
- package/dist/dist/migrations/20260825014725_get_job_ids_in_range.sql +42 -0
- package/dist/dist/migrations/20260825194452_add_failed_job_status.sql +15 -0
- package/dist/dist/migrations/20260825194457_remove_take_to_rental_task_options.sql +24 -0
- package/dist/dist/migrations/20260825194458_remove_take_to_job_schedules.sql +12 -0
- package/dist/dist/migrations/20260825194459_rework_apply_rental_route_plan_no_take_to.sql +168 -0
- package/dist/dist/migrations/20260825194500_drop_job_schedule_target_location.sql +24 -0
- package/dist/dist/migrations/20260825194501_add_job_schedule_size.sql +17 -0
- package/dist/dist/migrations/20260825233001_add_job_schedule_id_company_id_key.sql +11 -0
- package/dist/dist/migrations/20260825233002_create_route_plan.sql +52 -0
- package/dist/dist/migrations/20260825233003_create_route_plan_stop.sql +159 -0
- package/dist/dist/migrations/20260825233004_route_plan_rls.sql +32 -0
- package/dist/dist/migrations/20260825233005_apply_rental_route_plan_v2.sql +351 -0
- package/dist/dist/migrations/20260826150934_facebook_ads_lead_ingestion.sql +1711 -0
- package/dist/dist/migrations/20260826151141_facebook_ads_lead_ingestion_rls_v2.sql +43 -0
- package/dist/dist/migrations/20260826234722_facebook_messenger_ingestion.sql +703 -0
- package/dist/dist/migrations/20260826234723_facebook_messenger_ingestion_rls.sql +80 -0
- package/dist/dist/migrations/20260826234724_widen_automations_messenger.sql +46 -0
- package/dist/dist/migrations/20260827100001_add_route_plan_minutes.sql +10 -0
- package/dist/dist/migrations/20260827100002_add_route_plan_stop_leg_minutes.sql +9 -0
- package/dist/dist/migrations/20260827100003_apply_rental_route_plan_v3.sql +341 -0
- package/dist/dist/migrations/20260827230346_apply_rental_route_plan_v4.sql +366 -0
- package/dist/dist/migrations/20260829090911_create_fleet_schema.sql +3698 -0
- package/dist/dist/migrations/20260829090912_fleet_rls.sql +1011 -0
- package/dist/dist/migrations/20260831102212_add_online_booking_address_display.sql +8 -0
- package/dist/dist/providers/AddressProvider.d.ts +9 -0
- package/dist/dist/providers/AddressProvider.d.ts.map +1 -0
- package/dist/dist/providers/AddressProvider.js +207 -0
- package/dist/dist/providers/AddressProvider.js.map +1 -0
- package/dist/dist/providers/AutomationsProvider.d.ts +11 -0
- package/dist/dist/providers/AutomationsProvider.d.ts.map +1 -0
- package/dist/dist/providers/AutomationsProvider.js +170 -0
- package/dist/dist/providers/AutomationsProvider.js.map +1 -0
- package/dist/dist/providers/BlockedNumbersProvider.d.ts +13 -0
- package/dist/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
- package/dist/dist/providers/BlockedNumbersProvider.js +71 -0
- package/dist/dist/providers/BlockedNumbersProvider.js.map +1 -0
- package/dist/dist/providers/CategoryProvider.d.ts +8 -0
- package/dist/dist/providers/CategoryProvider.d.ts.map +1 -0
- package/dist/dist/providers/CategoryProvider.js +95 -0
- package/dist/dist/providers/CategoryProvider.js.map +1 -0
- package/dist/dist/providers/ClientProvider.d.ts +39 -0
- package/dist/dist/providers/ClientProvider.d.ts.map +1 -0
- package/dist/dist/providers/ClientProvider.js +253 -0
- package/dist/dist/providers/ClientProvider.js.map +1 -0
- package/dist/dist/providers/CompanyProvider.d.ts +7 -0
- package/dist/dist/providers/CompanyProvider.d.ts.map +1 -0
- package/dist/dist/providers/CompanyProvider.js +114 -0
- package/dist/dist/providers/CompanyProvider.js.map +1 -0
- package/dist/dist/providers/DashboardProvider.d.ts +78 -0
- package/dist/dist/providers/DashboardProvider.d.ts.map +1 -0
- package/dist/dist/providers/DashboardProvider.js +568 -0
- package/dist/dist/providers/DashboardProvider.js.map +1 -0
- package/dist/dist/providers/DiscountProvider.d.ts +8 -0
- package/dist/dist/providers/DiscountProvider.d.ts.map +1 -0
- package/dist/dist/providers/DiscountProvider.js +92 -0
- package/dist/dist/providers/DiscountProvider.js.map +1 -0
- package/dist/dist/providers/EmployeesProvider.d.ts +6 -0
- package/dist/dist/providers/EmployeesProvider.d.ts.map +1 -0
- package/dist/dist/providers/EmployeesProvider.js +185 -0
- package/dist/dist/providers/EmployeesProvider.js.map +1 -0
- package/dist/dist/providers/EstimatesProvider.d.ts +16 -0
- package/dist/dist/providers/EstimatesProvider.d.ts.map +1 -0
- package/dist/dist/providers/EstimatesProvider.js +251 -0
- package/dist/dist/providers/EstimatesProvider.js.map +1 -0
- package/dist/dist/providers/EventsProvider.d.ts +4 -0
- package/dist/dist/providers/EventsProvider.d.ts.map +1 -0
- package/dist/dist/providers/EventsProvider.js +24 -0
- package/dist/dist/providers/EventsProvider.js.map +1 -0
- package/dist/dist/providers/FilesProvider.d.ts +17 -0
- package/dist/dist/providers/FilesProvider.d.ts.map +1 -0
- package/dist/dist/providers/FilesProvider.js +201 -0
- package/dist/dist/providers/FilesProvider.js.map +1 -0
- package/dist/dist/providers/InvoicesProvider.d.ts +13 -0
- package/dist/dist/providers/InvoicesProvider.d.ts.map +1 -0
- package/dist/dist/providers/InvoicesProvider.js +207 -0
- package/dist/dist/providers/InvoicesProvider.js.map +1 -0
- package/dist/dist/providers/ItemProvider.d.ts +9 -0
- package/dist/dist/providers/ItemProvider.d.ts.map +1 -0
- package/dist/dist/providers/ItemProvider.js +201 -0
- package/dist/dist/providers/ItemProvider.js.map +1 -0
- package/dist/dist/providers/JobSourceProvider.d.ts +8 -0
- package/dist/dist/providers/JobSourceProvider.d.ts.map +1 -0
- package/dist/dist/providers/JobSourceProvider.js +75 -0
- package/dist/dist/providers/JobSourceProvider.js.map +1 -0
- package/dist/dist/providers/JobTypeProvider.d.ts +8 -0
- package/dist/dist/providers/JobTypeProvider.d.ts.map +1 -0
- package/dist/dist/providers/JobTypeProvider.js +75 -0
- package/dist/dist/providers/JobTypeProvider.js.map +1 -0
- package/dist/dist/providers/JobsProvider.d.ts +35 -0
- package/dist/dist/providers/JobsProvider.d.ts.map +1 -0
- package/dist/dist/providers/JobsProvider.js +863 -0
- package/dist/dist/providers/JobsProvider.js.map +1 -0
- package/dist/dist/providers/MessagesProvider.d.ts +33 -0
- package/dist/dist/providers/MessagesProvider.d.ts.map +1 -0
- package/dist/dist/providers/MessagesProvider.js +415 -0
- package/dist/dist/providers/MessagesProvider.js.map +1 -0
- package/dist/dist/providers/PaymentProvider.d.ts +9 -0
- package/dist/dist/providers/PaymentProvider.d.ts.map +1 -0
- package/dist/dist/providers/PaymentProvider.js +48 -0
- package/dist/dist/providers/PaymentProvider.js.map +1 -0
- package/dist/dist/providers/PermissionRolesProvider.d.ts +5 -0
- package/dist/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
- package/dist/dist/providers/PermissionRolesProvider.js +30 -0
- package/dist/dist/providers/PermissionRolesProvider.js.map +1 -0
- package/dist/dist/providers/PhoneNumberProvider.d.ts +12 -0
- package/dist/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
- package/dist/dist/providers/PhoneNumberProvider.js +184 -0
- package/dist/dist/providers/PhoneNumberProvider.js.map +1 -0
- package/dist/dist/providers/ProfileProvider.d.ts +6 -0
- package/dist/dist/providers/ProfileProvider.d.ts.map +1 -0
- package/dist/dist/providers/ProfileProvider.js +71 -0
- package/dist/dist/providers/ProfileProvider.js.map +1 -0
- package/dist/dist/providers/RentalsProvider.d.ts +28 -0
- package/dist/dist/providers/RentalsProvider.d.ts.map +1 -0
- package/dist/dist/providers/RentalsProvider.js +438 -0
- package/dist/dist/providers/RentalsProvider.js.map +1 -0
- package/dist/dist/providers/SettingsBookingProvider.d.ts +9 -0
- package/dist/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
- package/dist/dist/providers/SettingsBookingProvider.js +163 -0
- package/dist/dist/providers/SettingsBookingProvider.js.map +1 -0
- package/dist/dist/providers/SettingsProvider.d.ts +8 -0
- package/dist/dist/providers/SettingsProvider.d.ts.map +1 -0
- package/dist/dist/providers/SettingsProvider.js +86 -0
- package/dist/dist/providers/SettingsProvider.js.map +1 -0
- package/dist/dist/providers/TagsProvider.d.ts +12 -0
- package/dist/dist/providers/TagsProvider.d.ts.map +1 -0
- package/dist/dist/providers/TagsProvider.js +210 -0
- package/dist/dist/providers/TagsProvider.js.map +1 -0
- package/dist/dist/providers/TimeCardProvider.d.ts +8 -0
- package/dist/dist/providers/TimeCardProvider.d.ts.map +1 -0
- package/dist/dist/providers/TimeCardProvider.js +93 -0
- package/dist/dist/providers/TimeCardProvider.js.map +1 -0
- package/dist/dist/providers/TrashProvider.d.ts +13 -0
- package/dist/dist/providers/TrashProvider.d.ts.map +1 -0
- package/dist/dist/providers/TrashProvider.js +98 -0
- package/dist/dist/providers/TrashProvider.js.map +1 -0
- package/dist/dist/providers/dashboardAnalytics.d.ts +9 -0
- package/dist/dist/providers/dashboardAnalytics.d.ts.map +1 -0
- package/dist/dist/providers/dashboardAnalytics.js +41 -0
- package/dist/dist/providers/dashboardAnalytics.js.map +1 -0
- package/dist/dist/providers/dashboardAnalytics.test.d.ts +2 -0
- package/dist/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
- package/dist/dist/providers/dashboardAnalytics.test.js +111 -0
- package/dist/dist/providers/dashboardAnalytics.test.js.map +1 -0
- package/dist/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
- package/dist/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/BlockedNumberFunctions.js +16 -0
- package/dist/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
- package/dist/dist/server-safe/EmployeeFunctions.d.ts +14 -0
- package/dist/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/EmployeeFunctions.js +70 -0
- package/dist/dist/server-safe/EmployeeFunctions.js.map +1 -0
- package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
- package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/EmployeeLocationFunctions.js +47 -0
- package/dist/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
- package/dist/dist/server-safe/EstimateFunctions.d.ts +15 -0
- package/dist/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/EstimateFunctions.js +34 -0
- package/dist/dist/server-safe/EstimateFunctions.js.map +1 -0
- package/dist/dist/server-safe/InvoiceFunctions.d.ts +21 -0
- package/dist/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/InvoiceFunctions.js +124 -0
- package/dist/dist/server-safe/InvoiceFunctions.js.map +1 -0
- package/dist/dist/server-safe/JobFunctions.d.ts +15 -0
- package/dist/dist/server-safe/JobFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/JobFunctions.js +56 -0
- package/dist/dist/server-safe/JobFunctions.js.map +1 -0
- package/dist/dist/server-safe/PaymentFunctions.d.ts +16 -0
- package/dist/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/PaymentFunctions.js +80 -0
- package/dist/dist/server-safe/PaymentFunctions.js.map +1 -0
- package/dist/dist/server-safe/PermissionFunctions.d.ts +7 -0
- package/dist/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/PermissionFunctions.js +39 -0
- package/dist/dist/server-safe/PermissionFunctions.js.map +1 -0
- package/dist/dist/server-safe/TagFunctions.d.ts +18 -0
- package/dist/dist/server-safe/TagFunctions.d.ts.map +1 -0
- package/dist/dist/server-safe/TagFunctions.js +52 -0
- package/dist/dist/server-safe/TagFunctions.js.map +1 -0
- package/dist/dist/server-safe/autoJobType.d.ts +16 -0
- package/dist/dist/server-safe/autoJobType.d.ts.map +1 -0
- package/dist/dist/server-safe/autoJobType.js +39 -0
- package/dist/dist/server-safe/autoJobType.js.map +1 -0
- package/dist/dist/server-safe/autoJobType.test.d.ts +2 -0
- package/dist/dist/server-safe/autoJobType.test.d.ts.map +1 -0
- package/dist/dist/server-safe/autoJobType.test.js +83 -0
- package/dist/dist/server-safe/autoJobType.test.js.map +1 -0
- package/dist/dist/server-safe/automations.d.ts +197 -0
- package/dist/dist/server-safe/automations.d.ts.map +1 -0
- package/dist/dist/server-safe/automations.js +757 -0
- package/dist/dist/server-safe/automations.js.map +1 -0
- package/dist/dist/server-safe/automations.test.d.ts +2 -0
- package/dist/dist/server-safe/automations.test.d.ts.map +1 -0
- package/dist/dist/server-safe/automations.test.js +441 -0
- package/dist/dist/server-safe/automations.test.js.map +1 -0
- package/dist/dist/server-safe/constants.d.ts +156 -0
- package/dist/dist/server-safe/constants.d.ts.map +1 -0
- package/dist/dist/server-safe/constants.js +186 -0
- package/dist/dist/server-safe/constants.js.map +1 -0
- package/dist/dist/server-safe/contracts.d.ts +3 -0
- package/dist/dist/server-safe/contracts.d.ts.map +1 -0
- package/dist/dist/server-safe/contracts.js +15 -0
- package/dist/dist/server-safe/contracts.js.map +1 -0
- package/dist/dist/server-safe/database.types.d.ts +9510 -0
- package/dist/dist/server-safe/database.types.d.ts.map +1 -0
- package/dist/dist/server-safe/database.types.js +40 -0
- package/dist/dist/server-safe/database.types.js.map +1 -0
- package/dist/dist/server-safe/entitlements.d.ts +99 -0
- package/dist/dist/server-safe/entitlements.d.ts.map +1 -0
- package/dist/dist/server-safe/entitlements.js +487 -0
- package/dist/dist/server-safe/entitlements.js.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeads.d.ts +225 -0
- package/dist/dist/server-safe/facebookAdsLeads.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeads.js +376 -0
- package/dist/dist/server-safe/facebookAdsLeads.js.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeads.test.d.ts +2 -0
- package/dist/dist/server-safe/facebookAdsLeads.test.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeads.test.js +189 -0
- package/dist/dist/server-safe/facebookAdsLeads.test.js.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts +2 -0
- package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookAdsLeadsSql.test.js +32 -0
- package/dist/dist/server-safe/facebookAdsLeadsSql.test.js.map +1 -0
- package/dist/dist/server-safe/facebookMessenger.d.ts +20 -0
- package/dist/dist/server-safe/facebookMessenger.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookMessenger.js +63 -0
- package/dist/dist/server-safe/facebookMessenger.js.map +1 -0
- package/dist/dist/server-safe/facebookMessenger.test.d.ts +2 -0
- package/dist/dist/server-safe/facebookMessenger.test.d.ts.map +1 -0
- package/dist/dist/server-safe/facebookMessenger.test.js +51 -0
- package/dist/dist/server-safe/facebookMessenger.test.js.map +1 -0
- package/dist/dist/server-safe/helpers.d.ts +78 -0
- package/dist/dist/server-safe/helpers.d.ts.map +1 -0
- package/dist/dist/server-safe/helpers.js +569 -0
- package/dist/dist/server-safe/helpers.js.map +1 -0
- package/dist/dist/server-safe/index.d.ts +30 -0
- package/dist/dist/server-safe/index.d.ts.map +1 -0
- package/dist/dist/server-safe/index.js +46 -0
- package/dist/dist/server-safe/index.js.map +1 -0
- package/dist/dist/server-safe/permissions.d.ts +29 -0
- package/dist/dist/server-safe/permissions.d.ts.map +1 -0
- package/dist/dist/server-safe/permissions.js +180 -0
- package/dist/dist/server-safe/permissions.js.map +1 -0
- package/dist/dist/server-safe/proposals.d.ts +6 -0
- package/dist/dist/server-safe/proposals.d.ts.map +1 -0
- package/dist/dist/server-safe/proposals.js +58 -0
- package/dist/dist/server-safe/proposals.js.map +1 -0
- package/dist/dist/server-safe/rentalAvailability.d.ts +56 -0
- package/dist/dist/server-safe/rentalAvailability.d.ts.map +1 -0
- package/dist/dist/server-safe/rentalAvailability.js +124 -0
- package/dist/dist/server-safe/rentalAvailability.js.map +1 -0
- package/dist/dist/server-safe/rentalAvailability.test.d.ts +2 -0
- package/dist/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
- package/dist/dist/server-safe/rentalAvailability.test.js +290 -0
- package/dist/dist/server-safe/rentalAvailability.test.js.map +1 -0
- package/dist/dist/server-safe/rentals.d.ts +95 -0
- package/dist/dist/server-safe/rentals.d.ts.map +1 -0
- package/dist/dist/server-safe/rentals.js +432 -0
- package/dist/dist/server-safe/rentals.js.map +1 -0
- package/dist/dist/server-safe/rentals.test.d.ts +2 -0
- package/dist/dist/server-safe/rentals.test.d.ts.map +1 -0
- package/dist/dist/server-safe/rentals.test.js +1034 -0
- package/dist/dist/server-safe/rentals.test.js.map +1 -0
- package/dist/dist/server-safe/routeOptimization.d.ts +155 -0
- package/dist/dist/server-safe/routeOptimization.d.ts.map +1 -0
- package/dist/dist/server-safe/routeOptimization.js +120 -0
- package/dist/dist/server-safe/routeOptimization.js.map +1 -0
- package/dist/dist/server-safe/routeOptimization.test.d.ts +2 -0
- package/dist/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
- package/dist/dist/server-safe/routeOptimization.test.js +234 -0
- package/dist/dist/server-safe/routeOptimization.test.js.map +1 -0
- package/dist/dist/server-safe/routePlanFingerprint.d.ts +13 -0
- package/dist/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
- package/dist/dist/server-safe/routePlanFingerprint.js +49 -0
- package/dist/dist/server-safe/routePlanFingerprint.js.map +1 -0
- package/dist/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
- package/dist/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
- package/dist/dist/server-safe/routePlanFingerprint.test.js +68 -0
- package/dist/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
- package/dist/dist/server-safe/scheduleListOrder.d.ts +18 -0
- package/dist/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
- package/dist/dist/server-safe/scheduleListOrder.js +92 -0
- package/dist/dist/server-safe/scheduleListOrder.js.map +1 -0
- package/dist/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
- package/dist/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
- package/dist/dist/server-safe/scheduleListOrder.test.js +260 -0
- package/dist/dist/server-safe/scheduleListOrder.test.js.map +1 -0
- package/dist/dist/server-safe/serviceMinutes.d.ts +13 -0
- package/dist/dist/server-safe/serviceMinutes.d.ts.map +1 -0
- package/dist/dist/server-safe/serviceMinutes.js +38 -0
- package/dist/dist/server-safe/serviceMinutes.js.map +1 -0
- package/dist/dist/server-safe/serviceMinutes.test.d.ts +2 -0
- package/dist/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
- package/dist/dist/server-safe/serviceMinutes.test.js +86 -0
- package/dist/dist/server-safe/serviceMinutes.test.js.map +1 -0
- package/dist/dist/server-safe/settingsSearch.d.ts +24 -0
- package/dist/dist/server-safe/settingsSearch.d.ts.map +1 -0
- package/dist/dist/server-safe/settingsSearch.js +8 -0
- package/dist/dist/server-safe/settingsSearch.js.map +1 -0
- package/dist/dist/server-safe/supportChat.d.ts +59 -0
- package/dist/dist/server-safe/supportChat.d.ts.map +1 -0
- package/dist/dist/server-safe/supportChat.js +56 -0
- package/dist/dist/server-safe/supportChat.js.map +1 -0
- package/dist/dist/server-safe/templates.d.ts +15 -0
- package/dist/dist/server-safe/templates.d.ts.map +1 -0
- package/dist/dist/server-safe/templates.js +91 -0
- package/dist/dist/server-safe/templates.js.map +1 -0
- package/dist/dist/server-safe/templates.test.d.ts +2 -0
- package/dist/dist/server-safe/templates.test.d.ts.map +1 -0
- package/dist/dist/server-safe/templates.test.js +62 -0
- package/dist/dist/server-safe/templates.test.js.map +1 -0
- package/dist/dist/server-safe/trash.d.ts +50 -0
- package/dist/dist/server-safe/trash.d.ts.map +1 -0
- package/dist/dist/server-safe/trash.js +100 -0
- package/dist/dist/server-safe/trash.js.map +1 -0
- package/dist/dist/utils/LogHandler.d.ts +3 -0
- package/dist/dist/utils/LogHandler.d.ts.map +1 -0
- package/dist/dist/utils/LogHandler.js +16 -0
- package/dist/dist/utils/LogHandler.js.map +1 -0
- package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
- package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
- package/dist/dist/utils/convertSupabaseImagesToAssets.js +14 -0
- package/dist/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/index.d.ts +1238 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +3 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/providers/AddressProvider.d.ts +9 -0
- package/dist/providers/AddressProvider.d.ts.map +1 -0
- package/dist/providers/AddressProvider.js +207 -0
- package/dist/providers/AddressProvider.js.map +1 -0
- package/dist/providers/AutomationsProvider.d.ts +11 -0
- package/dist/providers/AutomationsProvider.d.ts.map +1 -0
- package/dist/providers/AutomationsProvider.js +170 -0
- package/dist/providers/AutomationsProvider.js.map +1 -0
- package/dist/providers/BlockedNumbersProvider.d.ts +7 -0
- package/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
- package/dist/providers/BlockedNumbersProvider.js +71 -0
- package/dist/providers/BlockedNumbersProvider.js.map +1 -0
- package/dist/providers/CategoryProvider.d.ts +8 -0
- package/dist/providers/CategoryProvider.d.ts.map +1 -0
- package/dist/providers/CategoryProvider.js +95 -0
- package/dist/providers/CategoryProvider.js.map +1 -0
- package/dist/providers/ClientProvider.d.ts +39 -0
- package/dist/providers/ClientProvider.d.ts.map +1 -0
- package/dist/providers/ClientProvider.js +253 -0
- package/dist/providers/ClientProvider.js.map +1 -0
- package/dist/providers/CompanyProvider.d.ts +7 -0
- package/dist/providers/CompanyProvider.d.ts.map +1 -0
- package/dist/providers/CompanyProvider.js +114 -0
- package/dist/providers/CompanyProvider.js.map +1 -0
- package/dist/providers/DashboardProvider.d.ts +78 -0
- package/dist/providers/DashboardProvider.d.ts.map +1 -0
- package/dist/providers/DashboardProvider.js +568 -0
- package/dist/providers/DashboardProvider.js.map +1 -0
- package/dist/providers/DiscountProvider.d.ts +8 -0
- package/dist/providers/DiscountProvider.d.ts.map +1 -0
- package/dist/providers/DiscountProvider.js +92 -0
- package/dist/providers/DiscountProvider.js.map +1 -0
- package/dist/providers/EmployeesProvider.d.ts +6 -0
- package/dist/providers/EmployeesProvider.d.ts.map +1 -0
- package/dist/providers/EmployeesProvider.js +185 -0
- package/dist/providers/EmployeesProvider.js.map +1 -0
- package/dist/providers/EstimatesProvider.d.ts +16 -0
- package/dist/providers/EstimatesProvider.d.ts.map +1 -0
- package/dist/providers/EstimatesProvider.js +251 -0
- package/dist/providers/EstimatesProvider.js.map +1 -0
- package/dist/providers/EventsProvider.d.ts +4 -0
- package/dist/providers/EventsProvider.d.ts.map +1 -0
- package/dist/providers/EventsProvider.js +24 -0
- package/dist/providers/EventsProvider.js.map +1 -0
- package/dist/providers/FilesProvider.d.ts +17 -0
- package/dist/providers/FilesProvider.d.ts.map +1 -0
- package/dist/providers/FilesProvider.js +201 -0
- package/dist/providers/FilesProvider.js.map +1 -0
- package/dist/providers/InvoicesProvider.d.ts +13 -0
- package/dist/providers/InvoicesProvider.d.ts.map +1 -0
- package/dist/providers/InvoicesProvider.js +207 -0
- package/dist/providers/InvoicesProvider.js.map +1 -0
- package/dist/providers/ItemProvider.d.ts +9 -0
- package/dist/providers/ItemProvider.d.ts.map +1 -0
- package/dist/providers/ItemProvider.js +201 -0
- package/dist/providers/ItemProvider.js.map +1 -0
- package/dist/providers/JobSourceProvider.d.ts +8 -0
- package/dist/providers/JobSourceProvider.d.ts.map +1 -0
- package/dist/providers/JobSourceProvider.js +75 -0
- package/dist/providers/JobSourceProvider.js.map +1 -0
- package/dist/providers/JobTypeProvider.d.ts +8 -0
- package/dist/providers/JobTypeProvider.d.ts.map +1 -0
- package/dist/providers/JobTypeProvider.js +75 -0
- package/dist/providers/JobTypeProvider.js.map +1 -0
- package/dist/providers/JobsProvider.d.ts +20 -0
- package/dist/providers/JobsProvider.d.ts.map +1 -0
- package/dist/providers/JobsProvider.js +863 -0
- package/dist/providers/JobsProvider.js.map +1 -0
- package/dist/providers/MessagesProvider.d.ts +14 -0
- package/dist/providers/MessagesProvider.d.ts.map +1 -0
- package/dist/providers/MessagesProvider.js +415 -0
- package/dist/providers/MessagesProvider.js.map +1 -0
- package/dist/providers/PaymentProvider.d.ts +9 -0
- package/dist/providers/PaymentProvider.d.ts.map +1 -0
- package/dist/providers/PaymentProvider.js +48 -0
- package/dist/providers/PaymentProvider.js.map +1 -0
- package/dist/providers/PermissionRolesProvider.d.ts +5 -0
- package/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
- package/dist/providers/PermissionRolesProvider.js +30 -0
- package/dist/providers/PermissionRolesProvider.js.map +1 -0
- package/dist/providers/PhoneNumberProvider.d.ts +12 -0
- package/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
- package/dist/providers/PhoneNumberProvider.js +184 -0
- package/dist/providers/PhoneNumberProvider.js.map +1 -0
- package/dist/providers/ProfileProvider.d.ts +6 -0
- package/dist/providers/ProfileProvider.d.ts.map +1 -0
- package/dist/providers/ProfileProvider.js +71 -0
- package/dist/providers/ProfileProvider.js.map +1 -0
- package/dist/providers/RentalsProvider.d.ts +28 -0
- package/dist/providers/RentalsProvider.d.ts.map +1 -0
- package/dist/providers/RentalsProvider.js +438 -0
- package/dist/providers/RentalsProvider.js.map +1 -0
- package/dist/providers/SettingsBookingProvider.d.ts +9 -0
- package/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
- package/dist/providers/SettingsBookingProvider.js +163 -0
- package/dist/providers/SettingsBookingProvider.js.map +1 -0
- package/dist/providers/SettingsProvider.d.ts +8 -0
- package/dist/providers/SettingsProvider.d.ts.map +1 -0
- package/dist/providers/SettingsProvider.js +86 -0
- package/dist/providers/SettingsProvider.js.map +1 -0
- package/dist/providers/TagsProvider.d.ts +12 -0
- package/dist/providers/TagsProvider.d.ts.map +1 -0
- package/dist/providers/TagsProvider.js +210 -0
- package/dist/providers/TagsProvider.js.map +1 -0
- package/dist/providers/TimeCardProvider.d.ts +8 -0
- package/dist/providers/TimeCardProvider.d.ts.map +1 -0
- package/dist/providers/TimeCardProvider.js +93 -0
- package/dist/providers/TimeCardProvider.js.map +1 -0
- package/dist/providers/TrashProvider.d.ts +13 -0
- package/dist/providers/TrashProvider.d.ts.map +1 -0
- package/dist/providers/TrashProvider.js +98 -0
- package/dist/providers/TrashProvider.js.map +1 -0
- package/dist/providers/dashboardAnalytics.d.ts +9 -0
- package/dist/providers/dashboardAnalytics.d.ts.map +1 -0
- package/dist/providers/dashboardAnalytics.js +41 -0
- package/dist/providers/dashboardAnalytics.js.map +1 -0
- package/dist/providers/dashboardAnalytics.test.d.ts +2 -0
- package/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
- package/dist/providers/dashboardAnalytics.test.js +111 -0
- package/dist/providers/dashboardAnalytics.test.js.map +1 -0
- package/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
- package/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
- package/dist/server-safe/BlockedNumberFunctions.js +16 -0
- package/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
- package/dist/server-safe/EmployeeFunctions.d.ts +14 -0
- package/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
- package/dist/server-safe/EmployeeFunctions.js +70 -0
- package/dist/server-safe/EmployeeFunctions.js.map +1 -0
- package/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
- package/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
- package/dist/server-safe/EmployeeLocationFunctions.js +47 -0
- package/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
- package/dist/server-safe/EstimateFunctions.d.ts +15 -0
- package/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
- package/dist/server-safe/EstimateFunctions.js +34 -0
- package/dist/server-safe/EstimateFunctions.js.map +1 -0
- package/dist/server-safe/InvoiceFunctions.d.ts +21 -0
- package/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
- package/dist/server-safe/InvoiceFunctions.js +124 -0
- package/dist/server-safe/InvoiceFunctions.js.map +1 -0
- package/dist/server-safe/JobFunctions.d.ts +15 -0
- package/dist/server-safe/JobFunctions.d.ts.map +1 -0
- package/dist/server-safe/JobFunctions.js +56 -0
- package/dist/server-safe/JobFunctions.js.map +1 -0
- package/dist/server-safe/PaymentFunctions.d.ts +16 -0
- package/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
- package/dist/server-safe/PaymentFunctions.js +80 -0
- package/dist/server-safe/PaymentFunctions.js.map +1 -0
- package/dist/server-safe/PermissionFunctions.d.ts +7 -0
- package/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
- package/dist/server-safe/PermissionFunctions.js +39 -0
- package/dist/server-safe/PermissionFunctions.js.map +1 -0
- package/dist/server-safe/TagFunctions.d.ts +18 -0
- package/dist/server-safe/TagFunctions.d.ts.map +1 -0
- package/dist/server-safe/TagFunctions.js +52 -0
- package/dist/server-safe/TagFunctions.js.map +1 -0
- package/dist/server-safe/autoJobType.d.ts +16 -0
- package/dist/server-safe/autoJobType.d.ts.map +1 -0
- package/dist/server-safe/autoJobType.js +39 -0
- package/dist/server-safe/autoJobType.js.map +1 -0
- package/dist/server-safe/autoJobType.test.d.ts +2 -0
- package/dist/server-safe/autoJobType.test.d.ts.map +1 -0
- package/dist/server-safe/autoJobType.test.js +83 -0
- package/dist/server-safe/autoJobType.test.js.map +1 -0
- package/dist/server-safe/automations.d.ts +197 -0
- package/dist/server-safe/automations.d.ts.map +1 -0
- package/dist/server-safe/automations.js +757 -0
- package/dist/server-safe/automations.js.map +1 -0
- package/dist/server-safe/automations.test.d.ts +2 -0
- package/dist/server-safe/automations.test.d.ts.map +1 -0
- package/dist/server-safe/automations.test.js +441 -0
- package/dist/server-safe/automations.test.js.map +1 -0
- package/dist/server-safe/constants.d.ts +156 -0
- package/dist/server-safe/constants.d.ts.map +1 -0
- package/dist/server-safe/constants.js +186 -0
- package/dist/server-safe/constants.js.map +1 -0
- package/dist/server-safe/contracts.d.ts +3 -0
- package/dist/server-safe/contracts.d.ts.map +1 -0
- package/dist/server-safe/contracts.js +15 -0
- package/dist/server-safe/contracts.js.map +1 -0
- package/dist/server-safe/database.types.d.ts +9510 -0
- package/dist/server-safe/database.types.d.ts.map +1 -0
- package/dist/server-safe/database.types.js +40 -0
- package/dist/server-safe/database.types.js.map +1 -0
- package/dist/server-safe/entitlements.d.ts +99 -0
- package/dist/server-safe/entitlements.d.ts.map +1 -0
- package/dist/server-safe/entitlements.js +487 -0
- package/dist/server-safe/entitlements.js.map +1 -0
- package/dist/server-safe/helpers.d.ts +78 -0
- package/dist/server-safe/helpers.d.ts.map +1 -0
- package/dist/server-safe/helpers.js +569 -0
- package/dist/server-safe/helpers.js.map +1 -0
- package/dist/server-safe/index.d.ts +30 -0
- package/dist/server-safe/index.d.ts.map +1 -0
- package/dist/server-safe/index.js +46 -0
- package/dist/server-safe/index.js.map +1 -0
- package/dist/server-safe/permissions.d.ts +29 -0
- package/dist/server-safe/permissions.d.ts.map +1 -0
- package/dist/server-safe/permissions.js +180 -0
- package/dist/server-safe/permissions.js.map +1 -0
- package/dist/server-safe/proposals.d.ts +6 -0
- package/dist/server-safe/proposals.d.ts.map +1 -0
- package/dist/server-safe/proposals.js +58 -0
- package/dist/server-safe/proposals.js.map +1 -0
- package/dist/server-safe/rentalAvailability.d.ts +56 -0
- package/dist/server-safe/rentalAvailability.d.ts.map +1 -0
- package/dist/server-safe/rentalAvailability.js +124 -0
- package/dist/server-safe/rentalAvailability.js.map +1 -0
- package/dist/server-safe/rentalAvailability.test.d.ts +2 -0
- package/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
- package/dist/server-safe/rentalAvailability.test.js +290 -0
- package/dist/server-safe/rentalAvailability.test.js.map +1 -0
- package/dist/server-safe/rentals.d.ts +95 -0
- package/dist/server-safe/rentals.d.ts.map +1 -0
- package/dist/server-safe/rentals.js +432 -0
- package/dist/server-safe/rentals.js.map +1 -0
- package/dist/server-safe/rentals.test.d.ts +2 -0
- package/dist/server-safe/rentals.test.d.ts.map +1 -0
- package/dist/server-safe/rentals.test.js +1034 -0
- package/dist/server-safe/rentals.test.js.map +1 -0
- package/dist/server-safe/routeOptimization.d.ts +155 -0
- package/dist/server-safe/routeOptimization.d.ts.map +1 -0
- package/dist/server-safe/routeOptimization.js +120 -0
- package/dist/server-safe/routeOptimization.js.map +1 -0
- package/dist/server-safe/routeOptimization.test.d.ts +2 -0
- package/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
- package/dist/server-safe/routeOptimization.test.js +234 -0
- package/dist/server-safe/routeOptimization.test.js.map +1 -0
- package/dist/server-safe/routePlanFingerprint.d.ts +13 -0
- package/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
- package/dist/server-safe/routePlanFingerprint.js +49 -0
- package/dist/server-safe/routePlanFingerprint.js.map +1 -0
- package/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
- package/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
- package/dist/server-safe/routePlanFingerprint.test.js +68 -0
- package/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
- package/dist/server-safe/scheduleListOrder.d.ts +18 -0
- package/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
- package/dist/server-safe/scheduleListOrder.js +92 -0
- package/dist/server-safe/scheduleListOrder.js.map +1 -0
- package/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
- package/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
- package/dist/server-safe/scheduleListOrder.test.js +260 -0
- package/dist/server-safe/scheduleListOrder.test.js.map +1 -0
- package/dist/server-safe/serviceMinutes.d.ts +13 -0
- package/dist/server-safe/serviceMinutes.d.ts.map +1 -0
- package/dist/server-safe/serviceMinutes.js +38 -0
- package/dist/server-safe/serviceMinutes.js.map +1 -0
- package/dist/server-safe/serviceMinutes.test.d.ts +2 -0
- package/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
- package/dist/server-safe/serviceMinutes.test.js +86 -0
- package/dist/server-safe/serviceMinutes.test.js.map +1 -0
- package/dist/server-safe/settingsSearch.d.ts +24 -0
- package/dist/server-safe/settingsSearch.d.ts.map +1 -0
- package/dist/server-safe/settingsSearch.js +8 -0
- package/dist/server-safe/settingsSearch.js.map +1 -0
- package/dist/server-safe/supportChat.d.ts +59 -0
- package/dist/server-safe/supportChat.d.ts.map +1 -0
- package/dist/server-safe/supportChat.js +56 -0
- package/dist/server-safe/supportChat.js.map +1 -0
- package/dist/server-safe/templates.d.ts +15 -0
- package/dist/server-safe/templates.d.ts.map +1 -0
- package/dist/server-safe/templates.js +91 -0
- package/dist/server-safe/templates.js.map +1 -0
- package/dist/server-safe/templates.test.d.ts +2 -0
- package/dist/server-safe/templates.test.d.ts.map +1 -0
- package/dist/server-safe/templates.test.js +62 -0
- package/dist/server-safe/templates.test.js.map +1 -0
- package/dist/server-safe/trash.d.ts +50 -0
- package/dist/server-safe/trash.d.ts.map +1 -0
- package/dist/server-safe/trash.js +100 -0
- package/dist/server-safe/trash.js.map +1 -0
- package/dist/utils/LogHandler.d.ts +3 -0
- package/dist/utils/LogHandler.d.ts.map +1 -0
- package/dist/utils/LogHandler.js +16 -0
- package/dist/utils/LogHandler.js.map +1 -0
- package/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
- package/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
- package/dist/utils/convertSupabaseImagesToAssets.js +14 -0
- package/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
-- Per-entity QuickBooks sync bookkeeping. The fan-out pass in autopilot-web
|
|
2
|
+
-- (webhook-outbox-cron) converts client.*/invoice.* outbound_events into at
|
|
3
|
+
-- most one PENDING task per entity for companies with QB sync enabled;
|
|
4
|
+
-- /api/qb-sync-cron claims due tasks via claim_qb_sync_tasks and reconciles
|
|
5
|
+
-- current Supabase state into QuickBooks. Tasks are self-contained (no FK to
|
|
6
|
+
-- outbound_event) so the outbox retention purge never has to consider QB
|
|
7
|
+
-- state.
|
|
8
|
+
|
|
9
|
+
create table if not exists "public"."qb_sync_task" (
|
|
10
|
+
"id" uuid default gen_random_uuid() not null,
|
|
11
|
+
"created_at" timestamp with time zone default now() not null,
|
|
12
|
+
"company_id" uuid not null,
|
|
13
|
+
"entity_type" text not null,
|
|
14
|
+
"entity_id" uuid not null,
|
|
15
|
+
-- informational: newest event that (re)enqueued this task. Deliberately
|
|
16
|
+
-- NO foreign key — outbound_event rows are purged after 90 days and a
|
|
17
|
+
-- dangling debug pointer is fine.
|
|
18
|
+
"trigger_event_id" uuid,
|
|
19
|
+
"status" text default 'pending' not null,
|
|
20
|
+
"attempt_count" integer default 0 not null,
|
|
21
|
+
"next_attempt_at" timestamp with time zone default now() not null,
|
|
22
|
+
"last_attempt_at" timestamp with time zone,
|
|
23
|
+
"last_error" text
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
alter table only "public"."qb_sync_task"
|
|
27
|
+
add constraint "qb_sync_task_pkey" primary key ("id");
|
|
28
|
+
|
|
29
|
+
alter table only "public"."qb_sync_task"
|
|
30
|
+
add constraint "qb_sync_task_company_id_fkey"
|
|
31
|
+
foreign key ("company_id") references "public"."company"("id") on delete cascade;
|
|
32
|
+
|
|
33
|
+
alter table only "public"."qb_sync_task"
|
|
34
|
+
add constraint "qb_sync_task_entity_type_check"
|
|
35
|
+
check ("entity_type" in ('client', 'invoice'));
|
|
36
|
+
|
|
37
|
+
-- pending: waiting for next_attempt_at
|
|
38
|
+
-- processing: claimed by a worker run (stuck rows swept back to pending)
|
|
39
|
+
-- done: reconciled into QB
|
|
40
|
+
-- skipped: QB sync disabled for the company at process time
|
|
41
|
+
-- dead: exhausted retries; kept for inspection
|
|
42
|
+
alter table only "public"."qb_sync_task"
|
|
43
|
+
add constraint "qb_sync_task_status_check"
|
|
44
|
+
check ("status" in ('pending', 'processing', 'done', 'skipped', 'dead'));
|
|
45
|
+
|
|
46
|
+
-- At most ONE pending task per entity: any burst of events while a task is
|
|
47
|
+
-- pending collapses into it (the consumer re-reads state at process time, so
|
|
48
|
+
-- intermediate events are pure duplicates). A task already claimed
|
|
49
|
+
-- ('processing') does NOT block a new pending task — a write that lands
|
|
50
|
+
-- mid-flight must trigger another sync afterwards.
|
|
51
|
+
create unique index if not exists "qb_sync_task_pending_entity_key"
|
|
52
|
+
on "public"."qb_sync_task" ("company_id", "entity_type", "entity_id")
|
|
53
|
+
where "status" = 'pending';
|
|
54
|
+
|
|
55
|
+
create index if not exists "qb_sync_task_due_idx"
|
|
56
|
+
on "public"."qb_sync_task" ("next_attempt_at")
|
|
57
|
+
where "status" = 'pending';
|
|
58
|
+
|
|
59
|
+
-- FK support for the company cascade + failure-surfacing queries
|
|
60
|
+
create index if not exists "qb_sync_task_company_idx"
|
|
61
|
+
on "public"."qb_sync_task" ("company_id", "created_at");
|
|
62
|
+
|
|
63
|
+
-- Fan-out enqueue. An RPC because ON CONFLICT against a partial unique index
|
|
64
|
+
-- needs the WHERE clause in the arbiter, which supabase-js upsert cannot
|
|
65
|
+
-- express. tasks: [{company_id, entity_type, entity_id, trigger_event_id}]
|
|
66
|
+
create or replace function "public"."enqueue_qb_sync_tasks"("tasks" jsonb)
|
|
67
|
+
returns integer
|
|
68
|
+
language "sql"
|
|
69
|
+
security definer
|
|
70
|
+
set search_path = 'public'
|
|
71
|
+
as $$
|
|
72
|
+
with ins as (
|
|
73
|
+
insert into qb_sync_task (company_id, entity_type, entity_id, trigger_event_id)
|
|
74
|
+
select distinct
|
|
75
|
+
(t ->> 'company_id')::uuid,
|
|
76
|
+
t ->> 'entity_type',
|
|
77
|
+
(t ->> 'entity_id')::uuid,
|
|
78
|
+
(t ->> 'trigger_event_id')::uuid
|
|
79
|
+
from jsonb_array_elements(tasks) as t
|
|
80
|
+
on conflict ("company_id", "entity_type", "entity_id")
|
|
81
|
+
where "status" = 'pending'
|
|
82
|
+
do nothing
|
|
83
|
+
returning 1
|
|
84
|
+
)
|
|
85
|
+
select count(*)::integer from ins;
|
|
86
|
+
$$;
|
|
87
|
+
|
|
88
|
+
-- Atomic claim, mirroring claim_webhook_deliveries (SKIP LOCKED is not
|
|
89
|
+
-- expressible through supabase-js; overlapping cron runs must never
|
|
90
|
+
-- double-sync). Ordered client-tasks-first within the batch so a client and
|
|
91
|
+
-- its invoice claimed together are processed parent-first.
|
|
92
|
+
create or replace function "public"."claim_qb_sync_tasks"("batch_size" integer)
|
|
93
|
+
returns setof "public"."qb_sync_task"
|
|
94
|
+
language "sql"
|
|
95
|
+
security definer
|
|
96
|
+
set search_path = 'public'
|
|
97
|
+
as $$
|
|
98
|
+
update qb_sync_task set
|
|
99
|
+
status = 'processing',
|
|
100
|
+
attempt_count = attempt_count + 1,
|
|
101
|
+
last_attempt_at = now()
|
|
102
|
+
where id in (
|
|
103
|
+
select id from qb_sync_task
|
|
104
|
+
where status = 'pending' and next_attempt_at <= now()
|
|
105
|
+
order by next_attempt_at, (entity_type = 'client') desc
|
|
106
|
+
limit least(batch_size, 1000)
|
|
107
|
+
for update skip locked
|
|
108
|
+
)
|
|
109
|
+
returning *;
|
|
110
|
+
$$;
|
|
111
|
+
|
|
112
|
+
revoke all on function "public"."enqueue_qb_sync_tasks"(jsonb) from public;
|
|
113
|
+
revoke all on function "public"."enqueue_qb_sync_tasks"(jsonb) from "anon";
|
|
114
|
+
revoke all on function "public"."enqueue_qb_sync_tasks"(jsonb) from "authenticated";
|
|
115
|
+
grant execute on function "public"."enqueue_qb_sync_tasks"(jsonb) to "service_role";
|
|
116
|
+
|
|
117
|
+
revoke all on function "public"."claim_qb_sync_tasks"(integer) from public;
|
|
118
|
+
revoke all on function "public"."claim_qb_sync_tasks"(integer) from "anon";
|
|
119
|
+
revoke all on function "public"."claim_qb_sync_tasks"(integer) from "authenticated";
|
|
120
|
+
grant execute on function "public"."claim_qb_sync_tasks"(integer) to "service_role";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
-- RLS: qb_sync_task is service-role only.
|
|
2
|
+
-- Same deliberate deviation (and rationale) as webhook_delivery's RLS:
|
|
3
|
+
-- internal pipeline state with no product surface, so no company-scoped
|
|
4
|
+
-- policies — anon/authenticated get no access at all.
|
|
5
|
+
alter table "public"."qb_sync_task" enable row level security;
|
|
6
|
+
revoke all on table "public"."qb_sync_task" from "anon";
|
|
7
|
+
revoke all on table "public"."qb_sync_task" from "authenticated";
|
|
8
|
+
grant all on table "public"."qb_sync_task" to "service_role";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
-- The async QB consumer processes <entity>.deleted minutes after the row
|
|
2
|
+
-- (and, today, its qb_to_* mapping — ON DELETE CASCADE) is gone, leaving no
|
|
3
|
+
-- way to find the QB-side object to deactivate/delete. Switch client/invoice
|
|
4
|
+
-- mappings to ON DELETE SET NULL so deletes leave an orphan row carrying the
|
|
5
|
+
-- QB id; the consumer's orphan-reconcile pass deactivates/deletes in QB and
|
|
6
|
+
-- then removes the orphan row.
|
|
7
|
+
-- qb_to_payment.payment_id already works exactly this way (see cud-payment's
|
|
8
|
+
-- toDelete pass) — this completes the pattern.
|
|
9
|
+
-- (qb_to_payment.invoice_id keeps its CASCADE: orphan-invoice cleanup
|
|
10
|
+
-- discovers linked QB payments from QB's Invoice.LinkedTxn, since our
|
|
11
|
+
-- mapping rows are gone by design.)
|
|
12
|
+
|
|
13
|
+
alter table "public"."qb_to_client" alter column "client_id" drop not null;
|
|
14
|
+
alter table only "public"."qb_to_client" drop constraint "qb_to_client_client_id_fkey";
|
|
15
|
+
alter table only "public"."qb_to_client"
|
|
16
|
+
add constraint "qb_to_client_client_id_fkey"
|
|
17
|
+
foreign key ("client_id") references "public"."client"("id") on delete set null;
|
|
18
|
+
|
|
19
|
+
alter table "public"."qb_to_invoice" alter column "invoice_id" drop not null;
|
|
20
|
+
alter table only "public"."qb_to_invoice" drop constraint "qb_to_invoice_invoice_id_fkey";
|
|
21
|
+
alter table only "public"."qb_to_invoice"
|
|
22
|
+
add constraint "qb_to_invoice_invoice_id_fkey"
|
|
23
|
+
foreign key ("invoice_id") references "public"."invoice"("id") on delete set null;
|
|
24
|
+
|
|
25
|
+
-- consumer orphan scans
|
|
26
|
+
create index if not exists "qb_to_client_orphan_idx"
|
|
27
|
+
on "public"."qb_to_client" ("company_id") where "client_id" is null;
|
|
28
|
+
create index if not exists "qb_to_invoice_orphan_idx"
|
|
29
|
+
on "public"."qb_to_invoice" ("company_id") where "invoice_id" is null;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
-- Extend cleanup_webhook_outbox (20260721185631) to also purge terminal
|
|
2
|
+
-- qb_sync_task rows past the event retention window. Same signature and
|
|
3
|
+
-- behavior as before, plus a third result column.
|
|
4
|
+
|
|
5
|
+
-- cleanup scans "old + terminal", matching the other outbox cleanup indexes
|
|
6
|
+
create index if not exists "qb_sync_task_cleanup_idx"
|
|
7
|
+
on "public"."qb_sync_task" ("created_at")
|
|
8
|
+
where "status" in ('done', 'skipped', 'dead');
|
|
9
|
+
|
|
10
|
+
drop function if exists "public"."cleanup_webhook_outbox"(integer, integer, integer);
|
|
11
|
+
|
|
12
|
+
create or replace function "public"."cleanup_webhook_outbox"(
|
|
13
|
+
"event_retention_days" integer,
|
|
14
|
+
"delivery_retention_days" integer,
|
|
15
|
+
"batch_size" integer
|
|
16
|
+
)
|
|
17
|
+
returns table ("deliveries_deleted" integer, "events_deleted" integer, "qb_tasks_deleted" integer)
|
|
18
|
+
language "plpgsql"
|
|
19
|
+
security definer
|
|
20
|
+
set search_path = 'public'
|
|
21
|
+
as $$
|
|
22
|
+
declare
|
|
23
|
+
-- floor of 7 days: a miscalled 0 must never purge fresh history
|
|
24
|
+
event_cutoff timestamptz :=
|
|
25
|
+
now() - make_interval(days => greatest(event_retention_days, 7));
|
|
26
|
+
delivery_cutoff timestamptz :=
|
|
27
|
+
now() - make_interval(days => greatest(delivery_retention_days, 7));
|
|
28
|
+
-- floor of 1: a caller-supplied 0 would otherwise LIMIT 0 into a silent
|
|
29
|
+
-- no-op, and a negative value is a runtime error
|
|
30
|
+
capped_batch integer := least(greatest(batch_size, 1), 5000);
|
|
31
|
+
del_count integer;
|
|
32
|
+
evt_count integer;
|
|
33
|
+
qb_count integer;
|
|
34
|
+
begin
|
|
35
|
+
-- Deleting an event cascades its deliveries regardless of delivery_cutoff,
|
|
36
|
+
-- so the event window must never be the shorter one.
|
|
37
|
+
if greatest(event_retention_days, 7) < greatest(delivery_retention_days, 7) then
|
|
38
|
+
raise exception 'event_retention_days (%) must be >= delivery_retention_days (%)',
|
|
39
|
+
event_retention_days, delivery_retention_days;
|
|
40
|
+
end if;
|
|
41
|
+
|
|
42
|
+
-- Terminal deliveries first, so the outbound_event cascade below touches
|
|
43
|
+
-- almost nothing and each statement's row count stays bounded.
|
|
44
|
+
delete from webhook_delivery
|
|
45
|
+
where id in (
|
|
46
|
+
select id from webhook_delivery
|
|
47
|
+
where status in ('delivered', 'skipped', 'dead')
|
|
48
|
+
and created_at < delivery_cutoff
|
|
49
|
+
order by created_at
|
|
50
|
+
limit capped_batch
|
|
51
|
+
);
|
|
52
|
+
get diagnostics del_count = row_count;
|
|
53
|
+
|
|
54
|
+
delete from outbound_event
|
|
55
|
+
where id in (
|
|
56
|
+
select id from outbound_event
|
|
57
|
+
where processed_at is not null
|
|
58
|
+
and created_at < event_cutoff
|
|
59
|
+
-- belt-and-suspenders: never cascade away a live delivery (retries
|
|
60
|
+
-- terminate ~1.6 days after creation, so this should match nothing)
|
|
61
|
+
and not exists (
|
|
62
|
+
select 1 from webhook_delivery d
|
|
63
|
+
where d.event_id = outbound_event.id
|
|
64
|
+
and d.status in ('pending', 'delivering')
|
|
65
|
+
)
|
|
66
|
+
order by created_at
|
|
67
|
+
limit capped_batch
|
|
68
|
+
);
|
|
69
|
+
get diagnostics evt_count = row_count;
|
|
70
|
+
|
|
71
|
+
-- Terminal QB sync tasks share the event window; pending/processing rows
|
|
72
|
+
-- are never touched.
|
|
73
|
+
delete from qb_sync_task
|
|
74
|
+
where id in (
|
|
75
|
+
select id from qb_sync_task
|
|
76
|
+
where status in ('done', 'skipped', 'dead')
|
|
77
|
+
and created_at < event_cutoff
|
|
78
|
+
order by created_at
|
|
79
|
+
limit capped_batch
|
|
80
|
+
);
|
|
81
|
+
get diagnostics qb_count = row_count;
|
|
82
|
+
|
|
83
|
+
return query select del_count, evt_count, qb_count;
|
|
84
|
+
end;
|
|
85
|
+
$$;
|
|
86
|
+
|
|
87
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from public;
|
|
88
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from "anon";
|
|
89
|
+
revoke all on function "public"."cleanup_webhook_outbox"(integer, integer, integer) from "authenticated";
|
|
90
|
+
grant execute on function "public"."cleanup_webhook_outbox"(integer, integer, integer) to "service_role";
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
-- Company-configurable permission roles. Each company gets seeded 'admin' and
|
|
2
|
+
-- 'technician' rows (system_key non-null, editable but not deletable) and can
|
|
3
|
+
-- create any number of custom roles. Owner is NOT a row: role_id 1 users keep
|
|
4
|
+
-- permission_role_id NULL and resolve to all-permissions in app code.
|
|
5
|
+
--
|
|
6
|
+
-- One boolean column per permission (not JSONB) so the generated types carry
|
|
7
|
+
-- real booleans; column DEFAULTs are the restrictive new-company Technician
|
|
8
|
+
-- values, which also makes future ADD COLUMN migrations fail-closed.
|
|
9
|
+
--
|
|
10
|
+
-- claim_tier drives user_role.role_id on assignment (2 = admin-tier JWT claim,
|
|
11
|
+
-- 3 = technician-tier). RLS policies keep reading the existing autopilot_role
|
|
12
|
+
-- claim untouched; the only permission whose client-side writes require the
|
|
13
|
+
-- admin claim is manage_company_settings, so the roles editor/API forces
|
|
14
|
+
-- claim_tier = 2 whenever that toggle is on.
|
|
15
|
+
|
|
16
|
+
create table if not exists "public"."permission_role" (
|
|
17
|
+
"id" uuid default gen_random_uuid() not null,
|
|
18
|
+
"created_at" timestamp with time zone default now() not null,
|
|
19
|
+
"company_id" uuid not null,
|
|
20
|
+
"name" text not null,
|
|
21
|
+
-- 'admin' / 'technician' for the per-company seeded rows; null = custom
|
|
22
|
+
"system_key" text,
|
|
23
|
+
"claim_tier" smallint default 3 not null,
|
|
24
|
+
|
|
25
|
+
-- list visibility (off = entity reachable only through assigned jobs)
|
|
26
|
+
"view_invoices_list" boolean default false not null,
|
|
27
|
+
"view_estimates_list" boolean default false not null,
|
|
28
|
+
"view_clients_list" boolean default false not null,
|
|
29
|
+
|
|
30
|
+
-- phone screen: master toggle + sub-toggles (sub-toggles only meaningful
|
|
31
|
+
-- when phone_access is on; dial-out stays available by default)
|
|
32
|
+
"phone_access" boolean default false not null,
|
|
33
|
+
"phone_view_recent_calls" boolean default false not null,
|
|
34
|
+
"phone_view_voicemail" boolean default false not null,
|
|
35
|
+
"phone_dial_out" boolean default true not null,
|
|
36
|
+
|
|
37
|
+
-- off = chats scoped to clients with an open job assigned to the user
|
|
38
|
+
"view_all_chats" boolean default false not null,
|
|
39
|
+
"map_view_employee_locations" boolean default false not null,
|
|
40
|
+
"view_analytics" boolean default false not null,
|
|
41
|
+
|
|
42
|
+
"create_jobs" boolean default true not null,
|
|
43
|
+
"create_invoices" boolean default true not null,
|
|
44
|
+
"create_clients" boolean default true not null,
|
|
45
|
+
"create_estimates" boolean default true not null,
|
|
46
|
+
"create_leads" boolean default true not null,
|
|
47
|
+
|
|
48
|
+
"delete_jobs" boolean default false not null,
|
|
49
|
+
"delete_invoices" boolean default false not null,
|
|
50
|
+
"delete_clients" boolean default false not null,
|
|
51
|
+
"delete_estimates" boolean default false not null,
|
|
52
|
+
"delete_leads" boolean default false not null,
|
|
53
|
+
|
|
54
|
+
"web_access" boolean default false not null,
|
|
55
|
+
"edit_time_cards" boolean default false not null,
|
|
56
|
+
"manage_roles" boolean default false not null,
|
|
57
|
+
"manage_company_settings" boolean default false not null
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
alter table only "public"."permission_role"
|
|
61
|
+
add constraint "permission_role_pkey" primary key ("id");
|
|
62
|
+
|
|
63
|
+
alter table only "public"."permission_role"
|
|
64
|
+
add constraint "permission_role_company_id_fkey"
|
|
65
|
+
foreign key ("company_id") references "public"."company"("id") on delete cascade;
|
|
66
|
+
|
|
67
|
+
alter table only "public"."permission_role"
|
|
68
|
+
add constraint "permission_role_system_key_check"
|
|
69
|
+
check ("system_key" in ('admin', 'technician'));
|
|
70
|
+
|
|
71
|
+
alter table only "public"."permission_role"
|
|
72
|
+
add constraint "permission_role_claim_tier_check"
|
|
73
|
+
check ("claim_tier" in (2, 3));
|
|
74
|
+
|
|
75
|
+
alter table only "public"."permission_role"
|
|
76
|
+
add constraint "permission_role_company_name_key"
|
|
77
|
+
unique ("company_id", "name");
|
|
78
|
+
|
|
79
|
+
-- at most one seeded admin + one seeded technician per company; NULLs are
|
|
80
|
+
-- distinct so custom roles are unconstrained
|
|
81
|
+
alter table only "public"."permission_role"
|
|
82
|
+
add constraint "permission_role_company_system_key_key"
|
|
83
|
+
unique ("company_id", "system_key");
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
-- RLS for permission_role (affected table: permission_role).
|
|
2
|
+
--
|
|
3
|
+
-- Read-only for clients: every authenticated user must be able to read the
|
|
4
|
+
-- roles of their own company (both apps resolve the current user's permission
|
|
5
|
+
-- set from the joined row, and the roles UIs list them). All writes go through
|
|
6
|
+
-- autopilot-web API routes using the service role and are permission-checked
|
|
7
|
+
-- there ('manage_roles') — so there are deliberately NO insert/update/delete
|
|
8
|
+
-- policies; RLS default-deny blocks client writes.
|
|
9
|
+
|
|
10
|
+
alter table "public"."permission_role" enable row level security;
|
|
11
|
+
|
|
12
|
+
-- no anon grant: no anonymous use case
|
|
13
|
+
grant all on table "public"."permission_role" to "authenticated";
|
|
14
|
+
grant all on table "public"."permission_role" to "service_role";
|
|
15
|
+
|
|
16
|
+
create policy "Anyone with matching company_id can view"
|
|
17
|
+
on "public"."permission_role"
|
|
18
|
+
for select
|
|
19
|
+
to "authenticated"
|
|
20
|
+
using (
|
|
21
|
+
((nullif(trim(both '"'::"text" from ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id")
|
|
22
|
+
);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
-- Link each user_role row to its configurable permission role.
|
|
2
|
+
-- NULL = owner (role_id 1): owners are all-permissions in code and never
|
|
3
|
+
-- reference a permission_role row. The plain (NO ACTION) FK doubles as the
|
|
4
|
+
-- "can't delete a role that's still assigned" guard — the delete API surfaces
|
|
5
|
+
-- the violation as a friendly error.
|
|
6
|
+
|
|
7
|
+
alter table "public"."user_role"
|
|
8
|
+
add column "permission_role_id" uuid;
|
|
9
|
+
|
|
10
|
+
alter table only "public"."user_role"
|
|
11
|
+
add constraint "user_role_permission_role_id_fkey"
|
|
12
|
+
foreign key ("permission_role_id") references "public"."permission_role"("id");
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
-- Seed permission roles.
|
|
2
|
+
--
|
|
3
|
+
-- Two different Technician value sets, on purpose:
|
|
4
|
+
-- * NEW companies (trigger): restrictive defaults — the permission_role
|
|
5
|
+
-- column DEFAULTs (lists/phone/chats/analytics/map/web off, create on,
|
|
6
|
+
-- delete off).
|
|
7
|
+
-- * EXISTING companies (one-shot INSERTs below): grandfathered values that
|
|
8
|
+
-- reproduce today's effective technician access, so shipping this feature
|
|
9
|
+
-- changes nothing for current customers until they edit the role:
|
|
10
|
+
-- lists visible, full phone screen (mobile shows it today; web techs gain
|
|
11
|
+
-- it — deliberate, decided 2026-07-21), all chats, web login allowed,
|
|
12
|
+
-- time-card editing allowed; map employee locations, analytics, deletes,
|
|
13
|
+
-- and settings/roles management stay off (all hidden/blocked today).
|
|
14
|
+
-- Admin rows are identical in both paths: everything on, claim_tier 2.
|
|
15
|
+
|
|
16
|
+
-- Trigger first, then the one-shot seed with ON CONFLICT: a company inserted
|
|
17
|
+
-- while this migration runs gets rows from exactly one path.
|
|
18
|
+
create or replace function "public"."seed_permission_roles_for_company"()
|
|
19
|
+
returns trigger
|
|
20
|
+
language "plpgsql"
|
|
21
|
+
security definer
|
|
22
|
+
set search_path = 'public'
|
|
23
|
+
as $$
|
|
24
|
+
begin
|
|
25
|
+
insert into permission_role (
|
|
26
|
+
company_id, name, system_key, claim_tier,
|
|
27
|
+
view_invoices_list, view_estimates_list, view_clients_list,
|
|
28
|
+
phone_access, phone_view_recent_calls, phone_view_voicemail, phone_dial_out,
|
|
29
|
+
view_all_chats, map_view_employee_locations, view_analytics,
|
|
30
|
+
create_jobs, create_invoices, create_clients, create_estimates, create_leads,
|
|
31
|
+
delete_jobs, delete_invoices, delete_clients, delete_estimates, delete_leads,
|
|
32
|
+
web_access, edit_time_cards, manage_roles, manage_company_settings
|
|
33
|
+
) values (
|
|
34
|
+
new.id, 'Admin', 'admin', 2,
|
|
35
|
+
true, true, true,
|
|
36
|
+
true, true, true, true,
|
|
37
|
+
true, true, true,
|
|
38
|
+
true, true, true, true, true,
|
|
39
|
+
true, true, true, true, true,
|
|
40
|
+
true, true, true, true
|
|
41
|
+
)
|
|
42
|
+
on conflict ("company_id", "system_key") do nothing;
|
|
43
|
+
|
|
44
|
+
-- restrictive Technician: column defaults
|
|
45
|
+
insert into permission_role (company_id, name, system_key, claim_tier)
|
|
46
|
+
values (new.id, 'Technician', 'technician', 3)
|
|
47
|
+
on conflict ("company_id", "system_key") do nothing;
|
|
48
|
+
|
|
49
|
+
return new;
|
|
50
|
+
end;
|
|
51
|
+
$$;
|
|
52
|
+
|
|
53
|
+
create trigger "seed_permission_roles_trigger"
|
|
54
|
+
after insert on "public"."company"
|
|
55
|
+
for each row execute function "public"."seed_permission_roles_for_company"();
|
|
56
|
+
|
|
57
|
+
-- One-shot seed for existing companies: Admin (all on)
|
|
58
|
+
insert into "public"."permission_role" (
|
|
59
|
+
company_id, name, system_key, claim_tier,
|
|
60
|
+
view_invoices_list, view_estimates_list, view_clients_list,
|
|
61
|
+
phone_access, phone_view_recent_calls, phone_view_voicemail, phone_dial_out,
|
|
62
|
+
view_all_chats, map_view_employee_locations, view_analytics,
|
|
63
|
+
create_jobs, create_invoices, create_clients, create_estimates, create_leads,
|
|
64
|
+
delete_jobs, delete_invoices, delete_clients, delete_estimates, delete_leads,
|
|
65
|
+
web_access, edit_time_cards, manage_roles, manage_company_settings
|
|
66
|
+
)
|
|
67
|
+
select
|
|
68
|
+
c.id, 'Admin', 'admin', 2,
|
|
69
|
+
true, true, true,
|
|
70
|
+
true, true, true, true,
|
|
71
|
+
true, true, true,
|
|
72
|
+
true, true, true, true, true,
|
|
73
|
+
true, true, true, true, true,
|
|
74
|
+
true, true, true, true
|
|
75
|
+
from "public"."company" c
|
|
76
|
+
on conflict ("company_id", "system_key") do nothing;
|
|
77
|
+
|
|
78
|
+
-- One-shot seed for existing companies: grandfathered Technician
|
|
79
|
+
insert into "public"."permission_role" (
|
|
80
|
+
company_id, name, system_key, claim_tier,
|
|
81
|
+
view_invoices_list, view_estimates_list, view_clients_list,
|
|
82
|
+
phone_access, phone_view_recent_calls, phone_view_voicemail, phone_dial_out,
|
|
83
|
+
view_all_chats, map_view_employee_locations, view_analytics,
|
|
84
|
+
create_jobs, create_invoices, create_clients, create_estimates, create_leads,
|
|
85
|
+
delete_jobs, delete_invoices, delete_clients, delete_estimates, delete_leads,
|
|
86
|
+
web_access, edit_time_cards, manage_roles, manage_company_settings
|
|
87
|
+
)
|
|
88
|
+
select
|
|
89
|
+
c.id, 'Technician', 'technician', 3,
|
|
90
|
+
true, true, true, -- lists visible today
|
|
91
|
+
true, true, true, true, -- full phone screen (mobile parity)
|
|
92
|
+
true, -- all chats visible today
|
|
93
|
+
false, false, -- map employee locations / analytics hidden today
|
|
94
|
+
true, true, true, true, true, -- creation allowed today
|
|
95
|
+
false, false, false, false, false, -- deletes blocked today
|
|
96
|
+
true, -- web login not blocked today
|
|
97
|
+
true, -- time-card editing ungated today
|
|
98
|
+
false, false -- roles / company settings management: admin-only
|
|
99
|
+
from "public"."company" c
|
|
100
|
+
on conflict ("company_id", "system_key") do nothing;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- Backfill user_role.permission_role_id from the seeded per-company rows.
|
|
2
|
+
-- role_id 2 (admin) -> seeded Admin; role_id 3 (technician) and 9
|
|
3
|
+
-- (subcontractor) -> seeded Technician; role_id 1 (owner) stays NULL —
|
|
4
|
+
-- owners resolve to all-permissions in code and never reference a row.
|
|
5
|
+
|
|
6
|
+
update "public"."user_role" ur
|
|
7
|
+
set "permission_role_id" = pr."id"
|
|
8
|
+
from "public"."permission_role" pr
|
|
9
|
+
where pr."company_id" = ur."company_id"
|
|
10
|
+
and pr."system_key" = 'admin'
|
|
11
|
+
and ur."role_id" = 2
|
|
12
|
+
and ur."permission_role_id" is null;
|
|
13
|
+
|
|
14
|
+
update "public"."user_role" ur
|
|
15
|
+
set "permission_role_id" = pr."id"
|
|
16
|
+
from "public"."permission_role" pr
|
|
17
|
+
where pr."company_id" = ur."company_id"
|
|
18
|
+
and pr."system_key" = 'technician'
|
|
19
|
+
and ur."role_id" in (3, 9)
|
|
20
|
+
and ur."permission_role_id" is null;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
-- manage_employees: create / edit / delete employees and subcontractors.
|
|
2
|
+
--
|
|
3
|
+
-- Column DEFAULT false = fail-closed everywhere it isn't explicitly granted:
|
|
4
|
+
-- every existing row (Technician, custom roles) and new-company Technician
|
|
5
|
+
-- seeds stay off. Only Admin rows get true — the trigger below for new
|
|
6
|
+
-- companies, the one-shot UPDATE for existing ones. Custom admin-tier roles
|
|
7
|
+
-- deliberately lose employee access until the toggle is enabled for them.
|
|
8
|
+
|
|
9
|
+
alter table "public"."permission_role"
|
|
10
|
+
add column if not exists "manage_employees" boolean default false not null;
|
|
11
|
+
|
|
12
|
+
-- Replace the seed function so new companies' Admin row includes the new
|
|
13
|
+
-- column explicitly (Technician keeps relying on column defaults).
|
|
14
|
+
-- create or replace is safe: seed_permission_roles_trigger binds by name.
|
|
15
|
+
create or replace function "public"."seed_permission_roles_for_company"()
|
|
16
|
+
returns trigger
|
|
17
|
+
language "plpgsql"
|
|
18
|
+
security definer
|
|
19
|
+
set search_path = 'public'
|
|
20
|
+
as $$
|
|
21
|
+
begin
|
|
22
|
+
insert into permission_role (
|
|
23
|
+
company_id, name, system_key, claim_tier,
|
|
24
|
+
view_invoices_list, view_estimates_list, view_clients_list,
|
|
25
|
+
phone_access, phone_view_recent_calls, phone_view_voicemail, phone_dial_out,
|
|
26
|
+
view_all_chats, map_view_employee_locations, view_analytics,
|
|
27
|
+
create_jobs, create_invoices, create_clients, create_estimates, create_leads,
|
|
28
|
+
delete_jobs, delete_invoices, delete_clients, delete_estimates, delete_leads,
|
|
29
|
+
web_access, edit_time_cards, manage_roles, manage_company_settings,
|
|
30
|
+
manage_employees
|
|
31
|
+
) values (
|
|
32
|
+
new.id, 'Admin', 'admin', 2,
|
|
33
|
+
true, true, true,
|
|
34
|
+
true, true, true, true,
|
|
35
|
+
true, true, true,
|
|
36
|
+
true, true, true, true, true,
|
|
37
|
+
true, true, true, true, true,
|
|
38
|
+
true, true, true, true,
|
|
39
|
+
true
|
|
40
|
+
)
|
|
41
|
+
on conflict ("company_id", "system_key") do nothing;
|
|
42
|
+
|
|
43
|
+
-- restrictive Technician: column defaults (manage_employees false)
|
|
44
|
+
insert into permission_role (company_id, name, system_key, claim_tier)
|
|
45
|
+
values (new.id, 'Technician', 'technician', 3)
|
|
46
|
+
on conflict ("company_id", "system_key") do nothing;
|
|
47
|
+
|
|
48
|
+
return new;
|
|
49
|
+
end;
|
|
50
|
+
$$;
|
|
51
|
+
|
|
52
|
+
-- One-shot backfill: ONLY seeded Admin rows. Custom roles and Technician
|
|
53
|
+
-- stay false (fail closed) until a manage_roles holder turns it on.
|
|
54
|
+
update "public"."permission_role"
|
|
55
|
+
set "manage_employees" = true
|
|
56
|
+
where "system_key" = 'admin';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
-- staging_new_employee gains the same company-wide read policy that user and
|
|
2
|
+
-- user_role already have ("Read-only for matching companyId"). Employee lists
|
|
3
|
+
-- read staging_new_employee client-side (core fetchEmployees, mobile resend
|
|
4
|
+
-- invite), but the existing policies only cover own-row, the admin claim, and
|
|
5
|
+
-- the owner claim — so technician-claim users holding the manage_employees
|
|
6
|
+
-- permission see no pending/reinvited employees. Read-only widening: all
|
|
7
|
+
-- staging writes remain owner-claim or service-role paths.
|
|
8
|
+
CREATE POLICY "Read-only for matching companyId" ON "public"."staging_new_employee"
|
|
9
|
+
FOR SELECT TO "authenticated"
|
|
10
|
+
USING (((NULLIF(TRIM(BOTH '"'::"text" FROM ("public"."get_my_claim"('autopilot_company_id'::"text"))::"text"), ''::"text"))::"uuid" = "company_id"));
|