@xihe-lab/tapd-mcp-server 1.0.6 → 1.4.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/README.md +56 -7
- package/dist/integration-test.d.ts +10 -0
- package/dist/integration-test.d.ts.map +1 -0
- package/dist/integration-test.js +117 -0
- package/dist/integration-test.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -4
- package/dist/server.js.map +1 -1
- package/dist/tapd-client.d.ts +65 -1
- package/dist/tapd-client.d.ts.map +1 -1
- package/dist/tapd-client.js +135 -28
- package/dist/tapd-client.js.map +1 -1
- package/dist/tools/attachment.d.ts +3 -0
- package/dist/tools/attachment.d.ts.map +1 -0
- package/dist/tools/attachment.js +99 -0
- package/dist/tools/attachment.js.map +1 -0
- package/dist/tools/board.d.ts +3 -0
- package/dist/tools/board.d.ts.map +1 -0
- package/dist/tools/board.js +98 -0
- package/dist/tools/board.js.map +1 -0
- package/dist/tools/bug.d.ts.map +1 -1
- package/dist/tools/bug.js +386 -7
- package/dist/tools/bug.js.map +1 -1
- package/dist/tools/changes.d.ts +3 -0
- package/dist/tools/changes.d.ts.map +1 -0
- package/dist/tools/changes.js +73 -0
- package/dist/tools/changes.js.map +1 -0
- package/dist/tools/comment.d.ts.map +1 -1
- package/dist/tools/comment.js +53 -3
- package/dist/tools/comment.js.map +1 -1
- package/dist/tools/custom-fields.d.ts +3 -0
- package/dist/tools/custom-fields.d.ts.map +1 -0
- package/dist/tools/custom-fields.js +105 -0
- package/dist/tools/custom-fields.js.map +1 -0
- package/dist/tools/image.d.ts +3 -0
- package/dist/tools/image.d.ts.map +1 -0
- package/dist/tools/image.js +23 -0
- package/dist/tools/image.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +26 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/iteration.d.ts.map +1 -1
- package/dist/tools/iteration.js +99 -6
- package/dist/tools/iteration.js.map +1 -1
- package/dist/tools/mini-comment.d.ts +3 -0
- package/dist/tools/mini-comment.d.ts.map +1 -0
- package/dist/tools/mini-comment.js +74 -0
- package/dist/tools/mini-comment.js.map +1 -0
- package/dist/tools/mini-item.d.ts +3 -0
- package/dist/tools/mini-item.d.ts.map +1 -0
- package/dist/tools/mini-item.js +166 -0
- package/dist/tools/mini-item.js.map +1 -0
- package/dist/tools/mini-workspace.d.ts +3 -0
- package/dist/tools/mini-workspace.d.ts.map +1 -0
- package/dist/tools/mini-workspace.js +43 -0
- package/dist/tools/mini-workspace.js.map +1 -0
- package/dist/tools/program.d.ts +3 -0
- package/dist/tools/program.d.ts.map +1 -0
- package/dist/tools/program.js +27 -0
- package/dist/tools/program.js.map +1 -0
- package/dist/tools/relations.d.ts +3 -0
- package/dist/tools/relations.d.ts.map +1 -0
- package/dist/tools/relations.js +68 -0
- package/dist/tools/relations.js.map +1 -0
- package/dist/tools/release.d.ts.map +1 -1
- package/dist/tools/release.js +228 -2
- package/dist/tools/release.js.map +1 -1
- package/dist/tools/report.d.ts +3 -0
- package/dist/tools/report.d.ts.map +1 -0
- package/dist/tools/report.js +38 -0
- package/dist/tools/report.js.map +1 -0
- package/dist/tools/settings.d.ts.map +1 -1
- package/dist/tools/settings.js +384 -18
- package/dist/tools/settings.js.map +1 -1
- package/dist/tools/source.d.ts +3 -0
- package/dist/tools/source.d.ts.map +1 -0
- package/dist/tools/source.js +69 -0
- package/dist/tools/source.js.map +1 -0
- package/dist/tools/story.d.ts.map +1 -1
- package/dist/tools/story.js +650 -144
- package/dist/tools/story.js.map +1 -1
- package/dist/tools/task.d.ts.map +1 -1
- package/dist/tools/task.js +109 -11
- package/dist/tools/task.js.map +1 -1
- package/dist/tools/test.d.ts.map +1 -1
- package/dist/tools/test.js +546 -26
- package/dist/tools/test.js.map +1 -1
- package/dist/tools/timesheet.d.ts.map +1 -1
- package/dist/tools/timesheet.js +72 -11
- package/dist/tools/timesheet.js.map +1 -1
- package/dist/tools/user.d.ts.map +1 -1
- package/dist/tools/user.js +37 -4
- package/dist/tools/user.js.map +1 -1
- package/dist/tools/utility.d.ts +3 -0
- package/dist/tools/utility.d.ts.map +1 -0
- package/dist/tools/utility.js +132 -0
- package/dist/tools/utility.js.map +1 -0
- package/dist/tools/wiki.d.ts.map +1 -1
- package/dist/tools/wiki.js +205 -2
- package/dist/tools/wiki.js.map +1 -1
- package/dist/tools/workflow.d.ts.map +1 -1
- package/dist/tools/workflow.js +92 -6
- package/dist/tools/workflow.js.map +1 -1
- package/dist/tools/workspace.d.ts.map +1 -1
- package/dist/tools/workspace.js +94 -4
- package/dist/tools/workspace.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,aAAa,EAAE,OAAO,EAgHlC,CAAC"}
|
package/dist/tools/workflow.js
CHANGED
|
@@ -1,29 +1,115 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { TapdClient } from '../tapd-client.js';
|
|
2
3
|
export const workflowTools = [
|
|
3
4
|
{
|
|
4
5
|
name: "tapd_get_workflows",
|
|
5
6
|
description: "Get workflow definitions for a project",
|
|
6
7
|
inputSchema: z.object({
|
|
7
|
-
workspace_id: z.number().describe(
|
|
8
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
8
9
|
system: z.string().optional().describe("Workflow system: story, bug, task, or testcase"),
|
|
9
10
|
limit: z.number().optional().describe("Number of results to return, max 200"),
|
|
10
11
|
page: z.number().optional().describe("Page number, default 1"),
|
|
11
12
|
fields: z.string().optional().describe("Comma-separated list of fields to return"),
|
|
12
13
|
}),
|
|
13
14
|
handler: async (client, params) => {
|
|
14
|
-
|
|
15
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
16
|
+
if (!workspaceId) {
|
|
17
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
18
|
+
}
|
|
19
|
+
return client.get("/workflows", { ...params, workspace_id: workspaceId });
|
|
15
20
|
},
|
|
16
21
|
},
|
|
17
22
|
{
|
|
18
23
|
name: "tapd_get_workflow_status_map",
|
|
19
|
-
description: "Get workflow status mappings for a project",
|
|
24
|
+
description: "Get workflow status mappings for a project (获取工作流状态中英文名对应关系)",
|
|
20
25
|
inputSchema: z.object({
|
|
21
|
-
workspace_id: z.number().describe(
|
|
22
|
-
system: z.string().
|
|
26
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
27
|
+
system: z.string().describe("系统名,取 'bug' 或 'story' (必填)"),
|
|
28
|
+
workitem_type_id: z.number().optional().describe("需求类别ID,获取需求状态时必传"),
|
|
29
|
+
fields: z.string().optional().describe("Comma-separated list of fields to return"),
|
|
30
|
+
}),
|
|
31
|
+
handler: async (client, params) => {
|
|
32
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
33
|
+
if (!workspaceId) {
|
|
34
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
35
|
+
}
|
|
36
|
+
return client.get("/workflows/status_map", { ...params, workspace_id: workspaceId });
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "tapd_get_workflow_step_map",
|
|
41
|
+
description: "Get workflow step/node information for a specific work item type (故事类别工作流节点)",
|
|
42
|
+
inputSchema: z.object({
|
|
43
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
44
|
+
system: z.string().describe("系统名,当前仅支持 'story' (必填)"),
|
|
45
|
+
workitem_type_id: z.number().describe("需求类别ID (必填)"),
|
|
23
46
|
fields: z.string().optional().describe("Comma-separated list of fields to return"),
|
|
24
47
|
}),
|
|
25
48
|
handler: async (client, params) => {
|
|
26
|
-
|
|
49
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
50
|
+
if (!workspaceId) {
|
|
51
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
52
|
+
}
|
|
53
|
+
return client.get("/workflows/step_map", { ...params, workspace_id: workspaceId });
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "tapd_get_workflow_all_transitions",
|
|
58
|
+
description: "获取工作流所有转换",
|
|
59
|
+
inputSchema: z.object({
|
|
60
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
61
|
+
system: z.string().describe("系统名: story, bug, task (必填)"),
|
|
62
|
+
}),
|
|
63
|
+
handler: async (client, params) => {
|
|
64
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
65
|
+
if (!workspaceId) {
|
|
66
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
67
|
+
}
|
|
68
|
+
return client.get("/workflows/all_transitions", { ...params, workspace_id: workspaceId });
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "tapd_get_workflow_last_steps",
|
|
73
|
+
description: "获取工作流最后步骤",
|
|
74
|
+
inputSchema: z.object({
|
|
75
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
76
|
+
system: z.string().describe("系统名: story, bug, task (必填)"),
|
|
77
|
+
}),
|
|
78
|
+
handler: async (client, params) => {
|
|
79
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
80
|
+
if (!workspaceId) {
|
|
81
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
82
|
+
}
|
|
83
|
+
return client.get("/workflows/last_steps", { ...params, workspace_id: workspaceId });
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: "tapd_get_workflow_all_last_steps",
|
|
88
|
+
description: "获取工作流所有最后步骤",
|
|
89
|
+
inputSchema: z.object({
|
|
90
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
91
|
+
}),
|
|
92
|
+
handler: async (client, params) => {
|
|
93
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
94
|
+
if (!workspaceId) {
|
|
95
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
96
|
+
}
|
|
97
|
+
return client.get("/workflows/all_last_steps", { ...params, workspace_id: workspaceId });
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: "tapd_get_workflow_first_step",
|
|
102
|
+
description: "获取工作流第一步",
|
|
103
|
+
inputSchema: z.object({
|
|
104
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
105
|
+
system: z.string().describe("系统名: story, bug, task (必填)"),
|
|
106
|
+
}),
|
|
107
|
+
handler: async (client, params) => {
|
|
108
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
109
|
+
if (!workspaceId) {
|
|
110
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
111
|
+
}
|
|
112
|
+
return client.get("/workflows/first_step", { ...params, workspace_id: workspaceId });
|
|
27
113
|
},
|
|
28
114
|
},
|
|
29
115
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,cAAc,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,eAAO,MAAM,cAAc,EAAE,OAAO,EAqInC,CAAC"}
|
package/dist/tools/workspace.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { TapdClient } from '../tapd-client.js';
|
|
2
3
|
export const workspaceTools = [
|
|
3
4
|
{
|
|
4
5
|
name: "tapd_get_workspace_info",
|
|
5
6
|
description: "Get TAPD workspace/project info by ID",
|
|
6
7
|
inputSchema: z.object({
|
|
7
|
-
workspace_id: z.number().describe(
|
|
8
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
8
9
|
}),
|
|
9
10
|
handler: async (client, params) => {
|
|
10
|
-
|
|
11
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
12
|
+
if (!workspaceId) {
|
|
13
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
14
|
+
}
|
|
15
|
+
return client.get("/workspaces/get_workspace_info", { ...params, workspace_id: workspaceId });
|
|
11
16
|
},
|
|
12
17
|
},
|
|
13
18
|
{
|
|
@@ -37,10 +42,95 @@ export const workspaceTools = [
|
|
|
37
42
|
name: "tapd_get_workspace_users",
|
|
38
43
|
description: "Get all users in a workspace",
|
|
39
44
|
inputSchema: z.object({
|
|
40
|
-
workspace_id: z.number().describe(
|
|
45
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
46
|
+
fields: z.string().optional().describe("需要查的字段值: user,role_id,email,tof_id 可选,以,分隔"),
|
|
41
47
|
}),
|
|
42
48
|
handler: async (client, params) => {
|
|
43
|
-
|
|
49
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
50
|
+
if (!workspaceId) {
|
|
51
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
52
|
+
}
|
|
53
|
+
return client.get("/users", { ...params, workspace_id: workspaceId });
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
// 自定义字段
|
|
57
|
+
{
|
|
58
|
+
name: "tapd_get_workspace_custom_fields",
|
|
59
|
+
description: "获取项目自定义字段配置",
|
|
60
|
+
inputSchema: z.object({
|
|
61
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
62
|
+
}),
|
|
63
|
+
handler: async (client, params) => {
|
|
64
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
65
|
+
if (!workspaceId) {
|
|
66
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
67
|
+
}
|
|
68
|
+
return client.get("/workspaces/custom_fields", { ...params, workspace_id: workspaceId });
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
// 子项目
|
|
72
|
+
{
|
|
73
|
+
name: "tapd_get_sub_workspaces",
|
|
74
|
+
description: "获取子项目列表",
|
|
75
|
+
inputSchema: z.object({
|
|
76
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
77
|
+
}),
|
|
78
|
+
handler: async (client, params) => {
|
|
79
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
80
|
+
if (!workspaceId) {
|
|
81
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
82
|
+
}
|
|
83
|
+
return client.get("/workspaces/sub_workspaces", { ...params, workspace_id: workspaceId });
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
// 文档
|
|
87
|
+
{
|
|
88
|
+
name: "tapd_get_workspace_documents",
|
|
89
|
+
description: "获取项目文档列表",
|
|
90
|
+
inputSchema: z.object({
|
|
91
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
92
|
+
limit: z.number().optional().describe("返回数量"),
|
|
93
|
+
page: z.number().optional().describe("页码"),
|
|
94
|
+
fields: z.string().optional().describe("返回字段"),
|
|
95
|
+
}),
|
|
96
|
+
handler: async (client, params) => {
|
|
97
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
98
|
+
if (!workspaceId) {
|
|
99
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
100
|
+
}
|
|
101
|
+
return client.get("/workspaces/documents", { ...params, workspace_id: workspaceId });
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
// 日历
|
|
105
|
+
{
|
|
106
|
+
name: "tapd_get_workspace_calendar",
|
|
107
|
+
description: "获取项目日历信息",
|
|
108
|
+
inputSchema: z.object({
|
|
109
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
110
|
+
start_date: z.string().optional().describe("开始日期 YYYY-MM-DD"),
|
|
111
|
+
end_date: z.string().optional().describe("结束日期 YYYY-MM-DD"),
|
|
112
|
+
}),
|
|
113
|
+
handler: async (client, params) => {
|
|
114
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
115
|
+
if (!workspaceId) {
|
|
116
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
117
|
+
}
|
|
118
|
+
return client.get("/workspaces/calendar", { ...params, workspace_id: workspaceId });
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
// 第三方项目
|
|
122
|
+
{
|
|
123
|
+
name: "tapd_get_third_projects",
|
|
124
|
+
description: "获取第三方项目关联",
|
|
125
|
+
inputSchema: z.object({
|
|
126
|
+
workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
|
|
127
|
+
}),
|
|
128
|
+
handler: async (client, params) => {
|
|
129
|
+
const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
|
|
130
|
+
if (!workspaceId) {
|
|
131
|
+
throw new Error('workspace_id is required (either provide it or set TAPD_DEFAULT_WORKSPACE_ID env)');
|
|
132
|
+
}
|
|
133
|
+
return client.get("/workspaces/third_projects", { ...params, workspace_id: workspaceId });
|
|
44
134
|
},
|
|
45
135
|
},
|
|
46
136
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xihe-lab/tapd-mcp-server",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "MCP server for TAPD project management API, enabling AI assistants to manage stories, bugs, tasks, iterations and more via natural language",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"build": "tsc",
|
|
12
12
|
"start": "node dist/index.js",
|
|
13
13
|
"dev": "tsx src/index.ts",
|
|
14
|
+
"test": "tsx src/integration-test.ts",
|
|
14
15
|
"type-check": "tsc --noEmit",
|
|
15
16
|
"lint": "eslint src/",
|
|
16
17
|
"prepublishOnly": "npm run build"
|