@ticketpm/core 0.0.4

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 (48) hide show
  1. package/LICENSE +372 -0
  2. package/README.md +364 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/canonical.d.ts +26 -0
  5. package/dist/canonical.d.ts.map +1 -0
  6. package/dist/canonical.js +51 -0
  7. package/dist/canonical.js.map +1 -0
  8. package/dist/compact.d.ts +24 -0
  9. package/dist/compact.d.ts.map +1 -0
  10. package/dist/compact.js +164 -0
  11. package/dist/compact.js.map +1 -0
  12. package/dist/constants.d.ts +11 -0
  13. package/dist/constants.d.ts.map +1 -0
  14. package/dist/constants.js +11 -0
  15. package/dist/constants.js.map +1 -0
  16. package/dist/identity.d.ts +24 -0
  17. package/dist/identity.d.ts.map +1 -0
  18. package/dist/identity.js +35 -0
  19. package/dist/identity.js.map +1 -0
  20. package/dist/index.d.ts +10 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +10 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/media-proxy.d.ts +100 -0
  25. package/dist/media-proxy.d.ts.map +1 -0
  26. package/dist/media-proxy.js +318 -0
  27. package/dist/media-proxy.js.map +1 -0
  28. package/dist/runtime.d.ts +12 -0
  29. package/dist/runtime.d.ts.map +1 -0
  30. package/dist/runtime.js +48 -0
  31. package/dist/runtime.js.map +1 -0
  32. package/dist/types.d.ts +509 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/types.js +94 -0
  35. package/dist/types.js.map +1 -0
  36. package/dist/upload-client.d.ts +99 -0
  37. package/dist/upload-client.d.ts.map +1 -0
  38. package/dist/upload-client.js +115 -0
  39. package/dist/upload-client.js.map +1 -0
  40. package/dist/utils.d.ts +7 -0
  41. package/dist/utils.d.ts.map +1 -0
  42. package/dist/utils.js +35 -0
  43. package/dist/utils.js.map +1 -0
  44. package/dist/validation.d.ts +34 -0
  45. package/dist/validation.d.ts.map +1 -0
  46. package/dist/validation.js +425 -0
  47. package/dist/validation.js.map +1 -0
  48. package/package.json +32 -0
