@pulumix/cli 0.1.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 (101) hide show
  1. package/dist/commands/dev.d.ts +6 -0
  2. package/dist/commands/dev.d.ts.map +1 -0
  3. package/dist/commands/dev.js +124 -0
  4. package/dist/commands/dev.js.map +1 -0
  5. package/dist/commands/graph.d.ts +6 -0
  6. package/dist/commands/graph.d.ts.map +1 -0
  7. package/dist/commands/graph.js +118 -0
  8. package/dist/commands/graph.js.map +1 -0
  9. package/dist/commands/inspect.d.ts +6 -0
  10. package/dist/commands/inspect.d.ts.map +1 -0
  11. package/dist/commands/inspect.js +173 -0
  12. package/dist/commands/inspect.js.map +1 -0
  13. package/dist/commands/list.d.ts +7 -0
  14. package/dist/commands/list.d.ts.map +1 -0
  15. package/dist/commands/list.js +108 -0
  16. package/dist/commands/list.js.map +1 -0
  17. package/dist/commands/validate.d.ts +6 -0
  18. package/dist/commands/validate.d.ts.map +1 -0
  19. package/dist/commands/validate.js +118 -0
  20. package/dist/commands/validate.js.map +1 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +247 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/ui/components/grouped-output.d.ts +33 -0
  26. package/dist/ui/components/grouped-output.d.ts.map +1 -0
  27. package/dist/ui/components/grouped-output.js +130 -0
  28. package/dist/ui/components/grouped-output.js.map +1 -0
  29. package/dist/ui/components/progress-bar.d.ts +21 -0
  30. package/dist/ui/components/progress-bar.d.ts.map +1 -0
  31. package/dist/ui/components/progress-bar.js +65 -0
  32. package/dist/ui/components/progress-bar.js.map +1 -0
  33. package/dist/ui/formatters/config-formatter.d.ts +3 -0
  34. package/dist/ui/formatters/config-formatter.d.ts.map +1 -0
  35. package/dist/ui/formatters/config-formatter.js +11 -0
  36. package/dist/ui/formatters/config-formatter.js.map +1 -0
  37. package/dist/ui/formatters/index.d.ts +4 -0
  38. package/dist/ui/formatters/index.d.ts.map +1 -0
  39. package/dist/ui/formatters/index.js +20 -0
  40. package/dist/ui/formatters/index.js.map +1 -0
  41. package/dist/ui/formatters/resource-formatter.d.ts +7 -0
  42. package/dist/ui/formatters/resource-formatter.d.ts.map +1 -0
  43. package/dist/ui/formatters/resource-formatter.js +65 -0
  44. package/dist/ui/formatters/resource-formatter.js.map +1 -0
  45. package/dist/ui/formatters/summary-formatter.d.ts +3 -0
  46. package/dist/ui/formatters/summary-formatter.d.ts.map +1 -0
  47. package/dist/ui/formatters/summary-formatter.js +90 -0
  48. package/dist/ui/formatters/summary-formatter.js.map +1 -0
  49. package/dist/ui/formatters/types.d.ts +26 -0
  50. package/dist/ui/formatters/types.d.ts.map +1 -0
  51. package/dist/ui/formatters/types.js +3 -0
  52. package/dist/ui/formatters/types.js.map +1 -0
  53. package/dist/ui/index.d.ts +4 -0
  54. package/dist/ui/index.d.ts.map +1 -0
  55. package/dist/ui/index.js +20 -0
  56. package/dist/ui/index.js.map +1 -0
  57. package/dist/ui/logger/index.d.ts +2 -0
  58. package/dist/ui/logger/index.d.ts.map +1 -0
  59. package/dist/ui/logger/index.js +34 -0
  60. package/dist/ui/logger/index.js.map +1 -0
  61. package/dist/ui/logger/line-formatter.d.ts +14 -0
  62. package/dist/ui/logger/line-formatter.d.ts.map +1 -0
  63. package/dist/ui/logger/line-formatter.js +218 -0
  64. package/dist/ui/logger/line-formatter.js.map +1 -0
  65. package/dist/ui/logger/name-formatter.d.ts +3 -0
  66. package/dist/ui/logger/name-formatter.d.ts.map +1 -0
  67. package/dist/ui/logger/name-formatter.js +20 -0
  68. package/dist/ui/logger/name-formatter.js.map +1 -0
  69. package/dist/ui/logger/simple-line-formatter.d.ts +14 -0
  70. package/dist/ui/logger/simple-line-formatter.d.ts.map +1 -0
  71. package/dist/ui/logger/simple-line-formatter.js +210 -0
  72. package/dist/ui/logger/simple-line-formatter.js.map +1 -0
  73. package/dist/ui/logger/simple-logger.d.ts +3 -0
  74. package/dist/ui/logger/simple-logger.d.ts.map +1 -0
  75. package/dist/ui/logger/simple-logger.js +39 -0
  76. package/dist/ui/logger/simple-logger.js.map +1 -0
  77. package/dist/ui/logger/simple-task-formatter.d.ts +47 -0
  78. package/dist/ui/logger/simple-task-formatter.d.ts.map +1 -0
  79. package/dist/ui/logger/simple-task-formatter.js +187 -0
  80. package/dist/ui/logger/simple-task-formatter.js.map +1 -0
  81. package/dist/ui/logger/task-formatter.d.ts +47 -0
  82. package/dist/ui/logger/task-formatter.d.ts.map +1 -0
  83. package/dist/ui/logger/task-formatter.js +187 -0
  84. package/dist/ui/logger/task-formatter.js.map +1 -0
  85. package/dist/ui/shell-listr2.d.ts +36 -0
  86. package/dist/ui/shell-listr2.d.ts.map +1 -0
  87. package/dist/ui/shell-listr2.js +200 -0
  88. package/dist/ui/shell-listr2.js.map +1 -0
  89. package/dist/ui/shell-ora.d.ts +39 -0
  90. package/dist/ui/shell-ora.d.ts.map +1 -0
  91. package/dist/ui/shell-ora.js +295 -0
  92. package/dist/ui/shell-ora.js.map +1 -0
  93. package/dist/ui/shell.d.ts +42 -0
  94. package/dist/ui/shell.d.ts.map +1 -0
  95. package/dist/ui/shell.js +312 -0
  96. package/dist/ui/shell.js.map +1 -0
  97. package/dist/ui/streams/event-bus.d.ts +36 -0
  98. package/dist/ui/streams/event-bus.d.ts.map +1 -0
  99. package/dist/ui/streams/event-bus.js +78 -0
  100. package/dist/ui/streams/event-bus.js.map +1 -0
  101. package/package.json +37 -0
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.processProgress = exports.clearTaskLines = exports.printRunningTasks = exports.resetTasks = exports.Status = exports.Change = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const cli_spinners_1 = __importDefault(require("cli-spinners"));
9
+ const ansi_diff_1 = __importDefault(require("ansi-diff"));
10
+ var Change;
11
+ (function (Change) {
12
+ Change["Create"] = "+";
13
+ Change["Replace"] = "!";
14
+ Change["Delete"] = "-";
15
+ Change["Update"] = "~";
16
+ Change["Running"] = "*";
17
+ Change["Unchanged"] = "";
18
+ })(Change || (exports.Change = Change = {}));
19
+ var Status;
20
+ (function (Status) {
21
+ Status["Creating"] = "creating";
22
+ Status["Created"] = "created";
23
+ Status["Deleting"] = "deleting";
24
+ Status["Deleted"] = "deleted";
25
+ Status["Updating"] = "updating";
26
+ Status["Updated"] = "updated";
27
+ Status["Replacing"] = "replacing";
28
+ Status["Replaced"] = "replaced";
29
+ Status["Running"] = "running";
30
+ Status["Refreshing"] = "refreshing";
31
+ Status["Refresh"] = "refresh";
32
+ Status["Failed"] = "failed";
33
+ Status["Unchanged"] = "";
34
+ })(Status || (exports.Status = Status = {}));
35
+ const tasks = new Map();
36
+ let orderedTasks = [];
37
+ const updater = (0, ansi_diff_1.default)({
38
+ height: process.stdout.rows,
39
+ width: process.stdout.columns,
40
+ });
41
+ process.stdout.on('resize', () => {
42
+ updater.resize({ width: process.stdout.columns, height: process.stdout.rows });
43
+ });
44
+ process.on('exit', () => {
45
+ if (process.stdout.isTTY) {
46
+ process.stdout.write('\u001B[?25h');
47
+ }
48
+ });
49
+ const createSpinner = () => {
50
+ let frameIndex = 0;
51
+ return () => {
52
+ const frame = cli_spinners_1.default.dots.frames[frameIndex];
53
+ frameIndex = (frameIndex + 1) % cli_spinners_1.default.dots.frames.length;
54
+ return frame;
55
+ };
56
+ };
57
+ const formatResourceType = (type) => {
58
+ const parts = type.split(':');
59
+ return parts[parts.length - 1] || type;
60
+ };
61
+ const formatTask = (task) => {
62
+ const color = (() => {
63
+ switch (task.status) {
64
+ case Status.Failed:
65
+ return chalk_1.default.bold.red;
66
+ case Status.Running:
67
+ return chalk_1.default.bold.green;
68
+ default:
69
+ }
70
+ switch (task.change) {
71
+ case Change.Replace:
72
+ case Change.Create:
73
+ return chalk_1.default.bold.green;
74
+ case Change.Update:
75
+ return chalk_1.default.bold.yellow;
76
+ case Change.Delete:
77
+ return chalk_1.default.bold.red;
78
+ default:
79
+ return chalk_1.default.grey;
80
+ }
81
+ })();
82
+ const isRunning = task.status === Status.Creating ||
83
+ task.status === Status.Updating ||
84
+ task.status === Status.Deleting ||
85
+ task.status === Status.Refreshing ||
86
+ task.status === Status.Running;
87
+ const icon = isRunning
88
+ ? color(task.spinner())
89
+ : color(task.change === Change.Unchanged ? ' ' : task.change);
90
+ const completedTime = task.completedTime ?? new Date();
91
+ const delta = (completedTime.getTime() - task.startTime.getTime()) / 1000;
92
+ const timeString = `(${delta.toFixed(1)}s)`;
93
+ const resourceType = task.name.split(' ')[0] ?? '';
94
+ const resourceName = task.name.split(' ')[1] ?? '';
95
+ return ` ${icon} ${resourceType} ${resourceName} ${color(task.status)} ${chalk_1.default.dim(timeString)}`;
96
+ };
97
+ const resetTasks = () => {
98
+ tasks.clear();
99
+ orderedTasks = [];
100
+ };
101
+ exports.resetTasks = resetTasks;
102
+ const printRunningTasks = (toUpdater = true) => {
103
+ const lines = orderedTasks.filter((task) => task.completedTime === undefined).map(formatTask);
104
+ if (toUpdater) {
105
+ const changes = updater.update(lines.join('\n'));
106
+ if (process.stdout.isTTY) {
107
+ process.stdout.write('\u001B[?25l');
108
+ }
109
+ process.stdout.write(changes);
110
+ }
111
+ else if (lines.length > 0) {
112
+ console.log(lines.join('\n'));
113
+ }
114
+ };
115
+ exports.printRunningTasks = printRunningTasks;
116
+ const clearTaskLines = () => {
117
+ const changes = updater.update('');
118
+ process.stdout.write(changes);
119
+ };
120
+ exports.clearTaskLines = clearTaskLines;
121
+ const printUpdate = (isDynamic, isComplete, existingTask, updatedTask) => {
122
+ const isNewlyCompleted = isComplete && existingTask?.completedTime === undefined;
123
+ if (isNewlyCompleted) {
124
+ if (isDynamic) {
125
+ (0, exports.clearTaskLines)();
126
+ }
127
+ console.log(formatTask(updatedTask));
128
+ if (isDynamic) {
129
+ (0, exports.printRunningTasks)();
130
+ }
131
+ }
132
+ };
133
+ const processProgress = (update, isDynamic) => {
134
+ const isWrapper = update.resourceType === 'pulumi:pulumi:Stack' ||
135
+ update.resourceType.includes('pulumi:providers:') ||
136
+ update.resourceType.includes('pulumi:pulumi:');
137
+ if (isWrapper) {
138
+ return;
139
+ }
140
+ const id = `${update.resourceType}:${update.resourceName}`;
141
+ const prettyResourceType = formatResourceType(update.resourceType);
142
+ const name = `${prettyResourceType} ${update.resourceName}`;
143
+ if (update.status === Status.Running || update.status === Status.Failed) {
144
+ update.change = Change.Running;
145
+ }
146
+ const isComplete = update.change === Change.Unchanged ||
147
+ update.status === Status.Unchanged ||
148
+ update.status === Status.Created ||
149
+ update.status === Status.Updated ||
150
+ update.status === Status.Replaced ||
151
+ update.status === Status.Deleted ||
152
+ update.status === Status.Failed ||
153
+ update.status === Status.Refresh;
154
+ const existingTask = tasks.get(id);
155
+ const updatedTask = {
156
+ id,
157
+ name,
158
+ change: update.change,
159
+ order: existingTask?.order ?? tasks.size,
160
+ startTime: existingTask?.startTime ?? new Date(),
161
+ spinner: existingTask?.spinner ?? createSpinner(),
162
+ message: update.message ?? existingTask?.message,
163
+ completedTime: isComplete ? existingTask?.completedTime ?? new Date() : undefined,
164
+ status: update.status ?? Status.Unchanged,
165
+ };
166
+ tasks.set(id, updatedTask);
167
+ orderedTasks = [...tasks.values()].sort((a, b) => {
168
+ const aUpdating = a.status === Status.Creating ||
169
+ a.status === Status.Updating ||
170
+ a.status === Status.Deleting ||
171
+ a.status === Status.Refreshing ||
172
+ a.status === Status.Running;
173
+ const bUpdating = b.status === Status.Creating ||
174
+ b.status === Status.Updating ||
175
+ b.status === Status.Deleting ||
176
+ b.status === Status.Refreshing ||
177
+ b.status === Status.Running;
178
+ if (aUpdating && !bUpdating)
179
+ return 1;
180
+ if (bUpdating && !aUpdating)
181
+ return -1;
182
+ return a.order - b.order;
183
+ });
184
+ printUpdate(isDynamic, isComplete, existingTask, updatedTask);
185
+ };
186
+ exports.processProgress = processProgress;
187
+ //# sourceMappingURL=simple-task-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-task-formatter.js","sourceRoot":"","sources":["../../../src/ui/logger/simple-task-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export declare enum Change {
2
+ Create = "+",
3
+ Replace = "!",
4
+ Delete = "-",
5
+ Update = "~",
6
+ Running = "*",
7
+ Unchanged = ""
8
+ }
9
+ export declare enum Status {
10
+ Creating = "creating",
11
+ Created = "created",
12
+ Deleting = "deleting",
13
+ Deleted = "deleted",
14
+ Updating = "updating",
15
+ Updated = "updated",
16
+ Replacing = "replacing",
17
+ Replaced = "replaced",
18
+ Running = "running",
19
+ Refreshing = "refreshing",
20
+ Refresh = "refresh",
21
+ Failed = "failed",
22
+ Unchanged = ""
23
+ }
24
+ export interface TaskUpdate {
25
+ change: Change;
26
+ resourceType: string;
27
+ resourceName: string;
28
+ status?: Status;
29
+ time: string;
30
+ message?: string;
31
+ }
32
+ export interface Task {
33
+ change: Change;
34
+ order: number;
35
+ id: string;
36
+ name: string;
37
+ startTime: Date;
38
+ completedTime?: Date;
39
+ message?: string;
40
+ status: Status;
41
+ spinner: () => string;
42
+ }
43
+ export declare const resetTasks: () => void;
44
+ export declare const printRunningTasks: (toUpdater?: boolean) => void;
45
+ export declare const clearTaskLines: () => void;
46
+ export declare const processProgress: (update: TaskUpdate, isDynamic: boolean) => void;
47
+ //# sourceMappingURL=task-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-formatter.d.ts","sourceRoot":"","sources":["../../../src/ui/logger/task-formatter.ts"],"names":[],"mappings":"AAcA,oBAAY,MAAM;IAChB,MAAM,MAAM;IACZ,OAAO,MAAM;IACb,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,OAAO,MAAM;IACb,SAAS,KAAK;CACf;AAED,oBAAY,MAAM;IAChB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,KAAK;CACf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,IAAI,CAAA;IACf,aAAa,CAAC,EAAE,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,MAAM,CAAA;CACtB;AA+FD,eAAO,MAAM,UAAU,QAAO,IAG7B,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,mBAAgB,KAAG,IAYpD,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,IAGjC,CAAA;AAuBD,eAAO,MAAM,eAAe,GAAI,QAAQ,UAAU,EAAE,WAAW,OAAO,KAAG,IAgExE,CAAA"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.processProgress = exports.clearTaskLines = exports.printRunningTasks = exports.resetTasks = exports.Status = exports.Change = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const cli_spinners_1 = __importDefault(require("cli-spinners"));
9
+ const ansi_diff_1 = __importDefault(require("ansi-diff"));
10
+ var Change;
11
+ (function (Change) {
12
+ Change["Create"] = "+";
13
+ Change["Replace"] = "!";
14
+ Change["Delete"] = "-";
15
+ Change["Update"] = "~";
16
+ Change["Running"] = "*";
17
+ Change["Unchanged"] = "";
18
+ })(Change || (exports.Change = Change = {}));
19
+ var Status;
20
+ (function (Status) {
21
+ Status["Creating"] = "creating";
22
+ Status["Created"] = "created";
23
+ Status["Deleting"] = "deleting";
24
+ Status["Deleted"] = "deleted";
25
+ Status["Updating"] = "updating";
26
+ Status["Updated"] = "updated";
27
+ Status["Replacing"] = "replacing";
28
+ Status["Replaced"] = "replaced";
29
+ Status["Running"] = "running";
30
+ Status["Refreshing"] = "refreshing";
31
+ Status["Refresh"] = "refresh";
32
+ Status["Failed"] = "failed";
33
+ Status["Unchanged"] = "";
34
+ })(Status || (exports.Status = Status = {}));
35
+ const tasks = new Map();
36
+ let orderedTasks = [];
37
+ const updater = (0, ansi_diff_1.default)({
38
+ height: process.stdout.rows,
39
+ width: process.stdout.columns,
40
+ });
41
+ process.stdout.on('resize', () => {
42
+ updater.resize({ width: process.stdout.columns, height: process.stdout.rows });
43
+ });
44
+ process.on('exit', () => {
45
+ if (process.stdout.isTTY) {
46
+ process.stdout.write('\u001B[?25h');
47
+ }
48
+ });
49
+ const createSpinner = () => {
50
+ let frameIndex = 0;
51
+ return () => {
52
+ const frame = cli_spinners_1.default.dots.frames[frameIndex];
53
+ frameIndex = (frameIndex + 1) % cli_spinners_1.default.dots.frames.length;
54
+ return frame;
55
+ };
56
+ };
57
+ const formatResourceType = (type) => {
58
+ const parts = type.split(':');
59
+ return parts[parts.length - 1] || type;
60
+ };
61
+ const formatTask = (task) => {
62
+ const color = (() => {
63
+ switch (task.status) {
64
+ case Status.Failed:
65
+ return chalk_1.default.bold.red;
66
+ case Status.Running:
67
+ return chalk_1.default.bold.green;
68
+ default:
69
+ }
70
+ switch (task.change) {
71
+ case Change.Replace:
72
+ case Change.Create:
73
+ return chalk_1.default.bold.green;
74
+ case Change.Update:
75
+ return chalk_1.default.bold.yellow;
76
+ case Change.Delete:
77
+ return chalk_1.default.bold.red;
78
+ default:
79
+ return chalk_1.default.grey;
80
+ }
81
+ })();
82
+ const isRunning = task.status === Status.Creating ||
83
+ task.status === Status.Updating ||
84
+ task.status === Status.Deleting ||
85
+ task.status === Status.Refreshing ||
86
+ task.status === Status.Running;
87
+ const icon = isRunning
88
+ ? color(task.spinner())
89
+ : color(task.change === Change.Unchanged ? ' ' : task.change);
90
+ const completedTime = task.completedTime ?? new Date();
91
+ const delta = (completedTime.getTime() - task.startTime.getTime()) / 1000;
92
+ const timeString = `(${delta.toFixed(1)}s)`;
93
+ const resourceType = task.name.split(' ')[0] ?? '';
94
+ const resourceName = task.name.split(' ')[1] ?? '';
95
+ return ` ${icon} ${resourceType} ${resourceName} ${color(task.status)} ${chalk_1.default.dim(timeString)}`;
96
+ };
97
+ const resetTasks = () => {
98
+ tasks.clear();
99
+ orderedTasks = [];
100
+ };
101
+ exports.resetTasks = resetTasks;
102
+ const printRunningTasks = (toUpdater = true) => {
103
+ const lines = orderedTasks.filter((task) => task.completedTime === undefined).map(formatTask);
104
+ if (toUpdater) {
105
+ const changes = updater.update(lines.join('\n'));
106
+ if (process.stdout.isTTY) {
107
+ process.stdout.write('\u001B[?25l');
108
+ }
109
+ process.stdout.write(changes);
110
+ }
111
+ else if (lines.length > 0) {
112
+ console.log(lines.join('\n'));
113
+ }
114
+ };
115
+ exports.printRunningTasks = printRunningTasks;
116
+ const clearTaskLines = () => {
117
+ const changes = updater.update('');
118
+ process.stdout.write(changes);
119
+ };
120
+ exports.clearTaskLines = clearTaskLines;
121
+ const printUpdate = (isDynamic, isComplete, existingTask, updatedTask) => {
122
+ const isNewlyCompleted = isComplete && existingTask?.completedTime === undefined;
123
+ if (isNewlyCompleted) {
124
+ if (isDynamic) {
125
+ (0, exports.clearTaskLines)();
126
+ }
127
+ console.log(formatTask(updatedTask));
128
+ if (isDynamic) {
129
+ (0, exports.printRunningTasks)();
130
+ }
131
+ }
132
+ };
133
+ const processProgress = (update, isDynamic) => {
134
+ const isWrapper = update.resourceType === 'pulumi:pulumi:Stack' ||
135
+ update.resourceType.includes('pulumi:providers:') ||
136
+ update.resourceType.includes('pulumi:pulumi:');
137
+ if (isWrapper) {
138
+ return;
139
+ }
140
+ const id = `${update.resourceType}:${update.resourceName}`;
141
+ const prettyResourceType = formatResourceType(update.resourceType);
142
+ const name = `${prettyResourceType} ${update.resourceName}`;
143
+ if (update.status === Status.Running || update.status === Status.Failed) {
144
+ update.change = Change.Running;
145
+ }
146
+ const isComplete = update.change === Change.Unchanged ||
147
+ update.status === Status.Unchanged ||
148
+ update.status === Status.Created ||
149
+ update.status === Status.Updated ||
150
+ update.status === Status.Replaced ||
151
+ update.status === Status.Deleted ||
152
+ update.status === Status.Failed ||
153
+ update.status === Status.Refresh;
154
+ const existingTask = tasks.get(id);
155
+ const updatedTask = {
156
+ id,
157
+ name,
158
+ change: update.change,
159
+ order: existingTask?.order ?? tasks.size,
160
+ startTime: existingTask?.startTime ?? new Date(),
161
+ spinner: existingTask?.spinner ?? createSpinner(),
162
+ message: update.message ?? existingTask?.message,
163
+ completedTime: isComplete ? existingTask?.completedTime ?? new Date() : undefined,
164
+ status: update.status ?? Status.Unchanged,
165
+ };
166
+ tasks.set(id, updatedTask);
167
+ orderedTasks = [...tasks.values()].sort((a, b) => {
168
+ const aUpdating = a.status === Status.Creating ||
169
+ a.status === Status.Updating ||
170
+ a.status === Status.Deleting ||
171
+ a.status === Status.Refreshing ||
172
+ a.status === Status.Running;
173
+ const bUpdating = b.status === Status.Creating ||
174
+ b.status === Status.Updating ||
175
+ b.status === Status.Deleting ||
176
+ b.status === Status.Refreshing ||
177
+ b.status === Status.Running;
178
+ if (aUpdating && !bUpdating)
179
+ return 1;
180
+ if (bUpdating && !aUpdating)
181
+ return -1;
182
+ return a.order - b.order;
183
+ });
184
+ printUpdate(isDynamic, isComplete, existingTask, updatedTask);
185
+ };
186
+ exports.processProgress = processProgress;
187
+ //# sourceMappingURL=task-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-formatter.js","sourceRoot":"","sources":["../../../src/ui/logger/task-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { DeploymentEventBus } from './streams/event-bus';
2
+ import { DeploymentConfig, PhaseMetric, DeploymentResult } from './formatters';
3
+ export interface UIShellConfig {
4
+ readonly verbose?: boolean;
5
+ readonly colors?: boolean;
6
+ readonly interactive?: boolean;
7
+ }
8
+ export declare class UIShell {
9
+ private readonly eventBus;
10
+ private readonly config;
11
+ private unsubscribers;
12
+ private phaseStartTimes;
13
+ private deploymentConfig?;
14
+ private phaseMetrics;
15
+ private listrTasks;
16
+ private currentListr;
17
+ private activePhase;
18
+ private resourceCounts;
19
+ constructor(eventBus: DeploymentEventBus, config?: UIShellConfig);
20
+ private formatDuration;
21
+ private printSection;
22
+ private printItem;
23
+ private setupEventListeners;
24
+ log(message: string): void;
25
+ info(message: string): void;
26
+ success(message: string): void;
27
+ warn(message: string): void;
28
+ error(message: string): void;
29
+ setDeploymentConfig(config: DeploymentConfig): void;
30
+ getPhaseMetrics(): PhaseMetric[];
31
+ printFinalSummary(result: DeploymentResult): void;
32
+ private collectPhaseMetric;
33
+ cleanup(): void;
34
+ }
35
+ export declare const createUIShell: (eventBus: DeploymentEventBus, config?: UIShellConfig) => UIShell;
36
+ //# sourceMappingURL=shell-listr2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-listr2.d.ts","sourceRoot":"","sources":["../../src/ui/shell-listr2.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAGjB,MAAM,cAAc,CAAA;AAErB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAC/B;AAsBD,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,YAAY,CAAyC;IAG7D,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,cAAc,CAAkD;gBAE5D,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,aAAa;IAehE,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,mBAAmB;IAsI3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5B,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAOnD,eAAe,IAAI,WAAW,EAAE;IAOhC,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAQjD,OAAO,CAAC,kBAAkB;IAI1B,OAAO,IAAI,IAAI;CAOhB;AAED,eAAO,MAAM,aAAa,GAAI,UAAU,kBAAkB,EAAE,SAAS,aAAa,KAAG,OAEpF,CAAA"}