@relayfile/adapter-confluence 0.1.4 → 0.1.5
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/dist/__tests__/emit-auxiliary-files.test.d.ts +2 -0
- package/dist/__tests__/emit-auxiliary-files.test.d.ts.map +1 -0
- package/dist/__tests__/emit-auxiliary-files.test.js +353 -0
- package/dist/__tests__/emit-auxiliary-files.test.js.map +1 -0
- package/dist/emit-auxiliary-files.d.ts +80 -0
- package/dist/emit-auxiliary-files.d.ts.map +1 -0
- package/dist/emit-auxiliary-files.js +329 -0
- package/dist/emit-auxiliary-files.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-auxiliary-files.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/emit-auxiliary-files.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { emitConfluenceAuxiliaryFiles } from '../emit-auxiliary-files.js';
|
|
4
|
+
import { confluencePageByIdAliasPath, confluencePageByParentAliasPath, confluencePageBySpaceAliasPath, confluencePageByStatePath, confluencePageByTitleAliasPath, confluencePagePath, confluencePagesIndexPath, confluenceSpaceByIdAliasPath, confluenceSpaceByKeyAliasPath, confluenceSpaceByTitleAliasPath, confluenceSpacePath, confluenceSpacesIndexPath, } from '../path-mapper.js';
|
|
5
|
+
function createClient(options = {}) {
|
|
6
|
+
const files = new Map(Object.entries(options.initialFiles ?? {}));
|
|
7
|
+
const writes = [];
|
|
8
|
+
const deletes = [];
|
|
9
|
+
const reads = [];
|
|
10
|
+
const failWriteOn = options.failWriteOn ?? new Set();
|
|
11
|
+
const failReadOn = options.failReadOn ?? new Set();
|
|
12
|
+
const client = {
|
|
13
|
+
writes,
|
|
14
|
+
deletes,
|
|
15
|
+
reads,
|
|
16
|
+
files,
|
|
17
|
+
async writeFile(input) {
|
|
18
|
+
writes.push(input);
|
|
19
|
+
if (failWriteOn.has(input.path)) {
|
|
20
|
+
throw new Error(`forced write failure at ${input.path}`);
|
|
21
|
+
}
|
|
22
|
+
files.set(input.path, input.content);
|
|
23
|
+
return { created: true };
|
|
24
|
+
},
|
|
25
|
+
async deleteFile(input) {
|
|
26
|
+
deletes.push(input);
|
|
27
|
+
files.delete(input.path);
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
if (!options.noRead) {
|
|
31
|
+
client.readFile = async (input) => {
|
|
32
|
+
reads.push(input);
|
|
33
|
+
if (failReadOn.has(input.path)) {
|
|
34
|
+
throw new Error(`forced read failure at ${input.path}`);
|
|
35
|
+
}
|
|
36
|
+
const content = files.get(input.path);
|
|
37
|
+
return content === undefined ? null : { content };
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return client;
|
|
41
|
+
}
|
|
42
|
+
describe('emitConfluenceAuxiliaryFiles', () => {
|
|
43
|
+
it('returns a zero result on empty input', async () => {
|
|
44
|
+
const client = createClient();
|
|
45
|
+
const result = await emitConfluenceAuxiliaryFiles(client, { workspaceId: 'ws-1' });
|
|
46
|
+
assert.deepEqual(result, { written: 0, deleted: 0, errors: [] });
|
|
47
|
+
assert.equal(client.writes.length, 0);
|
|
48
|
+
assert.equal(client.deletes.length, 0);
|
|
49
|
+
});
|
|
50
|
+
it('writes the canonical path plus every applicable page alias plus the index row', async () => {
|
|
51
|
+
const client = createClient();
|
|
52
|
+
const page = {
|
|
53
|
+
id: '98765',
|
|
54
|
+
title: 'Release Plan',
|
|
55
|
+
status: 'current',
|
|
56
|
+
spaceId: '12345',
|
|
57
|
+
parentId: '54321',
|
|
58
|
+
};
|
|
59
|
+
const result = await emitConfluenceAuxiliaryFiles(client, {
|
|
60
|
+
workspaceId: 'ws-1',
|
|
61
|
+
pages: [page],
|
|
62
|
+
});
|
|
63
|
+
// Page emits 6 files (canonical + by-id + by-title + by-state + by-space + by-parent),
|
|
64
|
+
// plus 1 index file write.
|
|
65
|
+
assert.equal(result.written, 7);
|
|
66
|
+
assert.deepEqual(result.errors, []);
|
|
67
|
+
const expectedPaths = [
|
|
68
|
+
confluencePagePath('98765', 'Release Plan', '12345'),
|
|
69
|
+
confluencePageByIdAliasPath('98765'),
|
|
70
|
+
confluencePageByTitleAliasPath('Release Plan', '98765'),
|
|
71
|
+
confluencePageByStatePath('current', '98765'),
|
|
72
|
+
confluencePageBySpaceAliasPath('12345', '98765'),
|
|
73
|
+
confluencePageByParentAliasPath('54321', '98765'),
|
|
74
|
+
confluencePagesIndexPath(),
|
|
75
|
+
];
|
|
76
|
+
const writtenPaths = client.writes.map((w) => w.path);
|
|
77
|
+
for (const expected of expectedPaths) {
|
|
78
|
+
assert.ok(writtenPaths.includes(expected), `missing expected path ${expected}`);
|
|
79
|
+
}
|
|
80
|
+
// Index row contains the page.
|
|
81
|
+
const indexBytes = client.files.get(confluencePagesIndexPath());
|
|
82
|
+
const rows = JSON.parse(indexBytes);
|
|
83
|
+
assert.equal(rows.length, 1);
|
|
84
|
+
assert.equal(rows[0].id, '98765');
|
|
85
|
+
assert.equal(rows[0].title, 'Release Plan');
|
|
86
|
+
assert.equal(rows[0].spaceId, '12345');
|
|
87
|
+
// Canonical bytes are identical at every emitted alias path.
|
|
88
|
+
const canonicalBytes = client.files.get(confluencePagePath('98765', 'Release Plan', '12345'));
|
|
89
|
+
for (const path of expectedPaths) {
|
|
90
|
+
if (path === confluencePagesIndexPath())
|
|
91
|
+
continue;
|
|
92
|
+
assert.equal(client.files.get(path), canonicalBytes, `bytes mismatch at ${path}`);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
it('reconciles prior by-title alias on page rename via the by-id anchor', async () => {
|
|
96
|
+
// Seed the by-id alias as if a prior write had landed under the old title.
|
|
97
|
+
const priorPayload = {
|
|
98
|
+
provider: 'confluence',
|
|
99
|
+
objectType: 'page',
|
|
100
|
+
objectId: '98765',
|
|
101
|
+
deleted: false,
|
|
102
|
+
payload: { id: '98765', title: 'Old Title', status: 'current', spaceId: '12345' },
|
|
103
|
+
};
|
|
104
|
+
const client = createClient({
|
|
105
|
+
initialFiles: {
|
|
106
|
+
[confluencePageByIdAliasPath('98765')]: JSON.stringify(priorPayload),
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
const result = await emitConfluenceAuxiliaryFiles(client, {
|
|
110
|
+
workspaceId: 'ws-1',
|
|
111
|
+
pages: [
|
|
112
|
+
{ id: '98765', title: 'New Title', status: 'current', spaceId: '12345' },
|
|
113
|
+
],
|
|
114
|
+
});
|
|
115
|
+
// The prior by-title alias and prior canonical (title-derived) path should
|
|
116
|
+
// be in the deletes (they no longer apply). by-id stays because it's the
|
|
117
|
+
// anchor and didn't change.
|
|
118
|
+
const deletedPaths = client.deletes.map((d) => d.path);
|
|
119
|
+
assert.ok(deletedPaths.includes(confluencePageByTitleAliasPath('Old Title', '98765')), `expected prior by-title alias in deletes, got: ${deletedPaths.join(', ')}`);
|
|
120
|
+
assert.ok(deletedPaths.includes(confluencePagePath('98765', 'Old Title', '12345')), `expected prior canonical path in deletes`);
|
|
121
|
+
// by-id stays (no rename impact).
|
|
122
|
+
assert.ok(!deletedPaths.includes(confluencePageByIdAliasPath('98765')));
|
|
123
|
+
// The new by-title alias and new canonical path landed.
|
|
124
|
+
const writtenPaths = client.writes.map((w) => w.path);
|
|
125
|
+
assert.ok(writtenPaths.includes(confluencePageByTitleAliasPath('New Title', '98765')));
|
|
126
|
+
assert.ok(writtenPaths.includes(confluencePagePath('98765', 'New Title', '12345')));
|
|
127
|
+
assert.deepEqual(result.errors, []);
|
|
128
|
+
});
|
|
129
|
+
it('writes by-key alias for spaces when a key is present', async () => {
|
|
130
|
+
const client = createClient();
|
|
131
|
+
await emitConfluenceAuxiliaryFiles(client, {
|
|
132
|
+
workspaceId: 'ws-1',
|
|
133
|
+
spaces: [
|
|
134
|
+
{ id: '777', name: 'Engineering', key: 'ENG' },
|
|
135
|
+
],
|
|
136
|
+
});
|
|
137
|
+
const writtenPaths = client.writes.map((w) => w.path);
|
|
138
|
+
assert.ok(writtenPaths.includes(confluenceSpacePath('777', 'Engineering')));
|
|
139
|
+
assert.ok(writtenPaths.includes(confluenceSpaceByIdAliasPath('777')));
|
|
140
|
+
assert.ok(writtenPaths.includes(confluenceSpaceByTitleAliasPath('Engineering', '777')));
|
|
141
|
+
assert.ok(writtenPaths.includes(confluenceSpaceByKeyAliasPath('ENG')));
|
|
142
|
+
assert.ok(writtenPaths.includes(confluenceSpacesIndexPath()));
|
|
143
|
+
});
|
|
144
|
+
it('delete tombstone reads prior by-id alias and removes every previously emitted path', async () => {
|
|
145
|
+
const priorPayload = {
|
|
146
|
+
provider: 'confluence',
|
|
147
|
+
objectType: 'page',
|
|
148
|
+
objectId: '98765',
|
|
149
|
+
deleted: false,
|
|
150
|
+
payload: {
|
|
151
|
+
id: '98765',
|
|
152
|
+
title: 'Release Plan',
|
|
153
|
+
status: 'current',
|
|
154
|
+
spaceId: '12345',
|
|
155
|
+
parentId: '54321',
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
const client = createClient({
|
|
159
|
+
initialFiles: {
|
|
160
|
+
[confluencePageByIdAliasPath('98765')]: JSON.stringify(priorPayload),
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
const result = await emitConfluenceAuxiliaryFiles(client, {
|
|
164
|
+
workspaceId: 'ws-1',
|
|
165
|
+
pages: [{ id: '98765', _deleted: true }],
|
|
166
|
+
});
|
|
167
|
+
const deletedPaths = new Set(client.deletes.map((d) => d.path));
|
|
168
|
+
const expectedDeletes = [
|
|
169
|
+
confluencePagePath('98765', 'Release Plan', '12345'),
|
|
170
|
+
confluencePageByIdAliasPath('98765'),
|
|
171
|
+
confluencePageByTitleAliasPath('Release Plan', '98765'),
|
|
172
|
+
confluencePageByStatePath('current', '98765'),
|
|
173
|
+
confluencePageBySpaceAliasPath('12345', '98765'),
|
|
174
|
+
confluencePageByParentAliasPath('54321', '98765'),
|
|
175
|
+
];
|
|
176
|
+
for (const path of expectedDeletes) {
|
|
177
|
+
assert.ok(deletedPaths.has(path), `expected delete at ${path}`);
|
|
178
|
+
}
|
|
179
|
+
// No content writes happened for the tombstone, but the index file
|
|
180
|
+
// flush still runs (with 0 mutations queued, so no write).
|
|
181
|
+
const contentWrites = client.writes.filter((w) => w.path !== confluencePagesIndexPath());
|
|
182
|
+
assert.equal(contentWrites.length, 0);
|
|
183
|
+
assert.equal(result.deleted, expectedDeletes.length);
|
|
184
|
+
});
|
|
185
|
+
it('drops the index row when a page is deleted (no ghost entries)', async () => {
|
|
186
|
+
// Regression for the Devin finding on PR #78: planPageDelete used to
|
|
187
|
+
// remove canonical + alias files but leave the index row in place, so
|
|
188
|
+
// `_index.json` accumulated entries for records whose meta.json had
|
|
189
|
+
// already been deleted. The reconciler must `.remove(id)` on the
|
|
190
|
+
// delete path too.
|
|
191
|
+
const priorPagePayload = {
|
|
192
|
+
payload: {
|
|
193
|
+
title: 'Release Plan',
|
|
194
|
+
status: 'current',
|
|
195
|
+
spaceId: '12345',
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
const priorIndex = [
|
|
199
|
+
{ id: '98765', title: 'Release Plan', updated: '2026-05-12T00:00:00Z', status: 'current' },
|
|
200
|
+
{ id: '11111', title: 'Other Page', updated: '2026-05-11T00:00:00Z', status: 'current' },
|
|
201
|
+
];
|
|
202
|
+
const client = createClient({
|
|
203
|
+
initialFiles: {
|
|
204
|
+
[confluencePageByIdAliasPath('98765')]: JSON.stringify(priorPagePayload),
|
|
205
|
+
[confluencePagesIndexPath()]: JSON.stringify(priorIndex),
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
await emitConfluenceAuxiliaryFiles(client, {
|
|
209
|
+
workspaceId: 'ws-1',
|
|
210
|
+
pages: [{ id: '98765', _deleted: true }],
|
|
211
|
+
});
|
|
212
|
+
// The index file got rewritten — without the deleted row but with
|
|
213
|
+
// the surviving entry intact.
|
|
214
|
+
const indexWrite = client.writes.find((w) => w.path === confluencePagesIndexPath());
|
|
215
|
+
assert.ok(indexWrite, 'expected an index write after delete to prune the row');
|
|
216
|
+
const writtenRows = JSON.parse(indexWrite.content);
|
|
217
|
+
assert.deepEqual(writtenRows.map((r) => r.id), ['11111'], 'deleted page id should no longer appear in the index');
|
|
218
|
+
});
|
|
219
|
+
it('drops the index row when a space is deleted', async () => {
|
|
220
|
+
// Same regression as above, for spaces. planSpaceDelete must also
|
|
221
|
+
// `.remove(id)` on the index reconciler.
|
|
222
|
+
const priorSpacePayload = {
|
|
223
|
+
payload: { name: 'Engineering', key: 'ENG' },
|
|
224
|
+
};
|
|
225
|
+
const priorIndex = [
|
|
226
|
+
{ id: '12345', title: 'Engineering', updated: '2026-05-12T00:00:00Z', key: 'ENG' },
|
|
227
|
+
{ id: '22222', title: 'Marketing', updated: '2026-05-11T00:00:00Z', key: 'MKT' },
|
|
228
|
+
];
|
|
229
|
+
const client = createClient({
|
|
230
|
+
initialFiles: {
|
|
231
|
+
[confluenceSpaceByIdAliasPath('12345')]: JSON.stringify(priorSpacePayload),
|
|
232
|
+
[confluenceSpacesIndexPath()]: JSON.stringify(priorIndex),
|
|
233
|
+
},
|
|
234
|
+
});
|
|
235
|
+
await emitConfluenceAuxiliaryFiles(client, {
|
|
236
|
+
workspaceId: 'ws-1',
|
|
237
|
+
spaces: [{ id: '12345', _deleted: true }],
|
|
238
|
+
});
|
|
239
|
+
const indexWrite = client.writes.find((w) => w.path === confluenceSpacesIndexPath());
|
|
240
|
+
assert.ok(indexWrite, 'expected an index write after delete to prune the row');
|
|
241
|
+
const writtenRows = JSON.parse(indexWrite.content);
|
|
242
|
+
assert.deepEqual(writtenRows.map((r) => r.id), ['22222'], 'deleted space id should no longer appear in the index');
|
|
243
|
+
});
|
|
244
|
+
it('captures per-path write failures in errors without aborting the fan-out', async () => {
|
|
245
|
+
const failingPath = confluencePageByTitleAliasPath('Release Plan', '98765');
|
|
246
|
+
const client = createClient({ failWriteOn: new Set([failingPath]) });
|
|
247
|
+
const result = await emitConfluenceAuxiliaryFiles(client, {
|
|
248
|
+
workspaceId: 'ws-1',
|
|
249
|
+
pages: [
|
|
250
|
+
{
|
|
251
|
+
id: '98765',
|
|
252
|
+
title: 'Release Plan',
|
|
253
|
+
status: 'current',
|
|
254
|
+
spaceId: '12345',
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
});
|
|
258
|
+
assert.equal(result.errors.length, 1);
|
|
259
|
+
assert.equal(result.errors[0].path, failingPath);
|
|
260
|
+
assert.match(result.errors[0].error, /forced write failure/);
|
|
261
|
+
// The remaining alias paths landed, including by-id (the anchor).
|
|
262
|
+
assert.ok(client.files.has(confluencePageByIdAliasPath('98765')));
|
|
263
|
+
assert.ok(client.files.has(confluencePageByStatePath('current', '98765')));
|
|
264
|
+
assert.ok(client.files.has(confluencePagesIndexPath()));
|
|
265
|
+
});
|
|
266
|
+
it('skips reconciliation when the client has no readFile but still emits new aliases', async () => {
|
|
267
|
+
const client = createClient({ noRead: true });
|
|
268
|
+
const result = await emitConfluenceAuxiliaryFiles(client, {
|
|
269
|
+
workspaceId: 'ws-1',
|
|
270
|
+
pages: [
|
|
271
|
+
{ id: '98765', title: 'Release Plan', status: 'current', spaceId: '12345' },
|
|
272
|
+
],
|
|
273
|
+
});
|
|
274
|
+
// No reconciliation deletes were attempted because there was no prior
|
|
275
|
+
// state to read (and reads aren't supported anyway). The index file
|
|
276
|
+
// also can't be merged with existing rows; it gets stomped with just
|
|
277
|
+
// this batch.
|
|
278
|
+
assert.equal(client.deletes.length, 0);
|
|
279
|
+
assert.deepEqual(result.errors, []);
|
|
280
|
+
const writtenPaths = client.writes.map((w) => w.path);
|
|
281
|
+
assert.ok(writtenPaths.includes(confluencePageByIdAliasPath('98765')));
|
|
282
|
+
assert.ok(writtenPaths.includes(confluencePageByTitleAliasPath('Release Plan', '98765')));
|
|
283
|
+
});
|
|
284
|
+
it('non-fatally swallows reconciliation read errors and proceeds with the write batch', async () => {
|
|
285
|
+
const client = createClient({
|
|
286
|
+
failReadOn: new Set([confluencePageByIdAliasPath('98765')]),
|
|
287
|
+
});
|
|
288
|
+
const result = await emitConfluenceAuxiliaryFiles(client, {
|
|
289
|
+
workspaceId: 'ws-1',
|
|
290
|
+
pages: [
|
|
291
|
+
{ id: '98765', title: 'Release Plan', status: 'current', spaceId: '12345' },
|
|
292
|
+
],
|
|
293
|
+
});
|
|
294
|
+
// Reconciliation read failed → no stale paths computed → no deletes
|
|
295
|
+
// attempted → write fan-out proceeds.
|
|
296
|
+
assert.equal(client.deletes.length, 0);
|
|
297
|
+
assert.deepEqual(result.errors, []);
|
|
298
|
+
assert.ok(client.files.has(confluencePagePath('98765', 'Release Plan', '12345')));
|
|
299
|
+
});
|
|
300
|
+
it('skips by-title alias for emoji-only / punctuation-only titles', async () => {
|
|
301
|
+
const client = createClient();
|
|
302
|
+
await emitConfluenceAuxiliaryFiles(client, {
|
|
303
|
+
workspaceId: 'ws-1',
|
|
304
|
+
pages: [{ id: '111', title: '🚀!!!' }],
|
|
305
|
+
});
|
|
306
|
+
const writtenPaths = client.writes.map((w) => w.path);
|
|
307
|
+
assert.ok(writtenPaths.includes(confluencePageByIdAliasPath('111')));
|
|
308
|
+
// No by-title alias because the slug would collapse to empty.
|
|
309
|
+
const byTitleEmitted = writtenPaths.some((p) => p.includes('/by-title/') && p.includes('111'));
|
|
310
|
+
assert.equal(byTitleEmitted, false);
|
|
311
|
+
});
|
|
312
|
+
it('handles mixed page batches with create + delete + rename in one call', async () => {
|
|
313
|
+
const priorRenamePayload = {
|
|
314
|
+
provider: 'confluence',
|
|
315
|
+
objectType: 'page',
|
|
316
|
+
objectId: '200',
|
|
317
|
+
payload: { id: '200', title: 'Old', spaceId: 'S1', status: 'current' },
|
|
318
|
+
};
|
|
319
|
+
const priorDeletePayload = {
|
|
320
|
+
provider: 'confluence',
|
|
321
|
+
objectType: 'page',
|
|
322
|
+
objectId: '300',
|
|
323
|
+
payload: { id: '300', title: 'Doomed', spaceId: 'S1', status: 'current' },
|
|
324
|
+
};
|
|
325
|
+
const client = createClient({
|
|
326
|
+
initialFiles: {
|
|
327
|
+
[confluencePageByIdAliasPath('200')]: JSON.stringify(priorRenamePayload),
|
|
328
|
+
[confluencePageByIdAliasPath('300')]: JSON.stringify(priorDeletePayload),
|
|
329
|
+
},
|
|
330
|
+
});
|
|
331
|
+
const result = await emitConfluenceAuxiliaryFiles(client, {
|
|
332
|
+
workspaceId: 'ws-1',
|
|
333
|
+
pages: [
|
|
334
|
+
{ id: '100', title: 'New Page', spaceId: 'S1', status: 'current' },
|
|
335
|
+
{ id: '200', title: 'Renamed', spaceId: 'S1', status: 'current' },
|
|
336
|
+
{ id: '300', _deleted: true },
|
|
337
|
+
],
|
|
338
|
+
});
|
|
339
|
+
// All three records contributed paths to writes or deletes.
|
|
340
|
+
const writtenPaths = client.writes.map((w) => w.path);
|
|
341
|
+
assert.ok(writtenPaths.includes(confluencePageByIdAliasPath('100')));
|
|
342
|
+
assert.ok(writtenPaths.includes(confluencePageByIdAliasPath('200')));
|
|
343
|
+
// No write for the deleted record's by-id path.
|
|
344
|
+
assert.ok(!writtenPaths.includes(confluencePagePath('300', 'Doomed', 'S1')));
|
|
345
|
+
const deletedPaths = client.deletes.map((d) => d.path);
|
|
346
|
+
// Renamed page's old by-title alias is in deletes.
|
|
347
|
+
assert.ok(deletedPaths.includes(confluencePageByTitleAliasPath('Old', '200')));
|
|
348
|
+
// Deleted page's by-id alias is in deletes.
|
|
349
|
+
assert.ok(deletedPaths.includes(confluencePageByIdAliasPath('300')));
|
|
350
|
+
assert.deepEqual(result.errors, []);
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
//# sourceMappingURL=emit-auxiliary-files.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-auxiliary-files.test.js","sourceRoot":"","sources":["../../src/__tests__/emit-auxiliary-files.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter-owned auxiliary-file emission for Confluence.
|
|
3
|
+
*
|
|
4
|
+
* This is the Phase 1 reference port for the cross-adapter `emitAuxiliaryFiles`
|
|
5
|
+
* contract defined in `@relayfile/adapter-core`. It generalizes the
|
|
6
|
+
* write-loop currently sitting in `cloud/packages/core/src/sync/record-writer.ts`
|
|
7
|
+
* (`writeConfluenceAuxiliaryFiles`) so the same primitive can be reused
|
|
8
|
+
* across Slack, Jira, Notion, Linear, GitHub in Phase 2, and so cloud's
|
|
9
|
+
* dispatcher collapses to a 10-line provider switch in Phase 3.
|
|
10
|
+
*
|
|
11
|
+
* Behavior reproduced from cloud's current implementation:
|
|
12
|
+
*
|
|
13
|
+
* 1. For every page record, write the by-id alias unconditionally (the
|
|
14
|
+
* stable reconciliation anchor) plus by-title / by-state / by-space /
|
|
15
|
+
* by-parent when the underlying fields are present. The canonical
|
|
16
|
+
* `/confluence/spaces/<spaceId>/pages/<slug>__<id>.json` path is
|
|
17
|
+
* written too — the bytes are identical at every alias path, so any
|
|
18
|
+
* one of them resolves to the same payload (matches the contract
|
|
19
|
+
* adapter-confluence#69 established).
|
|
20
|
+
* 2. For every page rename / status change / spaceId change, read the
|
|
21
|
+
* prior by-id alias to recover the previous title / status /
|
|
22
|
+
* spaceId, recompute the prior alias set, and delete every alias
|
|
23
|
+
* that no longer applies. Reads degrade to "no reconciliation" when
|
|
24
|
+
* the client lacks `readFile` — same back-compat we shipped in
|
|
25
|
+
* b2440df.
|
|
26
|
+
* 3. For every space record, the same shape: by-id, by-title (if name
|
|
27
|
+
* slugs to non-empty), by-key (when present) plus the canonical
|
|
28
|
+
* `/confluence/spaces/<slug>__<id>.json`.
|
|
29
|
+
* 4. For deleted records, all known alias and canonical paths are
|
|
30
|
+
* removed. Index rows are also removed in the same flush.
|
|
31
|
+
* 5. `_index.json` files for pages and spaces are read once, merged
|
|
32
|
+
* with upserts and removes, written once. Failures are accumulated
|
|
33
|
+
* into the returned `errors` array, never thrown.
|
|
34
|
+
*
|
|
35
|
+
* Records are accepted as already-cleaned `ConfluencePage` / `ConfluenceSpace`
|
|
36
|
+
* objects (the cleaning step happens in cloud; this adapter doesn't need
|
|
37
|
+
* to strip Nango metadata). To delete a record, pass an object with `id`
|
|
38
|
+
* plus `_deleted: true` — that's the contract the cloud dispatcher will
|
|
39
|
+
* adopt in Phase 3.
|
|
40
|
+
*/
|
|
41
|
+
import { type AuxiliaryEmitterClient, type EmitAuxiliaryFilesResult } from '@relayfile/adapter-core';
|
|
42
|
+
import { type ConfluencePage, type ConfluenceSpace, type RelayFileClientLike } from './types.js';
|
|
43
|
+
/**
|
|
44
|
+
* Records accepted by `emitConfluenceAuxiliaryFiles`. Each entry is either
|
|
45
|
+
* a full page/space object or a `{ id, _deleted: true }` tombstone for the
|
|
46
|
+
* delete branch. Adapters in Phase 2 will adopt the same `_deleted` flag
|
|
47
|
+
* so the cloud dispatcher can route uniformly across providers.
|
|
48
|
+
*/
|
|
49
|
+
export type ConfluencePageEmitRecord = ConfluencePage | {
|
|
50
|
+
id: string;
|
|
51
|
+
_deleted: true;
|
|
52
|
+
};
|
|
53
|
+
export type ConfluenceSpaceEmitRecord = ConfluenceSpace | {
|
|
54
|
+
id: string;
|
|
55
|
+
_deleted: true;
|
|
56
|
+
};
|
|
57
|
+
export interface ConfluenceEmitAuxiliaryFilesInput {
|
|
58
|
+
workspaceId: string;
|
|
59
|
+
/** Page records (full or `_deleted` tombstones). Pass `undefined` for
|
|
60
|
+
* pure-space batches. */
|
|
61
|
+
pages?: readonly ConfluencePageEmitRecord[];
|
|
62
|
+
/** Space records (full or `_deleted` tombstones). Pass `undefined` for
|
|
63
|
+
* pure-page batches. */
|
|
64
|
+
spaces?: readonly ConfluenceSpaceEmitRecord[];
|
|
65
|
+
/**
|
|
66
|
+
* Optional connection id to include in the rendered payload wrapper so
|
|
67
|
+
* downstream readers can route writeback by connection. Mirrors the
|
|
68
|
+
* `ConfluenceAdapter.renderContent` output without forcing callers to
|
|
69
|
+
* instantiate the class.
|
|
70
|
+
*/
|
|
71
|
+
connectionId?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Phase-1 entry point. Adapters in Phase 2 will expose the same function
|
|
75
|
+
* shape; cloud's Phase 3 dispatcher iterates `(provider, records)` and
|
|
76
|
+
* calls the corresponding `emit*AuxiliaryFiles` function with a shimmed
|
|
77
|
+
* `AuxiliaryEmitterClient`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function emitConfluenceAuxiliaryFiles(client: AuxiliaryEmitterClient | RelayFileClientLike, input: ConfluenceEmitAuxiliaryFilesInput): Promise<EmitAuxiliaryFilesResult>;
|
|
80
|
+
//# sourceMappingURL=emit-auxiliary-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-auxiliary-files.d.ts","sourceRoot":"","sources":["../src/emit-auxiliary-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAKL,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAI9B,MAAM,yBAAyB,CAAC;AAuBjC,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAChC,cAAc,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnC,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC;AAEnC,MAAM,WAAW,iCAAiC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB;8BAC0B;IAC1B,KAAK,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC5C;6BACyB;IACzB,MAAM,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC9C;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,sBAAsB,GAAG,mBAAmB,EACpD,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,wBAAwB,CAAC,CAuBnC"}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter-owned auxiliary-file emission for Confluence.
|
|
3
|
+
*
|
|
4
|
+
* This is the Phase 1 reference port for the cross-adapter `emitAuxiliaryFiles`
|
|
5
|
+
* contract defined in `@relayfile/adapter-core`. It generalizes the
|
|
6
|
+
* write-loop currently sitting in `cloud/packages/core/src/sync/record-writer.ts`
|
|
7
|
+
* (`writeConfluenceAuxiliaryFiles`) so the same primitive can be reused
|
|
8
|
+
* across Slack, Jira, Notion, Linear, GitHub in Phase 2, and so cloud's
|
|
9
|
+
* dispatcher collapses to a 10-line provider switch in Phase 3.
|
|
10
|
+
*
|
|
11
|
+
* Behavior reproduced from cloud's current implementation:
|
|
12
|
+
*
|
|
13
|
+
* 1. For every page record, write the by-id alias unconditionally (the
|
|
14
|
+
* stable reconciliation anchor) plus by-title / by-state / by-space /
|
|
15
|
+
* by-parent when the underlying fields are present. The canonical
|
|
16
|
+
* `/confluence/spaces/<spaceId>/pages/<slug>__<id>.json` path is
|
|
17
|
+
* written too — the bytes are identical at every alias path, so any
|
|
18
|
+
* one of them resolves to the same payload (matches the contract
|
|
19
|
+
* adapter-confluence#69 established).
|
|
20
|
+
* 2. For every page rename / status change / spaceId change, read the
|
|
21
|
+
* prior by-id alias to recover the previous title / status /
|
|
22
|
+
* spaceId, recompute the prior alias set, and delete every alias
|
|
23
|
+
* that no longer applies. Reads degrade to "no reconciliation" when
|
|
24
|
+
* the client lacks `readFile` — same back-compat we shipped in
|
|
25
|
+
* b2440df.
|
|
26
|
+
* 3. For every space record, the same shape: by-id, by-title (if name
|
|
27
|
+
* slugs to non-empty), by-key (when present) plus the canonical
|
|
28
|
+
* `/confluence/spaces/<slug>__<id>.json`.
|
|
29
|
+
* 4. For deleted records, all known alias and canonical paths are
|
|
30
|
+
* removed. Index rows are also removed in the same flush.
|
|
31
|
+
* 5. `_index.json` files for pages and spaces are read once, merged
|
|
32
|
+
* with upserts and removes, written once. Failures are accumulated
|
|
33
|
+
* into the returned `errors` array, never thrown.
|
|
34
|
+
*
|
|
35
|
+
* Records are accepted as already-cleaned `ConfluencePage` / `ConfluenceSpace`
|
|
36
|
+
* objects (the cleaning step happens in cloud; this adapter doesn't need
|
|
37
|
+
* to strip Nango metadata). To delete a record, pass an object with `id`
|
|
38
|
+
* plus `_deleted: true` — that's the contract the cloud dispatcher will
|
|
39
|
+
* adopt in Phase 3.
|
|
40
|
+
*/
|
|
41
|
+
import { PriorAliasReader, IndexFileReconciler, runEmitBatch, EMIT_AUXILIARY_JSON_CONTENT_TYPE, } from '@relayfile/adapter-core';
|
|
42
|
+
import { slugifyAlias } from './alias-slug.js';
|
|
43
|
+
import { confluencePageByIdAliasPath, confluencePageByParentAliasPath, confluencePageBySpaceAliasPath, confluencePageByStatePath, confluencePageByTitleAliasPath, confluencePagePath, confluencePagesIndexPath, confluenceSpaceByIdAliasPath, confluenceSpaceByKeyAliasPath, confluenceSpaceByTitleAliasPath, confluenceSpacePath, confluenceSpacesIndexPath, } from './path-mapper.js';
|
|
44
|
+
import { confluencePageIndexRow, confluenceSpaceIndexRow, } from './queries.js';
|
|
45
|
+
import { CONFLUENCE_PROVIDER_NAME, } from './types.js';
|
|
46
|
+
const JSON_CONTENT_TYPE = EMIT_AUXILIARY_JSON_CONTENT_TYPE;
|
|
47
|
+
/**
|
|
48
|
+
* Phase-1 entry point. Adapters in Phase 2 will expose the same function
|
|
49
|
+
* shape; cloud's Phase 3 dispatcher iterates `(provider, records)` and
|
|
50
|
+
* calls the corresponding `emit*AuxiliaryFiles` function with a shimmed
|
|
51
|
+
* `AuxiliaryEmitterClient`.
|
|
52
|
+
*/
|
|
53
|
+
export async function emitConfluenceAuxiliaryFiles(client, input) {
|
|
54
|
+
const emitterClient = client;
|
|
55
|
+
const workspaceId = input.workspaceId;
|
|
56
|
+
const pages = input.pages ?? [];
|
|
57
|
+
const spaces = input.spaces ?? [];
|
|
58
|
+
const aggregate = { written: 0, deleted: 0, errors: [] };
|
|
59
|
+
if (pages.length === 0 && spaces.length === 0) {
|
|
60
|
+
return aggregate;
|
|
61
|
+
}
|
|
62
|
+
if (pages.length > 0) {
|
|
63
|
+
const pageResult = await emitPages(emitterClient, workspaceId, pages, input.connectionId);
|
|
64
|
+
accumulate(aggregate, pageResult);
|
|
65
|
+
}
|
|
66
|
+
if (spaces.length > 0) {
|
|
67
|
+
const spaceResult = await emitSpaces(emitterClient, workspaceId, spaces, input.connectionId);
|
|
68
|
+
accumulate(aggregate, spaceResult);
|
|
69
|
+
}
|
|
70
|
+
return aggregate;
|
|
71
|
+
}
|
|
72
|
+
// -- pages ------------------------------------------------------------------
|
|
73
|
+
async function emitPages(client, workspaceId, records, connectionId) {
|
|
74
|
+
const indexReconciler = new IndexFileReconciler({
|
|
75
|
+
client,
|
|
76
|
+
workspaceId,
|
|
77
|
+
path: confluencePagesIndexPath(),
|
|
78
|
+
builder: (rows) => ({
|
|
79
|
+
path: confluencePagesIndexPath(),
|
|
80
|
+
content: `${JSON.stringify([...rows].sort(comparePageIndexRows))}\n`,
|
|
81
|
+
contentType: JSON_CONTENT_TYPE,
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
84
|
+
const priorReader = new PriorAliasReader(client, workspaceId);
|
|
85
|
+
const fanOut = await runEmitBatch(client, workspaceId, records, async (record) => {
|
|
86
|
+
if (isDeleteRecord(record)) {
|
|
87
|
+
return planPageDelete(record.id, priorReader, indexReconciler);
|
|
88
|
+
}
|
|
89
|
+
return planPageWrite(record, priorReader, indexReconciler, connectionId);
|
|
90
|
+
});
|
|
91
|
+
// Index flush after every per-record plan: one read+write per batch, not
|
|
92
|
+
// per record. Cloud's current implementation does the same.
|
|
93
|
+
const indexResult = await indexReconciler.flush();
|
|
94
|
+
fanOut.written += indexResult.written;
|
|
95
|
+
fanOut.errors.push(...indexResult.errors);
|
|
96
|
+
return fanOut;
|
|
97
|
+
}
|
|
98
|
+
async function planPageWrite(page, priorReader, indexReconciler, connectionId) {
|
|
99
|
+
const id = readNonEmptyString(page.id);
|
|
100
|
+
if (!id) {
|
|
101
|
+
return {};
|
|
102
|
+
}
|
|
103
|
+
const title = readNonEmptyString(page.title);
|
|
104
|
+
const status = readNonEmptyString(page.status);
|
|
105
|
+
const spaceId = readNonEmptyString(page.spaceId);
|
|
106
|
+
const parentId = readNonEmptyString(page.parentId);
|
|
107
|
+
const content = renderPageContent(page, connectionId, false);
|
|
108
|
+
const newPaths = pagePathsFor({ id, title, status, spaceId, parentId });
|
|
109
|
+
// Reconciliation: read the prior by-id alias and compute paths that no
|
|
110
|
+
// longer apply. Anchored on by-id so it survives every other field change.
|
|
111
|
+
const prior = await priorReader.read(confluencePageByIdAliasPath(id), extractPriorPageState);
|
|
112
|
+
const stalePaths = prior ? diffPaths(pagePathsFor({ id, ...prior }), newPaths) : [];
|
|
113
|
+
const writes = newPaths.map((path) => ({
|
|
114
|
+
path,
|
|
115
|
+
content,
|
|
116
|
+
contentType: JSON_CONTENT_TYPE,
|
|
117
|
+
}));
|
|
118
|
+
const deletes = stalePaths.map((path) => ({ path }));
|
|
119
|
+
indexReconciler.upsert(confluencePageIndexRow(page));
|
|
120
|
+
return { writes, deletes };
|
|
121
|
+
}
|
|
122
|
+
async function planPageDelete(id, priorReader, indexReconciler) {
|
|
123
|
+
// For deletes we have no fresh payload, so we rely entirely on the prior
|
|
124
|
+
// by-id alias to recover the alias fields. If the prior alias is missing
|
|
125
|
+
// (degraded reader, or first-ever sync), we still delete the by-id alias
|
|
126
|
+
// unconditionally — that's the minimal cleanup.
|
|
127
|
+
const prior = await priorReader.read(confluencePageByIdAliasPath(id), extractPriorPageState);
|
|
128
|
+
const paths = pagePathsFor({ id, ...(prior ?? {}) });
|
|
129
|
+
// The index row must drop too — otherwise consumers reading
|
|
130
|
+
// `_index.json` see ghost entries for records whose canonical and alias
|
|
131
|
+
// files have already been removed. `IndexFileReconciler.remove` no-ops
|
|
132
|
+
// if the id isn't present, so this is safe even for "first-ever sync"
|
|
133
|
+
// deletes where no prior row existed.
|
|
134
|
+
indexReconciler.remove(id);
|
|
135
|
+
return { deletes: paths.map((path) => ({ path })) };
|
|
136
|
+
}
|
|
137
|
+
// -- spaces -----------------------------------------------------------------
|
|
138
|
+
async function emitSpaces(client, workspaceId, records, connectionId) {
|
|
139
|
+
const indexReconciler = new IndexFileReconciler({
|
|
140
|
+
client,
|
|
141
|
+
workspaceId,
|
|
142
|
+
path: confluenceSpacesIndexPath(),
|
|
143
|
+
builder: (rows) => ({
|
|
144
|
+
path: confluenceSpacesIndexPath(),
|
|
145
|
+
content: `${JSON.stringify([...rows].sort(compareSpaceIndexRows))}\n`,
|
|
146
|
+
contentType: JSON_CONTENT_TYPE,
|
|
147
|
+
}),
|
|
148
|
+
});
|
|
149
|
+
const priorReader = new PriorAliasReader(client, workspaceId);
|
|
150
|
+
const fanOut = await runEmitBatch(client, workspaceId, records, async (record) => {
|
|
151
|
+
if (isDeleteRecord(record)) {
|
|
152
|
+
return planSpaceDelete(record.id, priorReader, indexReconciler);
|
|
153
|
+
}
|
|
154
|
+
return planSpaceWrite(record, priorReader, indexReconciler, connectionId);
|
|
155
|
+
});
|
|
156
|
+
const indexResult = await indexReconciler.flush();
|
|
157
|
+
fanOut.written += indexResult.written;
|
|
158
|
+
fanOut.errors.push(...indexResult.errors);
|
|
159
|
+
return fanOut;
|
|
160
|
+
}
|
|
161
|
+
async function planSpaceWrite(space, priorReader, indexReconciler, connectionId) {
|
|
162
|
+
const id = readNonEmptyString(space.id);
|
|
163
|
+
if (!id) {
|
|
164
|
+
return {};
|
|
165
|
+
}
|
|
166
|
+
const name = readNonEmptyString(space.name) ?? readNonEmptyString(space.key);
|
|
167
|
+
const key = readNonEmptyString(space.key);
|
|
168
|
+
const content = renderSpaceContent(space, connectionId, false);
|
|
169
|
+
const newPaths = spacePathsFor({ id, name, key });
|
|
170
|
+
const prior = await priorReader.read(confluenceSpaceByIdAliasPath(id), extractPriorSpaceState);
|
|
171
|
+
const stalePaths = prior ? diffPaths(spacePathsFor({ id, ...prior }), newPaths) : [];
|
|
172
|
+
const writes = newPaths.map((path) => ({
|
|
173
|
+
path,
|
|
174
|
+
content,
|
|
175
|
+
contentType: JSON_CONTENT_TYPE,
|
|
176
|
+
}));
|
|
177
|
+
const deletes = stalePaths.map((path) => ({ path }));
|
|
178
|
+
indexReconciler.upsert(confluenceSpaceIndexRow(space));
|
|
179
|
+
return { writes, deletes };
|
|
180
|
+
}
|
|
181
|
+
async function planSpaceDelete(id, priorReader, indexReconciler) {
|
|
182
|
+
const prior = await priorReader.read(confluenceSpaceByIdAliasPath(id), extractPriorSpaceState);
|
|
183
|
+
const paths = spacePathsFor({ id, ...(prior ?? {}) });
|
|
184
|
+
// See `planPageDelete` — index row must drop alongside the files.
|
|
185
|
+
indexReconciler.remove(id);
|
|
186
|
+
return { deletes: paths.map((path) => ({ path })) };
|
|
187
|
+
}
|
|
188
|
+
function pagePathsFor(args) {
|
|
189
|
+
const { id, title, status, spaceId, parentId } = args;
|
|
190
|
+
const paths = [];
|
|
191
|
+
// Canonical path: title + spaceId derived.
|
|
192
|
+
paths.push(confluencePagePath(id, title, spaceId));
|
|
193
|
+
// by-id (stable reconciliation anchor)
|
|
194
|
+
paths.push(confluencePageByIdAliasPath(id));
|
|
195
|
+
if (title && slugifies(title)) {
|
|
196
|
+
paths.push(confluencePageByTitleAliasPath(title, id));
|
|
197
|
+
}
|
|
198
|
+
if (status) {
|
|
199
|
+
paths.push(confluencePageByStatePath(status, id));
|
|
200
|
+
}
|
|
201
|
+
if (spaceId) {
|
|
202
|
+
paths.push(confluencePageBySpaceAliasPath(spaceId, id));
|
|
203
|
+
}
|
|
204
|
+
if (parentId) {
|
|
205
|
+
paths.push(confluencePageByParentAliasPath(parentId, id));
|
|
206
|
+
}
|
|
207
|
+
return paths;
|
|
208
|
+
}
|
|
209
|
+
function spacePathsFor(args) {
|
|
210
|
+
const { id, name, key } = args;
|
|
211
|
+
const paths = [];
|
|
212
|
+
paths.push(confluenceSpacePath(id, name ?? key));
|
|
213
|
+
paths.push(confluenceSpaceByIdAliasPath(id));
|
|
214
|
+
if (name && slugifies(name)) {
|
|
215
|
+
paths.push(confluenceSpaceByTitleAliasPath(name, id));
|
|
216
|
+
}
|
|
217
|
+
if (key) {
|
|
218
|
+
paths.push(confluenceSpaceByKeyAliasPath(key));
|
|
219
|
+
}
|
|
220
|
+
return paths;
|
|
221
|
+
}
|
|
222
|
+
function diffPaths(prior, next) {
|
|
223
|
+
const nextSet = new Set(next);
|
|
224
|
+
const seen = new Set();
|
|
225
|
+
const stale = [];
|
|
226
|
+
for (const p of prior) {
|
|
227
|
+
if (!nextSet.has(p) && !seen.has(p)) {
|
|
228
|
+
seen.add(p);
|
|
229
|
+
stale.push(p);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return stale;
|
|
233
|
+
}
|
|
234
|
+
function extractPriorPageState(parsed) {
|
|
235
|
+
// The by-id alias wraps the page payload under `payload` (matches the
|
|
236
|
+
// shape `ConfluenceAdapter.renderContent` writes). Older mounts may have
|
|
237
|
+
// stored the payload at the root; we accept both for compatibility.
|
|
238
|
+
const payload = pickPayload(parsed);
|
|
239
|
+
if (!payload)
|
|
240
|
+
return null;
|
|
241
|
+
return {
|
|
242
|
+
title: readNonEmptyString(payload.title),
|
|
243
|
+
status: readNonEmptyString(payload.status),
|
|
244
|
+
spaceId: readNonEmptyString(payload.spaceId) ?? readNonEmptyString(payload.space_id),
|
|
245
|
+
parentId: readNonEmptyString(payload.parentId) ?? readNonEmptyString(payload.parent_id),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
function extractPriorSpaceState(parsed) {
|
|
249
|
+
const payload = pickPayload(parsed);
|
|
250
|
+
if (!payload)
|
|
251
|
+
return null;
|
|
252
|
+
return {
|
|
253
|
+
name: readNonEmptyString(payload.name) ?? readNonEmptyString(payload.title),
|
|
254
|
+
key: readNonEmptyString(payload.key),
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
function pickPayload(parsed) {
|
|
258
|
+
const wrapped = parsed.payload;
|
|
259
|
+
if (isRecord(wrapped)) {
|
|
260
|
+
return wrapped;
|
|
261
|
+
}
|
|
262
|
+
// Fall back to the parsed object itself (legacy by-id alias shape).
|
|
263
|
+
return parsed;
|
|
264
|
+
}
|
|
265
|
+
function renderPageContent(page, connectionId, deleted) {
|
|
266
|
+
return JSON.stringify({
|
|
267
|
+
provider: CONFLUENCE_PROVIDER_NAME,
|
|
268
|
+
objectType: 'page',
|
|
269
|
+
objectId: page.id,
|
|
270
|
+
deleted,
|
|
271
|
+
payload: page,
|
|
272
|
+
...(connectionId ? { connectionId } : {}),
|
|
273
|
+
}, null, 2);
|
|
274
|
+
}
|
|
275
|
+
function renderSpaceContent(space, connectionId, deleted) {
|
|
276
|
+
return JSON.stringify({
|
|
277
|
+
provider: CONFLUENCE_PROVIDER_NAME,
|
|
278
|
+
objectType: 'space',
|
|
279
|
+
objectId: space.id,
|
|
280
|
+
deleted,
|
|
281
|
+
payload: space,
|
|
282
|
+
...(connectionId ? { connectionId } : {}),
|
|
283
|
+
}, null, 2);
|
|
284
|
+
}
|
|
285
|
+
function comparePageIndexRows(left, right) {
|
|
286
|
+
if (left.updated !== right.updated) {
|
|
287
|
+
return right.updated.localeCompare(left.updated);
|
|
288
|
+
}
|
|
289
|
+
return left.id.localeCompare(right.id);
|
|
290
|
+
}
|
|
291
|
+
function compareSpaceIndexRows(left, right) {
|
|
292
|
+
if (left.updated !== right.updated) {
|
|
293
|
+
return right.updated.localeCompare(left.updated);
|
|
294
|
+
}
|
|
295
|
+
return left.id.localeCompare(right.id);
|
|
296
|
+
}
|
|
297
|
+
function isDeleteRecord(record) {
|
|
298
|
+
return (isRecord(record) &&
|
|
299
|
+
record._deleted === true &&
|
|
300
|
+
typeof record.id === 'string');
|
|
301
|
+
}
|
|
302
|
+
function readNonEmptyString(value) {
|
|
303
|
+
if (typeof value !== 'string')
|
|
304
|
+
return undefined;
|
|
305
|
+
const trimmed = value.trim();
|
|
306
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
307
|
+
}
|
|
308
|
+
function isRecord(value) {
|
|
309
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Skip by-title aliases for titles that slug to nothing (emoji-only /
|
|
313
|
+
* punctuation-only). The by-id alias still resolves those records.
|
|
314
|
+
*
|
|
315
|
+
* Delegates to the shared `slugifyAlias` per AGENTS.md "NEVER write a
|
|
316
|
+
* new slugifier" rule. `slugifyAlias` returns the literal string
|
|
317
|
+
* `'untitled'` as its empty-slug sentinel.
|
|
318
|
+
*/
|
|
319
|
+
function slugifies(value) {
|
|
320
|
+
return slugifyAlias(value) !== 'untitled';
|
|
321
|
+
}
|
|
322
|
+
function accumulate(aggregate, partial) {
|
|
323
|
+
aggregate.written += partial.written;
|
|
324
|
+
aggregate.deleted += partial.deleted;
|
|
325
|
+
if (partial.errors.length > 0) {
|
|
326
|
+
aggregate.errors.push(...partial.errors);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=emit-auxiliary-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-auxiliary-files.js","sourceRoot":"","sources":["../src/emit-auxiliary-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,gCAAgC,GAMjC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GAGxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,GAIzB,MAAM,YAAY,CAAC;AAiCpB,MAAM,iBAAiB,GAAG,gCAAgC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAoD,EACpD,KAAwC;IAExC,MAAM,aAAa,GAAG,MAAgC,CAAC;IACvD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAElC,MAAM,SAAS,GAA6B,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAEnF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1F,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7F,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAE9E,KAAK,UAAU,SAAS,CACtB,MAA8B,EAC9B,WAAmB,EACnB,OAA4C,EAC5C,YAAgC;IAEhC,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAyB;QACtE,MAAM;QACN,WAAW;QACX,IAAI,EAAE,wBAAwB,EAAE;QAChC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,IAAI,EAAE,wBAAwB,EAAE;YAChC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CACxB,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACrC,IAAI;YACL,WAAW,EAAE,iBAAiB;SAC/B,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC/E,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,yEAAyE;IACzE,4DAA4D;IAC5D,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;IAClD,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,IAAoB,EACpB,WAA6B,EAC7B,eAA4D,EAC5D,YAAgC;IAEhC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExE,uEAAuE;IACvE,2EAA2E;IAC3E,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAClC,2BAA2B,CAAC,EAAE,CAAC,EAC/B,qBAAqB,CACtB,CAAC;IACF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpF,MAAM,MAAM,GAAgB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI;QACJ,OAAO;QACP,WAAW,EAAE,iBAAiB;KAC/B,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,GAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnE,eAAe,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAErD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,EAAU,EACV,WAA6B,EAC7B,eAA4D;IAE5D,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,gDAAgD;IAChD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAClC,2BAA2B,CAAC,EAAE,CAAC,EAC/B,qBAAqB,CACtB,CAAC;IACF,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,4DAA4D;IAC5D,wEAAwE;IACxE,uEAAuE;IACvE,sEAAsE;IACtE,sCAAsC;IACtC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,8EAA8E;AAE9E,KAAK,UAAU,UAAU,CACvB,MAA8B,EAC9B,WAAmB,EACnB,OAA6C,EAC7C,YAAgC;IAEhC,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAA0B;QACvE,MAAM;QACN,WAAW;QACX,IAAI,EAAE,yBAAyB,EAAE;QACjC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClB,IAAI,EAAE,yBAAyB,EAAE;YACjC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CACxB,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CACtC,IAAI;YACL,WAAW,EAAE,iBAAiB;SAC/B,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC/E,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;IAClD,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,KAAsB,EACtB,WAA6B,EAC7B,eAA6D,EAC7D,YAAgC;IAEhC,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE1C,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAClC,4BAA4B,CAAC,EAAE,CAAC,EAChC,sBAAsB,CACvB,CAAC;IACF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErF,MAAM,MAAM,GAAgB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI;QACJ,OAAO;QACP,WAAW,EAAE,iBAAiB;KAC/B,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,GAAiB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnE,eAAe,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,EAAU,EACV,WAA6B,EAC7B,eAA6D;IAE7D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAClC,4BAA4B,CAAC,EAAE,CAAC,EAChC,sBAAsB,CACvB,CAAC;IACF,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,kEAAkE;IAClE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAgBD,SAAS,YAAY,CAAC,IAAqC;IACzD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,2CAA2C;IAC3C,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,uCAAuC;IACvC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAsC;IAC3D,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAwB,EAAE,IAAuB;IAClE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,MAA+B;IAC5D,sEAAsE;IACtE,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO;QACL,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,OAAO,EACL,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7E,QAAQ,EACN,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA+B;IAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO;QACL,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3E,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAA+B;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,oEAAoE;IACpE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAoB,EACpB,YAAgC,EAChC,OAAgB;IAEhB,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,QAAQ,EAAE,wBAAwB;QAClC,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,IAAI,CAAC,EAAE;QACjB,OAAO;QACP,OAAO,EAAE,IAAI;QACb,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAsB,EACtB,YAAgC,EAChC,OAAgB;IAEhB,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,QAAQ,EAAE,wBAAwB;QAClC,UAAU,EAAE,OAAO;QACnB,QAAQ,EAAE,KAAK,CAAC,EAAE;QAClB,OAAO;QACP,OAAO,EAAE,KAAK;QACd,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAA4B,EAAE,KAA6B;IACvF,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAA6B,EAAE,KAA8B;IAC1F,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,cAAc,CACrB,MAA4D;IAE5D,OAAO,CACL,QAAQ,CAAC,MAAM,CAAC;QACf,MAAiC,CAAC,QAAQ,KAAK,IAAI;QACpD,OAAQ,MAA2B,CAAC,EAAE,KAAK,QAAQ,CACpD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CACjB,SAAmC,EACnC,OAAiC;IAEjC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IACrC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export { CONFLUENCE_OBJECT_TYPES, CONFLUENCE_CANONICAL_PAGE_STATUSES, CONFLUENCE
|
|
|
4
4
|
export type { ConfluencePathObjectType, NameWithIdOptions, ParseNameWithIdResult, } from './path-mapper.js';
|
|
5
5
|
export { aliasCollisionSuffix, slugifyAlias, } from './alias-slug.js';
|
|
6
6
|
export { confluenceLayoutPromptFile, CONFLUENCE_LAYOUT_PROMPT, } from './layout-prompt.js';
|
|
7
|
+
export { emitConfluenceAuxiliaryFiles, } from './emit-auxiliary-files.js';
|
|
8
|
+
export type { ConfluenceEmitAuxiliaryFilesInput, ConfluencePageEmitRecord, ConfluenceSpaceEmitRecord, } from './emit-auxiliary-files.js';
|
|
7
9
|
export { buildConfluenceIndexFile, } from './index-emitter.js';
|
|
8
10
|
export type { ConfluenceIndexBucket, ConfluenceIndexFile, } from './index-emitter.js';
|
|
9
11
|
export { CONFLUENCE_API_SPACES_ROUTE, confluencePageIndexRow, confluenceSpaceIndexRow, getConfluencePageHumanReadable, getConfluenceSpaceHumanReadable, resolveConfluenceReadRequest, } from './queries.js';
|
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,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,UAAU,EACV,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,mCAAmC,EACnC,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,mCAAmC,EACnC,wBAAwB,EACxB,0CAA0C,EAC1C,0CAA0C,GAC3C,MAAM,yBAAyB,CAAC;AAEjC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,UAAU,EACV,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,iCAAiC,EACjC,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,mCAAmC,EACnC,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,mCAAmC,EACnC,wBAAwB,EACxB,0CAA0C,EAC1C,0CAA0C,GAC3C,MAAM,yBAAyB,CAAC;AAEjC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export { ConfluenceAdapter, } from './confluence-adapter.js';
|
|
|
2
2
|
export { CONFLUENCE_OBJECT_TYPES, CONFLUENCE_CANONICAL_PAGE_STATUSES, CONFLUENCE_PATH_ROOT, computeConfluencePath, confluenceByIdAliasPath, confluenceByTitleAliasPath, confluencePageByIdAliasPath, confluencePageByParentAliasPath, confluencePageBySpaceAliasPath, confluencePageByStatePath, confluencePageByTitleAliasPath, confluencePagePath, confluencePagesIndexPath, confluenceProviderRootIndexPath, confluenceSpaceByIdAliasPath, confluenceSpaceByKeyAliasPath, confluenceSpaceByTitleAliasPath, confluenceSpacePath, confluenceSpacesIndexPath, encodeConfluencePathSegment, extractConfluenceIdFromPathSegment, nameWithId, normalizeConfluenceObjectType, normalizeNangoConfluenceModel, parseNameWithId, slugifyStatusName, tryNormalizeConfluenceObjectType, } from './path-mapper.js';
|
|
3
3
|
export { aliasCollisionSuffix, slugifyAlias, } from './alias-slug.js';
|
|
4
4
|
export { confluenceLayoutPromptFile, CONFLUENCE_LAYOUT_PROMPT, } from './layout-prompt.js';
|
|
5
|
+
export { emitConfluenceAuxiliaryFiles, } from './emit-auxiliary-files.js';
|
|
5
6
|
export { buildConfluenceIndexFile, } from './index-emitter.js';
|
|
6
7
|
export { CONFLUENCE_API_SPACES_ROUTE, confluencePageIndexRow, confluenceSpaceIndexRow, getConfluencePageHumanReadable, getConfluenceSpaceHumanReadable, resolveConfluenceReadRequest, } from './queries.js';
|
|
7
8
|
export { CONFLUENCE_API_PAGES_ROUTE, } from './types.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AASjC,OAAO,EACL,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,UAAU,EACV,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAOtB,OAAO,EACL,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,mCAAmC,EACnC,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AAQjC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AASjC,OAAO,EACL,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,+BAA+B,EAC/B,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,UAAU,EACV,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACL,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAOtB,OAAO,EACL,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,iCAAiC,GAClC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qCAAqC,EACrC,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,mCAAmC,EACnC,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AAQjC,cAAc,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@relayfile/adapter-confluence",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Confluence adapter package for Relayfile",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"directory": "packages/confluence"
|
|
81
81
|
},
|
|
82
82
|
"dependencies": {
|
|
83
|
-
"@relayfile/adapter-core": "^0.2.
|
|
83
|
+
"@relayfile/adapter-core": "^0.2.15"
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
86
86
|
"@relayfile/sdk": ">=0.6.0 <1"
|