@@ -0,0 +1,425 @@
1
+ import { MAX_TRANSCRIPT_CHANNEL_NAME_CHARACTERS, MAX_TRANSCRIPT_NESTING_DEPTH } from "./constants.js";
2
+ import { isRecord } from "./utils.js";
3
+ const ALLOWED_IMAGE_DOMAINS = new Set(["discordapp.com", "discordapp.net", "ticket.pm"]);
4
+ const ALLOWED_LINK_PROTOCOLS = new Set(["http:", "https:"]);
5
+ const VALID = { ok: true };
6
+ function invalid(path, reason, url) {
7
+ const normalizedPath = path || "$";
8
+ return url === undefined ? { ok: false, path: normalizedPath, reason } : { ok: false, path: normalizedPath, reason, url };
9
+ }
10
+ function buildPropertyPath(path, key) {
11
+ return path ? `${path}.${key}` : key;
12
+ }
13
+ function buildIndexPath(path, index) {
14
+ return `${path}[${index}]`;
15
+ }
16
+ function parseAllowedUrl(url, protocols) {
17
+ try {
18
+ const parsed = new URL(url);
19
+ return protocols.has(parsed.protocol) ? parsed : null;
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ /**
26
+ * Media URLs are tighter than regular links because the viewer renders them
27
+ * directly.
28
+ */
29
+ export function isValidMediaUrl(url) {
30
+ if (!url || typeof url !== "string") {
31
+ return false;
32
+ }
33
+ const parsed = parseAllowedUrl(url, ALLOWED_LINK_PROTOCOLS);
34
+ if (!parsed || parsed.protocol !== "https:") {
35
+ return false;
36
+ }
37
+ const hostname = parsed.hostname.toLowerCase();
38
+ return [...ALLOWED_IMAGE_DOMAINS].some((domain) => hostname === domain || hostname.endsWith(`.${domain}`));
39
+ }
40
+ /**
41
+ * Clickable links can point anywhere as long as the scheme is safe.
42
+ */
43
+ export function isValidLinkUrl(url) {
44
+ if (!url || typeof url !== "string") {
45
+ return false;
46
+ }
47
+ return Boolean(parseAllowedUrl(url, ALLOWED_LINK_PROTOCOLS));
48
+ }
49
+ function validateTranscriptNestingDepth(payload, maxDepth = MAX_TRANSCRIPT_NESTING_DEPTH) {
50
+ const stack = [{ value: payload, path: "", depth: 0 }];
51
+ while (stack.length > 0) {
52
+ const current = stack.pop();
53
+ if (Array.isArray(current.value)) {
54
+ if (current.depth > maxDepth) {
55
+ return invalid(current.path, `payload exceeds maximum nesting depth of ${maxDepth}`);
56
+ }
57
+ for (let index = current.value.length - 1; index >= 0; index -= 1) {
58
+ const child = current.value[index];
59
+ if (Array.isArray(child) || isRecord(child)) {
60
+ stack.push({
61
+ value: child,
62
+ path: buildIndexPath(current.path, index),
63
+ depth: current.depth + 1
64
+ });
65
+ }
66
+ }
67
+ continue;
68
+ }
69
+ if (!isRecord(current.value)) {
70
+ continue;
71
+ }
72
+ if (current.depth > maxDepth) {
73
+ return invalid(current.path, `payload exceeds maximum nesting depth of ${maxDepth}`);
74
+ }
75
+ const entries = Object.entries(current.value);
76
+ for (let index = entries.length - 1; index >= 0; index -= 1) {
77
+ const [key, child] = entries[index];
78
+ if (Array.isArray(child) || isRecord(child)) {
79
+ stack.push({
80
+ value: child,
81
+ path: buildPropertyPath(current.path, key),
82
+ depth: current.depth + 1
83
+ });
84
+ }
85
+ }
86
+ }
87
+ return VALID;
88
+ }
89
+ function validateOptionalMediaUrl(url, path) {
90
+ if (url == null) {
91
+ return VALID;
92
+ }
93
+ if (typeof url !== "string") {
94
+ return invalid(path, "media URL must be a string", String(url));
95
+ }
96
+ return isValidMediaUrl(url) ? VALID : invalid(path, "media URL failed whitelist validation", url);
97
+ }
98
+ function validateOptionalLink(url, path) {
99
+ if (url == null) {
100
+ return VALID;
101
+ }
102
+ if (typeof url !== "string") {
103
+ return invalid(path, "link URL must be a string", String(url));
104
+ }
105
+ return isValidLinkUrl(url) ? VALID : invalid(path, "link URL failed protocol validation", url);
106
+ }
107
+ function validatePreferredMediaUrl(proxyUrl, url, path) {
108
+ return proxyUrl != null
109
+ ? validateOptionalMediaUrl(proxyUrl, `${path}.proxy_url`)
110
+ : validateOptionalMediaUrl(url, `${path}.url`);
111
+ }
112
+ function validatePreferredIconUrl(proxyIconUrl, iconUrl, path) {
113
+ return proxyIconUrl != null
114
+ ? validateOptionalMediaUrl(proxyIconUrl, `${path}.proxy_icon_url`)
115
+ : validateOptionalMediaUrl(iconUrl, `${path}.icon_url`);
116
+ }
117
+ function validateOptionalPosterUrl(proxyPosterUrl, posterUrl, path) {
118
+ return proxyPosterUrl != null
119
+ ? validateOptionalMediaUrl(proxyPosterUrl, `${path}.poster_proxy_url`)
120
+ : validateOptionalMediaUrl(posterUrl, `${path}.poster_url`);
121
+ }
122
+ function validateAttachment(value, path) {
123
+ if (!isRecord(value)) {
124
+ return VALID;
125
+ }
126
+ const mediaResult = validatePreferredMediaUrl(value.proxy_url, value.url, path);
127
+ if (!mediaResult.ok) {
128
+ return mediaResult;
129
+ }
130
+ return validateOptionalPosterUrl(value.poster_proxy_url, value.poster_url, path);
131
+ }
132
+ function validateEmbedVideoItem(value, path) {
133
+ if (!isRecord(value)) {
134
+ return VALID;
135
+ }
136
+ if (value.proxy_url != null) {
137
+ const proxyResult = validateOptionalMediaUrl(value.proxy_url, `${path}.proxy_url`);
138
+ if (!proxyResult.ok) {
139
+ return proxyResult;
140
+ }
141
+ }
142
+ return validateOptionalLink(value.url, `${path}.url`);
143
+ }
144
+ function validateEmbed(value, path) {
145
+ if (!isRecord(value)) {
146
+ return VALID;
147
+ }
148
+ const embedUrlResult = validateOptionalLink(value.url, `${path}.url`);
149
+ if (!embedUrlResult.ok) {
150
+ return embedUrlResult;
151
+ }
152
+ if (isRecord(value.author)) {
153
+ const authorUrlResult = validateOptionalLink(value.author.url, `${path}.author.url`);
154
+ if (!authorUrlResult.ok) {
155
+ return authorUrlResult;
156
+ }
157
+ const authorIconResult = validatePreferredIconUrl(value.author.proxy_icon_url, value.author.icon_url, `${path}.author`);
158
+ if (!authorIconResult.ok) {
159
+ return authorIconResult;
160
+ }
161
+ }
162
+ if (isRecord(value.image)) {
163
+ const imageResult = validatePreferredMediaUrl(value.image.proxy_url, value.image.url, `${path}.image`);
164
+ if (!imageResult.ok) {
165
+ return imageResult;
166
+ }
167
+ }
168
+ if (isRecord(value.thumbnail)) {
169
+ const thumbnailResult = validatePreferredMediaUrl(value.thumbnail.proxy_url, value.thumbnail.url, `${path}.thumbnail`);
170
+ if (!thumbnailResult.ok) {
171
+ return thumbnailResult;
172
+ }
173
+ }
174
+ if (isRecord(value.video)) {
175
+ const videoResult = validateEmbedVideoItem(value.video, `${path}.video`);
176
+ if (!videoResult.ok) {
177
+ return videoResult;
178
+ }
179
+ }
180
+ if (isRecord(value.footer)) {
181
+ const footerIconResult = validatePreferredIconUrl(value.footer.proxy_icon_url, value.footer.icon_url, `${path}.footer`);
182
+ if (!footerIconResult.ok) {
183
+ return footerIconResult;
184
+ }
185
+ }
186
+ return VALID;
187
+ }
188
+ function validateComponentTree(value, path) {
189
+ if (Array.isArray(value)) {
190
+ for (const [index, item] of value.entries()) {
191
+ const result = validateComponentTree(item, `${path}[${index}]`);
192
+ if (!result.ok) {
193
+ return result;
194
+ }
195
+ }
196
+ return VALID;
197
+ }
198
+ if (!isRecord(value)) {
199
+ return VALID;
200
+ }
201
+ if ("media" in value) {
202
+ const mediaResult = isRecord(value.media)
203
+ ? validatePreferredMediaUrl(value.media.proxy_url, value.media.url, `${path}.media`)
204
+ : VALID;
205
+ if (!mediaResult.ok) {
206
+ return mediaResult;
207
+ }
208
+ }
209
+ if ("file" in value && isRecord(value.file)) {
210
+ const fileUrlResult = validateOptionalLink(value.file.url, `${path}.file.url`);
211
+ if (!fileUrlResult.ok) {
212
+ return fileUrlResult;
213
+ }
214
+ const fileProxyResult = validateOptionalMediaUrl(value.file.proxy_url, `${path}.file.proxy_url`);
215
+ if (!fileProxyResult.ok) {
216
+ return fileProxyResult;
217
+ }
218
+ }
219
+ if (typeof value.type === "number" && "url" in value) {
220
+ const buttonUrlResult = validateOptionalLink(value.url, `${path}.url`);
221
+ if (!buttonUrlResult.ok) {
222
+ return buttonUrlResult;
223
+ }
224
+ }
225
+ if ("components" in value) {
226
+ const nestedComponentsResult = validateComponentTree(value.components, `${path}.components`);
227
+ if (!nestedComponentsResult.ok) {
228
+ return nestedComponentsResult;
229
+ }
230
+ }
231
+ if ("items" in value) {
232
+ const itemsResult = validateComponentTree(value.items, `${path}.items`);
233
+ if (!itemsResult.ok) {
234
+ return itemsResult;
235
+ }
236
+ }
237
+ if ("accessory" in value) {
238
+ const accessoryResult = validateComponentTree(value.accessory, `${path}.accessory`);
239
+ if (!accessoryResult.ok) {
240
+ return accessoryResult;
241
+ }
242
+ }
243
+ return VALID;
244
+ }
245
+ function validateMessage(value, path) {
246
+ if (!isRecord(value)) {
247
+ return VALID;
248
+ }
249
+ if (Array.isArray(value.attachments)) {
250
+ for (const [index, attachment] of value.attachments.entries()) {
251
+ const attachmentResult = validateAttachment(attachment, `${path}.attachments[${index}]`);
252
+ if (!attachmentResult.ok) {
253
+ return attachmentResult;
254
+ }
255
+ }
256
+ }
257
+ if (Array.isArray(value.embeds)) {
258
+ for (const [index, embed] of value.embeds.entries()) {
259
+ const embedResult = validateEmbed(embed, `${path}.embeds[${index}]`);
260
+ if (!embedResult.ok) {
261
+ return embedResult;
262
+ }
263
+ }
264
+ }
265
+ if (value.components != null) {
266
+ const componentsResult = validateComponentTree(value.components, `${path}.components`);
267
+ if (!componentsResult.ok) {
268
+ return componentsResult;
269
+ }
270
+ }
271
+ if (isRecord(value.referenced_message)) {
272
+ const referencedMessageResult = validateMessage(value.referenced_message, `${path}.referenced_message`);
273
+ if (!referencedMessageResult.ok) {
274
+ return referencedMessageResult;
275
+ }
276
+ }
277
+ if (Array.isArray(value.message_snapshots)) {
278
+ for (const [index, snapshot] of value.message_snapshots.entries()) {
279
+ if (!isRecord(snapshot) || !isRecord(snapshot.message)) {
280
+ continue;
281
+ }
282
+ const snapshotResult = validateMessage(snapshot.message, `${path}.message_snapshots[${index}].message`);
283
+ if (!snapshotResult.ok) {
284
+ return snapshotResult;
285
+ }
286
+ }
287
+ }
288
+ return VALID;
289
+ }
290
+ /**
291
+ * Mirror the server-side URL walk so consumers can reject unsafe payloads
292
+ * before they reach `POST /v2/upload`.
293
+ */
294
+ export function validateTranscriptUrls(payload) {
295
+ const nestingResult = validateTranscriptNestingDepth(payload);
296
+ if (!nestingResult.ok) {
297
+ return nestingResult;
298
+ }
299
+ const messages = Array.isArray(payload)
300
+ ? payload
301
+ : isRecord(payload) && Array.isArray(payload.messages)
302
+ ? payload.messages
303
+ : null;
304
+ if (!messages) {
305
+ return VALID;
306
+ }
307
+ for (const [index, message] of messages.entries()) {
308
+ const result = validateMessage(message, `messages[${index}]`);
309
+ if (!result.ok) {
310
+ return result;
311
+ }
312
+ }
313
+ return VALID;
314
+ }
315
+ function resolveTranscriptChannelName(transcript) {
316
+ if (!isRecord(transcript)) {
317
+ return {
318
+ ok: false,
319
+ body: "Invalid transcript context: either context.channel_id is missing, context.channels[context.channel_id] is missing, or context.channels[context.channel_id].name is missing"
320
+ };
321
+ }
322
+ const context = isRecord(transcript.context) ? transcript.context : null;
323
+ const channelId = typeof context?.channel_id === "string" && context.channel_id.length > 0 ? context.channel_id : null;
324
+ const channels = isRecord(context?.channels) ? context.channels : null;
325
+ const channel = channelId && channels && isRecord(channels[channelId]) ? channels[channelId] : null;
326
+ const channelName = typeof channel?.name === "string" && channel.name.length > 0 ? channel.name : null;
327
+ if (!channelName) {
328
+ return {
329
+ ok: false,
330
+ body: "Invalid transcript context: either context.channel_id is missing, context.channels[context.channel_id] is missing, or context.channels[context.channel_id].name is missing"
331
+ };
332
+ }
333
+ if (Array.from(channelName).length > MAX_TRANSCRIPT_CHANNEL_NAME_CHARACTERS) {
334
+ return {
335
+ ok: false,
336
+ body: "Invalid transcript context: context.channels[context.channel_id].name must be less or equal to 100 characters"
337
+ };
338
+ }
339
+ return { ok: true, channelName };
340
+ }
341
+ /**
342
+ * Validate the same structural requirements enforced by the upload API itself.
343
+ */
344
+ export function validateTicketPmUploadPayload(transcript) {
345
+ const errors = [];
346
+ const urlValidation = validateTranscriptUrls(transcript);
347
+ if (!urlValidation.ok) {
348
+ errors.push({
349
+ path: urlValidation.path,
350
+ message: `${urlValidation.reason}${urlValidation.url ? `: ${urlValidation.url}` : ""}`
351
+ });
352
+ }
353
+ const channelValidation = resolveTranscriptChannelName(transcript);
354
+ if (!channelValidation.ok) {
355
+ errors.push({
356
+ path: "context.channel_id",
357
+ message: channelValidation.body
358
+ });
359
+ }
360
+ return {
361
+ ok: errors.length === 0,
362
+ errors
363
+ };
364
+ }
365
+ function pushIssue(issues, path, message) {
366
+ issues.push({ path, message });
367
+ }
368
+ function validateInteractionMetadataHydration(metadata, users, path, issues) {
369
+ if (!metadata) {
370
+ return;
371
+ }
372
+ if (!users?.[metadata.user_id]) {
373
+ pushIssue(issues, `${path}.user_id`, "interaction user cannot be hydrated from context.users");
374
+ }
375
+ validateInteractionMetadataHydration(metadata.triggering_interaction_metadata, users, `${path}.triggering_interaction_metadata`, issues);
376
+ }
377
+ /**
378
+ * Upload acceptance is looser than viewer rendering. This helper closes that
379
+ * gap by checking the compact hydration references that the renderer needs.
380
+ */
381
+ export function validateViewerCompatibility(transcript) {
382
+ const issues = [];
383
+ const users = transcript.context?.users;
384
+ const channelId = transcript.context?.channel_id;
385
+ const channels = transcript.context?.channels;
386
+ if (!channelId) {
387
+ pushIssue(issues, "context.channel_id", "viewer header cannot resolve the primary channel");
388
+ }
389
+ else if (!channels?.[channelId]?.name) {
390
+ pushIssue(issues, `context.channels.${channelId}`, "viewer header cannot resolve the primary channel name");
391
+ }
392
+ for (const [index, message] of transcript.messages.entries()) {
393
+ const path = `messages[${index}]`;
394
+ if (message.author_id && !users?.[message.author_id]) {
395
+ pushIssue(issues, `${path}.author_id`, "author cannot be hydrated from context.users");
396
+ }
397
+ for (const [mentionIndex, mentionId] of (message.mention_ids ?? []).entries()) {
398
+ if (!users?.[mentionId]) {
399
+ pushIssue(issues, `${path}.mention_ids[${mentionIndex}]`, "mention cannot be hydrated from context.users");
400
+ }
401
+ }
402
+ if (message.interaction && !users?.[message.interaction.user_id]) {
403
+ pushIssue(issues, `${path}.interaction.user_id`, "interaction user cannot be hydrated from context.users");
404
+ }
405
+ validateInteractionMetadataHydration(message.interaction_metadata, users, `${path}.interaction_metadata`, issues);
406
+ if (message.referenced_message?.author_id && !users?.[message.referenced_message.author_id]) {
407
+ pushIssue(issues, `${path}.referenced_message.author_id`, "referenced author cannot be hydrated from context.users");
408
+ }
409
+ const answerVoterIds = message.poll?.answer_voter_ids;
410
+ if (answerVoterIds) {
411
+ for (const [answerId, voterIds] of Object.entries(answerVoterIds)) {
412
+ for (const [voterIndex, voterId] of voterIds.entries()) {
413
+ if (!users?.[voterId]) {
414
+ pushIssue(issues, `${path}.poll.answer_voter_ids.${answerId}[${voterIndex}]`, "poll voter cannot be hydrated from context.users");
415
+ }
416
+ }
417
+ }
418
+ }
419
+ }
420
+ return {
421
+ ok: issues.length === 0,
422
+ errors: issues
423
+ };
424
+ }
425
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@ticketpm/core",
3
+ "version": "0.0.4",
4
+ "description": "Core transcript tooling for ticket.pm uploads.",
5
+ "license": "MPL-2.0",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/ticketpm/packages.git",
11
+ "directory": "packages/core"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/ticketpm/packages/issues"
15
+ },
16
+ "homepage": "https://github.com/ticketpm/packages/tree/main/packages/core#readme",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js"
21
+ }
22
+ },
23
+ "files": [
24
+ "dist",
25
+ "README.md",
26
+ "LICENSE"
27
+ ],
28
+ "publishConfig": {
29
+ "access": "public",
30
+ "provenance": true
31
+ }
32
+ }