@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
@@ -196,6 +196,30 @@ var fr = {
196
196
  error_firestore_index: "Un index Firestore est requis pour cette requête.",
197
197
  realtime_connection_lost_title: "Mises à jour en direct suspendues",
198
198
  realtime_connection_lost_body: "La connexion au serveur a été perdue : ce que vous voyez n'est peut-être plus à jour. L'affichage se mettra à jour dès le retour de la connexion.",
199
+ rls_simulate_access: "Simuler un accès",
200
+ rls_simulate_access_description: "Voir chaque collection comme la verrait un rôle, un utilisateur ou une clé de service : les lignes et les champs que leur sécurité au niveau des lignes masque sont omis.",
201
+ rls_simulate_tab_role: "Rôle",
202
+ rls_simulate_tab_user: "Utilisateur",
203
+ rls_simulate_tab_api_key: "Clé d'API",
204
+ rls_simulate_user_id_optional: "En tant qu'identifiant utilisateur (facultatif)",
205
+ rls_simulate_apply: "Simuler",
206
+ rls_simulate_stop: "Arrêter la simulation",
207
+ rls_simulate_search_users: "Rechercher des utilisateurs",
208
+ rls_simulate_no_users: "Aucun utilisateur trouvé.",
209
+ rls_simulate_no_api_keys: "Aucune clé de service active.",
210
+ rls_simulate_options_error: "Impossible de charger ce qui peut être simulé : {{message}}",
211
+ rls_simulate_users_error: "Impossible de charger les utilisateurs : {{message}}",
212
+ rls_simulation_viewing_as_role: "Affichage en tant que rôle {{role}}",
213
+ rls_simulation_viewing_as_role_user: "Affichage en tant que {{user}} avec le rôle {{role}}",
214
+ rls_simulation_viewing_as_user: "Affichage en tant qu'utilisateur {{user}}",
215
+ rls_simulation_viewing_as_api_key: "Affichage en tant que clé d'API {{name}} ({{prefix}}…)",
216
+ rls_simulation_hidden_collections: "{{count}} collections masquées",
217
+ rls_simulation_hidden_collections_one: "1 collection masquée",
218
+ rls_simulation_masked_columns: "{{count}} colonnes masquées par la RLS",
219
+ rls_simulation_masked_columns_one: "1 colonne masquée par la RLS",
220
+ rls_simulation_counting: "Calcul de ce que cette identité peut lire…",
221
+ rls_simulation_count_failed: "Impossible de compter ce que cette identité peut lire : {{message}}",
222
+ rls_simulation_note: "Les vues de données n'affichent que les lignes et les champs que cette identité peut lire. La modification est désactivée pendant la simulation : arrêtez la simulation pour apporter des changements. Les mises à jour en direct sont suspendues.",
199
223
  create_index: "Créer un index",
200
224
  value_is_not_reference: "La valeur n'est pas une référence.",
201
225
  click_to_edit: "Cliquez pour modifier",
@@ -957,6 +981,7 @@ var fr = {
957
981
  studio_policy_help_step4_title: "4. Expression WITH CHECK",
958
982
  studio_policy_help_step4_desc: "Une condition SQL qui doit être vraie pour que les lignes nouvelles ou modifiées soient enregistrées (INSERT, UPDATE).",
959
983
  studio_policy_help_step4_example: "Généralement identique à l'expression USING lorsque les utilisateurs ne peuvent insérer ou modifier que leurs propres données.",
984
+ studio_policy_help_example: "Exemple :",
960
985
  studio_policy_help_auth_vars_title: "Variables d'authentification Rebase",
961
986
  studio_policy_help_auth_vars_desc: "Rebase fournit des fonctions natives que vous pouvez utiliser dans vos expressions :",
962
987
  studio_policy_help_auth_uid: "Renvoie l'identifiant de l'utilisateur courant sous forme de texte. Exemple :",
@@ -1019,12 +1044,69 @@ var fr = {
1019
1044
  studio_collections_editor_pick: "Sélectionnez une collection ou créez-en une pour commencer à la modifier.",
1020
1045
  studio_collections_editor_read_only: "Les collections ne peuvent pas être modifiées sur ce serveur.",
1021
1046
  studio_collections_editor_unsaved: "Cette collection a des modifications non enregistrées.",
1047
+ schema_change_title_review: "Vérifier la modification du schéma",
1048
+ schema_change_title_applied: "Modification du schéma appliquée",
1049
+ schema_change_title_committed: "Commit de la modification du schéma effectué",
1050
+ schema_change_verdict_safe_title: "Prêt à appliquer",
1051
+ schema_change_verdict_safe_body: "Chaque modification ici peut être faite sur la base de données en cours d'exécution.",
1052
+ schema_change_verdict_diverges_title: "Cela laisserait la base de données désynchronisée",
1053
+ schema_change_verdict_diverges_body: "La modification peut être écrite, mais la base de données ne finira pas par y correspondre. Les détails ci-dessous indiquent quelle partie, et ce qui la rendrait applicable.",
1054
+ schema_change_verdict_migration_title: "Cela nécessite une migration",
1055
+ schema_change_verdict_migration_body: "Une partie ne peut pas du tout être faite sur une base de données en cours d'exécution : elle supprime ou réécrit quelque chose, et cela relève d'une migration que quelqu'un a relue.",
1056
+ schema_change_commit_only_title: "Prêt pour le commit",
1057
+ schema_change_commit_only_body: "Rien n'est exécuté sur la base de données maintenant. Chaque modification ci-dessous indique ce qu'elle fait et quand elle prend effet.",
1058
+ schema_change_commit_only_body_no_changes: "Cela modifie ce que votre projet déclare. Rien n'est exécuté sur la base de données : il n'y a aucune modification de schéma à faire.",
1059
+ schema_change_chip_safe: "sûr",
1060
+ schema_change_chip_diverges: "diverge",
1061
+ schema_change_chip_migration: "migration requise",
1062
+ schema_change_follow_up_one: "Une chose à faire ensuite",
1063
+ schema_change_follow_up: "À faire ensuite",
1064
+ schema_change_withheld_one: "Une contrainte ne sera pas appliquée",
1065
+ schema_change_withheld_many: "{{count}} contraintes ne seront pas appliquées",
1066
+ schema_change_db_not_changed: "La base de données n'a pas été modifiée",
1067
+ schema_change_db_maybe_changed: "La base de données a peut-être été modifiée en partie",
1068
+ schema_change_statements_partial: "{{ran}} instructions sur {{total}} ont été exécutées, puis une a échoué",
1069
+ schema_change_commit_holds: "Le commit est sur {{branch}} dans tous les cas, donc ce qui n'a pas été exécuté sera appliqué au prochain démarrage.",
1070
+ schema_change_committed: "Commit effectué",
1071
+ schema_change_committed_on: "{{sha}} sur {{branch}}",
1072
+ schema_change_plan_failed: "La modification n'a pas pu être planifiée",
1073
+ schema_change_planning: "Analyse de ce que ferait cette modification…",
1074
+ schema_change_source_only_changes: "Rien ici ne modifie la forme de vos données. Seule la source de la collection change, et elle fait l'objet d'un commit.",
1075
+ schema_change_source_only_title: "Modifier la source uniquement : faire un commit de la collection, laisser la base de données",
1076
+ schema_change_preview_only: "Vous pouvez prévisualiser cette modification, mais pas l'appliquer",
1077
+ schema_change_statements: "Instructions qui seront exécutées",
1078
+ schema_change_files: "Fichiers qui feront l'objet d'un commit",
1079
+ schema_change_message: "Message du commit",
1080
+ schema_change_edit_source_only: "Modifier la source uniquement",
1081
+ schema_change_committing: "Commit en cours…",
1082
+ schema_change_applying: "Application en cours…",
1083
+ schema_change_commit: "Faire le commit",
1084
+ schema_change_commit_and_apply: "Faire le commit et appliquer",
1085
+ studio_api_explorer_spec_refused_title: "Cette session ne peut pas lire la spécification de l'API",
1086
+ studio_api_explorer_spec_failed_title: "Impossible de charger la spécification de l'API",
1087
+ studio_api_explorer_spec_refused_body: "L'accès de la console à l'API de ce projet a été refusé. Cela signifie généralement que la session a expiré (reconnectez-vous) ou que l'accès de la console a été désactivé pour ce projet dans les Paramètres.",
1088
+ studio_api_explorer_spec_failed_body: "Le projet a répondu, mais pas avec une spécification que cet explorateur peut lire. Son API n'est pas touchée ; seule cette page l'est.",
1022
1089
  db_column_type: "Type de colonne de base de données",
1023
1090
  primary_key_unique_id: "Clé primaire / ID unique",
1024
1091
  spread_children_as_columns: "Étendre les enfants en colonnes",
1025
1092
  mode: "Mode",
1026
1093
  timezone: "Fuseau horaire",
1027
1094
  target_collection: "Collection cible",
1095
+ column_type_default: "Par défaut ({{type}})",
1096
+ column_type_uuid_forced: "uuid (imposé par la clé primaire)",
1097
+ column_type_varchar: "varchar (longueur variable)",
1098
+ column_type_text: "text (illimité)",
1099
+ column_type_char: "char (longueur fixe)",
1100
+ column_type_timestamp: "timestamp (avec fuseau horaire)",
1101
+ column_type_caption_string: "Facultatif : un autre type de colonne en base de données pour ce champ texte.",
1102
+ column_type_caption_number: "Facultatif : un autre type de colonne en base de données pour ce champ numérique.",
1103
+ column_type_caption_date: "Facultatif : un autre type de colonne en base de données pour ce champ date.",
1104
+ primary_key_manual: "Oui (saisie manuelle)",
1105
+ primary_key_generated_string: "Oui (UUID/chaîne générée automatiquement)",
1106
+ primary_key_identity: "Oui (auto-incrément/identity)",
1107
+ primary_key_increment: "Oui (incrément)",
1108
+ primary_key_strategy: "Oui ({{strategy}})",
1109
+ primary_key_caption: "Définir comme clé primaire et configurer la stratégie de génération des ID.",
1028
1110
  storage_file_name: "Nom du fichier",
1029
1111
  storage_path: "Chemin de stockage",
1030
1112
  storage_max_size: "Taille maximale (en octets)",
@@ -1040,6 +1122,14 @@ var fr = {
1040
1122
  storage_include_bucket_url: "Inclure l'URL du bucket (s3://...) dans la valeur enregistrée",
1041
1123
  storage_save_url: "Enregistrer l'URL au lieu du chemin de stockage",
1042
1124
  datetime_automatic_value: "Valeur automatique",
1125
+ datetime_mode_date_time: "Date/heure",
1126
+ datetime_mode_date: "Date",
1127
+ datetime_auto_value_none: "Aucune",
1128
+ datetime_auto_value_on_create: "À la création",
1129
+ datetime_auto_value_on_update: "À chaque mise à jour",
1130
+ datetime_auto_value_caption: "Mettre à jour ce champ automatiquement à la création ou à la mise à jour de l'enregistrement",
1131
+ datetime_timezone_local: "Fuseau horaire local",
1132
+ datetime_timezone_caption: "Fuseau horaire pour l'affichage et la saisie des dates. Les valeurs sont toujours enregistrées en UTC.",
1043
1133
  markdown_paste_behavior: "Comportement au collage",
1044
1134
  entity_saved: "Enregistré",
1045
1135
  more_actions: "Plus d'actions",
@@ -1315,6 +1405,61 @@ var fr = {
1315
1405
  studio_rls_nothing_changed: "Rien n'a changé, donc rien n'a été enregistré.",
1316
1406
  studio_branches_unavailable_title: "Le branchement de base de données n'est pas disponible",
1317
1407
  studio_branches_unavailable_body: "Le branchement requiert un backend Postgres avec une connexion administrateur. Définissez ADMIN_CONNECTION_STRING dans l'environnement du backend.",
1408
+ studio_branch_diff_tab_schema: "Schéma et politiques RLS",
1409
+ studio_branch_diff_tab_data: "Modifications des données",
1410
+ studio_branch_diff_tab_details: "Détails",
1411
+ studio_branch_diff_merge: "Fusionner dans {{target}}",
1412
+ studio_branch_diff_failed: "Impossible de comparer cette branche",
1413
+ studio_branch_diff_denied_title: "Vous ne pouvez pas examiner cette branche",
1414
+ studio_branch_diff_denied_hint: "Examiner une branche demande le scope database:write : son diff montre des lignes des deux bases, lues hors de la sécurité au niveau des lignes.",
1415
+ studio_branch_diff_unreadable: "Le serveur a répondu par autre chose qu'un diff de branche.",
1416
+ studio_branch_diff_no_api: "Ce panneau n'a pas d'adresse de backend où lire le diff de la branche.",
1417
+ studio_branch_diff_fork_unknown: "Le moment où cette branche a été créée n'a pas pu être lu : chaque ligne qui diffère compte donc comme un changement de la branche. Une fusion annulerait aussi ce que {{target}} a changé depuis.",
1418
+ studio_branch_diff_schema_empty: "Aucune modification de schéma ni de politique par rapport à {{target}}.",
1419
+ studio_branch_diff_schema_not_merged: "Les modifications de schéma et de politiques sont affichées pour examen. Une fusion ne les applique jamais : elles relèvent de vos collections et de leurs migrations.",
1420
+ studio_branch_diff_object_table: "Table",
1421
+ studio_branch_diff_object_column: "Colonne",
1422
+ studio_branch_diff_object_policy: "Politique",
1423
+ studio_branch_diff_object_rls: "Sécurité au niveau des lignes",
1424
+ studio_branch_diff_object_constraint: "Contrainte",
1425
+ studio_branch_diff_object_index: "Index",
1426
+ studio_branch_diff_object_trigger: "Trigger",
1427
+ studio_branch_diff_object_enum: "Type enum",
1428
+ studio_branch_diff_object_view: "Vue",
1429
+ studio_branch_diff_object_function: "Fonction",
1430
+ studio_branch_diff_change_added: "Ajouté",
1431
+ studio_branch_diff_change_dropped: "Supprimé",
1432
+ studio_branch_diff_change_altered: "Modifié",
1433
+ studio_branch_diff_data_empty: "La branche n'a modifié aucune ligne par rapport à {{target}}.",
1434
+ studio_branch_diff_row_inserted: "Insérée",
1435
+ studio_branch_diff_row_updated: "Mise à jour",
1436
+ studio_branch_diff_row_deleted: "Supprimée",
1437
+ studio_branch_diff_row_conflict: "Conflit",
1438
+ studio_branch_diff_conflicts: "{{count}} conflits",
1439
+ studio_branch_diff_target_changes: "{{count}} lignes ont changé uniquement dans {{target}} depuis la création de la branche. Une fusion les conserve.",
1440
+ studio_branch_diff_target_changes_referencing: "{{count}} lignes ont changé uniquement sur {{target}} depuis la création de la branche. {{reached}} d'entre elles référencent des lignes que la branche a supprimées : un merge les garde, sauf si la branche gagne ce conflit.",
1441
+ studio_branch_diff_referenced_by: "Des lignes que {{target}} a écrites depuis la création de la branche référencent encore des lignes que la branche a supprimées ici : {{tables}}. Chacune compte comme un conflit.",
1442
+ studio_branch_diff_row_counts: "Lignes : {{targetCount}} dans {{target}}, {{branchCount}} dans la branche.",
1443
+ studio_branch_diff_column_change: "Changement",
1444
+ studio_branch_diff_column_key: "Clé primaire",
1445
+ studio_branch_diff_column_values: "Valeurs",
1446
+ studio_branch_diff_samples_shown: "{{shown}} lignes modifiées affichées sur {{total}}.",
1447
+ studio_branch_diff_merge_title: "Fusionner {{branch}} dans {{target}}",
1448
+ studio_branch_diff_merge_writes: "Ceci écrit les lignes de la branche dans {{target}} : {{inserted}} insérées, {{updated}} mises à jour et {{deleted}} supprimées.",
1449
+ studio_branch_diff_merge_target_kept: "Rien de ce que {{target}} a changé depuis la création de la branche n'est touché.",
1450
+ studio_branch_diff_merge_target_kept_count: "Les {{count}} lignes que {{target}} a changées depuis la création de la branche restent telles quelles.",
1451
+ studio_branch_diff_merge_schema_skipped: "Les {{count}} modifications de schéma et de politiques ne sont pas fusionnées. Appliquez-les avec vos migrations (rebase db push).",
1452
+ studio_branch_diff_merge_conflicts: "{{count}} lignes ont changé des deux côtés. Quelle version l'emporte ?",
1453
+ studio_branch_diff_merge_referenced_conflicts: "Certaines sont des lignes que la branche a supprimées et que {{count}} lignes écrites depuis par {{target}} référencent encore : {{tables}}. Garder la version de {{target}} garde ces lignes et celles qui les référencent.",
1454
+ studio_branch_diff_merge_referenced_reached: "Si la branche gagne, des lignes que {{count}} lignes écrites depuis par {{target}} référencent encore sont supprimées, et les clés étrangères atteignent ces lignes : {{tables}}. Les autres lignes que {{target}} a changées restent telles quelles.",
1455
+ studio_branch_diff_conflict_abort: "Aucune : ne rien fusionner",
1456
+ studio_branch_diff_conflict_branch: "Celle de la branche ({{branch}})",
1457
+ studio_branch_diff_conflict_target: "Celle de {{target}} : la laisser telle quelle",
1458
+ studio_branch_diff_merge_blocked: "{{count}} tables aux lignes modifiées ne peuvent pas être fusionnées :",
1459
+ studio_branch_diff_merge_skip_blocked: "Fusionner les autres tables et laisser celles-ci telles quelles",
1460
+ studio_branch_diff_merge_atomic: "Tout est écrit en une seule transaction, ou rien. Si l'une des deux bases a changé depuis la lecture de ce diff, rien n'est écrit et le diff est rechargé.",
1461
+ studio_branch_diff_merge_confirm: "Fusionner",
1462
+ studio_branch_diff_merged: "{{count}} lignes fusionnées dans {{target}}",
1318
1463
  studio_backups_not_configured_title: "Les sauvegardes ne sont pas configurées",
1319
1464
  studio_backups_not_configured_body: "Définissez BACKUP_DESTINATION sur un chemin local ou une URL s3:// ou gs://, puis créez une sauvegarde avec `rebase db backup` ou un cron planifié.",
1320
1465
  studio_cron_empty_title: "Aucune tâche cron enregistrée",
@@ -1406,6 +1551,34 @@ var fr = {
1406
1551
  studio_storage_folder_exists: "Le dossier « {{name}} » existe déjà",
1407
1552
  studio_storage_folder_created: "Dossier « {{name}} » créé",
1408
1553
  studio_storage_create_folder_failed: "Impossible de créer le dossier",
1554
+ studio_branches_empty: "Aucune branche pour l'instant. Créez-en une pour travailler sur une copie isolée de la base de données.",
1555
+ studio_branches_create_action: "Créer une branche",
1556
+ studio_branches_empty_detail: "Créez une branche pour commencer",
1557
+ studio_branches_select_prompt: "Sélectionnez une branche pour voir ses détails",
1558
+ studio_branches_list_from: "depuis {{parent}} · {{when}}",
1559
+ studio_branches_created_from: "Créée depuis",
1560
+ studio_branches_branch_name: "Nom de la branche",
1561
+ studio_branches_source_database: "Base de données source",
1562
+ studio_branches_created: "Créée",
1563
+ studio_branches_size: "Taille",
1564
+ studio_branches_usage_title: "Comment utiliser cette branche",
1565
+ studio_branches_usage_switch: "Pointez ce checkout dessus. Toutes les commandes suivantes l'utilisent :",
1566
+ studio_branches_usage_off: "Revenez à la base de données principale avec :",
1567
+ studio_branches_usage_isolated: "Les modifications faites sur cette branche n'affectent pas la base de données principale.",
1568
+ studio_branches_connection_details: "Détails de connexion",
1569
+ studio_branches_row_database: "Base de données :",
1570
+ studio_branches_row_connect: "Se connecter avec :",
1571
+ studio_branches_row_branched_from: "Branchée depuis :",
1572
+ studio_branches_row_created_at: "Créée le :",
1573
+ studio_branches_create_title: "Créer une nouvelle branche",
1574
+ studio_branches_create_body: "Créez une copie isolée de la base de données. La branche sera un clone complet de la base de données source à cet instant.",
1575
+ studio_branches_name_placeholder: "ex. feature-auth, staging, preview-pr-42",
1576
+ studio_branches_source_main: "Par défaut (base de données principale)",
1577
+ studio_branches_creating: "Création…",
1578
+ studio_branches_delete_title: "Supprimer la branche",
1579
+ studio_branches_delete_body: "Voulez-vous vraiment supprimer définitivement la branche « {{name}} » ? Cette action est irréversible et toutes les données de cette branche seront perdues.",
1580
+ studio_branches_created_snackbar: "Branche « {{name}} » créée",
1581
+ studio_branches_deleted_snackbar: "Branche « {{name}} » supprimée",
1409
1582
  insights_period_last_days: "{{count}} derniers jours",
1410
1583
  insights_period_last_days_one: "Dernier jour",
1411
1584
  insights_previous_period_value: "{{count}} jours précédents : {{value}}",
@@ -1425,10 +1598,11 @@ var fr = {
1425
1598
  copy_column_name: "Copier le nom de la colonne",
1426
1599
  generate_sql_templates: "Générer des modèles SQL",
1427
1600
  select_row: "Sélectionner {{id}}",
1601
+ relation_open_record: "Ouvrir {{label}}",
1428
1602
  select: "Sélectionner",
1429
1603
  open_view: "Ouvrir la vue"
1430
1604
  };
1431
1605
  //#endregion
1432
1606
  export { fr };
1433
1607
 
1434
- //# sourceMappingURL=fr-CnXidmZf.js.map
1608
+ //# sourceMappingURL=fr-nJHADzlI.js.map