@rebasepro/app 0.25.0 → 0.26.0

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.
Files changed (38) hide show
  1. package/README.md +1 -1
  2. package/dist/RlsSimulatorPanel-DOfmVgM3.js +403 -0
  3. package/dist/RlsSimulatorPanel-DOfmVgM3.js.map +1 -0
  4. package/dist/collections/form-layout.d.ts +30 -27
  5. package/dist/components/LanguageToggle.d.ts +9 -0
  6. package/dist/components/LoginView/index.d.ts +7 -0
  7. package/dist/components/index.d.ts +1 -0
  8. package/dist/components/studio/RlsSimulatorBar.d.ts +39 -0
  9. package/dist/components/studio/RlsSimulatorPanel.d.ts +29 -0
  10. package/dist/contexts/RlsSimulationContext.d.ts +47 -0
  11. package/dist/contexts/index.d.ts +1 -0
  12. package/dist/core/effective_role_state.d.ts +9 -0
  13. package/dist/{de-BMgOgwue.js → de-3yzzpuZj.js} +175 -1
  14. package/dist/de-3yzzpuZj.js.map +1 -0
  15. package/dist/debug.js +96 -46
  16. package/dist/{es-DSOOSgPW.js → es-mnyTaRkK.js} +175 -1
  17. package/dist/es-mnyTaRkK.js.map +1 -0
  18. package/dist/{fr-CnXidmZf.js → fr-nJHADzlI.js} +175 -1
  19. package/dist/fr-nJHADzlI.js.map +1 -0
  20. package/dist/{hi-lTvNsFMr.js → hi-B9_iunnL.js} +175 -1
  21. package/dist/hi-B9_iunnL.js.map +1 -0
  22. package/dist/hooks/useBuildEffectiveRoleController.d.ts +9 -3
  23. package/dist/hooks/usePermissions.d.ts +4 -0
  24. package/dist/hooks/useUnsavedChangesDialog.d.ts +7 -1
  25. package/dist/i18n/RebaseI18nProvider.d.ts +11 -0
  26. package/dist/index.es.js +2814 -2555
  27. package/dist/index.es.js.map +1 -1
  28. package/dist/{it-BoT_vBlx.js → it-DoEtz-OK.js} +175 -1
  29. package/dist/it-DoEtz-OK.js.map +1 -0
  30. package/dist/{pt-D9mSchbY.js → pt-DT26AmBU.js} +175 -1
  31. package/dist/pt-DT26AmBU.js.map +1 -0
  32. package/package.json +7 -7
  33. package/dist/de-BMgOgwue.js.map +0 -1
  34. package/dist/es-DSOOSgPW.js.map +0 -1
  35. package/dist/fr-CnXidmZf.js.map +0 -1
  36. package/dist/hi-lTvNsFMr.js.map +0 -1
  37. package/dist/it-BoT_vBlx.js.map +0 -1
  38. package/dist/pt-D9mSchbY.js.map +0 -1
