@mittwald/cli 1.0.0-alpha.7 → 1.0.0-alpha.9
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 +129 -117
- package/dist/esm/BaseCommand.d.ts +1 -1
- package/dist/esm/DeleteBaseCommand.d.ts +6 -9
- package/dist/esm/DeleteBaseCommand.js +27 -21
- package/dist/esm/ExtendedBaseCommand.d.ts +1 -1
- package/dist/esm/Formatter.d.ts +5 -2
- package/dist/esm/Formatter.js +7 -2
- package/dist/esm/GetBaseCommand.d.ts +1 -1
- package/dist/esm/Helpers.d.ts +1 -0
- package/dist/esm/Helpers.js +7 -1
- package/dist/esm/ListBaseCommand.d.ts +1 -1
- package/dist/esm/ListBaseCommand.js +2 -2
- package/dist/esm/Printer.d.ts +6 -7
- package/dist/esm/Printer.js +3 -3
- package/dist/esm/Translator.d.ts +1 -0
- package/dist/esm/Translator.js +12 -1
- package/dist/esm/commands/app/delete.d.ts +1 -1
- package/dist/esm/commands/app/delete.js +1 -1
- package/dist/esm/commands/app/dependency/listSystemsoftwareversions.d.ts +1 -1
- package/dist/esm/commands/app/install/wordpress.d.ts +1 -2
- package/dist/esm/commands/app/install/wordpress.js +5 -9
- package/dist/esm/commands/app/list.d.ts +1 -1
- package/dist/esm/commands/app/versions.d.ts +1 -1
- package/dist/esm/commands/context/get.d.ts +10 -0
- package/dist/esm/commands/context/get.js +39 -0
- package/dist/esm/commands/context/set.d.ts +11 -0
- package/dist/esm/commands/context/set.js +37 -0
- package/dist/esm/commands/conversation/close.d.ts +1 -1
- package/dist/esm/commands/conversation/create.d.ts +1 -1
- package/dist/esm/commands/conversation/list.js +2 -2
- package/dist/esm/commands/conversation/reply.d.ts +1 -1
- package/dist/esm/commands/conversation/show.d.ts +1 -1
- package/dist/esm/commands/conversation/show.js +7 -7
- package/dist/esm/commands/conversation/show2.js +6 -3
- package/dist/esm/commands/domain/list.d.ts +12 -4
- package/dist/esm/commands/domain/list.js +16 -2
- package/dist/esm/commands/domain/virtualhost/list.js +10 -7
- package/dist/esm/commands/login/reset.d.ts +12 -0
- package/dist/esm/commands/login/reset.js +39 -0
- package/dist/esm/commands/login/status.d.ts +1 -1
- package/dist/esm/commands/login/token.d.ts +2 -1
- package/dist/esm/commands/login/token.js +1 -0
- package/dist/esm/commands/mail/address/create.d.ts +12 -4
- package/dist/esm/commands/mail/address/create.js +35 -26
- package/dist/esm/commands/mail/address/delete.d.ts +1 -0
- package/dist/esm/commands/mail/address/list.d.ts +11 -3
- package/dist/esm/commands/mail/address/list.js +23 -7
- package/dist/esm/commands/mail/deliverybox/list.d.ts +1 -1
- package/dist/esm/commands/mail/deliverybox/list.js +2 -2
- package/dist/esm/commands/org/list.js +1 -1
- package/dist/esm/commands/project/backup/list.d.ts +12 -5
- package/dist/esm/commands/project/backup/list.js +17 -9
- package/dist/esm/commands/project/create.d.ts +12 -4
- package/dist/esm/commands/project/create.js +32 -26
- package/dist/esm/commands/project/cronjob/execution/get.d.ts +15 -2
- package/dist/esm/commands/project/cronjob/execution/get.js +26 -5
- package/dist/esm/commands/project/cronjob/execution/list.d.ts +11 -4
- package/dist/esm/commands/project/cronjob/execution/list.js +27 -7
- package/dist/esm/commands/project/cronjob/execution/logs.d.ts +15 -0
- package/dist/esm/commands/project/cronjob/execution/logs.js +74 -0
- package/dist/esm/commands/project/cronjob/list.d.ts +12 -4
- package/dist/esm/commands/project/cronjob/list.js +24 -5
- package/dist/esm/commands/project/delete.d.ts +2 -1
- package/dist/esm/commands/project/delete.js +5 -11
- package/dist/esm/commands/project/filesystem/usage.d.ts +13 -3
- package/dist/esm/commands/project/filesystem/usage.js +51 -9
- package/dist/esm/commands/project/get.d.ts +13 -3
- package/dist/esm/commands/project/get.js +76 -9
- package/dist/esm/commands/project/invite/list-own.js +2 -2
- package/dist/esm/commands/project/invite/list.d.ts +1 -1
- package/dist/esm/commands/project/invite/list.js +2 -2
- package/dist/esm/commands/project/{list2.d.ts → list-react.d.ts} +3 -1
- package/dist/esm/commands/project/list-react.js +42 -0
- package/dist/esm/commands/project/membership/list-own.js +2 -2
- package/dist/esm/commands/project/membership/list.d.ts +1 -1
- package/dist/esm/commands/project/membership/list.js +2 -2
- package/dist/esm/commands/project/ssh.d.ts +2 -2
- package/dist/esm/commands/project/ssh.js +3 -8
- package/dist/esm/commands/project/update.d.ts +2 -2
- package/dist/esm/commands/project/update.js +6 -9
- package/dist/esm/commands/user/api-token/create.d.ts +9 -3
- package/dist/esm/commands/user/api-token/create.js +33 -15
- package/dist/esm/commands/user/api-token/list.js +4 -2
- package/dist/esm/commands/user/api-token/revoke.d.ts +8 -3
- package/dist/esm/commands/user/api-token/revoke.js +6 -6
- package/dist/esm/commands/user/session/list.js +4 -2
- package/dist/esm/commands/user/ssh-key/create.d.ts +6 -3
- package/dist/esm/commands/user/ssh-key/create.js +35 -18
- package/dist/esm/commands/user/ssh-key/delete.d.ts +5 -4
- package/dist/esm/commands/user/ssh-key/delete.js +7 -26
- package/dist/esm/lib/bytes.d.ts +1 -0
- package/dist/esm/lib/bytes.js +16 -0
- package/dist/esm/lib/context.d.ts +16 -0
- package/dist/esm/lib/context.js +42 -0
- package/dist/esm/lib/context_flags.d.ts +18 -0
- package/dist/esm/lib/context_flags.js +42 -0
- package/dist/esm/lib/project/flags.d.ts +5 -0
- package/dist/esm/lib/project/flags.js +3 -0
- package/dist/esm/lib/server/flags.d.ts +5 -0
- package/dist/esm/lib/server/flags.js +3 -0
- package/dist/esm/lib/viewhelpers/date.d.ts +2 -1
- package/dist/esm/lib/viewhelpers/date.js +9 -2
- package/dist/esm/lib/viewhelpers/removeLineBreaks.d.ts +1 -0
- package/dist/esm/lib/viewhelpers/removeLineBreaks.js +1 -0
- package/dist/esm/rendering/lib/getTerminalWidth.d.ts +1 -0
- package/dist/esm/rendering/lib/getTerminalWidth.js +2 -0
- package/dist/esm/rendering/react/ComponentPrinter.d.ts +7 -0
- package/dist/esm/rendering/react/ComponentPrinter.js +13 -0
- package/dist/esm/rendering/react/ExecRenderBaseCommand.d.ts +8 -0
- package/dist/esm/rendering/react/ExecRenderBaseCommand.js +15 -0
- package/dist/esm/rendering/react/RenderBaseCommand.d.ts +12 -0
- package/dist/esm/rendering/react/RenderBaseCommand.js +36 -4
- package/dist/esm/rendering/react/components/ByteFormat.d.ts +4 -0
- package/dist/esm/rendering/react/components/ByteFormat.js +12 -0
- package/dist/esm/rendering/react/components/{ConversationMessage.js → Conversation/ConversationMessage.js} +1 -1
- package/dist/esm/rendering/react/components/Conversation/ConversationMessages.d.ts +8 -0
- package/dist/esm/rendering/react/components/Conversation/ConversationMessages.js +13 -0
- package/dist/esm/rendering/react/components/{ConversationMeta.js → Conversation/ConversationMeta.js} +7 -3
- package/dist/esm/rendering/react/components/CreatedAt.d.ts +8 -0
- package/dist/esm/rendering/react/components/CreatedAt.js +10 -0
- package/dist/esm/rendering/react/components/Filename.d.ts +4 -0
- package/dist/esm/rendering/react/components/Filename.js +5 -0
- package/dist/esm/rendering/react/components/FormattedDate.d.ts +7 -0
- package/dist/esm/rendering/react/components/FormattedDate.js +18 -0
- package/dist/esm/rendering/react/components/Header.d.ts +2 -2
- package/dist/esm/rendering/react/components/IDAndShortID.d.ts +7 -0
- package/dist/esm/rendering/react/components/IDAndShortID.js +6 -0
- package/dist/esm/rendering/react/components/JSONView.d.ts +7 -0
- package/dist/esm/rendering/react/components/JSONView.js +3 -0
- package/dist/esm/rendering/react/components/ListItem.d.ts +3 -0
- package/dist/esm/rendering/react/components/ListItem.js +5 -0
- package/dist/esm/rendering/react/components/Note.d.ts +10 -0
- package/dist/esm/rendering/react/components/Note.js +8 -0
- package/dist/esm/rendering/react/components/ProjectEnabled.d.ts +6 -0
- package/dist/esm/rendering/react/components/ProjectEnabled.js +9 -0
- package/dist/esm/rendering/react/components/ProjectReadiness.d.ts +7 -0
- package/dist/esm/rendering/react/components/ProjectReadiness.js +16 -0
- package/dist/esm/rendering/react/components/ProjectStatus.d.ts +7 -0
- package/dist/esm/rendering/react/components/ProjectStatus.js +8 -0
- package/dist/esm/rendering/react/components/Render.d.ts +6 -0
- package/dist/esm/rendering/react/components/Render.js +5 -0
- package/dist/esm/rendering/react/components/SingleResult.d.ts +10 -0
- package/dist/esm/rendering/react/components/SingleResult.js +15 -0
- package/dist/esm/rendering/react/components/Success.d.ts +9 -0
- package/dist/esm/rendering/react/components/Success.js +6 -0
- package/dist/esm/rendering/react/components/Table/BodyCell.d.ts +7 -0
- package/dist/esm/rendering/react/components/Table/BodyCell.js +7 -0
- package/dist/esm/rendering/react/components/Table/BodyRow.d.ts +7 -0
- package/dist/esm/rendering/react/components/Table/BodyRow.js +7 -0
- package/dist/esm/rendering/react/components/Table/BodyRows.d.ts +7 -0
- package/dist/esm/rendering/react/components/Table/BodyRows.js +6 -0
- package/dist/esm/rendering/react/components/Table/CellData.d.ts +6 -0
- package/dist/esm/rendering/react/components/Table/CellData.js +32 -0
- package/dist/esm/rendering/react/components/Table/CellLayout.d.ts +8 -0
- package/dist/esm/rendering/react/components/Table/CellLayout.js +17 -0
- package/dist/esm/rendering/react/components/Table/HeaderCell.d.ts +7 -0
- package/dist/esm/rendering/react/components/Table/HeaderCell.js +7 -0
- package/dist/esm/rendering/react/components/Table/HeaderRow.d.ts +8 -0
- package/dist/esm/rendering/react/components/Table/HeaderRow.js +7 -0
- package/dist/esm/rendering/react/components/Table/RowLayout.d.ts +5 -0
- package/dist/esm/rendering/react/components/Table/RowLayout.js +3 -0
- package/dist/esm/rendering/react/components/Table/Table.d.ts +10 -0
- package/dist/esm/rendering/react/components/Table/Table.js +21 -0
- package/dist/esm/rendering/react/components/Table/context.d.ts +9 -0
- package/dist/esm/rendering/react/components/Table/context.js +7 -0
- package/dist/esm/rendering/react/components/Table/index.d.ts +1 -0
- package/dist/esm/rendering/react/components/Table/index.js +1 -0
- package/dist/esm/rendering/react/components/Table/model/Cell.d.ts +19 -0
- package/dist/esm/rendering/react/components/Table/model/Cell.js +24 -0
- package/dist/esm/rendering/react/components/Table/model/Column.d.ts +16 -0
- package/dist/esm/rendering/react/components/Table/model/Column.js +35 -0
- package/dist/esm/rendering/react/components/Table/model/ColumnName.d.ts +7 -0
- package/dist/esm/rendering/react/components/Table/model/ColumnName.js +17 -0
- package/dist/esm/rendering/react/components/Table/model/ColumnOptions.d.ts +25 -0
- package/dist/esm/rendering/react/components/Table/model/ColumnOptions.js +41 -0
- package/dist/esm/rendering/react/components/Table/model/Row.d.ts +14 -0
- package/dist/esm/rendering/react/components/Table/model/Row.js +37 -0
- package/dist/esm/rendering/react/components/Table/model/Table.d.ts +19 -0
- package/dist/esm/rendering/react/components/Table/model/Table.js +48 -0
- package/dist/esm/rendering/react/components/Table/model/index.d.ts +5 -0
- package/dist/esm/rendering/react/components/Table/model/index.js +5 -0
- package/dist/esm/rendering/react/components/Value.d.ts +5 -0
- package/dist/esm/rendering/react/components/Value.js +8 -0
- package/dist/esm/rendering/react/components/WithoutLineBreaks.d.ts +2 -0
- package/dist/esm/rendering/react/components/WithoutLineBreaks.js +7 -0
- package/dist/esm/rendering/react/context.d.ts +3 -2
- package/dist/esm/rendering/react/context.js +4 -1
- package/dist/esm/rendering/react/json/JsonCollectionProvider.d.ts +2 -0
- package/dist/esm/rendering/react/json/JsonCollectionProvider.js +10 -0
- package/dist/esm/rendering/react/json/JsonRenderer.d.ts +2 -0
- package/dist/esm/rendering/react/json/JsonRenderer.js +14 -0
- package/dist/esm/rendering/react/json/RenderJson.d.ts +7 -0
- package/dist/esm/rendering/react/json/RenderJson.js +19 -0
- package/dist/esm/rendering/react/json/context.d.ts +5 -0
- package/dist/esm/rendering/react/json/context.js +4 -0
- package/dist/esm/rendering/react/json/lib/unpackJsonData.d.ts +1 -0
- package/dist/esm/rendering/react/json/lib/unpackJsonData.js +5 -0
- package/dist/esm/rendering/react/lib/observable-value/ObservableValue.d.ts +10 -0
- package/dist/esm/rendering/react/lib/observable-value/ObservableValue.js +25 -0
- package/dist/esm/rendering/react/lib/observable-value/types.d.ts +2 -0
- package/dist/esm/rendering/react/lib/observable-value/types.js +1 -0
- package/dist/esm/rendering/react/lib/observable-value/useWatchObservableValue.d.ts +2 -0
- package/dist/esm/rendering/react/lib/observable-value/useWatchObservableValue.js +9 -0
- package/dist/esm/rendering/react/measure/MeasureChildren.d.ts +8 -0
- package/dist/esm/rendering/react/measure/MeasureChildren.js +19 -0
- package/dist/esm/rendering/react/measure/MeasureContextProvider.d.ts +2 -0
- package/dist/esm/rendering/react/measure/MeasureContextProvider.js +10 -0
- package/dist/esm/rendering/react/measure/MeasureRenderer.d.ts +2 -0
- package/dist/esm/rendering/react/measure/MeasureRenderer.js +22 -0
- package/dist/esm/rendering/react/measure/context.d.ts +18 -0
- package/dist/esm/rendering/react/measure/context.js +48 -0
- package/dist/esm/rendering/react/process.d.ts +42 -0
- package/dist/esm/rendering/react/process.js +24 -0
- package/dist/esm/rendering/react/process_fancy.d.ts +28 -0
- package/dist/esm/rendering/react/process_fancy.js +213 -0
- package/dist/esm/rendering/react/process_flags.d.ts +9 -0
- package/dist/esm/rendering/react/process_flags.js +15 -0
- package/dist/esm/rendering/react/process_quiet.d.ts +12 -0
- package/dist/esm/rendering/react/process_quiet.js +29 -0
- package/dist/esm/rendering/setup/FlagSupportedSetup.d.ts +2 -0
- package/dist/esm/rendering/setup/TableRenderSetup.d.ts +10 -12
- package/dist/esm/rendering/setup/TableRenderSetup.js +19 -6
- package/dist/esm/rendering/setup/usePromiseSetup.d.ts +4 -3
- package/package.json +52 -21
- package/.deps/client.tgz +0 -0
- package/.deps/commons.tgz +0 -0
- package/dist/esm/commands/project/filesystem/directories.d.ts +0 -3
- package/dist/esm/commands/project/filesystem/directories.js +0 -6
- package/dist/esm/commands/project/filesystem/file-content.d.ts +0 -3
- package/dist/esm/commands/project/filesystem/file-content.js +0 -6
- package/dist/esm/commands/project/filesystem/files.d.ts +0 -16
- package/dist/esm/commands/project/filesystem/files.js +0 -25
- package/dist/esm/commands/project/list1.d.ts +0 -7
- package/dist/esm/commands/project/list1.js +0 -18
- package/dist/esm/commands/project/list2.js +0 -26
- package/dist/esm/generated/cronjob/listCronjobs.d.ts +0 -13
- package/dist/esm/generated/cronjob/listCronjobs.js +0 -24
- package/dist/esm/generated/cronjob/listExecutions.d.ts +0 -13
- package/dist/esm/generated/cronjob/listExecutions.js +0 -24
- package/dist/esm/generated/domain/ingressListAccessible.d.ts +0 -13
- package/dist/esm/generated/domain/ingressListAccessible.js +0 -17
- package/dist/esm/generated/domain/ingressListForProject.d.ts +0 -13
- package/dist/esm/generated/domain/ingressListForProject.js +0 -24
- package/dist/esm/generated/domain/listDomains.d.ts +0 -13
- package/dist/esm/generated/domain/listDomains.js +0 -24
- package/dist/esm/generated/projectFileSystem/getDirectories.d.ts +0 -14
- package/dist/esm/generated/projectFileSystem/getDirectories.js +0 -24
- package/dist/esm/generated/projectFileSystem/getDiskUsage.d.ts +0 -14
- package/dist/esm/generated/projectFileSystem/getDiskUsage.js +0 -24
- package/dist/esm/generated/projectFileSystem/getFileContent.d.ts +0 -14
- package/dist/esm/generated/projectFileSystem/getFileContent.js +0 -24
- package/dist/esm/generated/projectFileSystem/getJwt.d.ts +0 -14
- package/dist/esm/generated/projectFileSystem/getJwt.js +0 -24
- package/dist/esm/generated/projectFileSystem/listFiles.d.ts +0 -13
- package/dist/esm/generated/projectFileSystem/listFiles.js +0 -24
- package/dist/esm/rendering/oclif/components/table.d.ts +0 -11
- package/dist/esm/rendering/oclif/components/table.js +0 -49
- package/dist/esm/rendering/react/components/Table.d.ts +0 -7
- package/dist/esm/rendering/react/components/Table.js +0 -4
- /package/dist/esm/rendering/react/components/{ConversationMessage.d.ts → Conversation/ConversationMessage.d.ts} +0 -0
- /package/dist/esm/rendering/react/components/{ConversationMeta.d.ts → Conversation/ConversationMeta.d.ts} +0 -0
- /package/dist/esm/rendering/react/components/{ConversationStatusUpdate.d.ts → Conversation/ConversationStatusUpdate.d.ts} +0 -0
- /package/dist/esm/rendering/react/components/{ConversationStatusUpdate.js → Conversation/ConversationStatusUpdate.js} +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Cell } from "./Cell.js";
|
|
2
|
+
import { ColumnName } from "./ColumnName.js";
|
|
3
|
+
export class Row {
|
|
4
|
+
table;
|
|
5
|
+
cells;
|
|
6
|
+
data;
|
|
7
|
+
index;
|
|
8
|
+
constructor(table, index, dataItem) {
|
|
9
|
+
this.table = table;
|
|
10
|
+
this.index = index;
|
|
11
|
+
this.cells = this.buildCells(dataItem);
|
|
12
|
+
this.data = dataItem;
|
|
13
|
+
}
|
|
14
|
+
static fromObject(table, index, dataItem) {
|
|
15
|
+
return new Row(table, index, dataItem);
|
|
16
|
+
}
|
|
17
|
+
buildCells(object) {
|
|
18
|
+
if (typeof object === "object" && object !== null) {
|
|
19
|
+
const entries = Object.entries(object);
|
|
20
|
+
return entries.map(([name, data]) => Cell.fromObject(this, {
|
|
21
|
+
name,
|
|
22
|
+
data,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
getCell(name) {
|
|
28
|
+
const cell = this.cells.find((c) => c.name.matches(name));
|
|
29
|
+
if (!cell) {
|
|
30
|
+
return Cell.empty(this, ColumnName.getNameValue(name));
|
|
31
|
+
}
|
|
32
|
+
return cell;
|
|
33
|
+
}
|
|
34
|
+
collectColumnNamesFromCells() {
|
|
35
|
+
return this.cells.map((cell) => cell.name);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Row } from "./Row.js";
|
|
2
|
+
import { Column } from "./Column.js";
|
|
3
|
+
import { ObservableValue } from "../../../lib/observable-value/ObservableValue.js";
|
|
4
|
+
import { ColumnOptionsInput } from "./ColumnOptions.js";
|
|
5
|
+
import { TableRenderSetupOutput } from "../../../../setup/TableRenderSetup.js";
|
|
6
|
+
import { ColumnName } from "./ColumnName.js";
|
|
7
|
+
export type TableOptions = TableRenderSetupOutput;
|
|
8
|
+
export type TableColumnsInput<TData = unknown> = Record<string, ColumnOptionsInput<TData>>;
|
|
9
|
+
export declare class Table<T = unknown> {
|
|
10
|
+
readonly rows: Row<T>[];
|
|
11
|
+
readonly columns: Column[];
|
|
12
|
+
readonly overallWidth: ObservableValue<number>;
|
|
13
|
+
readonly tableOptions?: TableOptions;
|
|
14
|
+
constructor(data: T[], tableOptions?: TableOptions, columnOptionsInput?: TableColumnsInput<T>);
|
|
15
|
+
private buildRows;
|
|
16
|
+
private handleColumnWidthChanged;
|
|
17
|
+
private buildColumns;
|
|
18
|
+
getColumn(name: ColumnName | string): Column;
|
|
19
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Row } from "./Row.js";
|
|
2
|
+
import { Column } from "./Column.js";
|
|
3
|
+
import { ObservableValue } from "../../../lib/observable-value/ObservableValue.js";
|
|
4
|
+
export class Table {
|
|
5
|
+
rows;
|
|
6
|
+
columns;
|
|
7
|
+
overallWidth = new ObservableValue(0);
|
|
8
|
+
tableOptions;
|
|
9
|
+
constructor(data, tableOptions, columnOptionsInput) {
|
|
10
|
+
this.tableOptions = Object.freeze(tableOptions);
|
|
11
|
+
this.rows = this.buildRows(data);
|
|
12
|
+
this.columns = this.buildColumns(this.rows, columnOptionsInput);
|
|
13
|
+
}
|
|
14
|
+
buildRows(data) {
|
|
15
|
+
return data.map((item, index) => Row.fromObject(this, index, item));
|
|
16
|
+
}
|
|
17
|
+
handleColumnWidthChanged() {
|
|
18
|
+
const overallWidth = this.columns.reduce((width, col) => width + col.maxCellWidth.value, 0);
|
|
19
|
+
this.overallWidth.updateValue(overallWidth);
|
|
20
|
+
}
|
|
21
|
+
buildColumns(rows, columnOptions) {
|
|
22
|
+
const columnsMap = new Map();
|
|
23
|
+
const addColumn = (columnName) => {
|
|
24
|
+
const options = columnOptions ? columnOptions[columnName] : {};
|
|
25
|
+
const column = new Column(this, columnName, options);
|
|
26
|
+
columnsMap.set(columnName, column);
|
|
27
|
+
column.maxCellWidth.observe(() => this.handleColumnWidthChanged());
|
|
28
|
+
};
|
|
29
|
+
for (const row of rows) {
|
|
30
|
+
const columns = columnOptions
|
|
31
|
+
? Object.entries(columnOptions).map(([name]) => name)
|
|
32
|
+
: row.collectColumnNamesFromCells().map((n) => n.value);
|
|
33
|
+
for (const column of columns) {
|
|
34
|
+
if (!columnsMap.has(column)) {
|
|
35
|
+
addColumn(column);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return Array.from(columnsMap.values());
|
|
40
|
+
}
|
|
41
|
+
getColumn(name) {
|
|
42
|
+
const col = this.columns.find((col) => col.name.matches(name));
|
|
43
|
+
if (!col) {
|
|
44
|
+
throw new Error(`Could not get column with ID ${name}`);
|
|
45
|
+
}
|
|
46
|
+
return col;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Text } from "ink";
|
|
3
|
+
export const Value = ({ children, notSet }) => {
|
|
4
|
+
if (notSet) {
|
|
5
|
+
return _jsx(Text, { color: "gray", children: "not set" });
|
|
6
|
+
}
|
|
7
|
+
return _jsx(Text, { color: "blue", children: children });
|
|
8
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Text, Transform } from "ink";
|
|
3
|
+
import { removeLineBreaks } from "../../../lib/viewhelpers/removeLineBreaks.js";
|
|
4
|
+
export const WithoutLineBreaks = (props) => {
|
|
5
|
+
const { children } = props;
|
|
6
|
+
return (_jsx(Transform, { transform: removeLineBreaks, children: _jsx(Text, { children: children }) }));
|
|
7
|
+
};
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { MittwaldAPIV2Client } from "@mittwald/api-client";
|
|
3
3
|
export interface RenderContext {
|
|
4
4
|
apiClient: MittwaldAPIV2Client;
|
|
5
|
+
renderAsJson: boolean;
|
|
5
6
|
}
|
|
6
|
-
export declare const renderContext: import("react").Context<
|
|
7
|
-
export declare const RenderContextProvider: import("react").Provider<
|
|
7
|
+
export declare const renderContext: import("react").Context<RenderContext>;
|
|
8
|
+
export declare const RenderContextProvider: import("react").Provider<RenderContext>;
|
|
8
9
|
export declare const useRenderContext: () => RenderContext;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { createContext, useContext } from "react";
|
|
2
|
-
export const renderContext = createContext({
|
|
2
|
+
export const renderContext = createContext({
|
|
3
|
+
renderAsJson: true,
|
|
4
|
+
apiClient: null,
|
|
5
|
+
});
|
|
3
6
|
export const RenderContextProvider = renderContext.Provider;
|
|
4
7
|
export const useRenderContext = () => useContext(renderContext);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from "react";
|
|
3
|
+
import { collectedJsonDataContext } from "./context.js";
|
|
4
|
+
import { ObservableValue } from "../lib/observable-value/ObservableValue.js";
|
|
5
|
+
import { JsonRenderer } from "./JsonRenderer.js";
|
|
6
|
+
const ContextProvider = collectedJsonDataContext.Provider;
|
|
7
|
+
export const JsonCollectionProvider = (props) => {
|
|
8
|
+
const contextValue = useRef(new ObservableValue(undefined)).current;
|
|
9
|
+
return (_jsx(ContextProvider, { value: contextValue, children: _jsx(JsonRenderer, { children: props.children }) }));
|
|
10
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from "ink";
|
|
3
|
+
import { useCollectedJsonData } from "./context.js";
|
|
4
|
+
import { useWatchObservableValue } from "../lib/observable-value/useWatchObservableValue.js";
|
|
5
|
+
import { JSONView } from "../components/JSONView.js";
|
|
6
|
+
import { unpackJsonData } from "./lib/unpackJsonData.js";
|
|
7
|
+
export const JsonRenderer = (props) => {
|
|
8
|
+
const { children } = props;
|
|
9
|
+
const jsonValue = useCollectedJsonData();
|
|
10
|
+
const json = useWatchObservableValue(jsonValue);
|
|
11
|
+
const display = json ? "none" : "flex";
|
|
12
|
+
const unpackedData = unpackJsonData(json);
|
|
13
|
+
return (_jsxs(Box, { children: [_jsx(Box, { display: display, children: children }), _jsx(JSONView, { json: unpackedData })] }));
|
|
14
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import { useCollectedJsonData } from "./context.js";
|
|
3
|
+
export const RenderJson = (props) => {
|
|
4
|
+
const { name, data } = props;
|
|
5
|
+
const jsonData = useCollectedJsonData();
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
jsonData.updateValue({
|
|
8
|
+
...jsonData.value,
|
|
9
|
+
[name]: data,
|
|
10
|
+
});
|
|
11
|
+
return () => {
|
|
12
|
+
jsonData.updateValue({
|
|
13
|
+
...jsonData.value,
|
|
14
|
+
[name]: undefined,
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
}, [name, data, jsonData]);
|
|
18
|
+
return null;
|
|
19
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ObservableValue } from "../lib/observable-value/ObservableValue.js";
|
|
3
|
+
export type CollectedJsonData = Record<string, unknown>;
|
|
4
|
+
export declare const collectedJsonDataContext: import("react").Context<ObservableValue<CollectedJsonData | undefined>>;
|
|
5
|
+
export declare const useCollectedJsonData: () => ObservableValue<CollectedJsonData | undefined>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
import { ObservableValue } from "../lib/observable-value/ObservableValue.js";
|
|
3
|
+
export const collectedJsonDataContext = createContext(new ObservableValue(undefined));
|
|
4
|
+
export const useCollectedJsonData = () => useContext(collectedJsonDataContext);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const unpackJsonData: (json: unknown) => unknown;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Observer, UnbindObserver } from "./types.js";
|
|
2
|
+
export declare class ObservableValue<T> {
|
|
3
|
+
value: T;
|
|
4
|
+
private observers;
|
|
5
|
+
constructor(value: T);
|
|
6
|
+
private notifyObservers;
|
|
7
|
+
get observerCount(): number;
|
|
8
|
+
observe(observer: Observer<T>): UnbindObserver;
|
|
9
|
+
updateValue(newValue: T): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class ObservableValue {
|
|
2
|
+
value;
|
|
3
|
+
// using unknown since otherwise the ObservableValue seems to be invariant on type T
|
|
4
|
+
observers = new Set();
|
|
5
|
+
constructor(value) {
|
|
6
|
+
this.value = value;
|
|
7
|
+
}
|
|
8
|
+
notifyObservers(newValue) {
|
|
9
|
+
this.observers.forEach((o) => o(newValue));
|
|
10
|
+
}
|
|
11
|
+
get observerCount() {
|
|
12
|
+
return this.observers.size;
|
|
13
|
+
}
|
|
14
|
+
observe(observer) {
|
|
15
|
+
this.observers.add(observer);
|
|
16
|
+
return () => this.observers.delete(observer);
|
|
17
|
+
}
|
|
18
|
+
updateValue(newValue) {
|
|
19
|
+
if (this.value === newValue) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
this.value = newValue;
|
|
23
|
+
this.notifyObservers(newValue);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
export const useWatchObservableValue = (observable) => {
|
|
3
|
+
const [watchedValue, setWatchedValue] = useState(observable.value);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
setWatchedValue(observable.value);
|
|
6
|
+
return observable.observe(setWatchedValue);
|
|
7
|
+
}, [observable]);
|
|
8
|
+
return watchedValue;
|
|
9
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC, PropsWithChildren } from "react";
|
|
2
|
+
import { Dimension } from "./context.js";
|
|
3
|
+
export type OnDimensionChangedHandler = (dimension: Dimension) => void;
|
|
4
|
+
interface Props {
|
|
5
|
+
onDimensionChange?: OnDimensionChangedHandler;
|
|
6
|
+
}
|
|
7
|
+
export declare const MeasureChildren: FC<PropsWithChildren<Props>>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId } from "react";
|
|
3
|
+
import { useMeasureContext } from "./context.js";
|
|
4
|
+
export const MeasureChildren = (props) => {
|
|
5
|
+
const { children, onDimensionChange } = props;
|
|
6
|
+
const id = useId();
|
|
7
|
+
const context = useMeasureContext();
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
context.addNode(id, children);
|
|
10
|
+
return () => {
|
|
11
|
+
context.removeNode(id);
|
|
12
|
+
};
|
|
13
|
+
}, [context, children]);
|
|
14
|
+
useEffect(() => context.getDimension(id).observe(onDimensionChange ??
|
|
15
|
+
(() => {
|
|
16
|
+
// not handling
|
|
17
|
+
})), [id, context, onDimensionChange]);
|
|
18
|
+
return _jsx(_Fragment, { children: children });
|
|
19
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from "ink";
|
|
3
|
+
import { useRef } from "react";
|
|
4
|
+
import { createMeasureContext, measureContext } from "./context.js";
|
|
5
|
+
import { MeasureRenderer } from "./MeasureRenderer.js";
|
|
6
|
+
export const MeasureContextProvider = (props) => {
|
|
7
|
+
const { children } = props;
|
|
8
|
+
const context = useRef(createMeasureContext()).current;
|
|
9
|
+
return (_jsx(measureContext.Provider, { value: context, children: _jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Box, { children: _jsx(MeasureRenderer, {}) }), _jsx(Box, { children: children })] }) }));
|
|
10
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, measureElement } from "ink";
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import { useWatchObservableValue } from "../lib/observable-value/useWatchObservableValue.js";
|
|
5
|
+
import { useMeasureContext } from "./context.js";
|
|
6
|
+
const M = (props) => {
|
|
7
|
+
const { children, id } = props;
|
|
8
|
+
const measureContext = useMeasureContext();
|
|
9
|
+
const ref = useRef(null);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (ref.current) {
|
|
12
|
+
const dimension = measureElement(ref.current);
|
|
13
|
+
measureContext.updateDimension(id, dimension);
|
|
14
|
+
}
|
|
15
|
+
}, [id, measureContext, ref.current]);
|
|
16
|
+
return (_jsx(Box, { height: 0, overflow: "hidden", flexShrink: 1, ref: ref, children: children }));
|
|
17
|
+
};
|
|
18
|
+
export const MeasureRenderer = () => {
|
|
19
|
+
const context = useMeasureContext();
|
|
20
|
+
const watchedNodes = useWatchObservableValue(context.nodes);
|
|
21
|
+
return (_jsx(Box, { flexDirection: "row", flexWrap: "wrap", children: Object.entries(watchedNodes).map(([id, node]) => (_jsx(M, { id: id, children: node }, id))) }));
|
|
22
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { measureElement } from "ink";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
import { ObservableValue } from "../lib/observable-value/ObservableValue.js";
|
|
4
|
+
export type MeasureContextNodes = Record<string, ReactNode>;
|
|
5
|
+
export type Dimension = ReturnType<typeof measureElement>;
|
|
6
|
+
export type Dimensions = Record<string, ObservableValue<Dimension>>;
|
|
7
|
+
interface Context {
|
|
8
|
+
nodes: ObservableValue<MeasureContextNodes>;
|
|
9
|
+
dimensions: Dimensions;
|
|
10
|
+
addNode: (id: string, node: ReactNode) => void;
|
|
11
|
+
removeNode: (id: string) => void;
|
|
12
|
+
getDimension: (id: string) => ObservableValue<Dimension>;
|
|
13
|
+
updateDimension: (id: string, dimension: Dimension) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare const createMeasureContext: () => Context;
|
|
16
|
+
export declare const measureContext: import("react").Context<Context>;
|
|
17
|
+
export declare const useMeasureContext: () => Context;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
import { ObservableValue } from "../lib/observable-value/ObservableValue.js";
|
|
3
|
+
export const createMeasureContext = () => {
|
|
4
|
+
const context = {
|
|
5
|
+
nodes: new ObservableValue({}),
|
|
6
|
+
dimensions: {},
|
|
7
|
+
addNode: (id, node) => {
|
|
8
|
+
const existing = context.nodes.value[id];
|
|
9
|
+
if (existing === node) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
context.dimensions[id] = new ObservableValue({
|
|
13
|
+
height: 0,
|
|
14
|
+
width: 0,
|
|
15
|
+
});
|
|
16
|
+
context.nodes.updateValue({
|
|
17
|
+
...context.nodes.value,
|
|
18
|
+
[id]: node,
|
|
19
|
+
});
|
|
20
|
+
},
|
|
21
|
+
removeNode: (id) => {
|
|
22
|
+
if (id in context.nodes) {
|
|
23
|
+
const updatedNodes = {
|
|
24
|
+
...context.nodes.value,
|
|
25
|
+
};
|
|
26
|
+
delete updatedNodes[id];
|
|
27
|
+
context.nodes.updateValue(updatedNodes);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
getDimension: (id) => {
|
|
31
|
+
const dimension = context.dimensions[id];
|
|
32
|
+
if (!dimension) {
|
|
33
|
+
throw new Error(`Could not get dimension for ${id}`);
|
|
34
|
+
}
|
|
35
|
+
return dimension;
|
|
36
|
+
},
|
|
37
|
+
updateDimension: (id, updatedDimension) => {
|
|
38
|
+
const dimension = context.getDimension(id);
|
|
39
|
+
if (dimension.value.width !== updatedDimension.width ||
|
|
40
|
+
dimension.value.height !== updatedDimension.height) {
|
|
41
|
+
dimension.updateValue(updatedDimension);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
return context;
|
|
46
|
+
};
|
|
47
|
+
export const measureContext = createContext(createMeasureContext());
|
|
48
|
+
export const useMeasureContext = () => useContext(measureContext);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ReactElement, ReactNode } from "react";
|
|
2
|
+
export type ProcessStepInfo = {
|
|
3
|
+
type: "info";
|
|
4
|
+
title: ReactElement;
|
|
5
|
+
};
|
|
6
|
+
export type ProcessStepRunnable = {
|
|
7
|
+
type: "step";
|
|
8
|
+
title: ReactElement;
|
|
9
|
+
phase: "running" | "completed" | "failed" | "aborted";
|
|
10
|
+
error?: unknown;
|
|
11
|
+
};
|
|
12
|
+
export type ProcessStepConfirm = {
|
|
13
|
+
type: "confirm";
|
|
14
|
+
title: ReactElement;
|
|
15
|
+
confirmed: boolean | undefined;
|
|
16
|
+
};
|
|
17
|
+
export type ProcessStepInput = {
|
|
18
|
+
type: "input";
|
|
19
|
+
title: ReactElement;
|
|
20
|
+
mask?: boolean;
|
|
21
|
+
value?: string;
|
|
22
|
+
};
|
|
23
|
+
export type ProcessStep = ProcessStepInfo | ProcessStepRunnable | ProcessStepConfirm | ProcessStepInput;
|
|
24
|
+
export declare class RunnableHandler {
|
|
25
|
+
private readonly listener;
|
|
26
|
+
private readonly processStep;
|
|
27
|
+
constructor(state: ProcessStepRunnable, l: () => void);
|
|
28
|
+
get done(): boolean;
|
|
29
|
+
abort(): void;
|
|
30
|
+
complete(): void;
|
|
31
|
+
error(err: unknown): void;
|
|
32
|
+
}
|
|
33
|
+
export interface ProcessRenderer {
|
|
34
|
+
start(): void;
|
|
35
|
+
addStep(title: ReactNode): RunnableHandler;
|
|
36
|
+
runStep<TRes>(title: ReactNode, fn: () => Promise<TRes>): Promise<TRes>;
|
|
37
|
+
addInfo(title: ReactElement): void;
|
|
38
|
+
addConfirmation(question: ReactElement): Promise<boolean>;
|
|
39
|
+
addInput(question: ReactElement, mask?: boolean): Promise<string>;
|
|
40
|
+
complete(summary: ReactElement): void;
|
|
41
|
+
error(err: unknown): void;
|
|
42
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class RunnableHandler {
|
|
2
|
+
listener;
|
|
3
|
+
processStep;
|
|
4
|
+
constructor(state, l) {
|
|
5
|
+
this.processStep = state;
|
|
6
|
+
this.listener = l;
|
|
7
|
+
}
|
|
8
|
+
get done() {
|
|
9
|
+
return this.processStep.phase !== "running";
|
|
10
|
+
}
|
|
11
|
+
abort() {
|
|
12
|
+
this.processStep.phase = "aborted";
|
|
13
|
+
this.listener();
|
|
14
|
+
}
|
|
15
|
+
complete() {
|
|
16
|
+
this.processStep.phase = "completed";
|
|
17
|
+
this.listener();
|
|
18
|
+
}
|
|
19
|
+
error(err) {
|
|
20
|
+
this.processStep.phase = "failed";
|
|
21
|
+
this.processStep.error = err;
|
|
22
|
+
this.listener();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React, { ReactElement, ReactNode } from "react";
|
|
2
|
+
import { ProcessRenderer, ProcessStep, ProcessStepInput, RunnableHandler } from "./process.js";
|
|
3
|
+
export declare class FancyProcessRenderer implements ProcessRenderer {
|
|
4
|
+
private readonly title;
|
|
5
|
+
private started;
|
|
6
|
+
private currentHandler;
|
|
7
|
+
constructor(title: string);
|
|
8
|
+
start(): void;
|
|
9
|
+
addStep(title: ReactNode): RunnableHandler;
|
|
10
|
+
runStep<TRes>(title: ReactNode, fn: () => Promise<TRes>): Promise<TRes>;
|
|
11
|
+
addInfo(title: ReactElement): void;
|
|
12
|
+
addInput(question: React.ReactElement, mask?: boolean): Promise<string>;
|
|
13
|
+
addConfirmation(question: ReactElement): Promise<boolean>;
|
|
14
|
+
complete(summary: ReactElement): void;
|
|
15
|
+
error(err: unknown): void;
|
|
16
|
+
private renderStart;
|
|
17
|
+
}
|
|
18
|
+
export declare const ProcessState: React.FC<{
|
|
19
|
+
step: ProcessStep;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const ProcessConfirmation: React.FC<{
|
|
22
|
+
step: ProcessStep;
|
|
23
|
+
onConfirm: (confirmed: boolean) => void;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const ProcessInput: React.FC<{
|
|
26
|
+
step: ProcessStepInput;
|
|
27
|
+
onSubmit: (value: string) => void;
|
|
28
|
+
}>;
|