@relayfile/adapter-confluence 0.1.0 → 0.1.2

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 (66) hide show
  1. package/discovery/confluence/.adapter.md +4 -4
  2. package/dist/__tests__/alias-slug.test.d.ts +2 -0
  3. package/dist/__tests__/alias-slug.test.d.ts.map +1 -0
  4. package/dist/__tests__/alias-slug.test.js +19 -0
  5. package/dist/__tests__/alias-slug.test.js.map +1 -0
  6. package/dist/__tests__/confluence-adapter.test.js +263 -11
  7. package/dist/__tests__/confluence-adapter.test.js.map +1 -1
  8. package/dist/__tests__/index-emission.test.d.ts +2 -0
  9. package/dist/__tests__/index-emission.test.d.ts.map +1 -0
  10. package/dist/__tests__/index-emission.test.js +67 -0
  11. package/dist/__tests__/index-emission.test.js.map +1 -0
  12. package/dist/__tests__/layout-prompt.test.d.ts +2 -0
  13. package/dist/__tests__/layout-prompt.test.d.ts.map +1 -0
  14. package/dist/__tests__/layout-prompt.test.js +23 -0
  15. package/dist/__tests__/layout-prompt.test.js.map +1 -0
  16. package/dist/__tests__/path-mapper.test.d.ts +2 -0
  17. package/dist/__tests__/path-mapper.test.d.ts.map +1 -0
  18. package/dist/__tests__/path-mapper.test.js +106 -0
  19. package/dist/__tests__/path-mapper.test.js.map +1 -0
  20. package/dist/__tests__/webhook-normalizer.test.d.ts +2 -0
  21. package/dist/__tests__/webhook-normalizer.test.d.ts.map +1 -0
  22. package/dist/__tests__/webhook-normalizer.test.js +106 -0
  23. package/dist/__tests__/webhook-normalizer.test.js.map +1 -0
  24. package/dist/alias-slug.d.ts +9 -0
  25. package/dist/alias-slug.d.ts.map +1 -0
  26. package/dist/alias-slug.js +23 -0
  27. package/dist/alias-slug.js.map +1 -0
  28. package/dist/confluence-adapter.d.ts +37 -0
  29. package/dist/confluence-adapter.d.ts.map +1 -1
  30. package/dist/confluence-adapter.js +245 -24
  31. package/dist/confluence-adapter.js.map +1 -1
  32. package/dist/index-emitter.d.ts +10 -0
  33. package/dist/index-emitter.d.ts.map +1 -0
  34. package/dist/index-emitter.js +26 -0
  35. package/dist/index-emitter.js.map +1 -0
  36. package/dist/index.d.ts +12 -3
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +8 -3
  39. package/dist/index.js.map +1 -1
  40. package/dist/layout-prompt.d.ts +7 -0
  41. package/dist/layout-prompt.d.ts.map +1 -0
  42. package/dist/layout-prompt.js +75 -0
  43. package/dist/layout-prompt.js.map +1 -0
  44. package/dist/path-mapper.d.ts +65 -2
  45. package/dist/path-mapper.d.ts.map +1 -1
  46. package/dist/path-mapper.js +186 -10
  47. package/dist/path-mapper.js.map +1 -1
  48. package/dist/queries.d.ts +22 -2
  49. package/dist/queries.d.ts.map +1 -1
  50. package/dist/queries.js +43 -2
  51. package/dist/queries.js.map +1 -1
  52. package/dist/resources.js +2 -2
  53. package/dist/resources.js.map +1 -1
  54. package/dist/types.d.ts +9 -0
  55. package/dist/types.d.ts.map +1 -1
  56. package/dist/types.js +1 -0
  57. package/dist/types.js.map +1 -1
  58. package/dist/webhook-normalizer.d.ts +59 -0
  59. package/dist/webhook-normalizer.d.ts.map +1 -0
  60. package/dist/webhook-normalizer.js +469 -0
  61. package/dist/webhook-normalizer.js.map +1 -0
  62. package/dist/writeback.d.ts +1 -2
  63. package/dist/writeback.d.ts.map +1 -1
  64. package/dist/writeback.js +1 -1
  65. package/dist/writeback.js.map +1 -1
  66. package/package.json +22 -2
