1
1
import * as chalk from 'chalk' ;
2
- import type { IoMessageCode , IoMessageCodeCategory , IoMessageLevel } from '../io-message' ;
2
+ import type { IoMessageCodeCategory , IoMessageLevel } from '../io-message' ;
3
+ import { type VALID_CODE } from './codes' ;
3
4
import type { ActionLessMessage , ActionLessRequest , Optional , SimplifiedMessage } from './types' ;
4
5
5
6
/**
@@ -11,27 +12,28 @@ export function formatMessage<T>(msg: Optional<SimplifiedMessage<T>, 'code'>, ca
11
12
return {
12
13
time : new Date ( ) ,
13
14
level : msg . level ,
14
- code : msg . code ?? messageCode ( msg . level , category ) ,
15
+ code : msg . code ?? defaultMessageCode ( msg . level , category ) ,
15
16
message : msg . message ,
16
17
data : msg . data ,
17
18
} ;
18
19
}
19
20
20
21
/**
21
- * Build a message code from level and category
22
+ * Build a message code from level and category. The code must be valid for this function to pass.
23
+ * Otherwise it returns a ToolkitError.
22
24
*/
23
- export function messageCode ( level : IoMessageLevel , category : IoMessageCodeCategory = 'TOOLKIT' , number ?: `${ number } ${ number } ${ number } ${ number } ` ) : IoMessageCode {
25
+ export function defaultMessageCode ( level : IoMessageLevel , category : IoMessageCodeCategory = 'TOOLKIT' ) : VALID_CODE {
24
26
const levelIndicator = level === 'error' ? 'E' :
25
27
level === 'warn' ? 'W' :
26
28
'I' ;
27
- return `CDK_${ category } _${ levelIndicator } ${ number ?? ' 0000' } ` ;
29
+ return `CDK_${ category } _${ levelIndicator } 0000` as VALID_CODE ;
28
30
}
29
31
30
32
/**
31
33
* Requests a yes/no confirmation from the IoHost.
32
34
*/
33
35
export const confirm = (
34
- code : IoMessageCode ,
36
+ code : VALID_CODE ,
35
37
question : string ,
36
38
motivation : string ,
37
39
defaultResponse : boolean ,
@@ -49,7 +51,7 @@ export const confirm = (
49
51
/**
50
52
* Prompt for a a response from the IoHost.
51
53
*/
52
- export const prompt = < T , U > ( code : IoMessageCode , message : string , defaultResponse : U , payload ?: T ) : ActionLessRequest < T , U > => {
54
+ export const prompt = < T , U > ( code : VALID_CODE , message : string , defaultResponse : U , payload ?: T ) : ActionLessRequest < T , U > => {
53
55
return {
54
56
defaultResponse,
55
57
...formatMessage ( {
@@ -64,7 +66,7 @@ export const prompt = <T, U>(code: IoMessageCode, message: string, defaultRespon
64
66
/**
65
67
* Logs an error level message.
66
68
*/
67
- export const error = < T > ( message : string , code ?: IoMessageCode , payload ?: T ) => {
69
+ export const error = < T > ( message : string , code ?: VALID_CODE , payload ?: T ) => {
68
70
return formatMessage ( {
69
71
level : 'error' ,
70
72
code,
@@ -76,7 +78,7 @@ export const error = <T>(message: string, code?: IoMessageCode, payload?: T) =>
76
78
/**
77
79
* Logs an warning level message.
78
80
*/
79
- export const warn = < T > ( message : string , code ?: IoMessageCode , payload ?: T ) => {
81
+ export const warn = < T > ( message : string , code ?: VALID_CODE , payload ?: T ) => {
80
82
return formatMessage ( {
81
83
level : 'warn' ,
82
84
code,
@@ -88,7 +90,7 @@ export const warn = <T>(message: string, code?: IoMessageCode, payload?: T) => {
88
90
/**
89
91
* Logs an info level message.
90
92
*/
91
- export const info = < T > ( message : string , code ?: IoMessageCode , payload ?: T ) => {
93
+ export const info = < T > ( message : string , code ?: VALID_CODE , payload ?: T ) => {
92
94
return formatMessage ( {
93
95
level : 'info' ,
94
96
code,
@@ -101,7 +103,7 @@ export const info = <T>(message: string, code?: IoMessageCode, payload?: T) => {
101
103
* Logs an info level message to stdout.
102
104
* @deprecated
103
105
*/
104
- export const data = < T > ( message : string , code ?: IoMessageCode , payload ?: T ) => {
106
+ export const data = < T > ( message : string , code ?: VALID_CODE , payload ?: T ) => {
105
107
return formatMessage ( {
106
108
level : 'info' ,
107
109
code,
@@ -113,7 +115,7 @@ export const data = <T>(message: string, code?: IoMessageCode, payload?: T) => {
113
115
/**
114
116
* Logs a debug level message.
115
117
*/
116
- export const debug = < T > ( message : string , code ?: IoMessageCode , payload ?: T ) => {
118
+ export const debug = < T > ( message : string , code ?: VALID_CODE , payload ?: T ) => {
117
119
return formatMessage ( {
118
120
level : 'debug' ,
119
121
code,
@@ -125,7 +127,7 @@ export const debug = <T>(message: string, code?: IoMessageCode, payload?: T) =>
125
127
/**
126
128
* Logs a trace level message.
127
129
*/
128
- export const trace = < T > ( message : string , code ?: IoMessageCode , payload ?: T ) => {
130
+ export const trace = < T > ( message : string , code ?: VALID_CODE , payload ?: T ) => {
129
131
return formatMessage ( {
130
132
level : 'trace' ,
131
133
code,
@@ -138,7 +140,7 @@ export const trace = <T>(message: string, code?: IoMessageCode, payload?: T) =>
138
140
* Logs an info level success message in green text.
139
141
* @deprecated
140
142
*/
141
- export const success = < T > ( message : string , code ?: IoMessageCode , payload ?: T ) => {
143
+ export const success = < T > ( message : string , code ?: VALID_CODE , payload ?: T ) => {
142
144
return formatMessage ( {
143
145
level : 'info' ,
144
146
code,
@@ -151,7 +153,7 @@ export const success = <T>(message: string, code?: IoMessageCode, payload?: T) =
151
153
* Logs an info level message in bold text.
152
154
* @deprecated
153
155
*/
154
- export const highlight = < T > ( message : string , code ?: IoMessageCode , payload ?: T ) => {
156
+ export const highlight = < T > ( message : string , code ?: VALID_CODE , payload ?: T ) => {
155
157
return formatMessage ( {
156
158
level : 'info' ,
157
159
code,
0 commit comments