@@ -201,6 +201,30 @@ var pt = {
201
201
  error_firestore_index: "É necessário um índice Firestore para esta consulta.",
202
202
  realtime_connection_lost_title: "Atualizações em tempo real em pausa",
203
203
  realtime_connection_lost_body: "A ligação ao servidor perdeu-se, por isso o que vê pode estar desatualizado. Será atualizado assim que a ligação voltar.",
204
+ rls_simulate_access: "Simular acesso",
205
+ rls_simulate_access_description: "Veja cada coleção como a veria uma função, um utilizador ou uma chave de serviço: as linhas e os campos que a sua segurança ao nível da linha oculta ficam de fora.",
206
+ rls_simulate_tab_role: "Função",
207
+ rls_simulate_tab_user: "Utilizador",
208
+ rls_simulate_tab_api_key: "Chave de API",
209
+ rls_simulate_user_id_optional: "Como id de utilizador (opcional)",
210
+ rls_simulate_apply: "Simular",
211
+ rls_simulate_stop: "Parar a simulação",
212
+ rls_simulate_search_users: "Pesquisar utilizadores",
213
+ rls_simulate_no_users: "Nenhum utilizador encontrado.",
214
+ rls_simulate_no_api_keys: "Nenhuma chave de serviço ativa.",
215
+ rls_simulate_options_error: "Não foi possível carregar o que pode ser simulado: {{message}}",
216
+ rls_simulate_users_error: "Não foi possível carregar os utilizadores: {{message}}",
217
+ rls_simulation_viewing_as_role: "A ver como a função {{role}}",
218
+ rls_simulation_viewing_as_role_user: "A ver como {{user}} com a função {{role}}",
219
+ rls_simulation_viewing_as_user: "A ver como o utilizador {{user}}",
220
+ rls_simulation_viewing_as_api_key: "A ver como a chave de API {{name}} ({{prefix}}…)",
221
+ rls_simulation_hidden_collections: "{{count}} coleções ocultas",
222
+ rls_simulation_hidden_collections_one: "1 coleção oculta",
223
+ rls_simulation_masked_columns: "{{count}} colunas mascaradas pela RLS",
224
+ rls_simulation_masked_columns_one: "1 coluna mascarada pela RLS",
225
+ rls_simulation_counting: "A contar o que esta identidade pode ler…",
226
+ rls_simulation_count_failed: "Não foi possível contar o que esta identidade pode ler: {{message}}",
227
+ rls_simulation_note: "As vistas de dados mostram apenas as linhas e os campos que esta identidade pode ler. A edição está desativada durante a simulação: pare a simulação para fazer alterações. As atualizações em tempo real ficam em pausa.",
204
228
  create_index: "Criar índice",
205
229
  value_is_not_reference: "O valor não é uma referência.",
206
230
  click_to_edit: "Clique para editar",
@@ -962,6 +986,7 @@ var pt = {
962
986
  studio_policy_help_step4_title: "4. Expressão WITH CHECK",
963
987
  studio_policy_help_step4_desc: "Uma condição SQL que tem de ser verdadeira para que as linhas novas ou modificadas sejam guardadas (INSERT, UPDATE).",
964
988
  studio_policy_help_step4_example: "Normalmente é igual à expressão USING quando os utilizadores só podem inserir ou editar os seus próprios dados.",
989
+ studio_policy_help_example: "Exemplo:",
965
990
  studio_policy_help_auth_vars_title: "Variáveis de autenticação do Rebase",
966
991
  studio_policy_help_auth_vars_desc: "O Rebase fornece funções nativas que pode usar nas suas expressões:",
967
992
  studio_policy_help_auth_uid: "Devolve o ID do utilizador atual como texto. Exemplo:",
@@ -1024,12 +1049,69 @@ var pt = {
1024
1049
  studio_collections_editor_pick: "Selecione uma coleção ou crie uma nova para começar a editar.",
1025
1050
  studio_collections_editor_read_only: "As coleções não podem ser editadas neste servidor.",
1026
1051
  studio_collections_editor_unsaved: "Esta coleção tem alterações por guardar.",
1052
+ schema_change_title_review: "Rever a alteração do esquema",
1053
+ schema_change_title_applied: "Alteração do esquema aplicada",
1054
+ schema_change_title_committed: "Foi feito commit da alteração do esquema",
1055
+ schema_change_verdict_safe_title: "Pronto a aplicar",
1056
+ schema_change_verdict_safe_body: "Cada alteração aqui pode ser feita na base de dados em execução.",
1057
+ schema_change_verdict_diverges_title: "Isto deixaria a base de dados desfasada",
1058
+ schema_change_verdict_diverges_body: "A alteração pode ser escrita, mas a base de dados não vai acabar por corresponder a ela. Os detalhes abaixo indicam que parte, e o que a tornaria aplicável.",
1059
+ schema_change_verdict_migration_title: "Isto precisa de uma migração",
1060
+ schema_change_verdict_migration_body: "Parte disto não pode ser feita numa base de dados em execução: elimina ou reescreve algo, e isso pertence a uma migração que alguém tenha lido.",
1061
+ schema_change_commit_only_title: "Pronto para o commit",
1062
+ schema_change_commit_only_body: "Agora nada é executado na base de dados. Cada alteração abaixo indica o que faz e quando entra em vigor.",
1063
+ schema_change_commit_only_body_no_changes: "Isto altera o que o seu projeto declara. Nada é executado na base de dados: não há nenhuma alteração de esquema a fazer.",
1064
+ schema_change_chip_safe: "seguro",
1065
+ schema_change_chip_diverges: "diverge",
1066
+ schema_change_chip_migration: "requer migração",
1067
+ schema_change_follow_up_one: "Uma coisa a fazer depois",
1068
+ schema_change_follow_up: "A fazer depois",
1069
+ schema_change_withheld_one: "Uma restrição não será aplicada",
1070
+ schema_change_withheld_many: "{{count}} restrições não serão aplicadas",
1071
+ schema_change_db_not_changed: "A base de dados não foi alterada",
1072
+ schema_change_db_maybe_changed: "A base de dados pode ter sido alterada em parte",
1073
+ schema_change_statements_partial: "Foram executadas {{ran}} de {{total}} instruções e depois uma falhou",
1074
+ schema_change_commit_holds: "O commit está em {{branch}} de qualquer forma, por isso o que não foi executado será aplicado no próximo arranque.",
1075
+ schema_change_committed: "Commit feito",
1076
+ schema_change_committed_on: "{{sha}} em {{branch}}",
1077
+ schema_change_plan_failed: "Não foi possível planear a alteração",
1078
+ schema_change_planning: "A determinar o que esta alteração faria…",
1079
+ schema_change_source_only_changes: "Nada aqui altera a forma dos seus dados. Só o código-fonte da coleção muda, e é feito commit dele.",
1080
+ schema_change_source_only_title: "Editar só o código-fonte: fazer commit da coleção e deixar a base de dados",
1081
+ schema_change_preview_only: "Pode pré-visualizar esta alteração, mas não aplicá-la",
1082
+ schema_change_statements: "Instruções que serão executadas",
1083
+ schema_change_files: "Ficheiros de que será feito commit",
1084
+ schema_change_message: "Mensagem do commit",
1085
+ schema_change_edit_source_only: "Editar só o código-fonte",
1086
+ schema_change_committing: "A fazer commit…",
1087
+ schema_change_applying: "A aplicar…",
1088
+ schema_change_commit: "Fazer commit",
1089
+ schema_change_commit_and_apply: "Fazer commit e aplicar",
1090
+ studio_api_explorer_spec_refused_title: "Esta sessão não consegue ler a especificação da API",
1091
+ studio_api_explorer_spec_failed_title: "Não foi possível carregar a especificação da API",
1092
+ studio_api_explorer_spec_refused_body: "O acesso da consola à API deste projeto foi recusado. Normalmente significa que a sessão expirou (inicie sessão novamente) ou que o acesso da consola foi desativado para este projeto nas Definições.",
1093
+ studio_api_explorer_spec_failed_body: "O projeto respondeu, mas não com uma especificação que este explorador consiga ler. A sua API não é afetada; só esta página.",
1027
1094
  db_column_type: "Tipo de coluna do banco de dados",
1028
1095
  primary_key_unique_id: "Chave primária / ID único",
1029
1096
  spread_children_as_columns: "Expandir filhos como colunas",
1030
1097
  mode: "Modo",
1031
1098
  timezone: "Fuso horário",
1032
1099
  target_collection: "Coleção de destino",
1100
+ column_type_default: "Predefinido ({{type}})",
1101
+ column_type_uuid_forced: "uuid (imposto pela chave primária)",
1102
+ column_type_varchar: "varchar (comprimento variável)",
1103
+ column_type_text: "text (ilimitado)",
1104
+ column_type_char: "char (comprimento fixo)",
1105
+ column_type_timestamp: "timestamp (com fuso horário)",
1106
+ column_type_caption_string: "Opcional: outro tipo de coluna na base de dados para este campo de texto.",
1107
+ column_type_caption_number: "Opcional: outro tipo de coluna na base de dados para este campo numérico.",
1108
+ column_type_caption_date: "Opcional: outro tipo de coluna na base de dados para este campo de data.",
1109
+ primary_key_manual: "Sim (introdução manual)",
1110
+ primary_key_generated_string: "Sim (UUID/cadeia gerada automaticamente)",
1111
+ primary_key_identity: "Sim (autoincremento/identity)",
1112
+ primary_key_increment: "Sim (incremento)",
1113
+ primary_key_strategy: "Sim ({{strategy}})",
1114
+ primary_key_caption: "Definir como chave primária e configurar a estratégia de geração de ID.",
1033
1115
  storage_file_name: "Nome do arquivo",
1034
1116
  storage_path: "Caminho de armazenamento",
1035
1117
  storage_max_size: "Tamanho máximo (em bytes)",
@@ -1045,6 +1127,14 @@ var pt = {
1045
1127
  storage_include_bucket_url: "Incluir URL do bucket (s3://...) no valor salvo",
1046
1128
  storage_save_url: "Salvar URL em vez do caminho de armazenamento",
1047
1129
  datetime_automatic_value: "Valor automático",
1130
+ datetime_mode_date_time: "Data/hora",
1131
+ datetime_mode_date: "Data",
1132
+ datetime_auto_value_none: "Nenhum",
1133
+ datetime_auto_value_on_create: "Ao criar",
1134
+ datetime_auto_value_on_update: "Em cada atualização",
1135
+ datetime_auto_value_caption: "Atualizar este campo automaticamente ao criar ou atualizar o registo",
1136
+ datetime_timezone_local: "Fuso horário local",
1137
+ datetime_timezone_caption: "Fuso horário para mostrar e introduzir datas. Os valores são sempre guardados em UTC.",
1048
1138
  markdown_paste_behavior: "Comportamento ao colar",
1049
1139
  entity_saved: "Guardado",
1050
1140
  more_actions: "Mais ações",
@@ -1320,6 +1410,61 @@ var pt = {
1320
1410
  studio_rls_nothing_changed: "Nada mudou, por isso nada foi guardado.",
1321
1411
  studio_branches_unavailable_title: "A criação de ramos da base de dados não está disponível",
1322
1412
  studio_branches_unavailable_body: "Os ramos precisam de um backend Postgres com uma ligação de administrador. Defina ADMIN_CONNECTION_STRING no ambiente do backend.",
1413
+ studio_branch_diff_tab_schema: "Esquema e políticas RLS",
1414
+ studio_branch_diff_tab_data: "Alterações de dados",
1415
+ studio_branch_diff_tab_details: "Detalhes",
1416
+ studio_branch_diff_merge: "Mesclar em {{target}}",
1417
+ studio_branch_diff_failed: "Não foi possível comparar este branch",
1418
+ studio_branch_diff_denied_title: "Você não pode revisar este branch",
1419
+ studio_branch_diff_denied_hint: "Revisar um branch exige o escopo database:write: o diff mostra linhas dos dois bancos, lidas fora da segurança em nível de linha.",
1420
+ studio_branch_diff_unreadable: "O servidor respondeu com algo que não é um diff de branch.",
1421
+ studio_branch_diff_no_api: "Este painel não tem um endereço de backend de onde ler o diff do branch.",
1422
+ studio_branch_diff_fork_unknown: "Não foi possível ler o momento em que este branch foi criado, então cada linha diferente conta como alteração do branch. Uma mesclagem também desfaria o que {{target}} mudou desde então.",
1423
+ studio_branch_diff_schema_empty: "Nenhuma alteração de esquema ou de políticas em relação a {{target}}.",
1424
+ studio_branch_diff_schema_not_merged: "As alterações de esquema e de políticas são mostradas para revisão. Uma mesclagem nunca as aplica: elas pertencem às suas coleções e às migrações delas.",
1425
+ studio_branch_diff_object_table: "Tabela",
1426
+ studio_branch_diff_object_column: "Coluna",
1427
+ studio_branch_diff_object_policy: "Política",
1428
+ studio_branch_diff_object_rls: "Segurança em nível de linha",
1429
+ studio_branch_diff_object_constraint: "Restrição",
1430
+ studio_branch_diff_object_index: "Índice",
1431
+ studio_branch_diff_object_trigger: "Trigger",
1432
+ studio_branch_diff_object_enum: "Tipo enum",
1433
+ studio_branch_diff_object_view: "View",
1434
+ studio_branch_diff_object_function: "Função",
1435
+ studio_branch_diff_change_added: "Adicionado",
1436
+ studio_branch_diff_change_dropped: "Removido",
1437
+ studio_branch_diff_change_altered: "Alterado",
1438
+ studio_branch_diff_data_empty: "O branch não alterou nenhuma linha em relação a {{target}}.",
1439
+ studio_branch_diff_row_inserted: "Inserida",
1440
+ studio_branch_diff_row_updated: "Atualizada",
1441
+ studio_branch_diff_row_deleted: "Excluída",
1442
+ studio_branch_diff_row_conflict: "Conflito",
1443
+ studio_branch_diff_conflicts: "{{count}} conflitos",
1444
+ studio_branch_diff_target_changes: "{{count}} linhas mudaram só em {{target}} desde que o branch foi criado. Uma mesclagem as mantém.",
1445
+ studio_branch_diff_target_changes_referencing: "{{count}} linhas mudaram apenas em {{target}} desde que o branch foi criado. {{reached}} delas fazem referência a linhas que o branch apagou: um merge as mantém, a menos que o branch vença esse conflito.",
1446
+ studio_branch_diff_referenced_by: "Linhas que {{target}} escreveu desde que o branch foi criado ainda fazem referência a linhas que o branch apagou aqui: {{tables}}. Cada uma conta como um conflito.",
1447
+ studio_branch_diff_row_counts: "Linhas: {{targetCount}} em {{target}}, {{branchCount}} no branch.",
1448
+ studio_branch_diff_column_change: "Alteração",
1449
+ studio_branch_diff_column_key: "Chave primária",
1450
+ studio_branch_diff_column_values: "Valores",
1451
+ studio_branch_diff_samples_shown: "Mostrando {{shown}} de {{total}} linhas alteradas.",
1452
+ studio_branch_diff_merge_title: "Mesclar {{branch}} em {{target}}",
1453
+ studio_branch_diff_merge_writes: "Isto grava as linhas do branch em {{target}}: {{inserted}} inseridas, {{updated}} atualizadas e {{deleted}} excluídas.",
1454
+ studio_branch_diff_merge_target_kept: "Nada do que {{target}} mudou desde que o branch foi criado é tocado.",
1455
+ studio_branch_diff_merge_target_kept_count: "As {{count}} linhas que {{target}} mudou desde que o branch foi criado ficam como estão.",
1456
+ studio_branch_diff_merge_schema_skipped: "As {{count}} alterações de esquema e de políticas não são mescladas. Aplique-as com suas migrações (rebase db push).",
1457
+ studio_branch_diff_merge_conflicts: "{{count}} linhas mudaram dos dois lados. Qual versão vence?",
1458
+ studio_branch_diff_merge_referenced_conflicts: "Algumas são linhas que o branch apagou e às quais {{count}} linhas escritas por {{target}} desde então ainda fazem referência: {{tables}}. Manter a de {{target}} mantém essas linhas e as que as referenciam.",
1459
+ studio_branch_diff_merge_referenced_reached: "Se o branch vencer, são apagadas linhas às quais {{count}} linhas escritas por {{target}} desde então ainda fazem referência, e as chaves estrangeiras alcançam essas linhas: {{tables}}. As outras linhas que {{target}} mudou ficam como estão.",
1460
+ studio_branch_diff_conflict_abort: "Nenhuma: não mesclar nada",
1461
+ studio_branch_diff_conflict_branch: "A do branch ({{branch}})",
1462
+ studio_branch_diff_conflict_target: "A de {{target}}: deixar como está",
1463
+ studio_branch_diff_merge_blocked: "{{count}} tabelas com linhas alteradas não podem ser mescladas:",
1464
+ studio_branch_diff_merge_skip_blocked: "Mesclar as outras tabelas e deixar estas como estão",
1465
+ studio_branch_diff_merge_atomic: "Tudo é gravado numa única transação, ou nada. Se algum dos dois bancos mudou desde que este diff foi lido, nada é gravado e o diff é recarregado.",
1466
+ studio_branch_diff_merge_confirm: "Mesclar",
1467
+ studio_branch_diff_merged: "{{count}} linhas mescladas em {{target}}",
1323
1468
  studio_backups_not_configured_title: "As cópias de segurança não estão configuradas",
1324
1469
  studio_backups_not_configured_body: "Defina BACKUP_DESTINATION para um caminho local ou um URL s3:// ou gs://, e depois crie uma cópia com `rebase db backup` ou um cron agendado.",
1325
1470
  studio_cron_empty_title: "Nenhuma tarefa cron registada",
@@ -1411,6 +1556,34 @@ var pt = {
1411
1556
  studio_storage_folder_exists: "A pasta «{{name}}» já existe",
1412
1557
  studio_storage_folder_created: "Pasta «{{name}}» criada",
1413
1558
  studio_storage_create_folder_failed: "Não foi possível criar a pasta",
1559
+ studio_branches_empty: "Ainda não há ramos. Crie um para trabalhar com uma cópia isolada da base de dados.",
1560
+ studio_branches_create_action: "Criar ramo",
1561
+ studio_branches_empty_detail: "Crie um ramo para começar",
1562
+ studio_branches_select_prompt: "Selecione um ramo para ver os detalhes",
1563
+ studio_branches_list_from: "de {{parent}} · {{when}}",
1564
+ studio_branches_created_from: "Criado a partir de",
1565
+ studio_branches_branch_name: "Nome do ramo",
1566
+ studio_branches_source_database: "Base de dados de origem",
1567
+ studio_branches_created: "Criado",
1568
+ studio_branches_size: "Tamanho",
1569
+ studio_branches_usage_title: "Como usar este ramo",
1570
+ studio_branches_usage_switch: "Aponte este checkout para ele. Todos os comandos seguintes o usam:",
1571
+ studio_branches_usage_off: "Volte à base de dados principal com:",
1572
+ studio_branches_usage_isolated: "As alterações feitas neste ramo não afetam a base de dados principal.",
1573
+ studio_branches_connection_details: "Detalhes da ligação",
1574
+ studio_branches_row_database: "Base de dados:",
1575
+ studio_branches_row_connect: "Ligar com:",
1576
+ studio_branches_row_branched_from: "Ramificado de:",
1577
+ studio_branches_row_created_at: "Criado em:",
1578
+ studio_branches_create_title: "Criar novo ramo",
1579
+ studio_branches_create_body: "Crie uma cópia isolada da base de dados. O ramo será um clone completo da base de dados de origem neste momento.",
1580
+ studio_branches_name_placeholder: "ex.: feature-auth, staging, preview-pr-42",
1581
+ studio_branches_source_main: "Predefinida (base de dados principal)",
1582
+ studio_branches_creating: "A criar…",
1583
+ studio_branches_delete_title: "Eliminar ramo",
1584
+ studio_branches_delete_body: "Tem a certeza de que quer eliminar permanentemente o ramo “{{name}}”? Esta ação não pode ser anulada e todos os dados deste ramo serão perdidos.",
1585
+ studio_branches_created_snackbar: "Ramo “{{name}}” criado com sucesso",
1586
+ studio_branches_deleted_snackbar: "Ramo “{{name}}” eliminado",
1414
1587
  insights_period_last_days: "Últimos {{count}} dias",
1415
1588
  insights_period_last_days_one: "Último dia",
1416
1589
  insights_previous_period_value: "{{count}} dias anteriores: {{value}}",
@@ -1430,10 +1603,11 @@ var pt = {
1430
1603
  copy_column_name: "Copiar nome da coluna",
1431
1604
  generate_sql_templates: "Gerar modelos SQL",
1432
1605
  select_row: "Selecionar {{id}}",
1606
+ relation_open_record: "Abrir {{label}}",
1433
1607
  select: "Selecionar",
1434
1608
  open_view: "Abrir vista"
1435
1609
  };
1436
1610
  //#endregion
1437
1611
  export { pt };
1438
1612
 
1439
- //# sourceMappingURL=pt-D9mSchbY.js.map
1613
+ //# sourceMappingURL=pt-DT26AmBU.js.map