@portablecore/chat 0.2.0 → 0.2.2
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/dist/chat-interface-core.d.ts.map +1 -1
- package/dist/chat-interface-core.js +4 -4
- package/dist/chat-interface-core.js.map +1 -1
- package/dist/hooks/use-chat-session.d.ts +2 -0
- package/dist/hooks/use-chat-session.d.ts.map +1 -1
- package/dist/hooks/use-chat-session.js +30 -10
- package/dist/hooks/use-chat-session.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-interface-core.d.ts","sourceRoot":"","sources":["../src/chat-interface-core.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,YAAY,CAAA;AAQhE,UAAU,sBAAsB;IAC9B,MAAM,EAAE,mBAAmB,CAAA;IAE3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,kBAAkB,GACnB,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"chat-interface-core.d.ts","sourceRoot":"","sources":["../src/chat-interface-core.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,YAAY,CAAA;AAQhE,UAAU,sBAAsB;IAC9B,MAAM,EAAE,mBAAmB,CAAA;IAE3B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,kBAAkB,GACnB,EAAE,sBAAsB,2CAkFxB"}
|
|
@@ -29,16 +29,16 @@ function ChatInterfaceCore({ config, markdownComponents, }) {
|
|
|
29
29
|
const slots = (config.slots || {});
|
|
30
30
|
const variant = config.variant || "full";
|
|
31
31
|
const isCompact = variant === "compact";
|
|
32
|
-
const showThinking = session.
|
|
33
|
-
session.thinkingStages.length > 0 &&
|
|
34
|
-
!session.activeSkill;
|
|
32
|
+
const showThinking = session.awaitingText && !session.activeSkill;
|
|
35
33
|
const handleSend = (content) => {
|
|
36
34
|
session.send(content);
|
|
37
35
|
attachmentState.clear();
|
|
38
36
|
};
|
|
39
37
|
const thinkingMaxWidth = isCompact ? "max-w-3xl" : "max-w-5xl";
|
|
40
38
|
const rootClasses = `flex h-full ${config.classNames?.root || ""}`;
|
|
41
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: rootClasses, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col flex-1 min-w-0", children: [(0, jsx_runtime_1.jsx)(message_list_js_1.MessageList, { messages: session.messages, streaming: session.streaming, config: config, markdownComponents: markdownComponents, emptyState: slots.emptyState || ((0, jsx_runtime_1.jsx)(empty_state_js_1.EmptyState, { expertName: config.expert?.name })), beforeMessageList: slots.beforeMessageList, afterMessageList: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [showThinking && ((0, jsx_runtime_1.jsx)("div", { className: `${thinkingMaxWidth} mx-auto px-4`, children: (0, jsx_runtime_1.jsx)(thinking_indicator_js_1.ThinkingIndicator, { stages: session.thinkingStages
|
|
39
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: rootClasses, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col flex-1 min-w-0", children: [(0, jsx_runtime_1.jsx)(message_list_js_1.MessageList, { messages: session.messages, streaming: session.streaming, config: config, markdownComponents: markdownComponents, emptyState: slots.emptyState || ((0, jsx_runtime_1.jsx)(empty_state_js_1.EmptyState, { expertName: config.expert?.name })), beforeMessageList: slots.beforeMessageList, afterMessageList: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [showThinking && ((0, jsx_runtime_1.jsx)("div", { className: `${thinkingMaxWidth} mx-auto px-4`, children: (0, jsx_runtime_1.jsx)(thinking_indicator_js_1.ThinkingIndicator, { stages: session.thinkingStages.length > 0
|
|
40
|
+
? session.thinkingStages
|
|
41
|
+
: [{ stage: "thinking" }], expertName: config.expert?.name, expertAvatarUrl: config.expert?.avatarUrl }) })), slots.afterMessageList] }) }), (0, jsx_runtime_1.jsx)(input_area_js_1.InputArea, { onSend: handleSend, onAbort: session.abort, streaming: session.streaming, sending: session.sending, placeholder: config.expert
|
|
42
42
|
? `Message ${config.expert.name}...`
|
|
43
43
|
: "Send a message...", prefillText: config.prefillText, inputPrefix: slots.inputPrefix, inputSuffix: slots.inputSuffix, attachments: attachmentState.attachments, uploading: attachmentState.uploading, onAddFiles: attachmentState.addFiles, onRemoveAttachment: attachmentState.remove, hasDocumentResolver: !!config.resolvers?.documentResolver, variant: variant, classNames: config.classNames })] }), slots.sidePanel && ((0, jsx_runtime_1.jsx)("div", { className: "w-80 border-l border-border overflow-y-auto", children: slots.sidePanel }))] }));
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-interface-core.js","sourceRoot":"","sources":["../src/chat-interface-core.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;AA+BZ,
|
|
1
|
+
{"version":3,"file":"chat-interface-core.js","sourceRoot":"","sources":["../src/chat-interface-core.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;AA+BZ,8CAqFC;;AAhHD,qEAA4D;AAC5D,mEAA2D;AAC3D,kEAA0D;AAC1D,8DAAsD;AACtD,8EAAsE;AACtE,gEAAwD;AAQxD;;;;;;;;;;;;;GAaG;AACH,SAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,kBAAkB,GACK;IACvB,MAAM,OAAO,GAAG,IAAA,oCAAc,EAAC,MAAM,CAAC,CAAA;IACtC,MAAM,eAAe,GAAG,IAAA,mCAAc,EAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IAC1E,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAc,CAAA;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAA;IACxC,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,CAAA;IAEvC,MAAM,YAAY,GAChB,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,WAAW,CAAA;IAE9C,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;QACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrB,eAAe,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;IAC9D,MAAM,WAAW,GAAG,eAAe,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;IAElE,OAAO,CACL,iCAAK,SAAS,EAAE,WAAW,aACzB,iCAAK,SAAS,EAAC,8BAA8B,aAC3C,uBAAC,6BAAW,IACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EACP,KAAK,CAAC,UAAwB,IAAI,CACjC,uBAAC,2BAAU,IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAI,CAChD,EAEH,iBAAiB,EAAE,KAAK,CAAC,iBAA8B,EACvD,gBAAgB,EACd,6DACG,YAAY,IAAI,CACf,gCAAK,SAAS,EAAE,GAAG,gBAAgB,eAAe,YAChD,uBAAC,yCAAiB,IAChB,MAAM,EACJ,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;4CAC/B,CAAC,CAAC,OAAO,CAAC,cAAc;4CACxB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAmB,EAAE,CAAC,EAEtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAC/B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GACzC,GACE,CACP,EACA,KAAK,CAAC,gBAA6B,IACnC,GAEL,EAEF,uBAAC,yBAAS,IACR,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,OAAO,CAAC,KAAK,EACtB,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,WAAW,EACT,MAAM,CAAC,MAAM;4BACX,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK;4BACpC,CAAC,CAAC,mBAAmB,EAEzB,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,WAAW,EAAE,KAAK,CAAC,WAAwB,EAC3C,WAAW,EAAE,KAAK,CAAC,WAAwB,EAC3C,WAAW,EAAE,eAAe,CAAC,WAAW,EACxC,SAAS,EAAE,eAAe,CAAC,SAAS,EACpC,UAAU,EAAE,eAAe,CAAC,QAAQ,EACpC,kBAAkB,EAAE,eAAe,CAAC,MAAM,EAC1C,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,EACzD,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,CAAC,UAAU,GAC7B,IACE,EAEL,KAAK,CAAC,SAAS,IAAI,CAClB,gCAAK,SAAS,EAAC,6CAA6C,YACzD,KAAK,CAAC,SAAsB,GACzB,CACP,IACG,CACP,CAAA;AACH,CAAC"}
|
|
@@ -5,6 +5,8 @@ export interface ChatSession {
|
|
|
5
5
|
streaming: boolean;
|
|
6
6
|
sending: boolean;
|
|
7
7
|
error: string | null;
|
|
8
|
+
/** True from stream start until the first text/content event arrives. */
|
|
9
|
+
awaitingText: boolean;
|
|
8
10
|
thinkingStages: SkillThinkingStage[];
|
|
9
11
|
activeSkill: ActiveSkillState | null;
|
|
10
12
|
send: (content: string) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat-session.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chat-session.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,WAAW,EAEX,mBAAmB,EACpB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,4BAA4B,CAAA;AAMnC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,cAAc,EAAE,kBAAkB,EAAE,CAAA;IACpC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACpC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"use-chat-session.d.ts","sourceRoot":"","sources":["../../src/hooks/use-chat-session.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,WAAW,EAEX,mBAAmB,EACpB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,4BAA4B,CAAA;AAMnC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,yEAAyE;IACzE,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,kBAAkB,EAAE,CAAA;IACpC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACpC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAMD,wBAAgB,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,WAAW,CA0SvE"}
|
|
@@ -26,6 +26,7 @@ function useChatSession(config) {
|
|
|
26
26
|
const [streaming, setStreaming] = (0, react_1.useState)(false);
|
|
27
27
|
const [sending, setSending] = (0, react_1.useState)(false);
|
|
28
28
|
const [error, setError] = (0, react_1.useState)(null);
|
|
29
|
+
const [awaitingText, setAwaitingText] = (0, react_1.useState)(false);
|
|
29
30
|
// Sync initialMessages when they change (e.g., page navigation)
|
|
30
31
|
const initialMessagesRef = (0, react_1.useRef)(initialMessages);
|
|
31
32
|
(0, react_1.useEffect)(() => {
|
|
@@ -46,20 +47,28 @@ function useChatSession(config) {
|
|
|
46
47
|
// ---- Stream response ----
|
|
47
48
|
const streamResponse = (0, react_1.useCallback)(async (userMessage) => {
|
|
48
49
|
setStreaming(true);
|
|
50
|
+
setAwaitingText(true);
|
|
49
51
|
setError(null);
|
|
50
52
|
resetIndicators();
|
|
51
53
|
const tempId = `stream-${Date.now()}`;
|
|
52
54
|
streamingMessageId.current = tempId;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
55
|
+
let bubbleCreated = false;
|
|
56
|
+
const ensureBubble = () => {
|
|
57
|
+
if (bubbleCreated)
|
|
58
|
+
return;
|
|
59
|
+
bubbleCreated = true;
|
|
60
|
+
setAwaitingText(false);
|
|
61
|
+
setMessages((prev) => [
|
|
62
|
+
...prev,
|
|
63
|
+
{
|
|
64
|
+
id: tempId,
|
|
65
|
+
role: "assistant",
|
|
66
|
+
content: "",
|
|
67
|
+
streaming: true,
|
|
68
|
+
createdAt: new Date().toISOString(),
|
|
69
|
+
},
|
|
70
|
+
]);
|
|
71
|
+
};
|
|
63
72
|
const controller = new AbortController();
|
|
64
73
|
abortRef.current = controller;
|
|
65
74
|
try {
|
|
@@ -79,6 +88,7 @@ function useChatSession(config) {
|
|
|
79
88
|
});
|
|
80
89
|
if (!response.ok || !response.body) {
|
|
81
90
|
const errorText = "Something went wrong. Try again.";
|
|
91
|
+
ensureBubble();
|
|
82
92
|
setMessages((prev) => prev.map((m) => m.id === tempId
|
|
83
93
|
? { ...m, content: errorText, streaming: false }
|
|
84
94
|
: m));
|
|
@@ -92,6 +102,7 @@ function useChatSession(config) {
|
|
|
92
102
|
handleIndicatorEvent(event);
|
|
93
103
|
switch (event.type) {
|
|
94
104
|
case "text": {
|
|
105
|
+
ensureBubble();
|
|
95
106
|
updateStreamingMessage(event.text);
|
|
96
107
|
break;
|
|
97
108
|
}
|
|
@@ -99,9 +110,11 @@ function useChatSession(config) {
|
|
|
99
110
|
flushPendingContent();
|
|
100
111
|
const target = streamingMessageId.current || tempId;
|
|
101
112
|
setMessages((prev) => prev.filter((m) => m.id !== target));
|
|
113
|
+
bubbleCreated = false;
|
|
102
114
|
break;
|
|
103
115
|
}
|
|
104
116
|
case "first_response": {
|
|
117
|
+
ensureBubble();
|
|
105
118
|
flushPendingContent();
|
|
106
119
|
const frTarget = streamingMessageId.current || tempId;
|
|
107
120
|
setMessages((prev) => prev.map((m) => m.id === frTarget
|
|
@@ -110,6 +123,7 @@ function useChatSession(config) {
|
|
|
110
123
|
break;
|
|
111
124
|
}
|
|
112
125
|
case "done": {
|
|
126
|
+
ensureBubble();
|
|
113
127
|
flushPendingContent();
|
|
114
128
|
const finalId = event.messageId;
|
|
115
129
|
const doneTarget = streamingMessageId.current || tempId;
|
|
@@ -125,6 +139,7 @@ function useChatSession(config) {
|
|
|
125
139
|
break;
|
|
126
140
|
}
|
|
127
141
|
case "error": {
|
|
142
|
+
ensureBubble();
|
|
128
143
|
flushPendingContent();
|
|
129
144
|
const errTarget = streamingMessageId.current || tempId;
|
|
130
145
|
setMessages((prev) => prev.map((m) => m.id === errTarget
|
|
@@ -146,6 +161,7 @@ function useChatSession(config) {
|
|
|
146
161
|
catch (err) {
|
|
147
162
|
if (err.name !== "AbortError") {
|
|
148
163
|
const errorMsg = "Connection lost. Try again.";
|
|
164
|
+
ensureBubble();
|
|
149
165
|
setMessages((prev) => prev.map((m) => m.id === tempId
|
|
150
166
|
? { ...m, content: errorMsg, streaming: false }
|
|
151
167
|
: m));
|
|
@@ -156,6 +172,7 @@ function useChatSession(config) {
|
|
|
156
172
|
finally {
|
|
157
173
|
streamingMessageId.current = null;
|
|
158
174
|
setStreaming(false);
|
|
175
|
+
setAwaitingText(false);
|
|
159
176
|
resetIndicators();
|
|
160
177
|
abortRef.current = null;
|
|
161
178
|
}
|
|
@@ -202,11 +219,13 @@ function useChatSession(config) {
|
|
|
202
219
|
flushPendingContent();
|
|
203
220
|
setMessages((prev) => prev.map((m) => (m.streaming ? { ...m, streaming: false } : m)));
|
|
204
221
|
setStreaming(false);
|
|
222
|
+
setAwaitingText(false);
|
|
205
223
|
resetIndicators();
|
|
206
224
|
}, [flushPendingContent, resetIndicators]);
|
|
207
225
|
const clear = (0, react_1.useCallback)(() => {
|
|
208
226
|
setMessages([]);
|
|
209
227
|
setError(null);
|
|
228
|
+
setAwaitingText(false);
|
|
210
229
|
resetIndicators();
|
|
211
230
|
}, [resetIndicators]);
|
|
212
231
|
return {
|
|
@@ -214,6 +233,7 @@ function useChatSession(config) {
|
|
|
214
233
|
streaming,
|
|
215
234
|
sending,
|
|
216
235
|
error,
|
|
236
|
+
awaitingText,
|
|
217
237
|
thinkingStages,
|
|
218
238
|
activeSkill,
|
|
219
239
|
send,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat-session.js","sourceRoot":"","sources":["../../src/hooks/use-chat-session.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;
|
|
1
|
+
{"version":3,"file":"use-chat-session.js","sourceRoot":"","sources":["../../src/hooks/use-chat-session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@portablecore/chat",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Unified chat UI for Portable platforms — composable ChatInterface with extension points",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -13,12 +13,6 @@
|
|
|
13
13
|
"files": [
|
|
14
14
|
"dist"
|
|
15
15
|
],
|
|
16
|
-
"scripts": {
|
|
17
|
-
"build": "tsc",
|
|
18
|
-
"dev": "tsc --watch",
|
|
19
|
-
"clean": "rm -rf dist",
|
|
20
|
-
"typecheck": "tsc --noEmit"
|
|
21
|
-
},
|
|
22
16
|
"keywords": [
|
|
23
17
|
"portable",
|
|
24
18
|
"chat",
|
|
@@ -29,12 +23,12 @@
|
|
|
29
23
|
"author": "Portable",
|
|
30
24
|
"license": "UNLICENSED",
|
|
31
25
|
"dependencies": {
|
|
32
|
-
"@portablecore/chat-runtime": "workspace:*",
|
|
33
|
-
"@portablecore/types": "workspace:*",
|
|
34
26
|
"remark-gfm": "^4.0.1",
|
|
35
27
|
"remark-breaks": "^4.0.0",
|
|
36
28
|
"rehype-raw": "^7.0.0",
|
|
37
|
-
"rehype-highlight": "^7.0.2"
|
|
29
|
+
"rehype-highlight": "^7.0.2",
|
|
30
|
+
"@portablecore/chat-runtime": "0.1.0",
|
|
31
|
+
"@portablecore/types": "0.11.1"
|
|
38
32
|
},
|
|
39
33
|
"peerDependencies": {
|
|
40
34
|
"react": ">=18.0.0",
|
|
@@ -49,5 +43,11 @@
|
|
|
49
43
|
"react-markdown": "^10.1.0",
|
|
50
44
|
"@nvq/flowtoken": "^2.0.6",
|
|
51
45
|
"lucide-react": "^0.562.0"
|
|
46
|
+
},
|
|
47
|
+
"scripts": {
|
|
48
|
+
"build": "tsc",
|
|
49
|
+
"dev": "tsc --watch",
|
|
50
|
+
"clean": "rm -rf dist",
|
|
51
|
+
"typecheck": "tsc --noEmit"
|
|
52
52
|
}
|
|
53
|
-
}
|
|
53
|
+
}
|