@brftech/filex-core 0.32.0 → 0.33.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 (52) hide show
  1. package/dist/{CsvViewer-DxujFEM3.js → CsvViewer-CqWeV8VO.js} +22 -22
  2. package/dist/CsvViewer-CqWeV8VO.js.map +1 -0
  3. package/dist/{DrawioViewer-DCvWnX2t.js → DrawioViewer-BNALOB04.js} +16 -16
  4. package/dist/DrawioViewer-BNALOB04.js.map +1 -0
  5. package/dist/filex-core.js +5932 -5841
  6. package/dist/filex-core.js.map +1 -1
  7. package/dist/filex-core.umd.cjs +43 -43
  8. package/dist/filex-core.umd.cjs.map +1 -1
  9. package/dist/index.d.ts +49 -8
  10. package/package.json +1 -1
  11. package/src/FileExplorer.vue +267 -235
  12. package/src/components/CommandPalette.vue +3 -3
  13. package/src/components/ConnectionsPanel.vue +2 -1
  14. package/src/components/GalleryView.vue +3 -3
  15. package/src/components/GridView.vue +4 -4
  16. package/src/components/ListView.vue +4 -4
  17. package/src/components/NFSExportsPanel.vue +2 -1
  18. package/src/components/PendingOpsTray.vue +1 -1
  19. package/src/components/PresenceBar.vue +3 -2
  20. package/src/components/S3KeysPanel.vue +2 -1
  21. package/src/components/SSHKeysPanel.vue +2 -1
  22. package/src/components/SecondaryPane.vue +13 -12
  23. package/src/components/StarButton.vue +2 -1
  24. package/src/components/TabBar.vue +2 -2
  25. package/src/components/ThemeGallery.vue +1 -1
  26. package/src/components/TokensPanel.vue +2 -1
  27. package/src/components/Toolbar.vue +9 -9
  28. package/src/composables/useFileApi.ts +4 -2
  29. package/src/composables/useLocale.ts +1 -1
  30. package/src/composables/useOperations.ts +3 -3
  31. package/src/composables/usePendingOps.ts +1 -1
  32. package/src/composables/useTabs.ts +1 -1
  33. package/src/composables/useUploadChunked.ts +39 -7
  34. package/src/index.ts +2 -2
  35. package/src/lib/themes.ts +7 -7
  36. package/src/lib/transfer.ts +6 -6
  37. package/src/locales/en.ts +32 -0
  38. package/src/locales/index.ts +1 -0
  39. package/src/locales/resolve.ts +66 -0
  40. package/src/locales/tr.ts +33 -0
  41. package/src/modals/ConvertModal.vue +14 -12
  42. package/src/modals/NewFolderModal.vue +1 -1
  43. package/src/modals/PermissionsModal.vue +12 -11
  44. package/src/modals/PreviewModal.vue +9 -9
  45. package/src/styles/base.css +29 -26
  46. package/src/styles/variables.css +1 -1
  47. package/src/types/ExplorerConfig.ts +1 -1
  48. package/src/types/FileNode.ts +1 -1
  49. package/src/viewers/CsvViewer.vue +4 -4
  50. package/src/viewers/DrawioViewer.vue +2 -2
  51. package/dist/CsvViewer-DxujFEM3.js.map +0 -1
  52. package/dist/DrawioViewer-DCvWnX2t.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -672,6 +672,15 @@ declare type Density = 'comfortable' | 'compact';
672
672
  */
673
673
  export declare function deriveKek(password: string, salt: Uint8Array, iterations: number): Promise<CryptoKey>;
674
674
 
675
+ /**
676
+ * The browser's preference, or `en`.
677
+ *
678
+ * ⚠ Guarded for a non-browser runtime: this package is imported by SSR and by
679
+ * unit tests under Node, where `navigator` is absent — and an exception here
680
+ * would take down the whole explorer over a language choice.
681
+ */
682
+ export declare function detectLocale(): LocaleCode;
683
+
675
684
  export declare const E2E_DEFAULT_ITERATIONS = 600000;
676
685
 
677
686
  /** The only escrow algorithm this version understands. */
