@relayfile/adapter-confluence 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.
Files changed (38) hide show
  1. package/discovery/confluence/.adapter.md +72 -0
  2. package/discovery/confluence/pages/.create.example.json +5 -0
  3. package/discovery/confluence/pages/.schema.json +171 -0
  4. package/discovery/confluence/spaces/{spaceIdOrKey}/pages/.create.example.json +4 -0
  5. package/discovery/confluence/spaces/{spaceIdOrKey}/pages/.schema.json +166 -0
  6. package/dist/__tests__/confluence-adapter.test.d.ts +2 -0
  7. package/dist/__tests__/confluence-adapter.test.d.ts.map +1 -0
  8. package/dist/__tests__/confluence-adapter.test.js +150 -0
  9. package/dist/__tests__/confluence-adapter.test.js.map +1 -0
  10. package/dist/confluence-adapter.d.ts +44 -0
  11. package/dist/confluence-adapter.d.ts.map +1 -0
  12. package/dist/confluence-adapter.js +218 -0
  13. package/dist/confluence-adapter.js.map +1 -0
  14. package/dist/index.d.ts +8 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +6 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/path-mapper.d.ts +12 -0
  19. package/dist/path-mapper.d.ts.map +1 -0
  20. package/dist/path-mapper.js +65 -0
  21. package/dist/path-mapper.js.map +1 -0
  22. package/dist/queries.d.ts +5 -0
  23. package/dist/queries.d.ts.map +1 -0
  24. package/dist/queries.js +72 -0
  25. package/dist/queries.js.map +1 -0
  26. package/dist/resources.d.ts +25 -0
  27. package/dist/resources.d.ts.map +1 -0
  28. package/dist/resources.js +23 -0
  29. package/dist/resources.js.map +1 -0
  30. package/dist/types.d.ts +109 -0
  31. package/dist/types.d.ts.map +1 -0
  32. package/dist/types.js +4 -0
  33. package/dist/types.js.map +1 -0
  34. package/dist/writeback.d.ts +6 -0
  35. package/dist/writeback.d.ts.map +1 -0
  36. package/dist/writeback.js +214 -0
  37. package/dist/writeback.js.map +1 -0
  38. package/package.json +75 -0
