@vueye-table/core 3.0.0-alpha.3 → 3.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,6 +9,8 @@ Nested and adjacency trees share sibling sorting, hierarchical filtering, cascad
9
9
  immutable child edits and lazy loading with injected cancellation. Read the
10
10
  [tree guide](https://github.com/boussadjra/vueye-table/blob/main/docs/guide/trees.md) for the API and runnable example.
11
11
 
12
+ Append cursor batches, upsert keyed source records, or consume cancellable async iterables without clearing local edits. Read the [streaming guide](https://github.com/boussadjra/vueye-table/blob/main/docs/guide/streaming.md) and [runnable source example](https://github.com/boussadjra/vueye-table/blob/main/examples/streaming.ts) for load state, conflict reporting and undo retention.
13
+
12
14
  ```bash
13
15
  pnpm add @vueye-table/core
14
16
  ```
package/dist/index.d.ts CHANGED
@@ -39,7 +39,7 @@ declare const DEFAULT_PAGE_SIZE = 10;
39
39
  //#endregion
40
40
  //#region src/issues.d.ts
41
41
  /** Every problem the engine can report. The union grows in minor versions. */
42
- type TableIssueCode = "duplicate_row_key" | "unknown_column" | "invalid_page_size" | "unknown_row" | "read_only_cell" | "invalid_value" | "invalid_expanded" | "unsafe_path" | "paste_truncated" | "invalid_paste_limit" | "invalid_virtual_option" | "invalid_virtual_size" | "invalid_virtual_viewport" | "duplicate_virtual_key" | "tree_cycle" | "tree_depth_exceeded" | "tree_orphan" | "tree_duplicate_key" | "tree_load_error" | "invalid_tree_option";
42
+ type TableIssueCode = "stream_error" | "invalid_stream_option" | "ingestion_conflict" | "invalid_ingestion" | "duplicate_row_key" | "unknown_column" | "invalid_page_size" | "unknown_row" | "read_only_cell" | "invalid_value" | "validation_failed" | "invalid_row_operation" | "invalid_expanded" | "unsafe_path" | "paste_truncated" | "invalid_paste_limit" | "invalid_virtual_option" | "invalid_virtual_size" | "invalid_virtual_viewport" | "duplicate_virtual_key" | "tree_cycle" | "tree_depth_exceeded" | "tree_orphan" | "tree_duplicate_key" | "tree_load_error" | "invalid_tree_option";
43
43
  /**
44
44
  * A problem the engine recovered from. Invalid input is never dropped silently: the engine falls
45
45
  * back to something safe and reports what it did here.
@@ -49,6 +49,7 @@ interface TableIssue {
49
49
  readonly message: string;
50
50
  readonly column?: string | undefined;
51
51
  readonly rowKey?: RowKey | undefined;
52
+ readonly validationCode?: string | undefined;
52
53
  }
53
54
  //#endregion
54
55
  //#region src/path.d.ts
@@ -67,6 +68,26 @@ declare function getPath(source: unknown, path: string): unknown;
67
68
  */
68
69
  declare function setPath<T>(source: T, path: string, value: unknown, onIssue?: (problem: TableIssue) => void): T;
69
70
  //#endregion
71
+ //#region src/validation.d.ts
72
+ type ValidationResult = true | string | {
73
+ readonly message: string;
74
+ readonly code?: string;
75
+ };
76
+ type Validator<TValue, TRow> = (value: TValue, row: TRow) => ValidationResult | Promise<ValidationResult>;
77
+ interface EditorSpec {
78
+ readonly kind: "text" | "number" | "select" | "checkbox" | "date";
79
+ readonly options?: readonly (string | number | boolean | null)[] | undefined;
80
+ readonly min?: number | undefined;
81
+ readonly max?: number | undefined;
82
+ readonly maxLength?: number | undefined;
83
+ readonly pattern?: string | undefined;
84
+ }
85
+ interface PendingCell {
86
+ readonly rowKey: RowKey;
87
+ readonly column: string;
88
+ readonly value: unknown;
89
+ }
90
+ //#endregion
70
91
  //#region src/column.d.ts
71
92
  type ColumnAlign = "start" | "center" | "end";
72
93
  /** How typed or pasted text becomes a value when a column has no `parse`. */
@@ -108,6 +129,9 @@ interface ColumnOptions<TRow, TValue> {
108
129
  * column's `type`.
109
130
  */
110
131
  readonly parse?: ((input: string, row: TRow) => TValue) | undefined;
132
+ readonly validate?: Validator<TValue, TRow> | undefined;
133
+ /** Serializable editor hints. Core enforces their constraints for every write. */
134
+ readonly editor?: EditorSpec | undefined;
111
135
  /** Free-form data for renderers. The engine never reads it. */
112
136
  readonly meta?: Readonly<Record<string, unknown>> | undefined;
113
137
  }
@@ -302,6 +326,8 @@ interface UndoStack<TEntry> {
302
326
  /** Take the most recently undone batch to redo, if any. */
303
327
  redo(): TEntry | undefined;
304
328
  clear(): void;
329
+ /** Reconcile retained user batches after source ingestion. Undefined drops a batch. */
330
+ transform(map: (entry: TEntry) => TEntry | undefined): void;
305
331
  }
306
332
  declare function createUndoStack<TEntry>(limit?: number): UndoStack<TEntry>;
307
333
  //#endregion
@@ -340,6 +366,8 @@ interface Virtualizer {
340
366
  setViewport(offset: number, size: number): void;
341
367
  measure(key: RowKey, size: number): void;
342
368
  getWindow(): VirtualWindow;
369
+ /** Read an item's layout without moving the viewport; out-of-range indices return undefined. */
370
+ getItem(index: number): VirtualItem | undefined;
343
371
  getOffsetForIndex(index: number, align?: VirtualAlign): number;
344
372
  subscribe(listener: (view: VirtualWindow) => void): () => void;
345
373
  }
@@ -353,6 +381,33 @@ declare function createVirtualizer(initialOptions: VirtualizerOptions): Virtuali
353
381
  */
354
382
  declare function humanize(id: string): string;
355
383
  //#endregion
384
+ //#region src/tree.d.ts
385
+ /** A runtime supplies its own cancellation primitive; core needs no platform globals. */
386
+ interface TreeLoadSignal {
387
+ readonly aborted: boolean;
388
+ }
389
+ interface TreeLoadController<TSignal extends TreeLoadSignal = TreeLoadSignal> {
390
+ readonly signal: TSignal;
391
+ abort(): void;
392
+ }
393
+ type TreeFilter = "ancestors" | "descendants" | "strict";
394
+ type TreePagination = "root" | "row";
395
+ type ChildStatus = "idle" | "loading" | "loaded" | "error";
396
+ interface TreeOptions<TRow, TSignal extends TreeLoadSignal = TreeLoadSignal> {
397
+ readonly getChildren?: ((row: TRow) => readonly TRow[] | undefined) | undefined;
398
+ /** Immutable counterpart of getChildren, required when editing nested descendants. */
399
+ readonly setChildren?: ((row: TRow, children: readonly TRow[]) => TRow) | undefined;
400
+ readonly getParentKey?: ((row: TRow) => RowKey | null | undefined) | undefined;
401
+ readonly hasChildren?: ((row: TRow) => boolean) | undefined;
402
+ readonly loadChildren?: ((row: TableRow<TRow>, signal: TSignal) => Promise<readonly TRow[]>) | undefined;
403
+ /** Required with loadChildren. Supply a controller from the caller's runtime. */
404
+ readonly createChildLoadController?: (() => TreeLoadController<TSignal>) | undefined;
405
+ readonly treeFilter?: TreeFilter | undefined;
406
+ readonly paginateBy?: TreePagination | undefined;
407
+ /** Maximum edges from a root. Deeper rows recover as roots. Defaults to 1,000. */
408
+ readonly maxDepth?: number | undefined;
409
+ }
410
+ //#endregion
356
411
  //#region src/row.d.ts
357
412
  /**
358
413
  * One row of data as the engine sees it: its key, its position in the source data, and cached
@@ -371,6 +426,8 @@ interface TableRow<TRow> {
371
426
  readonly childStatus: ChildStatus;
372
427
  /** Coverage of this row and its loaded descendants. */
373
428
  readonly selection: "none" | "some" | "all";
429
+ readonly isDirty: boolean;
430
+ readonly cellIssues: ReadonlyMap<string, TableIssue> | undefined;
374
431
  getValue(columnId: string): unknown;
375
432
  /** The formatted text of a cell, as shown, searched, copied, and exported. */
376
433
  getDisplay(columnId: string): string;
@@ -388,40 +445,6 @@ interface TableRenderItem<TRow> {
388
445
  /** Disjoint namespaces and typed keys avoid collisions between 1, "1", and detail-like ids. */
389
446
  declare function getRowItemKey(key: RowKey, kind?: RowItemKind): string;
390
447
  //#endregion
391
- //#region src/tree.d.ts
392
- /** A runtime supplies its own cancellation primitive; core needs no platform globals. */
393
- interface TreeLoadSignal {
394
- readonly aborted: boolean;
395
- }
396
- interface TreeLoadController<TSignal extends TreeLoadSignal = TreeLoadSignal> {
397
- readonly signal: TSignal;
398
- abort(): void;
399
- }
400
- type TreeFilter = "ancestors" | "descendants" | "strict";
401
- type TreePagination = "root" | "row";
402
- type ChildStatus = "idle" | "loading" | "loaded" | "error";
403
- interface TreeOptions<TRow, TSignal extends TreeLoadSignal = TreeLoadSignal> {
404
- readonly getChildren?: ((row: TRow) => readonly TRow[] | undefined) | undefined;
405
- /** Immutable counterpart of getChildren, required when editing nested descendants. */
406
- readonly setChildren?: ((row: TRow, children: readonly TRow[]) => TRow) | undefined;
407
- readonly getParentKey?: ((row: TRow) => RowKey | null | undefined) | undefined;
408
- readonly hasChildren?: ((row: TRow) => boolean) | undefined;
409
- readonly loadChildren?: ((row: TableRow<TRow>, signal: TSignal) => Promise<readonly TRow[]>) | undefined;
410
- /** Required with loadChildren. Supply a controller from the caller's runtime. */
411
- readonly createChildLoadController?: (() => TreeLoadController<TSignal>) | undefined;
412
- readonly treeFilter?: TreeFilter | undefined;
413
- readonly paginateBy?: TreePagination | undefined;
414
- /** Maximum edges from a root. Deeper rows recover as roots. Defaults to 1,000. */
415
- readonly maxDepth?: number | undefined;
416
- }
417
- //#endregion
418
- //#region src/infer.d.ts
419
- /**
420
- * Columns for data that has none declared: one path column per leaf of the first `sample` rows,
421
- * nested objects flattened into dotted paths, in first-seen order.
422
- */
423
- declare function inferColumns<TRow>(rows: readonly TRow[], sample?: number): readonly ColumnDef<TRow>[];
424
- //#endregion
425
448
  //#region src/pipeline.d.ts
426
449
  /**
427
450
  * Keep rows that pass every column filter and contain every search term in at least one
@@ -451,6 +474,35 @@ type PageItem = {
451
474
  */
452
475
  declare function paginationItems(page: number, pageCount: number, siblings?: number): readonly PageItem[];
453
476
  //#endregion
477
+ //#region src/stream.d.ts
478
+ type LoadState = "idle" | "loading" | "streaming" | "done" | "error" | "aborted";
479
+ /** Structural cancellation, compatible with the caller's native signal. */
480
+ interface StreamSignal {
481
+ readonly aborted: boolean;
482
+ addEventListener?(type: "abort", listener: () => void, options?: {
483
+ readonly once?: boolean;
484
+ }): void;
485
+ removeEventListener?(type: "abort", listener: () => void): void;
486
+ }
487
+ interface StreamOptions {
488
+ readonly signal?: StreamSignal | undefined;
489
+ readonly batchSize?: number | undefined;
490
+ readonly expectedRowCount?: number | undefined;
491
+ readonly mode?: "append" | "upsert" | undefined;
492
+ }
493
+ interface DataIngestionResult {
494
+ readonly status: "applied" | "partial" | "rejected" | "unchanged";
495
+ readonly appended: number;
496
+ readonly replaced: number;
497
+ readonly removed: number;
498
+ readonly issues: readonly TableIssue[];
499
+ }
500
+ interface StreamResult {
501
+ readonly status: "done" | "error" | "aborted";
502
+ readonly receivedRowCount: number;
503
+ readonly issues: readonly TableIssue[];
504
+ }
505
+ //#endregion
454
506
  //#region src/table.d.ts
455
507
  type SelectionMode = "none" | "single" | "multiple";
456
508
  type ExpandMode = "single" | "multiple";
@@ -486,9 +538,11 @@ interface TableOptions<TRow, TSignal extends TreeLoadSignal = TreeLoadSignal> ex
486
538
  readonly manual?: boolean | undefined;
487
539
  /** The total number of rows across all pages, for `manual` tables. */
488
540
  readonly rowCount?: number | undefined;
541
+ /** Caller-owned source hint, independent of filtering and pagination. */
542
+ readonly expectedRowCount?: number | undefined;
489
543
  /** Called after every state change a table operation makes, not after `setState`. */
490
544
  readonly onStateChange?: ((state: TableState, previous: TableState) => void) | undefined;
491
- /** Called with the new data after an edit, a paste, an undo, or a redo. */
545
+ /** Called with new data after edits or ingestion; ingestion has an empty cell-change list. */
492
546
  readonly onDataChange?: ((data: readonly TRow[], changes: readonly CellChange<TRow>[]) => void) | undefined;
493
547
  /** Called with the reasons whenever an edit, a paste, or a clear refuses some cells. */
494
548
  readonly onEditIssues?: ((issues: readonly TableIssue[]) => void) | undefined;
@@ -496,6 +550,11 @@ interface TableOptions<TRow, TSignal extends TreeLoadSignal = TreeLoadSignal> ex
496
550
  readonly historyLimit?: number | undefined;
497
551
  /** Bound clipboard parsing. Only complete cells inside the visible grid are applied. */
498
552
  readonly pasteLimit?: PasteLimit | undefined;
553
+ readonly validateRow?: ((next: TRow, previous: TRow) => ValidationResult | Promise<ValidationResult>) | undefined;
554
+ readonly asyncValidation?: "held" | "optimistic" | undefined;
555
+ readonly createRow?: (() => TRow) | undefined;
556
+ /** Immutable inverse of getParentKey for inserting adjacency children. */
557
+ readonly setParentKey?: ((row: TRow, parent: RowKey | undefined) => TRow) | undefined;
499
558
  }
500
559
  type SelectionCoverage = "none" | "some" | "all";
501
560
  interface SortInfo {
@@ -508,6 +567,9 @@ interface SortInfo {
508
567
  * frozen and replaced on each change, so comparing snapshots by identity detects a change.
509
568
  */
510
569
  interface TableSnapshot<TRow> {
570
+ readonly loadState: LoadState;
571
+ readonly loadedRowCount: number;
572
+ readonly expectedRowCount: number | undefined;
511
573
  readonly state: TableState;
512
574
  /** Visible columns in display order. */
513
575
  readonly columns: readonly TableColumn<TRow>[];
@@ -544,6 +606,7 @@ interface TableSnapshot<TRow> {
544
606
  readonly canUndo: boolean;
545
607
  readonly canRedo: boolean;
546
608
  readonly issues: readonly TableIssue[];
609
+ readonly pendingCells: readonly PendingCell[];
547
610
  isSelected(key: RowKey): boolean;
548
611
  getSort(columnId: string): SortInfo | undefined;
549
612
  getColumn(columnId: string): TableColumn<TRow> | undefined;
@@ -570,7 +633,7 @@ interface CellChange<TRow> {
570
633
  /** The row after the change. */
571
634
  readonly row: TRow;
572
635
  }
573
- type EditStatus = "applied" | "partial" | "rejected" | "unchanged";
636
+ type EditStatus = "applied" | "partial" | "rejected" | "unchanged" | "pending";
574
637
  /**
575
638
  * The outcome of a batch of edits. `partial` means some edits applied and others were refused;
576
639
  * each refusal is in `issues`.
@@ -579,6 +642,8 @@ interface EditResult<TRow> {
579
642
  readonly status: EditStatus;
580
643
  readonly changes: readonly CellChange<TRow>[];
581
644
  readonly issues: readonly TableIssue[];
645
+ readonly rowChanges: readonly RowChange<TRow>[];
646
+ readonly pendingCells: readonly PendingCell[];
582
647
  }
583
648
  interface CopyOptions {
584
649
  /** Prefix formula-like text with an apostrophe. Defaults to false for clipboard copies. */
@@ -605,6 +670,15 @@ interface ExportOptions extends CopyOptions {
605
670
  * about rendering; a framework binding subscribes to it and draws each snapshot.
606
671
  */
607
672
  interface DataTable<TRow> {
673
+ appendData(rows: readonly TRow[]): DataIngestionResult;
674
+ upsertData(rows: readonly TRow[]): DataIngestionResult;
675
+ removeData(keys: readonly RowKey[]): DataIngestionResult;
676
+ stream(source: AsyncIterable<readonly TRow[] | TRow>, options?: StreamOptions): Promise<StreamResult>;
677
+ insertRows(rows?: readonly TRow[], at?: InsertPosition): EditResult<TRow>;
678
+ removeRows(keys: readonly RowKey[]): EditResult<TRow>;
679
+ getPendingChanges(): PendingChanges<TRow>;
680
+ markSaved(keys?: readonly RowKey[]): void;
681
+ revert(keys?: readonly RowKey[]): EditResult<TRow>;
608
682
  getSnapshot(): TableSnapshot<TRow>;
609
683
  getState(): TableState;
610
684
  /** Called after every change with the new snapshot. Returns the unsubscribe function. */
@@ -665,5 +739,35 @@ interface DataTable<TRow> {
665
739
  /** Create a data table. */
666
740
  declare function createTable<TRow, TSignal extends TreeLoadSignal = TreeLoadSignal>(options: TableOptions<TRow, TSignal>): DataTable<TRow>;
667
741
  //#endregion
668
- export { type AnyColumnDef, type CellChange, type CellEdit, type CellInputEdit, type CellPosition, type CellRange, type CellValueEdit, type ChildStatus, type ColumnAlign, type ColumnDef, type ColumnOptions, type ColumnType, type ComputedColumnDef, type CopyOptions, DEFAULT_PAGE_SIZE, type DataTable, type DeepKeys, type EditResult, type EditStatus, type ExpandMode, type ExpandedState, type ExportOptions, type GridBounds, type GridCommand, type GridDirection, type GridKey, type GridSelection, type MoveOptions, type PageItem, type PaginationState, type ParseResult, type PasteLimit, type PathColumnDef, type PathValue, type RangeFilter, type RowItemKind, type RowKey, type SelectScope, type SelectionCoverage, type SelectionMode, type SortDirection, type SortInfo, type SortRule, type TableColumn, type TableIssue, type TableIssueCode, type TableOptions, type TableRenderItem, type TableRow, type TableSnapshot, type TableState, type TableStatePatch, type TreeFilter, type TreeLoadController, type TreeLoadSignal, type TreeOptions, type TreePagination, type UndoStack, type VirtualAlign, type VirtualItem, type VirtualWindow, type Virtualizer, type VirtualizerOptions, clampPage, clampPosition, columnLabel, compareValues, countPages, createTable, createUndoStack, createVirtualizer, defineColumns, filterRows, formatValue, fromA1, getPath, getRowItemKey, gridCommand, humanize, inferColumns, matchesFilter, moveSelection, paginateRows, paginationItems, parseAs, parseDelimited, rangeContains, resolveColumn, selectCell, selectionRange, setPath, sortRows, toA1, toDelimited, typeOf };
742
+ //#region src/pending-changes.d.ts
743
+ interface InsertPosition {
744
+ readonly before?: RowKey | undefined;
745
+ readonly parent?: RowKey | undefined;
746
+ }
747
+ interface RowChange<TRow> {
748
+ readonly kind: "inserted" | "removed";
749
+ readonly rowKey: RowKey;
750
+ readonly row: TRow;
751
+ readonly position: InsertPosition;
752
+ }
753
+ interface UpdatedRow<TRow> {
754
+ readonly rowKey: RowKey;
755
+ readonly row: TRow;
756
+ readonly previous: TRow;
757
+ readonly changes: readonly CellChange<TRow>[];
758
+ }
759
+ interface PendingChanges<TRow> {
760
+ readonly inserted: readonly RowChange<TRow>[];
761
+ readonly updated: readonly UpdatedRow<TRow>[];
762
+ readonly removed: readonly RowChange<TRow>[];
763
+ }
764
+ //#endregion
765
+ //#region src/infer.d.ts
766
+ /**
767
+ * Columns for data that has none declared: one path column per leaf of the first `sample` rows,
768
+ * nested objects flattened into dotted paths, in first-seen order.
769
+ */
770
+ declare function inferColumns<TRow>(rows: readonly TRow[], sample?: number): readonly ColumnDef<TRow>[];
771
+ //#endregion
772
+ export { type AnyColumnDef, type CellChange, type CellEdit, type CellInputEdit, type CellPosition, type CellRange, type CellValueEdit, type ChildStatus, type ColumnAlign, type ColumnDef, type ColumnOptions, type ColumnType, type ComputedColumnDef, type CopyOptions, DEFAULT_PAGE_SIZE, type DataIngestionResult, type DataTable, type DeepKeys, type EditResult, type EditStatus, type EditorSpec, type ExpandMode, type ExpandedState, type ExportOptions, type GridBounds, type GridCommand, type GridDirection, type GridKey, type GridSelection, type InsertPosition, type LoadState, type MoveOptions, type PageItem, type PaginationState, type ParseResult, type PasteLimit, type PathColumnDef, type PathValue, type PendingCell, type PendingChanges, type RangeFilter, type RowChange, type RowItemKind, type RowKey, type SelectScope, type SelectionCoverage, type SelectionMode, type SortDirection, type SortInfo, type SortRule, type StreamOptions, type StreamResult, type StreamSignal, type TableColumn, type TableIssue, type TableIssueCode, type TableOptions, type TableRenderItem, type TableRow, type TableSnapshot, type TableState, type TableStatePatch, type TreeFilter, type TreeLoadController, type TreeLoadSignal, type TreeOptions, type TreePagination, type UndoStack, type UpdatedRow, type ValidationResult, type Validator, type VirtualAlign, type VirtualItem, type VirtualWindow, type Virtualizer, type VirtualizerOptions, clampPage, clampPosition, columnLabel, compareValues, countPages, createTable, createUndoStack, createVirtualizer, defineColumns, filterRows, formatValue, fromA1, getPath, getRowItemKey, gridCommand, humanize, inferColumns, matchesFilter, moveSelection, paginateRows, paginationItems, parseAs, parseDelimited, rangeContains, resolveColumn, selectCell, selectionRange, setPath, sortRows, toA1, toDelimited, typeOf };
669
773
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/state.ts","../src/issues.ts","../src/path.ts","../src/column.ts","../src/delimited.ts","../src/grid.ts","../src/undo-stack.ts","../src/virtualizer.ts","../src/humanize.ts","../src/row.ts","../src/tree.ts","../src/infer.ts","../src/pipeline.ts","../src/table.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/state.ts","../src/issues.ts","../src/path.ts","../src/validation.ts","../src/column.ts","../src/delimited.ts","../src/grid.ts","../src/undo-stack.ts","../src/virtualizer.ts","../src/humanize.ts","../src/tree.ts","../src/row.ts","../src/pipeline.ts","../src/stream.ts","../src/table.ts","../src/pending-changes.ts","../src/infer.ts"],"mappings":"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"}