@crypto512/jicon-mcp 0.1.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/.env.example +9 -0
- package/.jicon.json.custom +21 -0
- package/.jicon.json.example +15 -0
- package/.jicon.json.readonly +15 -0
- package/CLAUDE.md +596 -0
- package/CONTRIBUTING.md +371 -0
- package/DEVELOPMENT.md +400 -0
- package/LICENSE +21 -0
- package/README.md +300 -0
- package/TOOL_LIST.md +435 -0
- package/dist/config/constants.d.ts +14 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +18 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/loader.d.ts +35 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +108 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/types.d.ts +130 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +32 -0
- package/dist/config/types.js.map +1 -0
- package/dist/confluence/client.d.ts +30 -0
- package/dist/confluence/client.d.ts.map +1 -0
- package/dist/confluence/client.js +176 -0
- package/dist/confluence/client.js.map +1 -0
- package/dist/confluence/defaults.d.ts +23 -0
- package/dist/confluence/defaults.d.ts.map +1 -0
- package/dist/confluence/defaults.js +29 -0
- package/dist/confluence/defaults.js.map +1 -0
- package/dist/confluence/formatters.d.ts +22 -0
- package/dist/confluence/formatters.d.ts.map +1 -0
- package/dist/confluence/formatters.js +125 -0
- package/dist/confluence/formatters.js.map +1 -0
- package/dist/confluence/tools.d.ts +266 -0
- package/dist/confluence/tools.d.ts.map +1 -0
- package/dist/confluence/tools.js +376 -0
- package/dist/confluence/tools.js.map +1 -0
- package/dist/confluence/types.d.ts +122 -0
- package/dist/confluence/types.d.ts.map +1 -0
- package/dist/confluence/types.js +5 -0
- package/dist/confluence/types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +161 -0
- package/dist/index.js.map +1 -0
- package/dist/jira/client.d.ts +46 -0
- package/dist/jira/client.d.ts.map +1 -0
- package/dist/jira/client.js +178 -0
- package/dist/jira/client.js.map +1 -0
- package/dist/jira/defaults.d.ts +19 -0
- package/dist/jira/defaults.d.ts.map +1 -0
- package/dist/jira/defaults.js +57 -0
- package/dist/jira/defaults.js.map +1 -0
- package/dist/jira/formatters.d.ts +22 -0
- package/dist/jira/formatters.d.ts.map +1 -0
- package/dist/jira/formatters.js +128 -0
- package/dist/jira/formatters.js.map +1 -0
- package/dist/jira/tools.d.ts +334 -0
- package/dist/jira/tools.d.ts.map +1 -0
- package/dist/jira/tools.js +372 -0
- package/dist/jira/tools.js.map +1 -0
- package/dist/jira/types.d.ts +110 -0
- package/dist/jira/types.d.ts.map +1 -0
- package/dist/jira/types.js +5 -0
- package/dist/jira/types.js.map +1 -0
- package/dist/permissions/filter.d.ts +30 -0
- package/dist/permissions/filter.d.ts.map +1 -0
- package/dist/permissions/filter.js +89 -0
- package/dist/permissions/filter.js.map +1 -0
- package/dist/permissions/tool-registry.d.ts +49 -0
- package/dist/permissions/tool-registry.d.ts.map +1 -0
- package/dist/permissions/tool-registry.js +111 -0
- package/dist/permissions/tool-registry.js.map +1 -0
- package/dist/tempo/client.d.ts +32 -0
- package/dist/tempo/client.d.ts.map +1 -0
- package/dist/tempo/client.js +125 -0
- package/dist/tempo/client.js.map +1 -0
- package/dist/tempo/formatters.d.ts +30 -0
- package/dist/tempo/formatters.d.ts.map +1 -0
- package/dist/tempo/formatters.js +172 -0
- package/dist/tempo/formatters.js.map +1 -0
- package/dist/tempo/tools.d.ts +184 -0
- package/dist/tempo/tools.d.ts.map +1 -0
- package/dist/tempo/tools.js +392 -0
- package/dist/tempo/tools.js.map +1 -0
- package/dist/tempo/types.d.ts +98 -0
- package/dist/tempo/types.d.ts.map +1 -0
- package/dist/tempo/types.js +5 -0
- package/dist/tempo/types.js.map +1 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/http-client.d.ts +22 -0
- package/dist/utils/http-client.d.ts.map +1 -0
- package/dist/utils/http-client.js +137 -0
- package/dist/utils/http-client.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +8 -0
- package/dist/utils/response-formatter.d.ts.map +1 -0
- package/dist/utils/response-formatter.js +38 -0
- package/dist/utils/response-formatter.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration types and schemas
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
export declare const AuthTypeSchema: z.ZodEnum<["basic", "bearer"]>;
|
|
6
|
+
export type AuthType = z.infer<typeof AuthTypeSchema>;
|
|
7
|
+
export declare const ServiceConfigSchema: z.ZodObject<{
|
|
8
|
+
url: z.ZodString;
|
|
9
|
+
username: z.ZodOptional<z.ZodString>;
|
|
10
|
+
token: z.ZodString;
|
|
11
|
+
authType: z.ZodOptional<z.ZodEnum<["basic", "bearer"]>>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
url: string;
|
|
14
|
+
token: string;
|
|
15
|
+
username?: string | undefined;
|
|
16
|
+
authType?: "basic" | "bearer" | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
url: string;
|
|
19
|
+
token: string;
|
|
20
|
+
username?: string | undefined;
|
|
21
|
+
authType?: "basic" | "bearer" | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export type ServiceConfig = z.infer<typeof ServiceConfigSchema>;
|
|
24
|
+
export declare const PermissionModeSchema: z.ZodEnum<["full", "readonly", "custom"]>;
|
|
25
|
+
export type PermissionMode = z.infer<typeof PermissionModeSchema>;
|
|
26
|
+
export declare const PermissionsConfigSchema: z.ZodObject<{
|
|
27
|
+
mode: z.ZodDefault<z.ZodEnum<["full", "readonly", "custom"]>>;
|
|
28
|
+
whitelist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
29
|
+
blacklist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
mode: "full" | "readonly" | "custom";
|
|
32
|
+
whitelist: string[];
|
|
33
|
+
blacklist: string[];
|
|
34
|
+
}, {
|
|
35
|
+
mode?: "full" | "readonly" | "custom" | undefined;
|
|
36
|
+
whitelist?: string[] | undefined;
|
|
37
|
+
blacklist?: string[] | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
export type PermissionsConfig = z.infer<typeof PermissionsConfigSchema>;
|
|
40
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
41
|
+
jira: z.ZodOptional<z.ZodObject<{
|
|
42
|
+
url: z.ZodString;
|
|
43
|
+
username: z.ZodOptional<z.ZodString>;
|
|
44
|
+
token: z.ZodString;
|
|
45
|
+
authType: z.ZodOptional<z.ZodEnum<["basic", "bearer"]>>;
|
|
46
|
+
}, "strip", z.ZodTypeAny, {
|
|
47
|
+
url: string;
|
|
48
|
+
token: string;
|
|
49
|
+
username?: string | undefined;
|
|
50
|
+
authType?: "basic" | "bearer" | undefined;
|
|
51
|
+
}, {
|
|
52
|
+
url: string;
|
|
53
|
+
token: string;
|
|
54
|
+
username?: string | undefined;
|
|
55
|
+
authType?: "basic" | "bearer" | undefined;
|
|
56
|
+
}>>;
|
|
57
|
+
confluence: z.ZodOptional<z.ZodObject<{
|
|
58
|
+
url: z.ZodString;
|
|
59
|
+
username: z.ZodOptional<z.ZodString>;
|
|
60
|
+
token: z.ZodString;
|
|
61
|
+
authType: z.ZodOptional<z.ZodEnum<["basic", "bearer"]>>;
|
|
62
|
+
}, "strip", z.ZodTypeAny, {
|
|
63
|
+
url: string;
|
|
64
|
+
token: string;
|
|
65
|
+
username?: string | undefined;
|
|
66
|
+
authType?: "basic" | "bearer" | undefined;
|
|
67
|
+
}, {
|
|
68
|
+
url: string;
|
|
69
|
+
token: string;
|
|
70
|
+
username?: string | undefined;
|
|
71
|
+
authType?: "basic" | "bearer" | undefined;
|
|
72
|
+
}>>;
|
|
73
|
+
permissions: z.ZodDefault<z.ZodObject<{
|
|
74
|
+
mode: z.ZodDefault<z.ZodEnum<["full", "readonly", "custom"]>>;
|
|
75
|
+
whitelist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
76
|
+
blacklist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
77
|
+
}, "strip", z.ZodTypeAny, {
|
|
78
|
+
mode: "full" | "readonly" | "custom";
|
|
79
|
+
whitelist: string[];
|
|
80
|
+
blacklist: string[];
|
|
81
|
+
}, {
|
|
82
|
+
mode?: "full" | "readonly" | "custom" | undefined;
|
|
83
|
+
whitelist?: string[] | undefined;
|
|
84
|
+
blacklist?: string[] | undefined;
|
|
85
|
+
}>>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
permissions: {
|
|
88
|
+
mode: "full" | "readonly" | "custom";
|
|
89
|
+
whitelist: string[];
|
|
90
|
+
blacklist: string[];
|
|
91
|
+
};
|
|
92
|
+
jira?: {
|
|
93
|
+
url: string;
|
|
94
|
+
token: string;
|
|
95
|
+
username?: string | undefined;
|
|
96
|
+
authType?: "basic" | "bearer" | undefined;
|
|
97
|
+
} | undefined;
|
|
98
|
+
confluence?: {
|
|
99
|
+
url: string;
|
|
100
|
+
token: string;
|
|
101
|
+
username?: string | undefined;
|
|
102
|
+
authType?: "basic" | "bearer" | undefined;
|
|
103
|
+
} | undefined;
|
|
104
|
+
}, {
|
|
105
|
+
jira?: {
|
|
106
|
+
url: string;
|
|
107
|
+
token: string;
|
|
108
|
+
username?: string | undefined;
|
|
109
|
+
authType?: "basic" | "bearer" | undefined;
|
|
110
|
+
} | undefined;
|
|
111
|
+
confluence?: {
|
|
112
|
+
url: string;
|
|
113
|
+
token: string;
|
|
114
|
+
username?: string | undefined;
|
|
115
|
+
authType?: "basic" | "bearer" | undefined;
|
|
116
|
+
} | undefined;
|
|
117
|
+
permissions?: {
|
|
118
|
+
mode?: "full" | "readonly" | "custom" | undefined;
|
|
119
|
+
whitelist?: string[] | undefined;
|
|
120
|
+
blacklist?: string[] | undefined;
|
|
121
|
+
} | undefined;
|
|
122
|
+
}>;
|
|
123
|
+
export type Config = z.infer<typeof ConfigSchema>;
|
|
124
|
+
export interface ApiConfig {
|
|
125
|
+
url: string;
|
|
126
|
+
username?: string;
|
|
127
|
+
token: string;
|
|
128
|
+
authType?: AuthType;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc,gCAA8B,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAGtD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,oBAAoB,2CAAyC,CAAC;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAIlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAGlD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration types and schemas
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
// Authentication type schema
|
|
6
|
+
export const AuthTypeSchema = z.enum(["basic", "bearer"]);
|
|
7
|
+
// Service configuration schema
|
|
8
|
+
export const ServiceConfigSchema = z.object({
|
|
9
|
+
url: z.string().url(),
|
|
10
|
+
username: z.string().optional(),
|
|
11
|
+
token: z.string(),
|
|
12
|
+
authType: AuthTypeSchema.optional(),
|
|
13
|
+
});
|
|
14
|
+
// Permission mode schema
|
|
15
|
+
export const PermissionModeSchema = z.enum(["full", "readonly", "custom"]);
|
|
16
|
+
// Permissions configuration schema
|
|
17
|
+
export const PermissionsConfigSchema = z.object({
|
|
18
|
+
mode: PermissionModeSchema.default("full"),
|
|
19
|
+
whitelist: z.array(z.string()).default([]),
|
|
20
|
+
blacklist: z.array(z.string()).default([]),
|
|
21
|
+
});
|
|
22
|
+
// Main configuration schema
|
|
23
|
+
export const ConfigSchema = z.object({
|
|
24
|
+
jira: ServiceConfigSchema.optional(),
|
|
25
|
+
confluence: ServiceConfigSchema.optional(),
|
|
26
|
+
permissions: PermissionsConfigSchema.default({
|
|
27
|
+
mode: "full",
|
|
28
|
+
whitelist: [],
|
|
29
|
+
blacklist: [],
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG1D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAIH,yBAAyB;AACzB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG3E,mCAAmC;AACnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC3C,CAAC,CAAC;AAIH,4BAA4B;AAC5B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,uBAAuB,CAAC,OAAO,CAAC;QAC3C,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;KACd,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Confluence API Client
|
|
3
|
+
*/
|
|
4
|
+
import type { ApiConfig } from "../types.js";
|
|
5
|
+
import type { ConfluencePage, ConfluenceSearchResult, ConfluenceSpace, ConfluenceComment, ConfluenceAttachment } from "./types.js";
|
|
6
|
+
export declare class ConfluenceClient {
|
|
7
|
+
private http;
|
|
8
|
+
constructor(config: ApiConfig);
|
|
9
|
+
searchContent(cql: string, limit?: number, expand?: string[]): Promise<ConfluenceSearchResult>;
|
|
10
|
+
getPage(pageId: string, expand?: string[]): Promise<ConfluencePage>;
|
|
11
|
+
getPageByTitle(spaceKey: string, title: string, expand?: string[]): Promise<ConfluencePage | null>;
|
|
12
|
+
createPage(pageData: {
|
|
13
|
+
spaceKey: string;
|
|
14
|
+
title: string;
|
|
15
|
+
content: string;
|
|
16
|
+
parentId?: string;
|
|
17
|
+
labels?: string[];
|
|
18
|
+
}): Promise<ConfluencePage>;
|
|
19
|
+
updatePage(pageId: string, version: number, title?: string, content?: string, minorEdit?: boolean): Promise<ConfluencePage>;
|
|
20
|
+
deletePage(pageId: string): Promise<void>;
|
|
21
|
+
listSpaces(limit?: number, type?: "global" | "personal"): Promise<ConfluenceSpace[]>;
|
|
22
|
+
getSpace(spaceKey: string, expand?: string[]): Promise<ConfluenceSpace>;
|
|
23
|
+
getPageChildren(pageId: string, expand?: string[], limit?: number): Promise<ConfluencePage[]>;
|
|
24
|
+
addComment(pageId: string, comment: string): Promise<ConfluenceComment>;
|
|
25
|
+
getComments(pageId: string, limit?: number): Promise<ConfluenceComment[]>;
|
|
26
|
+
uploadAttachment(pageId: string, filePath: string, comment?: string): Promise<ConfluenceAttachment>;
|
|
27
|
+
listAttachments(pageId: string, limit?: number): Promise<ConfluenceAttachment[]>;
|
|
28
|
+
private addLabels;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/confluence/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AASpB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAa;gBAEb,MAAM,EAAE,SAAS;IAKvB,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,MAA6B,EACpC,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,sBAAsB,CAAC;IAe5B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAanE,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAiB3B,UAAU,CAAC,QAAQ,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,GAAG,OAAO,CAAC,cAAc,CAAC;IA8BrB,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,cAAc,CAAC;IAqBpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,UAAU,CACd,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAC3B,OAAO,CAAC,eAAe,EAAE,CAAC;IAkBvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAcvE,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,EAAE,CAAC;IAmBtB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAevE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAgBzE,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;IAiB1B,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAiBpB,SAAS;CAKxB"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Confluence API Client
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from "../utils/http-client.js";
|
|
5
|
+
import { DEFAULT_SEARCH_EXPAND, DEFAULT_PAGE_EXPAND, DEFAULT_SEARCH_LIMIT, } from "./defaults.js";
|
|
6
|
+
import { readFileSync } from "fs";
|
|
7
|
+
import FormData from "form-data";
|
|
8
|
+
export class ConfluenceClient {
|
|
9
|
+
http;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.http = new HttpClient(config);
|
|
12
|
+
}
|
|
13
|
+
// Content search
|
|
14
|
+
async searchContent(cql, limit = DEFAULT_SEARCH_LIMIT, expand) {
|
|
15
|
+
const params = new URLSearchParams();
|
|
16
|
+
params.append("cql", cql);
|
|
17
|
+
params.append("limit", String(limit));
|
|
18
|
+
// Use default expand options if none specified to reduce response size
|
|
19
|
+
const expandToUse = expand && expand.length > 0 ? expand : DEFAULT_SEARCH_EXPAND;
|
|
20
|
+
params.append("expand", expandToUse.join(","));
|
|
21
|
+
return this.http.get(`/rest/api/content/search?${params.toString()}`);
|
|
22
|
+
}
|
|
23
|
+
// Page operations
|
|
24
|
+
async getPage(pageId, expand) {
|
|
25
|
+
const params = new URLSearchParams();
|
|
26
|
+
// Use default expand options if none specified to reduce response size
|
|
27
|
+
const expandToUse = expand && expand.length > 0 ? expand : DEFAULT_PAGE_EXPAND;
|
|
28
|
+
params.append("expand", expandToUse.join(","));
|
|
29
|
+
const queryString = params.toString();
|
|
30
|
+
const url = `/rest/api/content/${pageId}${queryString ? `?${queryString}` : ""}`;
|
|
31
|
+
return this.http.get(url);
|
|
32
|
+
}
|
|
33
|
+
async getPageByTitle(spaceKey, title, expand) {
|
|
34
|
+
const params = new URLSearchParams();
|
|
35
|
+
params.append("spaceKey", spaceKey);
|
|
36
|
+
params.append("title", title);
|
|
37
|
+
params.append("type", "page");
|
|
38
|
+
if (expand && expand.length > 0) {
|
|
39
|
+
params.append("expand", expand.join(","));
|
|
40
|
+
}
|
|
41
|
+
const response = await this.http.get(`/rest/api/content?${params.toString()}`);
|
|
42
|
+
return response.results[0] || null;
|
|
43
|
+
}
|
|
44
|
+
async createPage(pageData) {
|
|
45
|
+
const body = {
|
|
46
|
+
type: "page",
|
|
47
|
+
title: pageData.title,
|
|
48
|
+
space: { key: pageData.spaceKey },
|
|
49
|
+
body: {
|
|
50
|
+
storage: {
|
|
51
|
+
value: pageData.content,
|
|
52
|
+
representation: "storage",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
if (pageData.parentId) {
|
|
57
|
+
body.ancestors = [{ id: pageData.parentId }];
|
|
58
|
+
}
|
|
59
|
+
const page = await this.http.post("/rest/api/content", body);
|
|
60
|
+
// Add labels if provided
|
|
61
|
+
if (pageData.labels && pageData.labels.length > 0) {
|
|
62
|
+
await this.addLabels(page.id, pageData.labels);
|
|
63
|
+
}
|
|
64
|
+
return page;
|
|
65
|
+
}
|
|
66
|
+
async updatePage(pageId, version, title, content, minorEdit = false) {
|
|
67
|
+
const currentPage = await this.getPage(pageId);
|
|
68
|
+
const body = {
|
|
69
|
+
version: { number: version + 1, minorEdit },
|
|
70
|
+
title: title || currentPage.title,
|
|
71
|
+
type: "page",
|
|
72
|
+
};
|
|
73
|
+
if (content) {
|
|
74
|
+
body.body = {
|
|
75
|
+
storage: {
|
|
76
|
+
value: content,
|
|
77
|
+
representation: "storage",
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return this.http.put(`/rest/api/content/${pageId}`, body);
|
|
82
|
+
}
|
|
83
|
+
async deletePage(pageId) {
|
|
84
|
+
await this.http.delete(`/rest/api/content/${pageId}`);
|
|
85
|
+
}
|
|
86
|
+
// Space operations
|
|
87
|
+
async listSpaces(limit, type) {
|
|
88
|
+
const params = new URLSearchParams();
|
|
89
|
+
if (limit) {
|
|
90
|
+
params.append("limit", String(limit));
|
|
91
|
+
}
|
|
92
|
+
if (type) {
|
|
93
|
+
params.append("type", type);
|
|
94
|
+
}
|
|
95
|
+
const queryString = params.toString();
|
|
96
|
+
const url = `/rest/api/space${queryString ? `?${queryString}` : ""}`;
|
|
97
|
+
const response = await this.http.get(url);
|
|
98
|
+
return response.results;
|
|
99
|
+
}
|
|
100
|
+
async getSpace(spaceKey, expand) {
|
|
101
|
+
const params = new URLSearchParams();
|
|
102
|
+
if (expand && expand.length > 0) {
|
|
103
|
+
params.append("expand", expand.join(","));
|
|
104
|
+
}
|
|
105
|
+
const queryString = params.toString();
|
|
106
|
+
const url = `/rest/api/space/${spaceKey}${queryString ? `?${queryString}` : ""}`;
|
|
107
|
+
return this.http.get(url);
|
|
108
|
+
}
|
|
109
|
+
// Page hierarchy
|
|
110
|
+
async getPageChildren(pageId, expand, limit) {
|
|
111
|
+
const params = new URLSearchParams();
|
|
112
|
+
if (expand && expand.length > 0) {
|
|
113
|
+
params.append("expand", expand.join(","));
|
|
114
|
+
}
|
|
115
|
+
if (limit) {
|
|
116
|
+
params.append("limit", String(limit));
|
|
117
|
+
}
|
|
118
|
+
const queryString = params.toString();
|
|
119
|
+
const url = `/rest/api/content/${pageId}/child/page${queryString ? `?${queryString}` : ""}`;
|
|
120
|
+
const response = await this.http.get(url);
|
|
121
|
+
return response.results;
|
|
122
|
+
}
|
|
123
|
+
// Comments
|
|
124
|
+
async addComment(pageId, comment) {
|
|
125
|
+
const body = {
|
|
126
|
+
type: "comment",
|
|
127
|
+
container: { id: pageId, type: "page" },
|
|
128
|
+
body: {
|
|
129
|
+
storage: {
|
|
130
|
+
value: comment,
|
|
131
|
+
representation: "storage",
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
return this.http.post("/rest/api/content", body);
|
|
136
|
+
}
|
|
137
|
+
async getComments(pageId, limit) {
|
|
138
|
+
const params = new URLSearchParams();
|
|
139
|
+
params.append("expand", "body.storage");
|
|
140
|
+
if (limit) {
|
|
141
|
+
params.append("limit", String(limit));
|
|
142
|
+
}
|
|
143
|
+
const queryString = params.toString();
|
|
144
|
+
const url = `/rest/api/content/${pageId}/child/comment?${queryString}`;
|
|
145
|
+
const response = await this.http.get(url);
|
|
146
|
+
return response.results;
|
|
147
|
+
}
|
|
148
|
+
// Attachments
|
|
149
|
+
async uploadAttachment(pageId, filePath, comment) {
|
|
150
|
+
const fileData = readFileSync(filePath);
|
|
151
|
+
const formData = new FormData();
|
|
152
|
+
formData.append("file", fileData, { filename: filePath.split("/").pop() });
|
|
153
|
+
if (comment) {
|
|
154
|
+
formData.append("comment", comment);
|
|
155
|
+
}
|
|
156
|
+
// Note: This needs special handling for multipart/form-data
|
|
157
|
+
// The implementation here is simplified
|
|
158
|
+
return this.http.post(`/rest/api/content/${pageId}/child/attachment`, formData);
|
|
159
|
+
}
|
|
160
|
+
async listAttachments(pageId, limit) {
|
|
161
|
+
const params = new URLSearchParams();
|
|
162
|
+
if (limit) {
|
|
163
|
+
params.append("limit", String(limit));
|
|
164
|
+
}
|
|
165
|
+
const queryString = params.toString();
|
|
166
|
+
const url = `/rest/api/content/${pageId}/child/attachment${queryString ? `?${queryString}` : ""}`;
|
|
167
|
+
const response = await this.http.get(url);
|
|
168
|
+
return response.results;
|
|
169
|
+
}
|
|
170
|
+
// Labels
|
|
171
|
+
async addLabels(pageId, labels) {
|
|
172
|
+
const labelObjects = labels.map((name) => ({ prefix: "global", name }));
|
|
173
|
+
await this.http.post(`/rest/api/content/${pageId}/label`, labelObjects);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/confluence/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default configurations for Confluence API responses
|
|
3
|
+
* These defaults help reduce response size and improve performance
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Default expand options for Confluence content search
|
|
7
|
+
* Only includes essential metadata
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_SEARCH_EXPAND: string[];
|
|
10
|
+
/**
|
|
11
|
+
* Default expand options for getting a single page
|
|
12
|
+
* Includes body content and essential metadata
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_PAGE_EXPAND: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Default limit for search results
|
|
17
|
+
*/
|
|
18
|
+
export declare const DEFAULT_SEARCH_LIMIT = 25;
|
|
19
|
+
/**
|
|
20
|
+
* Default limit for comments
|
|
21
|
+
*/
|
|
22
|
+
export declare const DEFAULT_COMMENT_LIMIT = 10;
|
|
23
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/confluence/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,UAA0C,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default configurations for Confluence API responses
|
|
3
|
+
* These defaults help reduce response size and improve performance
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Default expand options for Confluence content search
|
|
7
|
+
* Only includes essential metadata
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_SEARCH_EXPAND = ["space", "version", "metadata.labels"];
|
|
10
|
+
/**
|
|
11
|
+
* Default expand options for getting a single page
|
|
12
|
+
* Includes body content and essential metadata
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_PAGE_EXPAND = [
|
|
15
|
+
"body.storage",
|
|
16
|
+
"version",
|
|
17
|
+
"space",
|
|
18
|
+
"metadata.labels",
|
|
19
|
+
"ancestors",
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Default limit for search results
|
|
23
|
+
*/
|
|
24
|
+
export const DEFAULT_SEARCH_LIMIT = 25;
|
|
25
|
+
/**
|
|
26
|
+
* Default limit for comments
|
|
27
|
+
*/
|
|
28
|
+
export const DEFAULT_COMMENT_LIMIT = 10;
|
|
29
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/confluence/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAE7E;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,cAAc;IACd,SAAS;IACT,OAAO;IACP,iBAAiB;IACjB,WAAW;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response formatters for Confluence API responses
|
|
3
|
+
* Converts verbose API responses into concise, readable formats
|
|
4
|
+
*/
|
|
5
|
+
import type { ConfluencePage, ConfluenceSearchResult, ConfluenceSpace } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Format a single Confluence page into a concise, readable string
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatPage(page: ConfluencePage): string;
|
|
10
|
+
/**
|
|
11
|
+
* Format search results into a concise list
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatSearchResults(result: ConfluenceSearchResult): string;
|
|
14
|
+
/**
|
|
15
|
+
* Format a Confluence space
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatSpace(space: ConfluenceSpace): string;
|
|
18
|
+
/**
|
|
19
|
+
* Format a list of spaces
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatSpaces(spaces: ConfluenceSpace[]): string;
|
|
22
|
+
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/confluence/formatters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAuDvD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAmC1E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAyB1D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAoB9D"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response formatters for Confluence API responses
|
|
3
|
+
* Converts verbose API responses into concise, readable formats
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format a single Confluence page into a concise, readable string
|
|
7
|
+
*/
|
|
8
|
+
export function formatPage(page) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
// Header
|
|
11
|
+
lines.push(`# ${page.title}`);
|
|
12
|
+
lines.push("");
|
|
13
|
+
// Basic info
|
|
14
|
+
lines.push("## Details");
|
|
15
|
+
lines.push(`- **Page ID**: ${page.id}`);
|
|
16
|
+
lines.push(`- **Space Key**: ${page.space?.key || "?"} (${page.space?.name || "Unknown"})`);
|
|
17
|
+
lines.push(`- **Type**: ${page.type}`);
|
|
18
|
+
if (page.version) {
|
|
19
|
+
lines.push(`- **Version**: ${page.version.number} (${page.version.when || ""})`);
|
|
20
|
+
if (page.version.by) {
|
|
21
|
+
lines.push(`- **Last Modified By**: ${page.version.by.displayName || "Unknown"}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Labels
|
|
25
|
+
if (page.metadata?.labels?.results && page.metadata.labels.results.length > 0) {
|
|
26
|
+
lines.push("");
|
|
27
|
+
lines.push("## Labels");
|
|
28
|
+
lines.push(page.metadata.labels.results.map((label) => label.name).join(", "));
|
|
29
|
+
}
|
|
30
|
+
// Ancestors (breadcrumb)
|
|
31
|
+
if (page.ancestors && page.ancestors.length > 0) {
|
|
32
|
+
lines.push("");
|
|
33
|
+
lines.push("## Breadcrumb");
|
|
34
|
+
const breadcrumb = page.ancestors.map((a) => a.title).join(" > ");
|
|
35
|
+
lines.push(`${breadcrumb} > ${page.title}`);
|
|
36
|
+
}
|
|
37
|
+
// Content preview
|
|
38
|
+
if (page.body?.storage?.value) {
|
|
39
|
+
lines.push("");
|
|
40
|
+
lines.push("## Content Preview");
|
|
41
|
+
// Strip HTML tags for preview and limit to 500 characters
|
|
42
|
+
const content = page.body.storage.value
|
|
43
|
+
.replace(/<[^>]*>/g, " ")
|
|
44
|
+
.replace(/\s+/g, " ")
|
|
45
|
+
.trim();
|
|
46
|
+
lines.push(content.length > 500 ? content.substring(0, 500) + "..." : content);
|
|
47
|
+
}
|
|
48
|
+
lines.push("");
|
|
49
|
+
lines.push(`**Full URL**: ${page._links?.webui || "N/A"}`);
|
|
50
|
+
return lines.join("\n");
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Format search results into a concise list
|
|
54
|
+
*/
|
|
55
|
+
export function formatSearchResults(result) {
|
|
56
|
+
const lines = [];
|
|
57
|
+
lines.push(`# Search Results: ${result.size || result.results?.length || 0} found`);
|
|
58
|
+
lines.push("");
|
|
59
|
+
if (!result.results || result.results.length === 0) {
|
|
60
|
+
lines.push("No pages found.");
|
|
61
|
+
return lines.join("\n");
|
|
62
|
+
}
|
|
63
|
+
lines.push("💡 **Tip**: To view a page, use `confluence_get_page(pageId: \"<ID>\")` with the ID shown below");
|
|
64
|
+
lines.push("");
|
|
65
|
+
result.results.forEach((page) => {
|
|
66
|
+
lines.push(`## ${page.title}`);
|
|
67
|
+
lines.push(` **Page ID**: ${page.id} | **Space Key**: ${page.space?.key || "?"} (${page.space?.name || "?"})`);
|
|
68
|
+
lines.push(` Type: ${page.type}`);
|
|
69
|
+
// Short excerpt if available
|
|
70
|
+
if (page.body?.storage?.value) {
|
|
71
|
+
const preview = page.body.storage.value
|
|
72
|
+
.replace(/<[^>]*>/g, " ")
|
|
73
|
+
.replace(/\s+/g, " ")
|
|
74
|
+
.trim()
|
|
75
|
+
.substring(0, 150);
|
|
76
|
+
lines.push(` Preview: ${preview}...`);
|
|
77
|
+
}
|
|
78
|
+
lines.push("");
|
|
79
|
+
});
|
|
80
|
+
return lines.join("\n");
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Format a Confluence space
|
|
84
|
+
*/
|
|
85
|
+
export function formatSpace(space) {
|
|
86
|
+
const lines = [];
|
|
87
|
+
lines.push(`# ${space.name}`);
|
|
88
|
+
lines.push("");
|
|
89
|
+
lines.push("## Details");
|
|
90
|
+
lines.push(`- **Key**: ${space.key}`);
|
|
91
|
+
lines.push(`- **Type**: ${space.type}`);
|
|
92
|
+
lines.push(`- **ID**: ${space.id}`);
|
|
93
|
+
if (space.description?.plain?.value) {
|
|
94
|
+
lines.push("");
|
|
95
|
+
lines.push("## Description");
|
|
96
|
+
const desc = space.description.plain.value.length > 300
|
|
97
|
+
? space.description.plain.value.substring(0, 300) + "..."
|
|
98
|
+
: space.description.plain.value;
|
|
99
|
+
lines.push(desc);
|
|
100
|
+
}
|
|
101
|
+
lines.push("");
|
|
102
|
+
lines.push(`**Homepage**: ${space.homepage?.title || "N/A"}`);
|
|
103
|
+
return lines.join("\n");
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Format a list of spaces
|
|
107
|
+
*/
|
|
108
|
+
export function formatSpaces(spaces) {
|
|
109
|
+
const lines = [];
|
|
110
|
+
lines.push(`# Confluence Spaces (${spaces.length})`);
|
|
111
|
+
lines.push("");
|
|
112
|
+
spaces.forEach((space) => {
|
|
113
|
+
lines.push(`## ${space.key}: ${space.name}`);
|
|
114
|
+
lines.push(` Type: ${space.type}`);
|
|
115
|
+
if (space.description?.plain?.value) {
|
|
116
|
+
const shortDesc = space.description.plain.value.length > 100
|
|
117
|
+
? space.description.plain.value.substring(0, 100) + "..."
|
|
118
|
+
: space.description.plain.value;
|
|
119
|
+
lines.push(` ${shortDesc}`);
|
|
120
|
+
}
|
|
121
|
+
lines.push("");
|
|
122
|
+
});
|
|
123
|
+
return lines.join("\n");
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/confluence/formatters.ts"],"names":[],"mappings":"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"}
|