@@ -0,0 +1,214 @@
1
+ import { ReadOnlyFieldError, classifyWrite } from '@relayfile/adapter-core';
2
+ import { extractConfluenceIdFromPathSegment } from './path-mapper.js';
3
+ import { resources } from './resources.js';
4
+ export { ReadOnlyFieldError } from '@relayfile/adapter-core';
5
+ export const CONFLUENCE_API_PAGES_ROUTE = '/wiki/api/v2/pages';
6
+ export function resolveConfluenceWritebackRequest(path, content) {
7
+ const normalized = normalizePath(path);
8
+ const route = classifyWrite(normalized, resources);
9
+ if (route?.resource.path === '/confluence/pages') {
10
+ if (route.kind === 'create') {
11
+ return buildPageCreate(content);
12
+ }
13
+ const pageMatch = normalized.match(/^\/confluence\/pages\/([^/]+)\.json$/u);
14
+ if (route.kind === 'patch' && pageMatch?.[1]) {
15
+ return buildPageUpdate(extractConfluenceIdFromPathSegment(pageMatch[1]), content);
16
+ }
17
+ }
18
+ if (route?.resource.path === '/confluence/spaces/{spaceIdOrKey}/pages') {
19
+ const pageMatch = normalized.match(/^\/confluence\/spaces\/([^/]+)\/pages\/([^/]+)\.json$/u);
20
+ if (route.kind === 'create' && pageMatch?.[1]) {
21
+ return buildPageCreate(content, extractConfluenceIdFromPathSegment(pageMatch[1]));
22
+ }
23
+ if (route.kind === 'patch' && pageMatch?.[2]) {
24
+ return buildPageUpdate(extractConfluenceIdFromPathSegment(pageMatch[2]), content);
25
+ }
26
+ }
27
+ throw new Error(`No Confluence writeback rule matched ${path}`);
28
+ }
29
+ export function resolveConfluenceDeleteRequest(path) {
30
+ const normalized = normalizePath(path);
31
+ const route = classifyWrite(normalized, resources, { fsEvent: 'delete' });
32
+ if (!route || route.kind !== 'delete') {
33
+ throw new Error(`No Confluence delete writeback rule matched ${path}`);
34
+ }
35
+ const nestedPageMatch = normalized.match(/^\/confluence\/spaces\/[^/]+\/pages\/([^/]+)\.json$/u);
36
+ if (nestedPageMatch?.[1]) {
37
+ return buildPageDelete(extractConfluenceIdFromPathSegment(nestedPageMatch[1]));
38
+ }
39
+ const flatPageMatch = normalized.match(/^\/confluence\/pages\/([^/]+)\.json$/u);
40
+ if (flatPageMatch?.[1]) {
41
+ return buildPageDelete(extractConfluenceIdFromPathSegment(flatPageMatch[1]));
42
+ }
43
+ throw new Error(`No Confluence delete writeback rule matched ${path}`);
44
+ }
45
+ function buildPageCreate(content, pathSpaceId) {
46
+ const payload = parseJsonObject(content);
47
+ rejectReadOnlyFields(payload);
48
+ const title = readString(payload, 'title');
49
+ if (!title) {
50
+ throw new Error('page create writeback requires title');
51
+ }
52
+ const spaceId = pathSpaceId ?? readString(payload, 'spaceId') ?? readString(payload, 'space_id');
53
+ if (!spaceId) {
54
+ throw new Error('page create writeback requires spaceId');
55
+ }
56
+ const body = normalizePageBody(payload);
57
+ if (!body) {
58
+ throw new Error('page create writeback requires body');
59
+ }
60
+ const requestBody = {
61
+ spaceId,
62
+ status: readString(payload, 'status') ?? 'current',
63
+ title,
64
+ body,
65
+ };
66
+ const parentId = readString(payload, 'parentId') ?? readString(payload, 'parent_id');
67
+ if (parentId)
68
+ requestBody.parentId = parentId;
69
+ return {
70
+ action: 'create_page',
71
+ method: 'POST',
72
+ endpoint: CONFLUENCE_API_PAGES_ROUTE,
73
+ body: requestBody,
74
+ };
75
+ }
76
+ function buildPageUpdate(pageId, content) {
77
+ const payload = parseJsonObject(content);
78
+ const source = looksLikeSyncedEnvelope(payload) && isRecord(payload.payload)
79
+ ? payload.payload
80
+ : payload;
81
+ rejectReadOnlyFields(source);
82
+ const title = readString(source, 'title');
83
+ if (!title) {
84
+ throw new Error('page update writeback requires title');
85
+ }
86
+ const body = normalizePageBody(source);
87
+ if (!body) {
88
+ throw new Error('page update writeback requires body');
89
+ }
90
+ const requestBody = {
91
+ id: pageId,
92
+ status: readString(source, 'status') ?? 'current',
93
+ title,
94
+ body,
95
+ };
96
+ const spaceId = readString(source, 'spaceId') ?? readString(source, 'space_id');
97
+ if (spaceId)
98
+ requestBody.spaceId = spaceId;
99
+ const version = normalizeVersion(source.version);
100
+ if (version)
101
+ requestBody.version = version;
102
+ return {
103
+ action: 'update_page',
104
+ method: 'PUT',
105
+ endpoint: `${CONFLUENCE_API_PAGES_ROUTE}/${pageId}`,
106
+ body: requestBody,
107
+ };
108
+ }
109
+ function buildPageDelete(pageId) {
110
+ return {
111
+ action: 'delete_page',
112
+ method: 'DELETE',
113
+ endpoint: `${CONFLUENCE_API_PAGES_ROUTE}/${pageId}`,
114
+ };
115
+ }
116
+ const ENVELOPE_MARKER_KEYS = ['provider', 'objectType', 'objectId', 'workspaceId'];
117
+ const READ_ONLY_FIELDS = new Set([
118
+ 'authorId',
119
+ 'createdAt',
120
+ 'id',
121
+ 'objectId',
122
+ 'objectType',
123
+ 'provider',
124
+ 'workspaceId',
125
+ '_connection',
126
+ '_webhook',
127
+ ]);
128
+ function normalizePageBody(payload) {
129
+ const body = payload.body;
130
+ if (typeof body === 'string' && body.trim()) {
131
+ return { representation: 'storage', value: body.trim() };
132
+ }
133
+ if (!isRecord(body)) {
134
+ return undefined;
135
+ }
136
+ if (typeof body.value === 'string' && body.value.trim()) {
137
+ return {
138
+ representation: readString(body, 'representation') ?? 'storage',
139
+ value: body.value.trim(),
140
+ };
141
+ }
142
+ const storage = body.storage;
143
+ if (isRecord(storage) && typeof storage.value === 'string' && storage.value.trim()) {
144
+ return {
145
+ representation: readString(storage, 'representation') ?? 'storage',
146
+ value: storage.value.trim(),
147
+ };
148
+ }
149
+ return undefined;
150
+ }
151
+ function normalizeVersion(value) {
152
+ if (typeof value === 'number' && Number.isInteger(value) && value > 0) {
153
+ return { number: value };
154
+ }
155
+ if (!isRecord(value)) {
156
+ return undefined;
157
+ }
158
+ const number = readNumber(value, 'number');
159
+ if (number === undefined) {
160
+ return undefined;
161
+ }
162
+ return {
163
+ number: number + 1,
164
+ ...(readString(value, 'message') ? { message: readString(value, 'message') } : {}),
165
+ ...(readBoolean(value, 'minorEdit') !== undefined ? { minorEdit: readBoolean(value, 'minorEdit') } : {}),
166
+ };
167
+ }
168
+ function rejectReadOnlyFields(payload) {
169
+ for (const key of Object.keys(payload)) {
170
+ if (READ_ONLY_FIELDS.has(key)) {
171
+ throw new ReadOnlyFieldError(key);
172
+ }
173
+ }
174
+ }
175
+ function looksLikeSyncedEnvelope(payload) {
176
+ if (!isRecord(payload.payload))
177
+ return false;
178
+ return ENVELOPE_MARKER_KEYS.some((key) => key in payload);
179
+ }
180
+ function parseJsonObject(content) {
181
+ const parsed = safeParseJson(content);
182
+ if (!isRecord(parsed)) {
183
+ throw new Error('Expected JSON object payload');
184
+ }
185
+ return parsed;
186
+ }
187
+ function safeParseJson(content) {
188
+ try {
189
+ return JSON.parse(content);
190
+ }
191
+ catch {
192
+ return content.trim();
193
+ }
194
+ }
195
+ function readString(record, key) {
196
+ const value = record[key];
197
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
198
+ }
199
+ function readNumber(record, key) {
200
+ const value = record[key];
201
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
202
+ }
203
+ function readBoolean(record, key) {
204
+ const value = record[key];
205
+ return typeof value === 'boolean' ? value : undefined;
206
+ }
207
+ function isRecord(value) {
208
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
209
+ }
210
+ function normalizePath(path) {
211
+ const trimmed = path.trim();
212
+ return trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
213
+ }
214
+ //# sourceMappingURL=writeback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeback.js","sourceRoot":"","sources":["../src/writeback.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@relayfile/adapter-confluence",
3
+ "version": "0.1.0",
4
+ "description": "Confluence adapter package for Relayfile",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./path-mapper": {
15
+ "types": "./dist/path-mapper.d.ts",
16
+ "import": "./dist/path-mapper.js",
17
+ "default": "./dist/path-mapper.js"
18
+ },
19
+ "./queries": {
20
+ "types": "./dist/queries.d.ts",
21
+ "import": "./dist/queries.js",
22
+ "default": "./dist/queries.js"
23
+ },
24
+ "./writeback": {
25
+ "types": "./dist/writeback.d.ts",
26
+ "import": "./dist/writeback.js",
27
+ "default": "./dist/writeback.js"
28
+ },
29
+ "./types": {
30
+ "types": "./dist/types.d.ts",
31
+ "import": "./dist/types.js",
32
+ "default": "./dist/types.js"
33
+ }
34
+ },
35
+ "files": [
36
+ "dist",
37
+ "discovery"
38
+ ],
39
+ "scripts": {
40
+ "typecheck": "tsc --noEmit -p tsconfig.json",
41
+ "test": "node --import tsx --test 'src/**/*.test.ts'",
42
+ "build": "tsc",
43
+ "prepublishOnly": "npm run build"
44
+ },
45
+ "keywords": [
46
+ "relayfile",
47
+ "confluence",
48
+ "adapter"
49
+ ],
50
+ "license": "MIT",
51
+ "engines": {
52
+ "node": ">=18"
53
+ },
54
+ "publishConfig": {
55
+ "access": "public"
56
+ },
57
+ "repository": {
58
+ "type": "git",
59
+ "url": "https://github.com/AgentWorkforce/relayfile-adapters",
60
+ "directory": "packages/confluence"
61
+ },
62
+ "dependencies": {
63
+ "@relayfile/adapter-core": "^0.2.2"
64
+ },
65
+ "peerDependencies": {
66
+ "@relayfile/sdk": ">=0.6.0 <1"
67
+ },
68
+ "devDependencies": {
69
+ "@agent-relay/sdk": "^6.0.7",
70
+ "@relayfile/sdk": "^0.6.0",
71
+ "@types/node": "^24.6.0",
72
+ "tsx": "^4.20.6",
73
+ "typescript": "^5.9.3"
74
+ }
75
+ }