@ai-matrx/records 0.58.17 → 0.58.20
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/CHANGELOG.md +36 -6
- package/dist/core/index.cjs +104 -13
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +44 -3
- package/dist/core/index.d.ts +44 -3
- package/dist/core/index.js +104 -13
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +22 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +22 -12
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +190 -43
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +171 -13
- package/dist/react/index.d.ts +171 -13
- package/dist/react/index.js +190 -43
- package/dist/react/index.js.map +1 -1
- package/dist/{types-BiN4BL2J.d.cts → types-DlKA0k1D.d.cts} +103 -13
- package/dist/{types-BiN4BL2J.d.ts → types-DlKA0k1D.d.ts} +103 -13
- package/dist/use-cases/index.cjs.map +1 -1
- package/dist/use-cases/index.d.cts +2 -2
- package/dist/use-cases/index.d.ts +2 -2
- package/dist/use-cases/index.js.map +1 -1
- package/package.json +1 -1
package/dist/react/index.cjs
CHANGED
|
@@ -2328,6 +2328,7 @@ __export(react_exports, {
|
|
|
2328
2328
|
useRecord: () => useRecord,
|
|
2329
2329
|
useRecordChangeRevision: () => useRecordChangeRevision,
|
|
2330
2330
|
useRecordMutation: () => useRecordMutation,
|
|
2331
|
+
useRecordPage: () => useRecordPage,
|
|
2331
2332
|
useRecords: () => useRecords,
|
|
2332
2333
|
useRecordsActor: () => useRecordsActor,
|
|
2333
2334
|
useRecordsClient: () => useRecordsClient,
|
|
@@ -3326,6 +3327,7 @@ var STORE_DOORS = [
|
|
|
3326
3327
|
{ name: "read_records_by_ids", args: "p_organization_id uuid, p_table_id uuid, p_record_ids uuid[], p_by_id boolean DEFAULT false", returns: "TABLE(id uuid, document jsonb, level permission_level)", security: "definer" },
|
|
3327
3328
|
{ name: "read_records_in_view_order", args: "p_organization_id uuid, p_view_id uuid, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0, p_filter jsonb DEFAULT NULL::jsonb", returns: 'TABLE(id uuid, document jsonb, level permission_level, "position" numeric)', security: "definer" },
|
|
3328
3329
|
{ name: "read_records_matching", args: "p_organization_id uuid, p_table_id uuid, p_filter jsonb DEFAULT '{}'::jsonb, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 200, p_offset integer DEFAULT 0", returns: "TABLE(id uuid, document jsonb, level permission_level)", security: "definer" },
|
|
3330
|
+
{ name: "read_records_page", args: "p_organization_id uuid, p_table_id uuid, p_filter jsonb DEFAULT '{}'::jsonb, p_search text DEFAULT NULL::text, p_sort jsonb DEFAULT '[]'::jsonb, p_view_id uuid DEFAULT NULL::uuid, p_by_id boolean DEFAULT false, p_limit integer DEFAULT 50, p_offset integer DEFAULT 0", returns: "jsonb", security: "definer" },
|
|
3329
3331
|
{ name: "realtime_topic_admits", args: "p_topic text", returns: "boolean", security: "definer" },
|
|
3330
3332
|
{ name: "record_aggregate", args: "p_organization_id uuid, p_table_id uuid, p_group_by jsonb DEFAULT '[]'::jsonb, p_measures jsonb DEFAULT '[]'::jsonb, p_bucket jsonb DEFAULT NULL::jsonb, p_filter jsonb DEFAULT '{}'::jsonb, p_limit integer DEFAULT 200, p_required text DEFAULT 'viewer'::text, p_compare jsonb DEFAULT NULL::jsonb", returns: "TABLE(groups jsonb, measures jsonb, row_count bigint, prior_groups jsonb, prior_measures jsonb, prior_row_count bigint, delta jsonb, compare jsonb)", security: "definer" },
|
|
3331
3333
|
{ name: "record_applicability", args: "p_organization_id uuid, p_record_id uuid", returns: "TABLE(rule_id uuid, rule_name text, rule_version integer, applies boolean, answer jsonb)", security: "invoker" },
|
|
@@ -3334,6 +3336,7 @@ var STORE_DOORS = [
|
|
|
3334
3336
|
{ name: "record_card", args: "p_viewer uuid, p_organization_id uuid, p_record_id uuid", returns: "jsonb", security: "definer" },
|
|
3335
3337
|
{ name: "record_carrying_edges", args: "p_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone", returns: "TABLE(container_id uuid, item_id uuid, edge_role text)", security: "invoker" },
|
|
3336
3338
|
{ name: "record_change_actions", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
3339
|
+
{ name: "record_change_many", args: "p_organization_id uuid, p_table_id uuid, p_changes jsonb", returns: "jsonb", security: "definer" },
|
|
3337
3340
|
{ name: "record_delete", args: "p_organization_id uuid, p_record_id uuid", returns: "timestamp with time zone", security: "definer" },
|
|
3338
3341
|
{ name: "record_entity_edges", args: "p_organization_id uuid, p_id uuid, p_table_id uuid, p_data_class text, p_data jsonb, p_deleted_at timestamp with time zone", returns: "TABLE(target_type text, target_id uuid, edge_role text, field_id uuid, ord integer)", security: "invoker" },
|
|
3339
3342
|
{ name: "record_filter_sql", args: "p_filter jsonb", returns: "text", security: "invoker" },
|
|
@@ -3453,6 +3456,7 @@ var STORE_DOORS = [
|
|
|
3453
3456
|
{ name: "table_carries_its_rows", args: "p_user_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level", returns: "boolean", security: "definer" },
|
|
3454
3457
|
{ name: "table_column_source", args: "p_organization_id uuid, p_table_id uuid", returns: "text", security: "invoker" },
|
|
3455
3458
|
{ name: "table_contents", args: "p_organization_id uuid, p_table_id uuid", returns: "TABLE(record_id uuid, kind text, goes_at integer)", security: "invoker" },
|
|
3459
|
+
{ name: "table_copy_evaluation_state", args: "p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
3456
3460
|
{ name: "table_declare", args: "p_organization_id uuid, p_spec jsonb", returns: "uuid", security: "definer" },
|
|
3457
3461
|
{ name: "table_decorate", args: "p_organization_id uuid, p_table_id uuid, p_path text[], p_value jsonb DEFAULT NULL::jsonb", returns: "jsonb", security: "definer" },
|
|
3458
3462
|
{ name: "table_decorations", args: "p_organization_id uuid, p_table_id uuid", returns: "jsonb", security: "definer" },
|
|
@@ -3525,7 +3529,13 @@ var STORE_DOORS = [
|
|
|
3525
3529
|
{ name: "visible_set", args: "p_user uuid, p_organization_id uuid, p_table_id uuid, p_required permission_level DEFAULT 'viewer'::permission_level, OUT o_all_visible boolean, OUT o_true_visibility platform.visibility[], OUT o_granted_all uuid[], OUT o_granted_visible uuid[], OUT o_carried_visible uuid[], OUT o_ladder_calls integer, OUT o_fallback boolean, OUT o_note text", returns: "record", security: "definer" },
|
|
3526
3530
|
{ name: "where_id_opens", args: "p_id uuid", returns: "jsonb", security: "definer" },
|
|
3527
3531
|
{ name: "where_tables_live", args: "p_table_ids uuid[]", returns: "TABLE(table_id uuid, lives_in text, why text)", security: "definer" },
|
|
3532
|
+
{ name: "whole_value_ceiling", args: "p_organization_id uuid", returns: "bigint", security: "invoker" },
|
|
3533
|
+
{ name: "whole_value_complete", args: "p_organization_id uuid, p_record_id uuid, p_field_key text, p_file_id uuid", returns: "jsonb", security: "definer" },
|
|
3534
|
+
{ name: "whole_value_head", args: "p_text text", returns: "text", security: "invoker" },
|
|
3535
|
+
{ name: "whole_value_park", args: "p_organization_id uuid, p_table_id uuid, p_record_id uuid, p_owner_id uuid, p_visibility platform.visibility, p_data jsonb, p_park jsonb", returns: "void", security: "invoker" },
|
|
3528
3536
|
{ name: "whole_value_pointer_of", args: "p_values jsonb, p_sources jsonb, p_key text", returns: "jsonb", security: "invoker" },
|
|
3537
|
+
{ name: "whole_value_source", args: "p_text text, p_writer_src jsonb", returns: "jsonb", security: "invoker" },
|
|
3538
|
+
{ name: "whole_values_waiting", args: "p_organization_id uuid, p_record_ids uuid[]", returns: "TABLE(record_id uuid, field_key text, pointer text, value_version integer, sha256 text, bytes bigint, chars bigint, owner_id uuid, record_visibility text, table_id uuid, table_name text)", security: "definer" },
|
|
3529
3539
|
{ name: "widget_kernel_id", args: "", returns: "uuid", security: "invoker" },
|
|
3530
3540
|
{ name: "with_whole_value_pointers", args: "p_document jsonb, p_values jsonb, p_sources jsonb, p_visible text[], p_by_id boolean DEFAULT false, p_key_ids jsonb DEFAULT '{}'::jsonb", returns: "jsonb", security: "invoker" },
|
|
3531
3541
|
{ name: "withheld_marker", args: "p_mask jsonb, p_key text", returns: "jsonb", security: "invoker" },
|
|
@@ -3639,27 +3649,27 @@ var STORE_KNOBS = [
|
|
|
3639
3649
|
{ key: "world_publish_enabled", value: "false", type: "boolean" }
|
|
3640
3650
|
];
|
|
3641
3651
|
var STORE_REFUSAL_CODES = [
|
|
3642
|
-
{ code: "02000", raised_by: "_checklist_instantiate,_portal_config_judge,_portal_invite_payload,_read_record_with,_share_write_person,_table_share_invite_payload,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_archive,portal_card,portal_declare,portal_form,portal_form_submit,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_restore,portal_revoke,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_halves_repair,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,table_archive,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_share_outside_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
3643
|
-
{ code: "0A000", raised_by: "checklist_step_complete,external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,rule_eval,rule_filter_node_sql,work_assign" },
|
|
3652
|
+
{ code: "02000", raised_by: "_checklist_instantiate,_portal_config_judge,_portal_invite_payload,_read_record_with,_share_write_person,_table_share_invite_payload,checklist_declare,checklist_run,checklist_step_complete,checklist_step_refusal,checklist_template_shape,conversation_scope_bind,dashboard_delete,dashboard_run,doc_letterhead,doc_render_body,doc_render_document,doc_render_read,doc_sign,doc_signature_intact,doc_signature_read,doc_template_delete,doc_template_read,doc_template_save,enrich_pin,entity_field_retire,entity_field_update,entity_record_read,entity_value_write,external_history_event,external_rows,external_stub_upsert,external_writes_set,io_restore,migrate_delete,migrate_extract_parent,migrate_merge,migrate_reclass,migrate_rename,migrate_reparent,migrate_retype,migrate_split,migrate_undo,organization_clear,portal_archive,portal_card,portal_declare,portal_form,portal_form_submit,portal_invite,portal_invite_accept,portal_preview,portal_principal_bind,portal_restore,portal_revoke,record_change_many,record_delete,record_restore,record_restore_preview,record_table,record_update,relation_halves_repair,relation_uncarry,share_access,share_grant,share_lane_set,share_people,share_revoke,sign_request_cancel,sign_request_create,sign_request_remind,sign_request_unchanged,table_archive,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_share_outside_revoke,visibility_as_of,work_approval_decide,work_approval_read,work_approval_request,work_assign,work_record_states,work_set_state" },
|
|
3653
|
+
{ code: "0A000", raised_by: "checklist_step_complete,external_rows,external_source_declare,external_write_through,promote_field,promoted_index_expr,promoted_query_sql,promoted_read,read_records_page,rule_eval,rule_filter_node_sql,work_assign" },
|
|
3644
3654
|
{ code: "22003", raised_by: "context_resolve" },
|
|
3645
|
-
{ code: "22004", raised_by: "_entity_custom_fields_guard,_portal_config_judge,_share_write_person,_value_envelope,actor_word,agg_assert_key,agg_compare_windows,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,context_tag_copy,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,inbox_snooze,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_purge_hard,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_form_submit,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_graph,record_write_many,relation_carry,relation_halves_repair,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_archive,table_declare,table_move,table_share_outside_grant,table_share_outside_invite,value_restore,view_declare,view_designate,view_look_read,view_look_set,work_approval_decide,work_approval_request,work_template_declare" },
|
|
3655
|
+
{ code: "22004", raised_by: "_entity_custom_fields_guard,_portal_config_judge,_share_write_person,_value_envelope,actor_word,agg_assert_key,agg_compare_windows,agg_sql,anon_capture,anon_token_issue,anon_write,assert_client_may_reach,booking_declare,capture_submit,checklist_declare,context_resolve,context_tag_copy,dashboard_block_normalize,dashboard_declare,dashboard_window_sql,doc_render_write,doc_sign,doc_signature_write,doc_template_save,enrich_land,enrich_normalize,external_history_event,external_rows,external_source_declare,external_stub_upsert,external_write_through,external_writes_set,field_history,form_declare,form_submit,home_add,inbox_snooze,io_comment_write,io_import_begin,io_infer_column,io_outbox_drain,io_restore,migrate_choice_keys,migrate_purge,migrate_purge_hard,migrate_reclass,migrate_split,migrate_undo,organization_clear,organization_contents,pipeline_declare,pipeline_gate_preview,portal_declare,portal_form_submit,portal_invite,portal_principal_bind,provenance_retention_days,provenance_write,query_across_homes,query_by_coordinates,query_rollup,record_delete,record_reparent,record_resolve,record_restore,record_update,record_write,record_write_graph,record_write_many,relation_carry,relation_halves_repair,relation_own,rule_declare,share_grant,sign_request_create,sign_request_sign,subscription_declare,table_archive,table_declare,table_move,table_share_outside_grant,table_share_outside_invite,value_restore,view_declare,view_designate,view_look_read,view_look_set,whole_value_complete,work_approval_decide,work_approval_request,work_template_declare" },
|
|
3646
3656
|
{ code: "22007", raised_by: "agg_parse_moment,dashboard_window_sql" },
|
|
3647
3657
|
{ code: "22012", raised_by: "formula_eval,rule_eval,rule_sql_op" },
|
|
3648
|
-
{ code: "22023", raised_by: "_action_check,_booking_availability,_decorations_check,_entity_custom_fields_guard,_fx_date,_fx_num,_fx_unit,_fxp_level,_fxp_resolve,_fxp_tokens,_portal_config_judge,_take_op_id,_value_envelope,_view_field_key,_view_key_value,_work_shape_guard,action_run,actor_word,agg_assert_key,agg_calendar,agg_compare_windows,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_run,dashboard_target_field_assert,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_reference_rows,entity_reference_words,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,form_declare,form_draft_save,formula_eval,formula_parse,grid_layout_check,hub_changed_by,inbox_snooze,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,list_portals,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,pipeline_move_many,portal_declare,portal_form_submit,provenance_write,query_by_coordinates,query_rollup,read_records_archived,read_records_in_view_order,record_filter_sql,record_update,record_write_graph,record_write_many,relation_carry,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_sql_op,scope_table_provision,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_from_example,table_move,table_rules,table_share_outside_grant,table_sync,table_transfer_owner,table_webhook_declare,view_declare,view_keys_check,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,work_approval_request,work_decide_many,work_inbox,work_list,work_slot_hold" },
|
|
3649
|
-
{ code: "23503", raised_by: "_action_check,_booking_availability,_checklist_instantiate,_containment_guard,_decorations_check,_display_spec_for,_field_document_for,_field_type_parity_guard,_pipeline_stage_key,_record_rule_uses,action_declare,action_run,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,autonumber_backfill,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_draft_save,form_submit,grid_layout,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,read_records_in_view_order,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_run,sign_request_create,subscription_mute,subscription_preview,table_decorate,table_from_example,table_webhook_archive,table_webhook_declare,view_declare,view_designate,view_look_set,view_record_order_set,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
3658
|
+
{ code: "22023", raised_by: "_action_check,_booking_availability,_decorations_check,_entity_custom_fields_guard,_fx_date,_fx_num,_fx_unit,_fxp_level,_fxp_resolve,_fxp_tokens,_portal_config_judge,_take_op_id,_value_envelope,_view_field_key,_view_key_value,_work_shape_guard,action_run,actor_word,agg_assert_key,agg_calendar,agg_compare_windows,agg_sql,anon_token_issue,booking_declare,containment_parent,dashboard_block_normalize,dashboard_run,dashboard_target_field_assert,dashboard_window_sql,doc_render_body,doc_render_write,doc_signature_write,enrich_declare,enrich_land,enrich_normalize,enrich_pin,entity_reference_rows,entity_reference_words,entity_value_write,external_history_event,external_source_declare,external_stub_upsert,external_write_through,field_history,field_update,form_declare,form_draft_save,formula_eval,formula_parse,grid_layout_check,hub_changed_by,inbox_snooze,io_export,io_import_begin,io_import_finish,io_import_plan,io_import_report,io_proposal_accept,list_portals,migrate_merge,migrate_reclass,my_levels,organization_clear,page_size,pin_agent_cells,pipeline_move,pipeline_move_many,portal_declare,portal_form_submit,provenance_write,query_by_coordinates,query_rollup,read_records_archived,read_records_in_view_order,read_records_page,record_change_many,record_filter_sql,record_update,record_write_graph,record_write_many,relation_carry,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_sql_op,scope_table_provision,share_grant,share_lane_set,sign_request_create,sign_request_sign,subscription_declare,table_from_example,table_move,table_rules,table_share_outside_grant,table_sync,table_transfer_owner,table_webhook_declare,view_declare,view_keys_check,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,work_approval_request,work_decide_many,work_inbox,work_list,work_slot_hold" },
|
|
3659
|
+
{ code: "23503", raised_by: "_action_check,_booking_availability,_checklist_instantiate,_containment_guard,_decorations_check,_display_spec_for,_field_document_for,_field_type_parity_guard,_pipeline_stage_key,_record_rule_uses,action_declare,action_run,agg_digest_assemble,anon_publish,anon_rate_take,anon_token_issue,anon_write,assert_organization_wall,autonumber_backfill,booking_cancel,booking_confirm,booking_declare,booking_hold,booking_reschedule,capture_publish,checklist_declare,checklist_steps_table,comment_write,dashboard_declare,delete_rule,doc_sign,doc_template_save,enrich_declare,enrich_due,enrich_land,form_declare,form_draft_save,form_submit,grid_layout,home_add,inbound_declare,inbound_mail_land,inbound_set,io_comment_write,io_import_begin,io_import_finish,io_import_report,io_import_rows,io_proposal_accept,migrate_demote,migrate_promote,pipeline_board,pipeline_declare,pipeline_move,pipeline_read,pipeline_transition_refusal,promote_field,promote_table,read_records_in_view_order,read_records_page,record_applicability,record_reparent,relation_carry,relation_own,resolve_first_match,rule_applies,rule_declare,rule_eval,rule_filter_node_sql,rule_members,rule_members_visible,rule_run,sign_request_create,subscription_mute,subscription_preview,table_decorate,table_from_example,table_webhook_archive,table_webhook_declare,view_declare,view_designate,view_look_set,view_record_order_set,whole_value_complete,work_set_state,work_take_assignment,work_template_instantiate" },
|
|
3650
3660
|
{ code: "23505", raised_by: "_portal_config_judge,_share_write_person,_unique_rule_holds,doc_sign,doc_signature_write,entity_field_declare,field_declare,home_add,inbound_declare,io_proposal_accept,relation_carry,relation_own,sign_request_cancel,sign_request_create,table_share_outside_resend,work_approval_decide,work_slot_hold" },
|
|
3651
|
-
{ code: "23514", raised_by: "_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_display_format_check,_display_spec_for,_entity_custom_fields_guard,_field_class_guard,_field_document_for,_field_shape_guard,_field_type_parity_guard,_merge_field_shape_guard,_merge_field_temporal_guard,_promoted_field_cap_guard,_record_rule_uses,_record_source_key_is_record,_relation_halves_agree,_relation_kernel_targets,_resolve_choice_words,_rule_shape_guard,_rule_topology_guard,_store_relation_edge_names_its_field,_table_columns_word_guard,_table_shape_guard,_undeclared_key_guard,_value_envelope,_with_display,_work_shape_guard,_workdoors_approval_guard,action_run,assert_columns_are_defined,assert_entity_is_organization_scoped,booking_declare,capture_publish,capture_sheet_declare,checklist_declare,checklist_step_complete,doc_sign,doc_signature_write,doc_template_save,entity_field_declare,entity_field_retire,entity_field_update,entity_records_find,entity_table,field_declare,field_retire,field_update,home_add,io_comment_write,io_import_rows,migrate_merge,migrate_purge_hard,portal_archive,portal_restore,record_restore,record_write_graph,relation_carry,relation_halves_repair,relation_own,sign_request_create,sign_request_sign,table_declare,table_from_example,validate_value_envelope,validate_values,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
|
|
3652
|
-
{ code: "40001", raised_by: "has_visibility_at,table_move" },
|
|
3653
|
-
{ code: "42501", raised_by: "_context_copy_fence,_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_portal_config_judge,_portal_principal_here,_read_record_with,_rule_definition_write,_store_door,agent_table_claim,agg_fields_readable_assert,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,context_resolve,conversation_scope_bind,conversation_scope_unbind,dashboard_target_field_assert,doc_sign,enrich_declare,enrich_due,enrich_land,enrich_normalize,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_draft_save,form_public_asks,form_submit,inbound_mail_land,inbox_clear,inbox_snooze,inbox_unclear,inbox_unsnooze,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,member_personal_tables,migrate_purge,migrate_purge_hard,migrate_purge_hard_request,migrate_reclass,my_levels,organization_clear,organization_contents,portal_declare,portal_form,portal_form_submit,portal_invitation,portal_invite,portal_invite_accept,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,read_records_archived,read_records_by_ids,read_records_matching,record_table,record_write_graph,relation_halves_disagreements,relation_halves_repair,resolve_context,scope_table_provision,share_grant,subscription_mute,subscription_preview,table_move,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_transfer_owner,table_webhook_declare,view_declare,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
3661
|
+
{ code: "23514", raised_by: "_checklist_instantiate,_checklist_step_guard,_containment_guard,_dated_values_guard,_derived_fields,_display_format_check,_display_spec_for,_entity_custom_fields_guard,_field_class_guard,_field_document_for,_field_shape_guard,_field_type_parity_guard,_merge_field_shape_guard,_merge_field_temporal_guard,_promoted_field_cap_guard,_record_rule_uses,_record_source_key_is_record,_relation_halves_agree,_relation_kernel_targets,_resolve_choice_words,_rule_shape_guard,_rule_topology_guard,_store_relation_edge_names_its_field,_table_columns_word_guard,_table_shape_guard,_undeclared_key_guard,_value_envelope,_with_display,_work_shape_guard,_workdoors_approval_guard,action_run,assert_columns_are_defined,assert_entity_is_organization_scoped,booking_declare,capture_publish,capture_sheet_declare,checklist_declare,checklist_step_complete,doc_sign,doc_signature_write,doc_template_save,entity_field_declare,entity_field_retire,entity_field_update,entity_records_find,entity_table,field_declare,field_retire,field_update,home_add,io_comment_write,io_import_rows,migrate_merge,migrate_purge_hard,portal_archive,portal_restore,record_restore,record_write_graph,relation_carry,relation_halves_repair,relation_own,sign_request_create,sign_request_sign,table_declare,table_from_example,validate_value_envelope,validate_values,whole_value_complete,work_set_state,work_slots_declare,work_take_assignment,work_template_instantiate" },
|
|
3662
|
+
{ code: "40001", raised_by: "has_visibility_at,table_move,whole_value_complete" },
|
|
3663
|
+
{ code: "42501", raised_by: "_context_copy_fence,_copy_evaluation_note,_copy_evaluation_reimage,_doc_render_immutable,_doc_signature_immutable,_field_definition_write,_field_write_door,_portal_config_judge,_portal_principal_here,_read_record_with,_rule_definition_write,_store_door,agent_table_claim,agg_fields_readable_assert,anon_capture,anon_inbound_land,anon_publish,anon_token_issue,anon_token_verify,anon_write,assert_client_may_change,assert_client_may_open,assert_client_may_reach,assert_may_know_table,assert_organization_admin,assert_store_door,booking_confirm,booking_declare,booking_hold,capture_submit,checklist_run,comment_write,context_resolve,conversation_scope_bind,conversation_scope_unbind,dashboard_target_field_assert,doc_sign,enrich_declare,enrich_due,enrich_land,enrich_normalize,entity_field_declare,entity_field_retire,entity_field_update,entity_value_write,external_write_through,form_declare,form_draft_save,form_public_asks,form_submit,inbound_mail_land,inbox_clear,inbox_snooze,inbox_unclear,inbox_unsnooze,io_comment_resolve,io_comment_write,io_import_begin,io_import_finish,io_restore,member_personal_tables,migrate_purge,migrate_purge_hard,migrate_purge_hard_request,migrate_reclass,my_levels,organization_clear,organization_contents,portal_declare,portal_form,portal_form_submit,portal_invitation,portal_invite,portal_invite_accept,portal_principal_bind,promote_table,query_visibility_parity,read_record,read_records,read_records_archived,read_records_by_ids,read_records_matching,read_records_page,record_table,record_write_graph,relation_halves_disagreements,relation_halves_repair,resolve_context,scope_table_provision,share_grant,subscription_mute,subscription_preview,table_copy_evaluation_state,table_move,table_share_outside_accept,table_share_outside_grant,table_share_outside_invite,table_share_outside_resend,table_transfer_owner,table_webhook_declare,view_declare,view_look_set,view_record_order_set,visibility_as_of,where_tables_live,whole_value_complete,work_approval_decide,work_approval_read,work_approval_request,work_person" },
|
|
3654
3664
|
{ code: "42703", raised_by: "entity_table,portal_declare" },
|
|
3655
3665
|
{ code: "42P17", raised_by: "_field_reads_what_it_reads,far_value" },
|
|
3656
3666
|
{ code: "53400", raised_by: "anon_rate_take,delete_cascade_closure,enrich_due,enrich_land,promote_field" },
|
|
3657
|
-
{ code: "54000", raised_by: "action_run,form_draft_save,hub_changed_by,pipeline_move_many,record_headers,table_decorate,table_from_example,table_row_counts,table_sync,table_webhook_declare,view_record_order_set,work_decide_many" },
|
|
3667
|
+
{ code: "54000", raised_by: "action_run,form_draft_save,hub_changed_by,pipeline_move_many,record_change_many,record_headers,table_decorate,table_from_example,table_row_counts,table_sync,table_webhook_declare,view_record_order_set,work_decide_many" },
|
|
3658
3668
|
{ code: "54001", raised_by: "record_delete" },
|
|
3659
3669
|
{ code: "55000", raised_by: "inbox_clear,inbox_snooze,table_move,work_approval_decide,work_approval_request" },
|
|
3660
3670
|
{ code: "P0001", raised_by: "action_run" },
|
|
3661
|
-
{ code: "P0002", raised_by: "inbox_clear,inbox_snooze" },
|
|
3662
|
-
{ code: "PT409", raised_by: "record_update" },
|
|
3671
|
+
{ code: "P0002", raised_by: "inbox_clear,inbox_snooze,whole_value_complete" },
|
|
3672
|
+
{ code: "PT409", raised_by: "record_change_many,record_update" },
|
|
3663
3673
|
{ code: "PT428", raised_by: "_record_rule_uses" }
|
|
3664
3674
|
];
|
|
3665
3675
|
var ENTITY_TOKENS = [
|
|
@@ -4313,6 +4323,8 @@ var ENTITY_TOKENS = [
|
|
|
4313
4323
|
"party_contact_point",
|
|
4314
4324
|
"passkey_credential",
|
|
4315
4325
|
"path_drift_repair_2026_09",
|
|
4326
|
+
"pb_claim_appeals_fd31de",
|
|
4327
|
+
"pb_insurance_claims_fd31de",
|
|
4316
4328
|
"pc_article",
|
|
4317
4329
|
"pc_episode",
|
|
4318
4330
|
"pc_show",
|
|
@@ -4614,7 +4626,6 @@ var ENTITY_TOKENS = [
|
|
|
4614
4626
|
"visibility_epoch",
|
|
4615
4627
|
"voice",
|
|
4616
4628
|
"war_room",
|
|
4617
|
-
"wbx_capture",
|
|
4618
4629
|
"wbx_demo",
|
|
4619
4630
|
"wbx_guidance",
|
|
4620
4631
|
"wbx_highlight",
|
|
@@ -4805,6 +4816,13 @@ var DOORS = {
|
|
|
4805
4816
|
// `custom.record_filter_sql`, the one body `custom.agg_sql` also calls, so the
|
|
4806
4817
|
// rows it opens are the rows the number counted.
|
|
4807
4818
|
readRecordsMatching: "read_records_matching",
|
|
4819
|
+
// THE SAME READ DOOR, ASKED FOR ONE PAGE THE STORE SORTED, SEARCHED AND COUNTED (DOOR-SPEED,
|
|
4820
|
+
// 2026-09-25). `custom.read_records_page` takes the same filter, adds a sort (by the words a
|
|
4821
|
+
// person sees on a choice column), a search over the columns this reader may see, a hand-ordered
|
|
4822
|
+
// view's order, and answers the TOTAL of the matching visible set — the record-store twin of the
|
|
4823
|
+
// older store's `get_user_table_data_paginated_v2`, so a grid never reads a whole table to draw
|
|
4824
|
+
// one page. Its documents are built by `read_records_by_ids`. A separate NAME for the reason above.
|
|
4825
|
+
readRecordsPage: "read_records_page",
|
|
4808
4826
|
// THE SAME READ DOOR, ADDRESSED BY ABSENCE. Every door above answers LIVE rows
|
|
4809
4827
|
// only — each of them hard-codes `and r.deleted_at is null` — so until this one
|
|
4810
4828
|
// existed no screen could list an archived record however it was written, and
|
|
@@ -4820,6 +4838,11 @@ var DOORS = {
|
|
|
4820
4838
|
queryTableAsOf: "query_table_as_of",
|
|
4821
4839
|
recordWrite: "record_write",
|
|
4822
4840
|
recordWriteMany: "record_write_many",
|
|
4841
|
+
// MANY CHANGES TO ONE TABLE, ONE TRANSACTION (DOOR-SPEED, 2026-09-25). `custom.record_change_many`
|
|
4842
|
+
// takes inserts, updates and archives: inserts through `record_write_many`, every update in ONE
|
|
4843
|
+
// UPDATE statement (each record asked its editor rung, CAS honoured), archives through
|
|
4844
|
+
// `record_delete`. One refused change refuses the batch and nothing is saved; the hint names it.
|
|
4845
|
+
recordChangeMany: "record_change_many",
|
|
4823
4846
|
// A PARENT, THE EDGES IT STANDS ON AND THE ROWS THAT BELONG TO IT — ALL OR NOTHING.
|
|
4824
4847
|
// `recordWrite` and `recordWriteMany` are each ONE statement, so a caller that needs a
|
|
4825
4848
|
// parent, its provenance edge and its child rows to land together had no door at all: a
|
|
@@ -5563,6 +5586,14 @@ function createRecordsClient(config) {
|
|
|
5563
5586
|
}
|
|
5564
5587
|
return ok(response.data);
|
|
5565
5588
|
}
|
|
5589
|
+
let kernelAsked = null;
|
|
5590
|
+
function tableKernel(where) {
|
|
5591
|
+
kernelAsked ??= callDoor(DOORS.tableKernelId, {}, where).then((answer) => {
|
|
5592
|
+
if (!answer.ok) kernelAsked = null;
|
|
5593
|
+
return answer;
|
|
5594
|
+
});
|
|
5595
|
+
return kernelAsked;
|
|
5596
|
+
}
|
|
5566
5597
|
function unfold(document) {
|
|
5567
5598
|
const raw = document ?? {};
|
|
5568
5599
|
const hidden = raw._hidden ?? {};
|
|
@@ -5602,6 +5633,25 @@ function createRecordsClient(config) {
|
|
|
5602
5633
|
"recordWriteMany"
|
|
5603
5634
|
);
|
|
5604
5635
|
},
|
|
5636
|
+
async recordChangeMany({ table_id, changes }) {
|
|
5637
|
+
const opId = mintOpId();
|
|
5638
|
+
return callDoor(
|
|
5639
|
+
DOORS.recordChangeMany,
|
|
5640
|
+
{
|
|
5641
|
+
p_organization_id: org,
|
|
5642
|
+
p_table_id: table_id,
|
|
5643
|
+
p_changes: changes.map(
|
|
5644
|
+
(change) => change.op === "insert" ? { op: "insert", data: { ...change.data, _op_id: opId } } : change.op === "update" ? {
|
|
5645
|
+
op: "update",
|
|
5646
|
+
record_id: change.record_id,
|
|
5647
|
+
patch: { ...change.patch, _op_id: opId },
|
|
5648
|
+
...change.expected_version === void 0 || change.expected_version === null ? {} : { expected_version: change.expected_version }
|
|
5649
|
+
} : { op: "archive", record_id: change.record_id }
|
|
5650
|
+
)
|
|
5651
|
+
},
|
|
5652
|
+
"recordChangeMany"
|
|
5653
|
+
);
|
|
5654
|
+
},
|
|
5605
5655
|
async recordWriteGraph({ table_id, parent, children, edges }) {
|
|
5606
5656
|
const opId = mintOpId();
|
|
5607
5657
|
return callDoor(
|
|
@@ -5830,6 +5880,34 @@ function createRecordsClient(config) {
|
|
|
5830
5880
|
const total = rows.length < limit ? offset + rows.length : null;
|
|
5831
5881
|
return ok({ rows, total });
|
|
5832
5882
|
},
|
|
5883
|
+
async listPage({ table_id, filter, search, sort, view_id, limit = 50, offset = 0 }) {
|
|
5884
|
+
const door = await callDoor(
|
|
5885
|
+
DOORS.readRecordsPage,
|
|
5886
|
+
{
|
|
5887
|
+
p_organization_id: org,
|
|
5888
|
+
p_table_id: table_id,
|
|
5889
|
+
p_filter: filter ?? {},
|
|
5890
|
+
p_search: search ?? null,
|
|
5891
|
+
p_sort: sort ?? [],
|
|
5892
|
+
p_view_id: view_id ?? null,
|
|
5893
|
+
p_limit: limit,
|
|
5894
|
+
p_offset: offset
|
|
5895
|
+
},
|
|
5896
|
+
"listPage"
|
|
5897
|
+
);
|
|
5898
|
+
if (!door.ok) return err(door.error);
|
|
5899
|
+
const answer = door.data;
|
|
5900
|
+
const rows = (answer?.rows ?? []).map((row) => {
|
|
5901
|
+
const { document, hidden } = unfold(row.document);
|
|
5902
|
+
return { id: row.id, document, level: row.level, hidden };
|
|
5903
|
+
});
|
|
5904
|
+
return ok({
|
|
5905
|
+
rows,
|
|
5906
|
+
total: Number(answer?.total ?? 0),
|
|
5907
|
+
limit: Number(answer?.limit ?? limit),
|
|
5908
|
+
offset: Number(answer?.offset ?? offset)
|
|
5909
|
+
});
|
|
5910
|
+
},
|
|
5833
5911
|
async query(input) {
|
|
5834
5912
|
const plan = planQuery(input);
|
|
5835
5913
|
const sets = [];
|
|
@@ -5934,8 +6012,22 @@ function createRecordsClient(config) {
|
|
|
5934
6012
|
offset: plan.read.offset
|
|
5935
6013
|
});
|
|
5936
6014
|
},
|
|
6015
|
+
async tableRead({ table_id }) {
|
|
6016
|
+
const kernel = await tableKernel("tableRead.kernel");
|
|
6017
|
+
if (!kernel.ok) return err(kernel.error);
|
|
6018
|
+
const door = await callDoor(
|
|
6019
|
+
DOORS.readRecordsByIds,
|
|
6020
|
+
{ p_organization_id: org, p_table_id: kernel.data, p_record_ids: [table_id] },
|
|
6021
|
+
"tableRead"
|
|
6022
|
+
);
|
|
6023
|
+
if (!door.ok) return err(door.error);
|
|
6024
|
+
const row = (door.data ?? []).find((r) => r.id === table_id);
|
|
6025
|
+
if (!row) return ok(null);
|
|
6026
|
+
const { document } = unfold(row.document);
|
|
6027
|
+
return ok({ ...document, id: row.id, organization_id: org });
|
|
6028
|
+
},
|
|
5937
6029
|
async tableList() {
|
|
5938
|
-
const kernel = await
|
|
6030
|
+
const kernel = await tableKernel("tableList.kernel");
|
|
5939
6031
|
if (!kernel.ok) return err(kernel.error);
|
|
5940
6032
|
const door = await callDoor(
|
|
5941
6033
|
DOORS.readRecords,
|
|
@@ -7902,7 +7994,29 @@ function useRecordsActor() {
|
|
|
7902
7994
|
|
|
7903
7995
|
// src/react/hooks.ts
|
|
7904
7996
|
var import_react2 = require("react");
|
|
7905
|
-
|
|
7997
|
+
var SHARED_ANSWER_MS = 2e3;
|
|
7998
|
+
var sharedAnswers = /* @__PURE__ */ new WeakMap();
|
|
7999
|
+
function askShared(client, key, fresh, run) {
|
|
8000
|
+
let held = sharedAnswers.get(client);
|
|
8001
|
+
if (!held) {
|
|
8002
|
+
held = /* @__PURE__ */ new Map();
|
|
8003
|
+
sharedAnswers.set(client, held);
|
|
8004
|
+
}
|
|
8005
|
+
const existing = held.get(key);
|
|
8006
|
+
if (!fresh && existing && (existing.at === null || Date.now() - existing.at < SHARED_ANSWER_MS)) {
|
|
8007
|
+
return existing.answer;
|
|
8008
|
+
}
|
|
8009
|
+
const answer = run(client);
|
|
8010
|
+
const entry = { at: null, answer };
|
|
8011
|
+
held.set(key, entry);
|
|
8012
|
+
void answer.then((result) => {
|
|
8013
|
+
if (held.get(key) !== entry) return;
|
|
8014
|
+
if (result.ok) entry.at = Date.now();
|
|
8015
|
+
else held.delete(key);
|
|
8016
|
+
});
|
|
8017
|
+
return answer;
|
|
8018
|
+
}
|
|
8019
|
+
function useAsync(run, deps, share) {
|
|
7906
8020
|
const client = useRecordsClient();
|
|
7907
8021
|
const [state, setState] = (0, import_react2.useState)(
|
|
7908
8022
|
{ data: null, loading: true, error: null }
|
|
@@ -7918,7 +8032,8 @@ function useAsync(run, deps) {
|
|
|
7918
8032
|
(0, import_react2.useEffect)(() => {
|
|
7919
8033
|
let cancelled = false;
|
|
7920
8034
|
setState((s) => ({ ...s, loading: true }));
|
|
7921
|
-
|
|
8035
|
+
const asked = share ? askShared(client, share, nonce > 0, run) : run(client);
|
|
8036
|
+
void asked.then((result) => {
|
|
7922
8037
|
if (cancelled || !alive.current) return;
|
|
7923
8038
|
setState(
|
|
7924
8039
|
result.ok ? { data: result.data, loading: false, error: null } : { data: null, loading: false, error: result.error }
|
|
@@ -7927,7 +8042,7 @@ function useAsync(run, deps) {
|
|
|
7927
8042
|
return () => {
|
|
7928
8043
|
cancelled = true;
|
|
7929
8044
|
};
|
|
7930
|
-
}, [client, nonce, ...deps]);
|
|
8045
|
+
}, [client, nonce, share, ...deps]);
|
|
7931
8046
|
const reload = (0, import_react2.useCallback)(() => setNonce((n) => n + 1), []);
|
|
7932
8047
|
const setData = (0, import_react2.useCallback)((update) => {
|
|
7933
8048
|
if (!alive.current) return;
|
|
@@ -7939,15 +8054,14 @@ function useTable(tableId) {
|
|
|
7939
8054
|
return useAsync(
|
|
7940
8055
|
async (client) => {
|
|
7941
8056
|
if (!tableId) return { ok: true, data: null };
|
|
7942
|
-
|
|
7943
|
-
if (!result.ok) return result;
|
|
7944
|
-
return { ok: true, data: result.data.find((t) => t.id === tableId) ?? null };
|
|
8057
|
+
return client.tableRead({ table_id: tableId });
|
|
7945
8058
|
},
|
|
7946
|
-
[tableId]
|
|
8059
|
+
[tableId],
|
|
8060
|
+
tableId ? `table:${tableId}` : null
|
|
7947
8061
|
);
|
|
7948
8062
|
}
|
|
7949
8063
|
function useTables() {
|
|
7950
|
-
return useAsync((client) => client.tableList(), []);
|
|
8064
|
+
return useAsync((client) => client.tableList(), [], "tables");
|
|
7951
8065
|
}
|
|
7952
8066
|
function useMyLevels(ids) {
|
|
7953
8067
|
const key = ids.join(",");
|
|
@@ -7960,7 +8074,8 @@ function useMyLevels(ids) {
|
|
|
7960
8074
|
for (const row of answered.data) held[row.id] = row.level;
|
|
7961
8075
|
return { ok: true, data: held };
|
|
7962
8076
|
},
|
|
7963
|
-
[key]
|
|
8077
|
+
[key],
|
|
8078
|
+
key === "" ? null : `levels:${key}`
|
|
7964
8079
|
);
|
|
7965
8080
|
}
|
|
7966
8081
|
function useMyLevel(id) {
|
|
@@ -7971,7 +8086,8 @@ function useMyLevel(id) {
|
|
|
7971
8086
|
if (!answered.ok) return answered;
|
|
7972
8087
|
return { ok: true, data: answered.data[0]?.level ?? null };
|
|
7973
8088
|
},
|
|
7974
|
-
[id]
|
|
8089
|
+
[id],
|
|
8090
|
+
id ? `level:${id}` : null
|
|
7975
8091
|
);
|
|
7976
8092
|
}
|
|
7977
8093
|
var shapeRevisions = /* @__PURE__ */ new Map();
|
|
@@ -8003,29 +8119,12 @@ function useFields(tableId, recordType) {
|
|
|
8003
8119
|
if (!tableId) return { ok: true, data: [] };
|
|
8004
8120
|
return client.fields({ table_id: tableId, ...recordType === void 0 ? {} : { recordType } });
|
|
8005
8121
|
},
|
|
8006
|
-
[tableId, recordType, revision]
|
|
8122
|
+
[tableId, recordType, revision],
|
|
8123
|
+
tableId ? `fields:${tableId}:${recordType ?? ""}:${revision}` : null
|
|
8007
8124
|
);
|
|
8008
8125
|
}
|
|
8009
|
-
function
|
|
8126
|
+
function useLiveRows(tableId, base) {
|
|
8010
8127
|
const client = useRecordsClient();
|
|
8011
|
-
const pageSize = options.pageSize ?? 50;
|
|
8012
|
-
const page = options.page ?? 0;
|
|
8013
|
-
const filterKey = stableFilterKey(options.filter);
|
|
8014
|
-
const base = useAsync(
|
|
8015
|
-
async (c) => {
|
|
8016
|
-
if (!tableId) return { ok: true, data: { rows: [], total: null } };
|
|
8017
|
-
return c.list({
|
|
8018
|
-
table_id: tableId,
|
|
8019
|
-
...filterKey === "{}" ? {} : { filter: options.filter },
|
|
8020
|
-
limit: pageSize,
|
|
8021
|
-
offset: page * pageSize
|
|
8022
|
-
});
|
|
8023
|
-
},
|
|
8024
|
-
// The QUESTION, not the object: a parent that rebuilds `{status: "Cancelled"}`
|
|
8025
|
-
// on every render must not re-read the page on every render, and a parent
|
|
8026
|
-
// that changes the question must re-read on the first one.
|
|
8027
|
-
[tableId, pageSize, page, filterKey]
|
|
8028
|
-
);
|
|
8029
8128
|
const realtime = client.config.realtime;
|
|
8030
8129
|
const { reload, setData } = base;
|
|
8031
8130
|
(0, import_react2.useEffect)(() => {
|
|
@@ -8072,6 +8171,54 @@ function useRecords(tableId, options = {}) {
|
|
|
8072
8171
|
}, [realtime, tableId, client, reload, setData, base.data]);
|
|
8073
8172
|
const live = Boolean(realtime && tableId);
|
|
8074
8173
|
const liveReason = realtime ? tableId ? "Live: changes to this table re-read through the read door." : "Not live: no table selected." : "Not live: this host bound no realtime port, so this list updates when you reload it.";
|
|
8174
|
+
return { live, liveReason };
|
|
8175
|
+
}
|
|
8176
|
+
function useRecords(tableId, options = {}) {
|
|
8177
|
+
const pageSize = options.pageSize ?? 50;
|
|
8178
|
+
const page = options.page ?? 0;
|
|
8179
|
+
const filterKey = stableFilterKey(options.filter);
|
|
8180
|
+
const base = useAsync(
|
|
8181
|
+
async (c) => {
|
|
8182
|
+
if (!tableId) return { ok: true, data: { rows: [], total: null } };
|
|
8183
|
+
return c.list({
|
|
8184
|
+
table_id: tableId,
|
|
8185
|
+
...filterKey === "{}" ? {} : { filter: options.filter },
|
|
8186
|
+
limit: pageSize,
|
|
8187
|
+
offset: page * pageSize
|
|
8188
|
+
});
|
|
8189
|
+
},
|
|
8190
|
+
// The QUESTION, not the object: a parent that rebuilds `{status: "Cancelled"}`
|
|
8191
|
+
// on every render must not re-read the page on every render, and a parent
|
|
8192
|
+
// that changes the question must re-read on the first one.
|
|
8193
|
+
[tableId, pageSize, page, filterKey]
|
|
8194
|
+
);
|
|
8195
|
+
const { live, liveReason } = useLiveRows(tableId, base);
|
|
8196
|
+
return { ...base, live, liveReason };
|
|
8197
|
+
}
|
|
8198
|
+
function useRecordPage(tableId, options = {}) {
|
|
8199
|
+
const pageSize = options.pageSize ?? 50;
|
|
8200
|
+
const page = options.page ?? 0;
|
|
8201
|
+
const filterKey = stableFilterKey(options.filter);
|
|
8202
|
+
const search = options.search && options.search.trim() !== "" ? options.search.trim() : null;
|
|
8203
|
+
const sortKey = JSON.stringify(options.sort ?? []);
|
|
8204
|
+
const viewId = options.viewId ?? null;
|
|
8205
|
+
const base = useAsync(
|
|
8206
|
+
async (c) => {
|
|
8207
|
+
if (!tableId) return { ok: true, data: { rows: [], total: null } };
|
|
8208
|
+
const answered = await c.listPage({
|
|
8209
|
+
table_id: tableId,
|
|
8210
|
+
...filterKey === "{}" ? {} : { filter: options.filter },
|
|
8211
|
+
search,
|
|
8212
|
+
sort: JSON.parse(sortKey),
|
|
8213
|
+
view_id: viewId,
|
|
8214
|
+
limit: pageSize,
|
|
8215
|
+
offset: page * pageSize
|
|
8216
|
+
});
|
|
8217
|
+
return answered.ok ? { ok: true, data: { rows: answered.data.rows, total: answered.data.total } } : answered;
|
|
8218
|
+
},
|
|
8219
|
+
[tableId, pageSize, page, filterKey, search, sortKey, viewId]
|
|
8220
|
+
);
|
|
8221
|
+
const { live, liveReason } = useLiveRows(tableId, base);
|
|
8075
8222
|
return { ...base, live, liveReason };
|
|
8076
8223
|
}
|
|
8077
8224
|
function useRecordChangeRevision(recordId) {
|