@@ -1 +1 @@
1
- {"version":3,"file":"path-mapper.d.ts","sourceRoot":"","sources":["../src/path-mapper.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,4BAA6B,CAAC;AAClE,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAmBhF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAeD,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,wBAAwB,CAO1F;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3F;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,MAAM,CAUR;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1E"}
1
+ {"version":3,"file":"path-mapper.d.ts","sourceRoot":"","sources":["../src/path-mapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,eAAO,MAAM,uBAAuB,4BAA6B,CAAC;AAClE,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,sDAAuD,CAAC;AAiCvG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAuBD,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAa9G;AAID,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAmBvE;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,wBAAwB,CAO1F;AAED,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAMzG;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAIrF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA2BxD;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAEzG;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,iBAAiB,GACvB,MAAM,CAMR;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,MAAM,CAO9G;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,MAAM,CAEnG;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,MAAM,CAEpG;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,MAAM,CAUR;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ1E"}
@@ -1,5 +1,16 @@
1
+ import { aliasCollisionSuffix, slugifyAlias } from './alias-slug.js';
1
2
  import { CONFLUENCE_PATH_ROOT } from './types.js';
3
+ export { CONFLUENCE_PATH_ROOT };
2
4
  export const CONFLUENCE_OBJECT_TYPES = ['page', 'space'];
5
+ /**
6
+ * Confluence-canonical page statuses, used for the by-state alias scope. The
7
+ * Confluence REST v2 schema (see `discovery/confluence/pages/.schema.json`)
8
+ * pins this to `current | draft`, but real payloads also surface `archived`
9
+ * and `trashed`. We accept any non-empty string and emit it lowercased; the
10
+ * canonical-status list below is informational for downstream readers.
11
+ */
12
+ export const CONFLUENCE_CANONICAL_PAGE_STATUSES = ['current', 'draft', 'archived', 'trashed'];
13
+ const MAX_HUMAN_READABLE_LENGTH = 80;
3
14
  const OBJECT_TYPE_ALIASES = {
4
15
  confluencepage: 'page',
5
16
  confluencespace: 'space',
@@ -8,6 +19,17 @@ const OBJECT_TYPE_ALIASES = {
8
19
  space: 'space',
9
20
  spaces: 'space',
10
21
  };
22
+ /**
23
+ * Nango sync record `model` names → canonical Confluence object types. The
24
+ * `confluence-relay` Nango integration emits records under these PascalCase
25
+ * model names; resolving them here lets the cloud's record writer turn a
26
+ * Nango payload into a relayfile path without hardcoding the mapping at the
27
+ * dispatch site.
28
+ */
29
+ const NANGO_MODEL_MAP = {
30
+ ConfluencePage: 'page',
31
+ ConfluenceSpace: 'space',
32
+ };
11
33
  function assertNonEmptySegment(value, label) {
12
34
  const trimmed = value.trim();
13
35
  if (!trimmed) {
@@ -19,15 +41,55 @@ export function encodeConfluencePathSegment(value) {
19
41
  return encodeURIComponent(assertNonEmptySegment(value, 'path segment'));
20
42
  }
21
43
  function slugify(value) {
22
- return value
44
+ const ascii = value
45
+ .normalize('NFKD')
46
+ .replace(/[\u0300-\u036f]/g, '')
47
+ .replace(/[^\x00-\x7F]+/g, '');
48
+ const slug = ascii
23
49
  .replace(/[{}]/g, '')
24
50
  .replace(/[^a-zA-Z0-9]+/g, '-')
25
51
  .replace(/^-+|-+$/g, '')
26
52
  .toLowerCase();
53
+ if (slug.length <= MAX_HUMAN_READABLE_LENGTH) {
54
+ return slug;
55
+ }
56
+ const truncated = slug.slice(0, MAX_HUMAN_READABLE_LENGTH);
57
+ const cutIndex = truncated.lastIndexOf('-');
58
+ const bounded = cutIndex > 0 ? truncated.slice(0, cutIndex) : truncated;
59
+ return bounded.replace(/^-+|-+$/g, '');
27
60
  }
28
- function titleSegmentWithId(title, id) {
29
- const slug = title ? slugify(title) : '';
30
- return slug ? `${slug}--${encodeConfluencePathSegment(id)}` : encodeConfluencePathSegment(id);
61
+ export function nameWithId(humanReadable, id, opts = {}) {
62
+ const normalizedId = encodeConfluencePathSegment(id);
63
+ const slug = humanReadable ? slugify(humanReadable) : '';
64
+ if (!slug) {
65
+ return normalizedId;
66
+ }
67
+ const existingNames = opts.existingNames;
68
+ const baseName = existingNames?.has(slug)
69
+ ? `${slug}-${aliasCollisionSuffix(normalizedId)}`
70
+ : slug;
71
+ existingNames?.add(baseName);
72
+ return `${baseName}__${normalizedId}`;
73
+ }
74
+ // For Confluence `<humanReadable>__<id>` segments, `humanReadable` is the
75
+ // leading prefix and `id` is the trailing identifier.
76
+ export function parseNameWithId(filename) {
77
+ const extIndex = filename.lastIndexOf('.');
78
+ const ext = extIndex > 0 && extIndex < filename.length - 1 ? filename.slice(extIndex + 1) : null;
79
+ const basename = ext ? filename.slice(0, extIndex) : filename;
80
+ const separatorIndex = basename.lastIndexOf('__');
81
+ if (separatorIndex <= 0 || separatorIndex === basename.length - 2) {
82
+ return {
83
+ humanReadable: null,
84
+ id: basename,
85
+ ext,
86
+ };
87
+ }
88
+ return {
89
+ humanReadable: basename.slice(0, separatorIndex),
90
+ id: basename.slice(separatorIndex + 2),
91
+ ext,
92
+ };
31
93
  }
32
94
  export function normalizeConfluenceObjectType(objectType) {
33
95
  const normalized = objectType.trim().toLowerCase();
@@ -37,16 +99,121 @@ export function normalizeConfluenceObjectType(objectType) {
37
99
  }
38
100
  return mapped;
39
101
  }
40
- export function confluenceSpacePath(spaceIdOrKey, name) {
41
- return `${CONFLUENCE_PATH_ROOT}/spaces/${titleSegmentWithId(name, spaceIdOrKey)}.json`;
102
+ export function tryNormalizeConfluenceObjectType(objectType) {
103
+ try {
104
+ return normalizeConfluenceObjectType(objectType);
105
+ }
106
+ catch {
107
+ return undefined;
108
+ }
42
109
  }
43
- export function confluencePagePath(pageId, title, spaceId) {
44
- const pageSegment = titleSegmentWithId(title, pageId);
110
+ export function normalizeNangoConfluenceModel(model) {
111
+ const direct = NANGO_MODEL_MAP[model];
112
+ if (direct)
113
+ return direct;
114
+ return normalizeConfluenceObjectType(model);
115
+ }
116
+ export function slugifyStatusName(status) {
117
+ const trimmed = assertNonEmptySegment(status, 'status name');
118
+ let slug = '';
119
+ let previousWasSeparator = false;
120
+ for (const character of trimmed.normalize('NFC').toLowerCase()) {
121
+ if (/\s/u.test(character)) {
122
+ if (!previousWasSeparator && slug.length > 0) {
123
+ slug += '-';
124
+ }
125
+ previousWasSeparator = true;
126
+ continue;
127
+ }
128
+ previousWasSeparator = false;
129
+ if (/[a-z0-9]/u.test(character)) {
130
+ slug += character;
131
+ continue;
132
+ }
133
+ if (character === '-') {
134
+ slug += '%2D';
135
+ continue;
136
+ }
137
+ slug += encodeURIComponent(character);
138
+ }
139
+ return assertNonEmptySegment(slug, 'status slug');
140
+ }
141
+ export function confluenceSpacePath(spaceIdOrKey, name, opts) {
142
+ return `${CONFLUENCE_PATH_ROOT}/spaces/${nameWithId(name, spaceIdOrKey, opts)}.json`;
143
+ }
144
+ export function confluencePagePath(pageId, title, spaceId, opts) {
145
+ const pageSegment = nameWithId(title, pageId, opts);
45
146
  if (spaceId) {
46
147
  return `${CONFLUENCE_PATH_ROOT}/spaces/${encodeConfluencePathSegment(spaceId)}/pages/${pageSegment}.json`;
47
148
  }
48
149
  return `${CONFLUENCE_PATH_ROOT}/pages/${pageSegment}.json`;
49
150
  }
151
+ export function confluencePagesIndexPath() {
152
+ return `${CONFLUENCE_PATH_ROOT}/pages/_index.json`;
153
+ }
154
+ export function confluenceSpacesIndexPath() {
155
+ return `${CONFLUENCE_PATH_ROOT}/spaces/_index.json`;
156
+ }
157
+ export function confluenceProviderRootIndexPath() {
158
+ return `${CONFLUENCE_PATH_ROOT}/_index.json`;
159
+ }
160
+ export function confluencePageByStatePath(status, pageId) {
161
+ return `${CONFLUENCE_PATH_ROOT}/pages/by-state/${slugifyStatusName(status)}/${encodeConfluencePathSegment(pageId)}.json`;
162
+ }
163
+ export function confluenceByTitleAliasPath(scope, title, id, colliding = false) {
164
+ const slug = slugifyAlias(title);
165
+ if (!slug) {
166
+ throw new Error('Confluence alias title must slug to a non-empty string');
167
+ }
168
+ const filename = colliding ? `${slug}-${aliasCollisionSuffix(id)}` : slug;
169
+ return `${scope}/by-title/${encodeConfluencePathSegment(filename)}.json`;
170
+ }
171
+ export function confluenceByIdAliasPath(scope, identifier) {
172
+ return `${scope}/by-id/${encodeConfluencePathSegment(identifier)}.json`;
173
+ }
174
+ export function confluencePageByIdAliasPath(id) {
175
+ return confluenceByIdAliasPath(`${CONFLUENCE_PATH_ROOT}/pages`, id);
176
+ }
177
+ export function confluencePageByTitleAliasPath(title, id, colliding = false) {
178
+ return confluenceByTitleAliasPath(`${CONFLUENCE_PATH_ROOT}/pages`, title, id, colliding);
179
+ }
180
+ export function confluenceSpaceByIdAliasPath(id) {
181
+ return confluenceByIdAliasPath(`${CONFLUENCE_PATH_ROOT}/spaces`, id);
182
+ }
183
+ export function confluenceSpaceByTitleAliasPath(title, id, colliding = false) {
184
+ return confluenceByTitleAliasPath(`${CONFLUENCE_PATH_ROOT}/spaces`, title, id, colliding);
185
+ }
186
+ /**
187
+ * `by-key/<KEY>.json` resolves a space by its globally-unique Confluence
188
+ * space key (e.g. `ENG`). The v2 `GET /spaces` endpoint accepts `keys=` as a
189
+ * filter so the key is a stable, human-meaningful identifier that agents
190
+ * actually paste — much more useful than the numeric id for spaces. Keys are
191
+ * preserved verbatim (case + punctuation) because Confluence treats them as
192
+ * opaque strings; we only percent-encode for path safety.
193
+ */
194
+ export function confluenceSpaceByKeyAliasPath(spaceKey) {
195
+ return `${CONFLUENCE_PATH_ROOT}/spaces/by-key/${encodeConfluencePathSegment(spaceKey)}.json`;
196
+ }
197
+ /**
198
+ * `by-parent/<parentId>/<pageId>.json` mirrors `by-state` but pivots on the
199
+ * page's parent — the most natural Confluence navigation primitive after the
200
+ * space tree. Pages without a parentId (top-level pages directly under a
201
+ * space's homepage) are not emitted here; consumers should use the canonical
202
+ * space-scoped path instead.
203
+ */
204
+ export function confluencePageByParentAliasPath(parentId, pageId) {
205
+ return `${CONFLUENCE_PATH_ROOT}/pages/by-parent/${encodeConfluencePathSegment(parentId)}/${encodeConfluencePathSegment(pageId)}.json`;
206
+ }
207
+ /**
208
+ * `by-space/<spaceId>/<pageId>.json` — flat alias keyed only on the space id
209
+ * so an agent can iterate every page in a space without resolving titles.
210
+ * The space-scoped canonical path `/confluence/spaces/<spaceId>/pages/<slug>__<id>.json`
211
+ * is still the human-friendly entry point; this alias is the deterministic
212
+ * lookup variant readers reach for with `ls`.
213
+ */
214
+ export function confluencePageBySpaceAliasPath(spaceId, pageId) {
215
+ return `${CONFLUENCE_PATH_ROOT}/pages/by-space/${encodeConfluencePathSegment(spaceId)}/${encodeConfluencePathSegment(pageId)}.json`;
216
+ }
50
217
  export function computeConfluencePath(objectType, objectId, options = {}) {
51
218
  const normalizedType = normalizeConfluenceObjectType(objectType);
52
219
  const normalizedId = assertNonEmptySegment(objectId, 'object id');
@@ -57,9 +224,18 @@ export function computeConfluencePath(objectType, objectId, options = {}) {
57
224
  return confluenceSpacePath(normalizedId, options.title);
58
225
  }
59
226
  }
227
+ /**
228
+ * Decode a Confluence path segment back to its raw identifier. Supports both
229
+ * the v2 `<slug>__<id>` convention (post-PR) and the legacy `<slug>--<id>`
230
+ * convention so existing mounts written before the cutover keep resolving.
231
+ */
60
232
  export function extractConfluenceIdFromPathSegment(segment) {
61
233
  const decoded = decodeURIComponent(segment);
62
- const suffix = /--([^/]+)$/u.exec(decoded);
63
- return suffix?.[1] ? suffix[1] : decoded;
234
+ const v2Match = /__([^/]+)$/u.exec(decoded);
235
+ if (v2Match?.[1]) {
236
+ return v2Match[1];
237
+ }
238
+ const legacyMatch = /--([^/]+)$/u.exec(decoded);
239
+ return legacyMatch?.[1] ? legacyMatch[1] : decoded;
64
240
  }
65
241
  //# sourceMappingURL=path-mapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-mapper.js","sourceRoot":"","sources":["../src/path-mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path-mapper.js","sourceRoot":"","sources":["../src/path-mapper.ts"],"names":[],"mappings":"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"}
package/dist/queries.d.ts CHANGED
@@ -1,5 +1,25 @@
1
- import { type ConfluenceReadRequest } from './types.js';
2
- export declare const CONFLUENCE_API_PAGES_ROUTE = "/wiki/api/v2/pages";
1
+ import { type ConfluencePage, type ConfluenceSpace, type ConfluenceReadRequest } from './types.js';
3
2
  export declare const CONFLUENCE_API_SPACES_ROUTE = "/wiki/api/v2/spaces";
3
+ export interface ConfluenceBaseIndexRow {
4
+ id: string;
5
+ title: string;
6
+ updated: string;
7
+ }
8
+ export interface ConfluencePageIndexRow extends ConfluenceBaseIndexRow {
9
+ spaceId: string;
10
+ status: string;
11
+ }
12
+ export interface ConfluenceSpaceIndexRow extends ConfluenceBaseIndexRow {
13
+ key: string;
14
+ }
15
+ export declare function getConfluencePageHumanReadable(page: {
16
+ title?: string | null;
17
+ }): string | undefined;
18
+ export declare function getConfluenceSpaceHumanReadable(space: {
19
+ name?: string | null;
20
+ key?: string | null;
21
+ }): string | undefined;
22
+ export declare function confluencePageIndexRow(page: ConfluencePage): ConfluencePageIndexRow;
23
+ export declare function confluenceSpaceIndexRow(space: ConfluenceSpace): ConfluenceSpaceIndexRow;
4
24
  export declare function resolveConfluenceReadRequest(path: string): ConfluenceReadRequest;
5
25
  //# sourceMappingURL=queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEtF,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AAEjE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CA0DhF"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AACA,OAAO,EAA4D,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE7J,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AAEjE,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,GAAG,EAAE,MAAM,CAAC;CACb;AAsBD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CAElG;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CAExH;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,sBAAsB,CAQnF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,uBAAuB,CAOvF;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CA0DhF"}
package/dist/queries.js CHANGED
@@ -1,7 +1,48 @@
1
1
  import { extractConfluenceIdFromPathSegment } from './path-mapper.js';
2
- import { CONFLUENCE_DEFAULT_PAGE_SIZE } from './types.js';
3
- export const CONFLUENCE_API_PAGES_ROUTE = '/wiki/api/v2/pages';
2
+ import { CONFLUENCE_API_PAGES_ROUTE, CONFLUENCE_DEFAULT_PAGE_SIZE } from './types.js';
4
3
  export const CONFLUENCE_API_SPACES_ROUTE = '/wiki/api/v2/spaces';
4
+ function normalizeString(value) {
5
+ if (typeof value !== 'string')
6
+ return undefined;
7
+ const trimmed = value.trim();
8
+ return trimmed.length > 0 ? trimmed : undefined;
9
+ }
10
+ function normalizeIndexTitle(value) {
11
+ return typeof value === 'string' ? value : '';
12
+ }
13
+ function normalizeUpdated(...values) {
14
+ for (const value of values) {
15
+ if (typeof value === 'string') {
16
+ const trimmed = value.trim();
17
+ if (trimmed.length > 0)
18
+ return trimmed;
19
+ }
20
+ }
21
+ return '';
22
+ }
23
+ export function getConfluencePageHumanReadable(page) {
24
+ return normalizeString(page.title ?? undefined);
25
+ }
26
+ export function getConfluenceSpaceHumanReadable(space) {
27
+ return normalizeString(space.name ?? undefined) ?? normalizeString(space.key ?? undefined);
28
+ }
29
+ export function confluencePageIndexRow(page) {
30
+ return {
31
+ id: page.id,
32
+ title: normalizeIndexTitle(page.title),
33
+ updated: normalizeUpdated(page.version?.createdAt, page.createdAt),
34
+ spaceId: normalizeIndexTitle(page.spaceId),
35
+ status: normalizeIndexTitle(page.status),
36
+ };
37
+ }
38
+ export function confluenceSpaceIndexRow(space) {
39
+ return {
40
+ id: space.id,
41
+ title: normalizeIndexTitle(space.name) || normalizeIndexTitle(space.key),
42
+ updated: normalizeUpdated(space.createdAt),
43
+ key: normalizeIndexTitle(space.key),
44
+ };
45
+ }
5
46
  export function resolveConfluenceReadRequest(path) {
6
47
  const normalized = normalizePath(path);
7
48
  if (normalized === '/confluence/pages' || normalized === '/confluence/pages/') {
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"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"}
package/dist/resources.js CHANGED
@@ -3,7 +3,7 @@ export const resources = [
3
3
  name: "pages",
4
4
  path: "/confluence/pages",
5
5
  pathPattern: /^\/confluence\/pages(?:\/[^\/]+(?:\.json)?)?$/,
6
- idPattern: /^(?:[A-Za-z0-9_.~-]+--)?\d+$/,
6
+ idPattern: /^(?:[A-Za-z0-9_.~-]+(?:--|__))?\d+$/,
7
7
  schema: "discovery/confluence/pages/.schema.json",
8
8
  createExample: "discovery/confluence/pages/.create.example.json",
9
9
  },
@@ -11,7 +11,7 @@ export const resources = [
11
11
  name: "pages",
12
12
  path: "/confluence/spaces/{spaceIdOrKey}/pages",
13
13
  pathPattern: /^\/confluence\/spaces\/[^\/]+\/pages(?:\/[^\/]+(?:\.json)?)?$/,
14
- idPattern: /^(?:[A-Za-z0-9_.~-]+--)?\d+$/,
14
+ idPattern: /^(?:[A-Za-z0-9_.~-]+(?:--|__))?\d+$/,
15
15
  schema: "discovery/confluence/spaces/{spaceIdOrKey}/pages/.schema.json",
16
16
  createExample: "discovery/confluence/spaces/{spaceIdOrKey}/pages/.create.example.json",
17
17
  },
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,+CAA+C;QAC5D,SAAS,EAAE,8BAA8B;QACzC,MAAM,EAAE,yCAAyC;QACjD,aAAa,EAAE,iDAAiD;KACjE;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,yCAAyC;QAC/C,WAAW,EAAE,+DAA+D;QAC5E,SAAS,EAAE,8BAA8B;QACzC,MAAM,EAAE,+DAA+D;QACvE,aAAa,EAAE,uEAAuE;KACvF;CACkD,CAAC;AAEtD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/E,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,+CAA+C;QAC5D,SAAS,EAAE,qCAAqC;QAChD,MAAM,EAAE,yCAAyC;QACjD,aAAa,EAAE,iDAAiD;KACjE;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,yCAAyC;QAC/C,WAAW,EAAE,+DAA+D;QAC5E,SAAS,EAAE,qCAAqC;QAChD,MAAM,EAAE,+DAA+D;QACvE,aAAa,EAAE,uEAAuE;KACvF;CACkD,CAAC;AAEtD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/E,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACjF,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export type { BulkWriteFile, ConnectionProvider, ProxyRequest, ProxyResponse } from '@relayfile/sdk';
2
2
  export declare const CONFLUENCE_PROVIDER_NAME = "confluence";
3
3
  export declare const CONFLUENCE_PATH_ROOT = "/confluence";
4
+ export declare const CONFLUENCE_API_PAGES_ROUTE = "/wiki/api/v2/pages";
4
5
  export declare const CONFLUENCE_DEFAULT_PAGE_SIZE = 100;
5
6
  export type JsonPrimitive = boolean | number | null | string;
6
7
  export type JsonValue = JsonArray | JsonObject | JsonPrimitive;
@@ -93,9 +94,17 @@ export interface DeleteFileInput {
93
94
  workspaceId: string;
94
95
  path: string;
95
96
  }
97
+ export interface ReadFileInput {
98
+ workspaceId: string;
99
+ path: string;
100
+ }
101
+ export interface ReadFileResult {
102
+ content: string;
103
+ }
96
104
  export interface RelayFileClientLike {
97
105
  writeFile(input: WriteFileInput): Promise<WriteFileResult | void>;
98
106
  deleteFile?(input: DeleteFileInput): Promise<void> | void;
107
+ readFile?(input: ReadFileInput): Promise<ReadFileResult | null | undefined>;
99
108
  }
100
109
  export interface ConfluenceNormalizedEvent {
101
110
  provider: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export const CONFLUENCE_PROVIDER_NAME = 'confluence';
2
2
  export const CONFLUENCE_PATH_ROOT = '/confluence';
3
+ export const CONFLUENCE_API_PAGES_ROUTE = '/wiki/api/v2/pages';
3
4
  export const CONFLUENCE_DEFAULT_PAGE_SIZE = 100;
4
5
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAC;AAC/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { type ConfluenceNormalizedEvent } from './types.js';
2
+ export declare const CONFLUENCE_PROVIDER = "confluence";
3
+ export declare const CONFLUENCE_SIGNATURE_HEADER = "x-atlassian-webhook-identifier";
4
+ export declare const CONFLUENCE_EVENT_HEADER = "x-atlassian-webhook-event";
5
+ export declare const CONFLUENCE_DELIVERY_HEADER = "x-atlassian-webhook-delivery";
6
+ type ConfluenceRecord = Record<string, unknown>;
7
+ type HeaderValue = boolean | number | readonly string[] | string | null | undefined;
8
+ export type ConfluenceWebhookHeaders = Headers | Iterable<readonly [string, string]> | Record<string, HeaderValue>;
9
+ export interface ConfluenceWebhookConnectionMetadata {
10
+ connectionId?: string;
11
+ deliveryId?: string;
12
+ provider: string;
13
+ providerConfigKey?: string;
14
+ requestId?: string;
15
+ signature?: string;
16
+ webhookId?: string;
17
+ webhookTimestamp?: number;
18
+ }
19
+ export interface ConfluenceWebhookSignatureValidationResult {
20
+ expectedSignature?: string;
21
+ ok: boolean;
22
+ reason?: 'invalid-signature' | 'malformed-signature' | 'missing-secret' | 'missing-signature';
23
+ receivedSignature?: string;
24
+ }
25
+ export interface ConfluenceWebhookTimestampValidationResult {
26
+ driftMs?: number;
27
+ ok: boolean;
28
+ reason?: 'missing-timestamp' | 'stale-timestamp';
29
+ webhookTimestamp?: number;
30
+ }
31
+ /**
32
+ * Normalize a Confluence webhook payload into the adapter's
33
+ * `ConfluenceNormalizedEvent` shape. The Atlassian webhook contract varies
34
+ * between Cloud Connect apps and Forge webhooks; this normalizer pulls
35
+ * `webhookEvent` or `eventType` from the envelope and resolves the underlying
36
+ * object id from `page.id` / `space.id` / `content.id`. Callers in the cloud
37
+ * webhook router should pass headers; everything else falls back to safe
38
+ * defaults so the normalizer never crashes on partial payloads.
39
+ *
40
+ * NOTE: HMAC signing semantics for Confluence Connect/Forge webhooks are
41
+ * complex (JWT-based for Connect; signed query secret for Forge) and the
42
+ * upstream cloud handler does not validate signatures today. The
43
+ * `validateConfluenceWebhookSignature` helper below implements the same
44
+ * `sha256` HMAC contract Linear uses so it can be wired up symmetrically
45
+ * once Confluence-side signing is enabled — until then the cloud-side
46
+ * handler should skip signature validation.
47
+ */
48
+ export declare function normalizeConfluenceWebhook(rawPayload: unknown, headers?: ConfluenceWebhookHeaders): ConfluenceNormalizedEvent;
49
+ export declare function parseConfluenceWebhookPayload(rawPayload: unknown): ConfluenceRecord;
50
+ export declare function extractConfluenceEventType(payload: unknown, headers?: ConfluenceWebhookHeaders): string;
51
+ export declare function extractConfluenceObjectType(payload: unknown, headers?: ConfluenceWebhookHeaders, resolvedEventType?: string): string;
52
+ export declare function extractConfluenceObjectId(payload: unknown, objectType?: string): string;
53
+ export declare function extractConfluenceConnectionMetadata(payload: unknown, headers?: ConfluenceWebhookHeaders): ConfluenceWebhookConnectionMetadata;
54
+ export declare function computeConfluenceWebhookSignature(rawPayload: unknown, secret: string): string;
55
+ export declare function validateConfluenceWebhookSignature(rawPayload: unknown, headers: ConfluenceWebhookHeaders, secret: string): ConfluenceWebhookSignatureValidationResult;
56
+ export declare function assertValidConfluenceWebhookSignature(rawPayload: unknown, headers: ConfluenceWebhookHeaders, secret: string): void;
57
+ export declare function validateConfluenceWebhookTimestamp(payload: unknown, toleranceMs?: number, now?: number): ConfluenceWebhookTimestampValidationResult;
58
+ export {};
59
+ //# sourceMappingURL=webhook-normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-normalizer.d.ts","sourceRoot":"","sources":["../src/webhook-normalizer.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEtF,eAAO,MAAM,mBAAmB,eAA2B,CAAC;AAC5D,eAAO,MAAM,2BAA2B,mCAAmC,CAAC;AAC5E,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AA8DzE,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,KAAK,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEpF,MAAM,MAAM,wBAAwB,GAChC,OAAO,GACP,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEhC,MAAM,WAAW,mCAAmC;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0CAA0C;IACzD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,0CAA0C;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,mBAAmB,GAAG,iBAAiB,CAAC;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,wBAA6B,GACrC,yBAAyB,CAqD3B;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,CAMnF;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAmCR;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,wBAA6B,EACtC,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAuBR;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAevF;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,wBAA6B,GACrC,mCAAmC,CAyErC;AAED,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ7F;AAED,wBAAgB,kCAAkC,CAChD,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,MAAM,GACb,0CAA0C,CAgC5C;AAED,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,MAAM,GACb,IAAI,CAON;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,OAAO,EAChB,WAAW,SAAS,EACpB,GAAG,SAAa,GACf,0CAA0C,CAqB5C"}