@ai-devkit/channel-connector 0.6.0 → 0.8.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.
- package/.swcrc +27 -0
- package/dist/ChannelManager.d.ts +1 -1
- package/dist/ChannelManager.d.ts.map +1 -1
- package/dist/ChannelManager.js +9 -19
- package/dist/ChannelManager.js.map +1 -1
- package/dist/ConfigStore.d.ts +1 -1
- package/dist/ConfigStore.d.ts.map +1 -1
- package/dist/ConfigStore.js +25 -57
- package/dist/ConfigStore.js.map +1 -1
- package/dist/__tests__/ChannelManager.test.js +70 -0
- package/dist/__tests__/ChannelManager.test.js.map +1 -0
- package/dist/__tests__/ConfigStore.test.js +146 -0
- package/dist/__tests__/ConfigStore.test.js.map +1 -0
- package/dist/__tests__/adapters/TelegramAdapter.test.js +240 -0
- package/dist/__tests__/adapters/TelegramAdapter.test.js.map +1 -0
- package/dist/__tests__/utils/telegramHtml.test.js +86 -0
- package/dist/__tests__/utils/telegramHtml.test.js.map +1 -0
- package/dist/adapters/ChannelAdapter.d.ts +1 -1
- package/dist/adapters/ChannelAdapter.d.ts.map +1 -1
- package/dist/adapters/ChannelAdapter.js +7 -2
- package/dist/adapters/ChannelAdapter.js.map +1 -1
- package/dist/adapters/TelegramAdapter.d.ts +2 -2
- package/dist/adapters/TelegramAdapter.d.ts.map +1 -1
- package/dist/adapters/TelegramAdapter.js +32 -47
- package/dist/adapters/TelegramAdapter.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -11
- package/dist/index.js.map +1 -1
- package/dist/types.js +7 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/telegramHtml.js +36 -35
- package/dist/utils/telegramHtml.js.map +1 -1
- package/package.json +17 -12
- package/vitest.config.ts +20 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { ChannelManager } from './ChannelManager';
|
|
2
|
-
export { ConfigStore } from './ConfigStore';
|
|
3
|
-
export { TelegramAdapter, TELEGRAM_CHANNEL_TYPE, TELEGRAM_MAX_MESSAGE_LENGTH } from './adapters/TelegramAdapter';
|
|
4
|
-
export type { TelegramAdapterOptions } from './adapters/TelegramAdapter';
|
|
5
|
-
export type { ChannelAdapter } from './adapters/ChannelAdapter';
|
|
6
|
-
export type { IncomingMessage, MessageHandler, ChannelConfig, ChannelEntry, ChannelType, TelegramConfig, } from './types';
|
|
1
|
+
export { ChannelManager } from './ChannelManager.js';
|
|
2
|
+
export { ConfigStore } from './ConfigStore.js';
|
|
3
|
+
export { TelegramAdapter, TELEGRAM_CHANNEL_TYPE, TELEGRAM_MAX_MESSAGE_LENGTH } from './adapters/TelegramAdapter.js';
|
|
4
|
+
export type { TelegramAdapterOptions } from './adapters/TelegramAdapter.js';
|
|
5
|
+
export type { ChannelAdapter } from './adapters/ChannelAdapter.js';
|
|
6
|
+
export type { IncomingMessage, MessageHandler, ChannelConfig, ChannelEntry, ChannelType, TelegramConfig, } from './types.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACpH,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,YAAY,EACR,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "ChannelManager", { enumerable: true, get: function () { return ChannelManager_1.ChannelManager; } });
|
|
6
|
-
var ConfigStore_1 = require("./ConfigStore");
|
|
7
|
-
Object.defineProperty(exports, "ConfigStore", { enumerable: true, get: function () { return ConfigStore_1.ConfigStore; } });
|
|
8
|
-
var TelegramAdapter_1 = require("./adapters/TelegramAdapter");
|
|
9
|
-
Object.defineProperty(exports, "TelegramAdapter", { enumerable: true, get: function () { return TelegramAdapter_1.TelegramAdapter; } });
|
|
10
|
-
Object.defineProperty(exports, "TELEGRAM_CHANNEL_TYPE", { enumerable: true, get: function () { return TelegramAdapter_1.TELEGRAM_CHANNEL_TYPE; } });
|
|
11
|
-
Object.defineProperty(exports, "TELEGRAM_MAX_MESSAGE_LENGTH", { enumerable: true, get: function () { return TelegramAdapter_1.TELEGRAM_MAX_MESSAGE_LENGTH; } });
|
|
1
|
+
export { ChannelManager } from './ChannelManager.js';
|
|
2
|
+
export { ConfigStore } from './ConfigStore.js';
|
|
3
|
+
export { TelegramAdapter, TELEGRAM_CHANNEL_TYPE, TELEGRAM_MAX_MESSAGE_LENGTH } from './adapters/TelegramAdapter.js';
|
|
4
|
+
|
|
12
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { ChannelManager } from './ChannelManager.js';\nexport { ConfigStore } from './ConfigStore.js';\nexport { TelegramAdapter, TELEGRAM_CHANNEL_TYPE, TELEGRAM_MAX_MESSAGE_LENGTH } from './adapters/TelegramAdapter.js';\nexport type { TelegramAdapterOptions } from './adapters/TelegramAdapter.js';\n\nexport type { ChannelAdapter } from './adapters/ChannelAdapter.js';\n\nexport type {\n IncomingMessage,\n MessageHandler,\n ChannelConfig,\n ChannelEntry,\n ChannelType,\n TelegramConfig,\n} from './types.js';\n"],"names":["ChannelManager","ConfigStore","TelegramAdapter","TELEGRAM_CHANNEL_TYPE","TELEGRAM_MAX_MESSAGE_LENGTH"],"mappings":"AAAA,SAASA,cAAc,QAAQ,sBAAsB;AACrD,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,eAAe,EAAEC,qBAAqB,EAAEC,2BAA2B,QAAQ,gCAAgC"}
|
package/dist/types.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* An incoming message from a messaging platform.
|
|
3
|
+
* Generic — no agent-specific concepts.
|
|
4
|
+
*/ /**
|
|
5
|
+
* Telegram-specific configuration.
|
|
6
|
+
*/ export { };
|
|
7
|
+
|
|
3
8
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["/**\n * An incoming message from a messaging platform.\n * Generic — no agent-specific concepts.\n */\nexport interface IncomingMessage {\n channelType: string;\n chatId: string;\n userId: string;\n text: string;\n timestamp: Date;\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Handler function provided by the consumer (e.g., CLI).\n * Fire-and-forget — returns void. Responses are sent separately via sendMessage().\n */\nexport type MessageHandler = (message: IncomingMessage) => Promise<void>;\n\n/**\n * Root configuration for all channels.\n */\nexport interface ChannelConfig {\n channels: Record<string, ChannelEntry>;\n}\n\n/**\n * Configuration entry for a single channel.\n */\nexport interface ChannelEntry {\n type: ChannelType;\n enabled: boolean;\n createdAt: string;\n config: TelegramConfig;\n}\n\n/**\n * Supported channel types.\n */\nexport type ChannelType = 'telegram' | 'slack' | 'whatsapp';\n\n/**\n * Telegram-specific configuration.\n */\nexport interface TelegramConfig {\n botToken: string;\n botUsername: string;\n authorizedChatId?: number;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAsCD;;CAEC,GACD,WAIC"}
|
|
@@ -1,88 +1,89 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const marked_1 = require("marked");
|
|
5
|
-
const escapeHtml = (s) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
6
|
-
const escapeUrl = (s) => s.replace(/&/g, '&').replace(/"/g, '"');
|
|
1
|
+
import { Marked } from 'marked';
|
|
2
|
+
const escapeHtml = (s)=>s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
3
|
+
const escapeUrl = (s)=>s.replace(/&/g, '&').replace(/"/g, '"');
|
|
7
4
|
const renderer = {
|
|
8
|
-
heading({ tokens }) {
|
|
5
|
+
heading ({ tokens }) {
|
|
9
6
|
return `<b>${this.parser.parseInline(tokens)}</b>\n\n`;
|
|
10
7
|
},
|
|
11
|
-
paragraph({ tokens }) {
|
|
8
|
+
paragraph ({ tokens }) {
|
|
12
9
|
return `${this.parser.parseInline(tokens)}\n\n`;
|
|
13
10
|
},
|
|
14
|
-
strong({ tokens }) {
|
|
11
|
+
strong ({ tokens }) {
|
|
15
12
|
return `<b>${this.parser.parseInline(tokens)}</b>`;
|
|
16
13
|
},
|
|
17
|
-
em({ tokens }) {
|
|
14
|
+
em ({ tokens }) {
|
|
18
15
|
return `<i>${this.parser.parseInline(tokens)}</i>`;
|
|
19
16
|
},
|
|
20
|
-
del({ tokens }) {
|
|
17
|
+
del ({ tokens }) {
|
|
21
18
|
return `<s>${this.parser.parseInline(tokens)}</s>`;
|
|
22
19
|
},
|
|
23
|
-
codespan({ text }) {
|
|
20
|
+
codespan ({ text }) {
|
|
24
21
|
return `<code>${escapeHtml(text)}</code>`;
|
|
25
22
|
},
|
|
26
|
-
code({ text, lang }) {
|
|
23
|
+
code ({ text, lang }) {
|
|
27
24
|
const langAttr = lang ? ` class="language-${escapeHtml(lang.split(/\s/)[0])}"` : '';
|
|
28
25
|
return `<pre><code${langAttr}>${escapeHtml(text)}</code></pre>\n\n`;
|
|
29
26
|
},
|
|
30
|
-
link({ href, tokens }) {
|
|
27
|
+
link ({ href, tokens }) {
|
|
31
28
|
return `<a href="${escapeUrl(href)}">${this.parser.parseInline(tokens)}</a>`;
|
|
32
29
|
},
|
|
33
|
-
image({ href, text }) {
|
|
30
|
+
image ({ href, text }) {
|
|
34
31
|
const label = text || href;
|
|
35
32
|
return `<a href="${escapeUrl(href)}">${escapeHtml(label)}</a>`;
|
|
36
33
|
},
|
|
37
|
-
list({ items, ordered, start }) {
|
|
34
|
+
list ({ items, ordered, start }) {
|
|
38
35
|
const startNum = typeof start === 'number' ? start : 1;
|
|
39
|
-
const lines = items.map((item, i)
|
|
36
|
+
const lines = items.map((item, i)=>{
|
|
40
37
|
const marker = ordered ? `${startNum + i}.` : '•';
|
|
41
38
|
const inner = this.parser.parseInline(item.tokens).trimEnd();
|
|
42
39
|
return `${marker} ${inner}`;
|
|
43
40
|
});
|
|
44
41
|
return `${lines.join('\n')}\n\n`;
|
|
45
42
|
},
|
|
46
|
-
listitem(item) {
|
|
43
|
+
listitem (item) {
|
|
47
44
|
return this.parser.parseInline(item.tokens);
|
|
48
45
|
},
|
|
49
|
-
blockquote({ tokens }) {
|
|
46
|
+
blockquote ({ tokens }) {
|
|
50
47
|
return `<blockquote>${this.parser.parse(tokens).trimEnd()}</blockquote>\n\n`;
|
|
51
48
|
},
|
|
52
|
-
table({ header, rows }) {
|
|
53
|
-
const headerCells = header.map((c)
|
|
54
|
-
const bodyRows = rows.map((row)
|
|
55
|
-
const widths = headerCells.map((h, i)
|
|
56
|
-
const pad = (cells)
|
|
49
|
+
table ({ header, rows }) {
|
|
50
|
+
const headerCells = header.map((c)=>c.text);
|
|
51
|
+
const bodyRows = rows.map((row)=>row.map((c)=>c.text));
|
|
52
|
+
const widths = headerCells.map((h, i)=>Math.max(h.length, ...bodyRows.map((row)=>(row[i] ?? '').length)));
|
|
53
|
+
const pad = (cells)=>cells.map((c, i)=>c.padEnd(widths[i] ?? 0)).join(' | ');
|
|
57
54
|
const lines = [
|
|
58
55
|
pad(headerCells),
|
|
59
|
-
widths.map((w)
|
|
60
|
-
...bodyRows.map(pad)
|
|
56
|
+
widths.map((w)=>'-'.repeat(w)).join('-+-'),
|
|
57
|
+
...bodyRows.map(pad)
|
|
61
58
|
];
|
|
62
59
|
return `<pre>${escapeHtml(lines.join('\n'))}</pre>\n\n`;
|
|
63
60
|
},
|
|
64
|
-
hr() {
|
|
61
|
+
hr () {
|
|
65
62
|
return '———\n\n';
|
|
66
63
|
},
|
|
67
|
-
br() {
|
|
64
|
+
br () {
|
|
68
65
|
return '\n';
|
|
69
66
|
},
|
|
70
|
-
html() {
|
|
67
|
+
html () {
|
|
71
68
|
return '';
|
|
72
69
|
},
|
|
73
|
-
text(token) {
|
|
70
|
+
text (token) {
|
|
74
71
|
if ('tokens' in token && token.tokens) {
|
|
75
72
|
return this.parser.parseInline(token.tokens);
|
|
76
73
|
}
|
|
77
74
|
return escapeHtml(token.text);
|
|
78
|
-
}
|
|
75
|
+
}
|
|
79
76
|
};
|
|
80
|
-
const marked = new
|
|
77
|
+
const marked = new Marked({
|
|
78
|
+
renderer
|
|
79
|
+
});
|
|
81
80
|
/**
|
|
82
81
|
* Convert markdown to Telegram-compatible HTML (uses only the tag subset
|
|
83
82
|
* Telegram's Bot API accepts for parse_mode: 'HTML').
|
|
84
|
-
*/
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
*/ export function markdownToTelegramHtml(markdown) {
|
|
84
|
+
return marked.parse(markdown, {
|
|
85
|
+
async: false
|
|
86
|
+
}).trimEnd();
|
|
87
87
|
}
|
|
88
|
+
|
|
88
89
|
//# sourceMappingURL=telegramHtml.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/utils/telegramHtml.ts"],"sourcesContent":["import { Marked, type RendererObject, type Tokens } from 'marked';\n\nconst escapeHtml = (s: string): string =>\n s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n\nconst escapeUrl = (s: string): string =>\n s.replace(/&/g, '&').replace(/\"/g, '"');\n\nconst renderer: RendererObject = {\n heading({ tokens }: Tokens.Heading): string {\n return `<b>${this.parser.parseInline(tokens)}</b>\\n\\n`;\n },\n paragraph({ tokens }: Tokens.Paragraph): string {\n return `${this.parser.parseInline(tokens)}\\n\\n`;\n },\n strong({ tokens }: Tokens.Strong): string {\n return `<b>${this.parser.parseInline(tokens)}</b>`;\n },\n em({ tokens }: Tokens.Em): string {\n return `<i>${this.parser.parseInline(tokens)}</i>`;\n },\n del({ tokens }: Tokens.Del): string {\n return `<s>${this.parser.parseInline(tokens)}</s>`;\n },\n codespan({ text }: Tokens.Codespan): string {\n return `<code>${escapeHtml(text)}</code>`;\n },\n code({ text, lang }: Tokens.Code): string {\n const langAttr = lang ? ` class=\"language-${escapeHtml(lang.split(/\\s/)[0])}\"` : '';\n return `<pre><code${langAttr}>${escapeHtml(text)}</code></pre>\\n\\n`;\n },\n link({ href, tokens }: Tokens.Link): string {\n return `<a href=\"${escapeUrl(href)}\">${this.parser.parseInline(tokens)}</a>`;\n },\n image({ href, text }: Tokens.Image): string {\n const label = text || href;\n return `<a href=\"${escapeUrl(href)}\">${escapeHtml(label)}</a>`;\n },\n list({ items, ordered, start }: Tokens.List): string {\n const startNum = typeof start === 'number' ? start : 1;\n const lines = items.map((item, i) => {\n const marker = ordered ? `${startNum + i}.` : '•';\n const inner = this.parser.parseInline(item.tokens).trimEnd();\n return `${marker} ${inner}`;\n });\n return `${lines.join('\\n')}\\n\\n`;\n },\n listitem(item: Tokens.ListItem): string {\n return this.parser.parseInline(item.tokens);\n },\n blockquote({ tokens }: Tokens.Blockquote): string {\n return `<blockquote>${this.parser.parse(tokens).trimEnd()}</blockquote>\\n\\n`;\n },\n table({ header, rows }: Tokens.Table): string {\n const headerCells = header.map((c) => c.text);\n const bodyRows = rows.map((row) => row.map((c) => c.text));\n const widths = headerCells.map((h, i) =>\n Math.max(h.length, ...bodyRows.map((row) => (row[i] ?? '').length))\n );\n const pad = (cells: string[]) =>\n cells.map((c, i) => c.padEnd(widths[i] ?? 0)).join(' | ');\n\n const lines = [\n pad(headerCells),\n widths.map((w) => '-'.repeat(w)).join('-+-'),\n ...bodyRows.map(pad),\n ];\n return `<pre>${escapeHtml(lines.join('\\n'))}</pre>\\n\\n`;\n },\n hr(): string {\n return '———\\n\\n';\n },\n br(): string {\n return '\\n';\n },\n html(): string {\n return '';\n },\n text(token: Tokens.Text | Tokens.Escape): string {\n if ('tokens' in token && token.tokens) {\n return this.parser.parseInline(token.tokens);\n }\n return escapeHtml(token.text);\n },\n};\n\nconst marked = new Marked({ renderer });\n\n/**\n * Convert markdown to Telegram-compatible HTML (uses only the tag subset\n * Telegram's Bot API accepts for parse_mode: 'HTML').\n */\nexport function markdownToTelegramHtml(markdown: string): string {\n return (marked.parse(markdown, { async: false }) as string).trimEnd();\n}\n"],"names":["Marked","escapeHtml","s","replace","escapeUrl","renderer","heading","tokens","parser","parseInline","paragraph","strong","em","del","codespan","text","code","lang","langAttr","split","link","href","image","label","list","items","ordered","start","startNum","lines","map","item","i","marker","inner","trimEnd","join","listitem","blockquote","parse","table","header","rows","headerCells","c","bodyRows","row","widths","h","Math","max","length","pad","cells","padEnd","w","repeat","hr","br","html","token","marked","markdownToTelegramHtml","markdown","async"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,20 +3,23 @@
|
|
|
3
3
|
"nx": {
|
|
4
4
|
"name": "channel-connector"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.8.0",
|
|
7
|
+
"type": "module",
|
|
7
8
|
"description": "Generic messaging bridge for connecting to external communication platforms",
|
|
8
9
|
"main": "dist/index.js",
|
|
9
10
|
"types": "dist/index.d.ts",
|
|
10
11
|
"exports": {
|
|
11
12
|
".": {
|
|
12
13
|
"types": "./dist/index.d.ts",
|
|
13
|
-
"
|
|
14
|
+
"import": "./dist/index.js"
|
|
14
15
|
}
|
|
15
16
|
},
|
|
16
17
|
"scripts": {
|
|
17
|
-
"build": "tsc",
|
|
18
|
-
"
|
|
19
|
-
"test
|
|
18
|
+
"build": "swc src -d dist --strip-leading-paths && tsc --emitDeclarationOnly",
|
|
19
|
+
"dev": "swc src -d dist --strip-leading-paths --watch",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"test:watch": "vitest",
|
|
22
|
+
"test:coverage": "vitest run --coverage",
|
|
20
23
|
"lint": "eslint src --ext .ts",
|
|
21
24
|
"typecheck": "tsc --noEmit",
|
|
22
25
|
"clean": "rm -rf dist"
|
|
@@ -32,17 +35,19 @@
|
|
|
32
35
|
"license": "MIT",
|
|
33
36
|
"dependencies": {
|
|
34
37
|
"marked": "^15.0.12",
|
|
35
|
-
"telegraf": "^4.16.3"
|
|
38
|
+
"telegraf": "^4.16.3",
|
|
39
|
+
"uuid": "14.0.0"
|
|
36
40
|
},
|
|
37
41
|
"devDependencies": {
|
|
38
|
-
"@
|
|
42
|
+
"@swc/cli": "^0.8.1",
|
|
43
|
+
"@swc/core": "^1.10.0",
|
|
39
44
|
"@types/node": "^20.11.5",
|
|
40
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
41
|
-
"@typescript-eslint/parser": "^
|
|
45
|
+
"@typescript-eslint/eslint-plugin": "^8.60.1",
|
|
46
|
+
"@typescript-eslint/parser": "^8.60.1",
|
|
47
|
+
"@vitest/coverage-v8": "^4.1.8",
|
|
42
48
|
"eslint": "^8.56.0",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"typescript": "^5.3.3"
|
|
49
|
+
"typescript": "^5.5.0",
|
|
50
|
+
"vitest": "^4.1.8"
|
|
46
51
|
},
|
|
47
52
|
"engines": {
|
|
48
53
|
"node": ">=20.20.0"
|
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineConfig } from 'vitest/config';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
test: {
|
|
5
|
+
globals: true,
|
|
6
|
+
environment: 'node',
|
|
7
|
+
include: ['src/**/__tests__/**/*.test.ts', 'src/**/*.test.ts'],
|
|
8
|
+
coverage: {
|
|
9
|
+
provider: 'v8',
|
|
10
|
+
include: ['src/**/*.ts'],
|
|
11
|
+
exclude: ['src/index.ts', 'src/**/*.d.ts', 'src/types.ts'],
|
|
12
|
+
thresholds: {
|
|
13
|
+
branches: 75,
|
|
14
|
+
functions: 75,
|
|
15
|
+
lines: 75,
|
|
16
|
+
statements: 75,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|