@@ -1014,7 +1023,7 @@ export declare interface ExplorerConfig {
1014
1023
  */
1015
1024
  onlyOfficeConfig?: string;
1016
1025
  /**
1017
- * Standalone editor page base — when set, "" on an office file
1026
+ * Standalone editor page base — when set, "Open" on an office file
1018
1027
  * opens `${openPageBase}?path=...&mode=edit` in a new tab instead
1019
1028
  * of the modal preview.
1020
1029
  */
@@ -2221,7 +2230,7 @@ export declare interface OperationInput {
2221
2230
  percent: number | null;
2222
2231
  status: OperationStatus;
2223
2232
  error?: string | null;
2224
- /** Queue op accepted but not started yet ("Sırada"). */
2233
+ /** Queue op accepted but not started yet ("Queued"). */
2225
2234
  queued?: boolean;
2226
2235
  /** Progress counters for queue ops (3/5 items). */
2227
2236
  doneCount?: number;
@@ -2249,9 +2258,9 @@ export declare interface OperationInput {
2249
2258
  * are registered per row so the panel can route user intent back to the
2250
2259
  * owning surface without the store knowing any transport details.
2251
2260
  *
2252
- * Lifecycle rules (per the İşlem Merkezi contract):
2261
+ * Lifecycle rules (per the Operations Center contract):
2253
2262
  * - running rows live in `active`;
2254
- * - done/aborted rows linger in `active` for DONE_LINGER_MS ("bitti"
2263
+ * - done/aborted rows linger in `active` for DONE_LINGER_MS ("done"
2255
2264
  * flash) then move to `history` (session-only, capped);
2256
2265
  * - error rows are STICKY: they stay in `active` until the user
2257
2266
  * dismisses or retries them — even after the source list swept them
@@ -2435,6 +2444,31 @@ declare interface ResolveEmailResponse {
2435
2444
  */
2436
2445
  export declare function resolveEndpoints(config: ExplorerConfig): EndpointMap;
2437
2446
 
2447
+ /**
2448
+ * Resolve the locale to render in.
2449
+ *
2450
+ * Order, and the reasoning for it:
2451
+ *
2452
+ * 1. **What the host asked for.** An explicit `locale` always wins. A host
2453
+ * that names a language has made a decision, and guessing over it would
2454
+ * make the prop advisory.
2455
+ * 2. **What the browser asks for**, via `navigator.languages` /
2456
+ * `navigator.language` — the same signal `Accept-Language` carries, and
2457
+ * the reason a Turkish reader gets Turkish without the embedder doing
2458
+ * anything.
2459
+ * 3. **`en`.**
2460
+ *
2461
+ * ⚠ Step 2 makes the same embed render differently for two people. That is
2462
+ * deliberate — it is what "follow the browser" means — but it also means a
2463
+ * screenshot, a test or a bug report about this component must state its
2464
+ * locale, because the component alone no longer determines it. Pass an
2465
+ * explicit `locale` anywhere the answer has to be stable.
2466
+ *
2467
+ * Matching is on the primary subtag, so `tr-TR` and `en-GB` resolve; anything
2468
+ * with no catalogue falls through rather than half-rendering.
2469
+ */
2470
+ export declare function resolveLocale(explicit?: LocaleCode | '' | null): LocaleCode;
2471
+
2438
2472
  /** How long an unfinished record is worth keeping. The server sweeps its own
2439
2473
  * staging after FILEX_UPLOAD_STAGING_TTL (24 h by default); a note that
2440
2474
  * outlives the bytes it describes only produces a confusing "resuming…" that
@@ -3120,10 +3154,17 @@ export declare interface UploadOptions {
3120
3154
  onDone?: (job: UploadJob, result: UploadResult) => void;
3121
3155
  onError?: (job: UploadJob, err: Error) => void;
3122
3156
  /**
3123
- * Wait for the backend transfer before resolving. Default false: the node is
3124
- * listed the moment the commit is accepted, which is the whole point of
3125
- * staging. `true` is for a caller that must not report success until the
3126
- * bytes are on the driver.
3157
+ * Wait for the backend transfer before resolving. Defaults to TRUE, because
3158
+ * "the server has the bytes" and "the storage has the bytes" are different
3159
+ * claims and only the second one is an upload.
3160
+ *
3161
+ * ⚠ It used to default to false and no caller ever set it, so the job went
3162
+ * straight to `done` on the 202 — a transfer that failed afterwards in the
3163
+ * ops worker left the user looking at a finished upload for a file that was
3164
+ * never stored (issue #16: every file over the chunk threshold, on every S3
3165
+ * backend). The `transferring` phase is short for a healthy storage and is
3166
+ * the only place a failure can still be shown, so it is the default; pass
3167
+ * false to opt out where the wait is genuinely unwanted.
3127
3168
  */
3128
3169
  waitForTransfer?: boolean;
3129
3170
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brftech/filex-core",
3
- "version": "0.32.0",
3
+ "version": "0.33.0",
4
4
  "description": "filex core — Vue 3 source of truth for the filex file manager (FileExplorer + ConnectionsPanel SFCs, composables, types)",
5
5
  "type": "module",
6
6
  "main": "./dist/filex-core.umd.cjs",