@happyvertical/messages 0.74.8
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/AGENT.md +34 -0
- package/LICENSE +7 -0
- package/dist/adapters/email-bridge.d.ts +19 -0
- package/dist/adapters/email-bridge.d.ts.map +1 -0
- package/dist/adapters/slack.d.ts +19 -0
- package/dist/adapters/slack.d.ts.map +1 -0
- package/dist/adapters/twitter.d.ts +25 -0
- package/dist/adapters/twitter.d.ts.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5471 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/base.d.ts +29 -0
- package/dist/shared/base.d.ts.map +1 -0
- package/dist/shared/errors.d.ts +34 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/factory.d.ts +36 -0
- package/dist/shared/factory.d.ts.map +1 -0
- package/dist/shared/types.d.ts +117 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/metadata.json +32 -0
- package/package.json +66 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Logger } from '@happyvertical/logger';
|
|
2
|
+
import { MessagingError } from './errors.js';
|
|
3
|
+
import { Channel, FetchOptions, Message, MessageAdapterType, MessageClient, MessageClientCapabilities, MessageClientConfig, SendOptions, SendResult } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Base adapter class providing shared functionality.
|
|
6
|
+
*
|
|
7
|
+
* All adapter implementations should extend this class.
|
|
8
|
+
* Protocol-only — no database persistence.
|
|
9
|
+
*/
|
|
10
|
+
export declare abstract class BaseMessageClient implements MessageClient {
|
|
11
|
+
protected config: MessageClientConfig;
|
|
12
|
+
protected logger: Logger;
|
|
13
|
+
protected connected: boolean;
|
|
14
|
+
constructor(config: MessageClientConfig);
|
|
15
|
+
abstract send(message: Message, options?: SendOptions): Promise<SendResult>;
|
|
16
|
+
abstract fetch(options?: FetchOptions): Promise<Message[]>;
|
|
17
|
+
abstract getMessage(messageId: string): Promise<Message>;
|
|
18
|
+
abstract getThread(threadId: string): Promise<Message[]>;
|
|
19
|
+
abstract connect(): Promise<void>;
|
|
20
|
+
abstract disconnect(): Promise<void>;
|
|
21
|
+
abstract getCapabilities(): MessageClientCapabilities;
|
|
22
|
+
abstract getAdapter(): MessageAdapterType;
|
|
23
|
+
listChannels(): Promise<Channel[]>;
|
|
24
|
+
isConnected(): boolean;
|
|
25
|
+
protected validateMessage(message: Message): void;
|
|
26
|
+
protected mapError(error: unknown): MessagingError;
|
|
27
|
+
protected debug(message: string, data?: unknown): void;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/shared/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAuB,cAAc,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,mBAAmB,EACnB,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,8BAAsB,iBAAkB,YAAW,aAAa;IAC9D,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,SAAS,UAAS;gBAEhB,MAAM,EAAE,mBAAmB;IASvC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAC3E,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1D,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IACxD,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACxD,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,eAAe,IAAI,yBAAyB;IACrD,QAAQ,CAAC,UAAU,IAAI,kBAAkB;IAMnC,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAYxC,WAAW,IAAI,OAAO;IAQtB,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAoBjD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc;IAyBlD,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAKvD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error classes for @happyvertical/messages package
|
|
3
|
+
*/
|
|
4
|
+
export declare class MessagingError extends Error {
|
|
5
|
+
code: string;
|
|
6
|
+
provider?: string;
|
|
7
|
+
cause?: unknown;
|
|
8
|
+
constructor(message: string, code: string, provider?: string, cause?: unknown);
|
|
9
|
+
}
|
|
10
|
+
export declare class ConnectionError extends MessagingError {
|
|
11
|
+
constructor(message: string, provider?: string, cause?: unknown);
|
|
12
|
+
}
|
|
13
|
+
export declare class AuthenticationError extends MessagingError {
|
|
14
|
+
constructor(message: string, provider?: string, cause?: unknown);
|
|
15
|
+
}
|
|
16
|
+
export declare class SendError extends MessagingError {
|
|
17
|
+
constructor(message: string, provider?: string, cause?: unknown);
|
|
18
|
+
}
|
|
19
|
+
export declare class MessageNotFoundError extends MessagingError {
|
|
20
|
+
messageId: string;
|
|
21
|
+
constructor(messageId: string, provider?: string, cause?: unknown);
|
|
22
|
+
}
|
|
23
|
+
export declare class ChannelNotFoundError extends MessagingError {
|
|
24
|
+
channelId: string;
|
|
25
|
+
constructor(channelId: string, provider?: string);
|
|
26
|
+
}
|
|
27
|
+
export declare class RateLimitError extends MessagingError {
|
|
28
|
+
retryAfter?: number;
|
|
29
|
+
constructor(provider?: string, retryAfter?: number);
|
|
30
|
+
}
|
|
31
|
+
export declare class InvalidMessageError extends MessagingError {
|
|
32
|
+
constructor(message: string, provider?: string, cause?: unknown);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/shared/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,qBAAa,cAAe,SAAQ,KAAK;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAGd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,OAAO;CAQlB;AAMD,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAIhE;AAMD,qBAAa,mBAAoB,SAAQ,cAAc;gBACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAIhE;AAMD,qBAAa,SAAU,SAAQ,cAAc;gBAC/B,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAIhE;AAMD,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,SAAS,EAAE,MAAM,CAAC;gBAEN,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAUlE;AAMD,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,SAAS,EAAE,MAAM,CAAC;gBAEN,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAKjD;AAMD,qBAAa,cAAe,SAAQ,cAAc;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;gBAER,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CASnD;AAMD,qBAAa,mBAAoB,SAAQ,cAAc;gBACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAIhE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { EmailBridgeOptions, GetMessageClientOptions, MessageClient, SlackOptions, TwitterOptions } from './types.js';
|
|
2
|
+
export declare function isSlackOptions(opts: GetMessageClientOptions): opts is SlackOptions;
|
|
3
|
+
export declare function isTwitterOptions(opts: GetMessageClientOptions): opts is TwitterOptions;
|
|
4
|
+
export declare function isEmailBridgeOptions(opts: GetMessageClientOptions): opts is EmailBridgeOptions;
|
|
5
|
+
/**
|
|
6
|
+
* Create a message client adapter instance
|
|
7
|
+
*
|
|
8
|
+
* @param options - Configuration options for the message client adapter
|
|
9
|
+
* @returns Promise resolving to a MessageClient instance
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* // Slack adapter
|
|
14
|
+
* const slack = await getMessageClient({
|
|
15
|
+
* type: 'slack',
|
|
16
|
+
* botToken: 'xoxb-...',
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // Twitter adapter
|
|
20
|
+
* const twitter = await getMessageClient({
|
|
21
|
+
* type: 'twitter',
|
|
22
|
+
* apiKey: 'key',
|
|
23
|
+
* apiSecret: 'secret',
|
|
24
|
+
* accessToken: 'token',
|
|
25
|
+
* accessSecret: 'secret',
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // Email bridge adapter
|
|
29
|
+
* const email = await getMessageClient({
|
|
30
|
+
* type: 'email',
|
|
31
|
+
* emailOptions: { type: 'smtp', host: 'smtp.gmail.com', port: 587, auth: { user: 'x', pass: 'y' } },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function getMessageClient(options: GetMessageClientOptions): Promise<MessageClient>;
|
|
36
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/shared/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AAMpB,wBAAgB,cAAc,CAC5B,IAAI,EAAE,uBAAuB,GAC5B,IAAI,IAAI,YAAY,CAEtB;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,uBAAuB,GAC5B,IAAI,IAAI,cAAc,CAExB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,uBAAuB,GAC5B,IAAI,IAAI,kBAAkB,CAE5B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAmBxB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { GetEmailClientOptions } from '@happyvertical/email';
|
|
2
|
+
import { Logger } from '@happyvertical/logger';
|
|
3
|
+
export interface Message {
|
|
4
|
+
id?: string;
|
|
5
|
+
channelId?: string;
|
|
6
|
+
threadId?: string;
|
|
7
|
+
from: MessageSender;
|
|
8
|
+
to?: MessageRecipient[];
|
|
9
|
+
subject?: string;
|
|
10
|
+
content: string;
|
|
11
|
+
html?: string;
|
|
12
|
+
attachments?: MessageAttachment[];
|
|
13
|
+
timestamp?: Date;
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface MessageSender {
|
|
17
|
+
id?: string;
|
|
18
|
+
name?: string;
|
|
19
|
+
address?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface MessageRecipient {
|
|
22
|
+
id?: string;
|
|
23
|
+
name?: string;
|
|
24
|
+
address?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface MessageAttachment {
|
|
27
|
+
filename?: string;
|
|
28
|
+
contentType: string;
|
|
29
|
+
size: number;
|
|
30
|
+
content?: Buffer;
|
|
31
|
+
url?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SendResult {
|
|
34
|
+
success: boolean;
|
|
35
|
+
messageId?: string;
|
|
36
|
+
timestamp: Date;
|
|
37
|
+
providerResponse?: Record<string, unknown>;
|
|
38
|
+
error?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface SendOptions {
|
|
41
|
+
/** Reply to a specific message */
|
|
42
|
+
replyTo?: string;
|
|
43
|
+
/** Additional headers/metadata */
|
|
44
|
+
headers?: Record<string, string>;
|
|
45
|
+
/** Priority level */
|
|
46
|
+
priority?: 'high' | 'normal' | 'low';
|
|
47
|
+
}
|
|
48
|
+
export interface FetchOptions {
|
|
49
|
+
/** Channel or folder to fetch from */
|
|
50
|
+
channelId?: string;
|
|
51
|
+
/** Maximum messages to return */
|
|
52
|
+
limit?: number;
|
|
53
|
+
/** Fetch only unread */
|
|
54
|
+
unreadOnly?: boolean;
|
|
55
|
+
/** Fetch messages after this date */
|
|
56
|
+
since?: Date;
|
|
57
|
+
/** Fetch messages before this date */
|
|
58
|
+
before?: Date;
|
|
59
|
+
}
|
|
60
|
+
export interface Channel {
|
|
61
|
+
id: string;
|
|
62
|
+
name: string;
|
|
63
|
+
type: 'channel' | 'dm' | 'group';
|
|
64
|
+
memberCount?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface MessageClient {
|
|
67
|
+
send(message: Message, options?: SendOptions): Promise<SendResult>;
|
|
68
|
+
fetch(options?: FetchOptions): Promise<Message[]>;
|
|
69
|
+
getMessage(messageId: string): Promise<Message>;
|
|
70
|
+
getThread(threadId: string): Promise<Message[]>;
|
|
71
|
+
listChannels?(): Promise<Channel[]>;
|
|
72
|
+
connect(): Promise<void>;
|
|
73
|
+
disconnect(): Promise<void>;
|
|
74
|
+
isConnected(): boolean;
|
|
75
|
+
getCapabilities(): MessageClientCapabilities;
|
|
76
|
+
getAdapter(): MessageAdapterType;
|
|
77
|
+
}
|
|
78
|
+
export interface MessageClientCapabilities {
|
|
79
|
+
send: boolean;
|
|
80
|
+
receive: boolean;
|
|
81
|
+
threads: boolean;
|
|
82
|
+
channels: boolean;
|
|
83
|
+
reactions: boolean;
|
|
84
|
+
attachments: boolean;
|
|
85
|
+
richText: boolean;
|
|
86
|
+
}
|
|
87
|
+
export type MessageAdapterType = 'email' | 'slack' | 'twitter';
|
|
88
|
+
export interface SlackOptions {
|
|
89
|
+
type: 'slack';
|
|
90
|
+
botToken: string;
|
|
91
|
+
appToken?: string;
|
|
92
|
+
teamId?: string;
|
|
93
|
+
debug?: boolean;
|
|
94
|
+
logger?: Logger;
|
|
95
|
+
}
|
|
96
|
+
export interface TwitterOptions {
|
|
97
|
+
type: 'twitter';
|
|
98
|
+
apiKey: string;
|
|
99
|
+
apiSecret: string;
|
|
100
|
+
accessToken: string;
|
|
101
|
+
accessSecret: string;
|
|
102
|
+
debug?: boolean;
|
|
103
|
+
logger?: Logger;
|
|
104
|
+
}
|
|
105
|
+
export interface EmailBridgeOptions {
|
|
106
|
+
type: 'email';
|
|
107
|
+
emailOptions: GetEmailClientOptions;
|
|
108
|
+
debug?: boolean;
|
|
109
|
+
logger?: Logger;
|
|
110
|
+
}
|
|
111
|
+
export type GetMessageClientOptions = SlackOptions | TwitterOptions | EmailBridgeOptions;
|
|
112
|
+
export interface MessageClientConfig {
|
|
113
|
+
type: MessageAdapterType;
|
|
114
|
+
debug?: boolean;
|
|
115
|
+
logger?: Logger;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/metadata.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@happyvertical/messages",
|
|
3
|
+
"path": "packages/messages",
|
|
4
|
+
"position": {
|
|
5
|
+
"index": 19,
|
|
6
|
+
"count": 30
|
|
7
|
+
},
|
|
8
|
+
"description": "Unified multi-channel messaging with adapter-based architecture (Slack, Twitter, Email)",
|
|
9
|
+
"provides": [
|
|
10
|
+
"Unified multi-channel messaging with adapter-based architecture (Slack, Twitter, Email)"
|
|
11
|
+
],
|
|
12
|
+
"implements": [],
|
|
13
|
+
"requires": {
|
|
14
|
+
"workspace": [
|
|
15
|
+
"@happyvertical/email",
|
|
16
|
+
"@happyvertical/logger",
|
|
17
|
+
"@happyvertical/utils"
|
|
18
|
+
],
|
|
19
|
+
"externalHappyVertical": [],
|
|
20
|
+
"external": [
|
|
21
|
+
"@slack/web-api"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"dependents": [],
|
|
25
|
+
"stability": {
|
|
26
|
+
"level": "stable",
|
|
27
|
+
"reason": "Primary package surface is described as implemented and production-oriented."
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"messages"
|
|
31
|
+
]
|
|
32
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@happyvertical/messages",
|
|
3
|
+
"version": "0.74.8",
|
|
4
|
+
"description": "Unified multi-channel messaging with adapter-based architecture (Slack, Twitter, Email)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md",
|
|
18
|
+
"LICENSE",
|
|
19
|
+
"AGENT.md",
|
|
20
|
+
"metadata.json"
|
|
21
|
+
],
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"registry": "https://registry.npmjs.org",
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@slack/web-api": "^7.15.1",
|
|
28
|
+
"@happyvertical/email": "0.74.8",
|
|
29
|
+
"@happyvertical/logger": "0.74.8",
|
|
30
|
+
"@happyvertical/utils": "0.74.8"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "25.0.10",
|
|
34
|
+
"typescript": "^5.9.3",
|
|
35
|
+
"vite": "7.3.2",
|
|
36
|
+
"vite-plugin-dts": "4.5.4",
|
|
37
|
+
"vitest": "^4.1.5"
|
|
38
|
+
},
|
|
39
|
+
"keywords": [
|
|
40
|
+
"messaging",
|
|
41
|
+
"slack",
|
|
42
|
+
"twitter",
|
|
43
|
+
"email",
|
|
44
|
+
"unified",
|
|
45
|
+
"adapter"
|
|
46
|
+
],
|
|
47
|
+
"author": "HappyVertical",
|
|
48
|
+
"license": "MIT",
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "https://github.com/happyvertical/sdk.git",
|
|
52
|
+
"directory": "packages/messages"
|
|
53
|
+
},
|
|
54
|
+
"bugs": {
|
|
55
|
+
"url": "https://github.com/happyvertical/sdk/issues"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/happyvertical/sdk/tree/main/packages/messages#readme",
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build": "vite build",
|
|
60
|
+
"dev": "vite build --watch",
|
|
61
|
+
"test": "vitest run",
|
|
62
|
+
"test:watch": "vitest",
|
|
63
|
+
"typecheck": "tsc --noEmit",
|
|
64
|
+
"clean": "rm -rf dist"
|
|
65
|
+
}
|
|
66
|
+
}
|