@robono/server 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/HISTORY-IMPORT.md +117 -5
- package/INTEGRATION-ASSISTANT.md +103 -0
- package/README.md +16 -0
- package/SBOM.spdx.json +9 -9
- package/dist/calling.d.ts +30 -0
- package/dist/calling.d.ts.map +1 -1
- package/dist/calling.js +13 -0
- package/dist/calling.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -1
- package/dist/client.js.map +1 -1
- package/dist/generated/custom-messages.d.ts +31 -0
- package/dist/generated/custom-messages.d.ts.map +1 -0
- package/dist/generated/custom-messages.js +84 -0
- package/dist/generated/custom-messages.js.map +1 -0
- package/dist/generated/history-import-interactions.d.ts +17 -0
- package/dist/generated/history-import-interactions.d.ts.map +1 -0
- package/dist/generated/history-import-interactions.js +40 -0
- package/dist/generated/history-import-interactions.js.map +1 -0
- package/dist/generated/interactions.d.ts +199 -0
- package/dist/generated/interactions.d.ts.map +1 -0
- package/dist/generated/interactions.js +89 -0
- package/dist/generated/interactions.js.map +1 -0
- package/dist/generated/sdk-versions.d.ts +13 -0
- package/dist/generated/sdk-versions.d.ts.map +1 -0
- package/dist/generated/sdk-versions.js +4 -0
- package/dist/generated/sdk-versions.js.map +1 -0
- package/dist/history-convert.d.ts +52 -0
- package/dist/history-convert.d.ts.map +1 -0
- package/dist/history-convert.js +276 -0
- package/dist/history-convert.js.map +1 -0
- package/dist/history-export-cli.d.ts +4 -0
- package/dist/history-export-cli.d.ts.map +1 -0
- package/dist/history-export-cli.js +166 -0
- package/dist/history-export-cli.js.map +1 -0
- package/dist/history-export-files.d.ts +39 -0
- package/dist/history-export-files.d.ts.map +1 -0
- package/dist/history-export-files.js +119 -0
- package/dist/history-export-files.js.map +1 -0
- package/dist/history-export.d.ts +92 -0
- package/dist/history-export.d.ts.map +1 -0
- package/dist/history-export.js +78 -0
- package/dist/history-export.js.map +1 -0
- package/dist/history-import-cli.d.ts +1 -7
- package/dist/history-import-cli.d.ts.map +1 -1
- package/dist/history-import-cli.js +4 -33
- package/dist/history-import-cli.js.map +1 -1
- package/dist/history-import-validation.d.ts +8 -0
- package/dist/history-import-validation.d.ts.map +1 -0
- package/dist/history-import-validation.js +85 -0
- package/dist/history-import-validation.js.map +1 -0
- package/dist/history-import.d.ts +10 -1
- package/dist/history-import.d.ts.map +1 -1
- package/dist/history-import.js +27 -6
- package/dist/history-import.js.map +1 -1
- package/dist/history-migrate-cli.d.ts +3 -0
- package/dist/history-migrate-cli.d.ts.map +1 -0
- package/dist/history-migrate-cli.js +260 -0
- package/dist/history-migrate-cli.js.map +1 -0
- package/dist/history-polls.d.ts +4 -0
- package/dist/history-polls.d.ts.map +1 -0
- package/dist/history-polls.js +66 -0
- package/dist/history-polls.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/integration-assistant.txt +103 -0
- package/dist/messaging-notification-providers.d.ts +2 -3
- package/dist/messaging-notification-providers.d.ts.map +1 -1
- package/dist/messaging-notification-providers.js.map +1 -1
- package/dist/messaging.d.ts +5 -0
- package/dist/messaging.d.ts.map +1 -1
- package/dist/messaging.js +11 -2
- package/dist/messaging.js.map +1 -1
- package/dist/messenger-example-cli.d.ts +3 -0
- package/dist/messenger-example-cli.d.ts.map +1 -0
- package/dist/messenger-example-cli.js +47 -0
- package/dist/messenger-example-cli.js.map +1 -0
- package/dist/messenger-example.d.ts +9 -0
- package/dist/messenger-example.d.ts.map +1 -0
- package/dist/messenger-example.js +42 -0
- package/dist/messenger-example.js.map +1 -0
- package/dist/messenger-example.json +1 -0
- package/dist/messenger-hosted-install.d.ts.map +1 -1
- package/dist/messenger-hosted-install.js +4 -2
- package/dist/messenger-hosted-install.js.map +1 -1
- package/dist/messenger-install.d.ts +1 -1
- package/dist/messenger-install.d.ts.map +1 -1
- package/dist/messenger-install.js +5 -4
- package/dist/messenger-install.js.map +1 -1
- package/dist/messenger-preview-template.d.ts.map +1 -1
- package/dist/messenger-preview-template.js +1 -0
- package/dist/messenger-preview-template.js.map +1 -1
- package/package.json +8 -4
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Generated by scripts/sync-server-message-schema.mjs. Edit packages/messaging/src/interactions.ts.
|
|
2
|
+
/** Messenger's shared, bounded emoji catalogue. */
|
|
3
|
+
export const messageReactionOptions = [
|
|
4
|
+
{ emoji: "👍", label: "Thumbs up" },
|
|
5
|
+
{ emoji: "❤️", label: "Heart" },
|
|
6
|
+
{ emoji: "😂", label: "Laugh" },
|
|
7
|
+
{ emoji: "😢", label: "Cry" },
|
|
8
|
+
{ emoji: "😮", label: "Shock" },
|
|
9
|
+
{ emoji: "👏", label: "Clap" },
|
|
10
|
+
{ emoji: "🔥", label: "Fire" },
|
|
11
|
+
{ emoji: "🎉", label: "Party" },
|
|
12
|
+
{ emoji: "😁", label: "Grin" },
|
|
13
|
+
{ emoji: "😊", label: "Smile" },
|
|
14
|
+
{ emoji: "😉", label: "Wink" },
|
|
15
|
+
{ emoji: "🤔", label: "Thinking" },
|
|
16
|
+
{ emoji: "👌", label: "Okay" },
|
|
17
|
+
{ emoji: "🙏", label: "Please" },
|
|
18
|
+
{ emoji: "👀", label: "Eyes" },
|
|
19
|
+
{ emoji: "💯", label: "One hundred" },
|
|
20
|
+
{ emoji: "⭐", label: "Star" },
|
|
21
|
+
{ emoji: "💔", label: "Broken heart" },
|
|
22
|
+
{ emoji: "😡", label: "Angry" },
|
|
23
|
+
{ emoji: "😕", label: "Confused" },
|
|
24
|
+
{ emoji: "🤯", label: "Mind blown" },
|
|
25
|
+
{ emoji: "😎", label: "Cool" },
|
|
26
|
+
{ emoji: "🤗", label: "Hug" },
|
|
27
|
+
{ emoji: "🚀", label: "Rocket" },
|
|
28
|
+
{ emoji: "✅", label: "Check" },
|
|
29
|
+
{ emoji: "❌", label: "No" },
|
|
30
|
+
{ emoji: "🙌", label: "Hands raised" },
|
|
31
|
+
{ emoji: "🤝", label: "Handshake" },
|
|
32
|
+
{ emoji: "🫶", label: "Heart hands" },
|
|
33
|
+
{ emoji: "💪", label: "Strong" },
|
|
34
|
+
{ emoji: "👎", label: "Thumbs down" },
|
|
35
|
+
{ emoji: "✌️", label: "Peace" },
|
|
36
|
+
{ emoji: "🤞", label: "Fingers crossed" },
|
|
37
|
+
{ emoji: "😄", label: "Happy" },
|
|
38
|
+
{ emoji: "😍", label: "Love it" },
|
|
39
|
+
{ emoji: "😘", label: "Kiss" },
|
|
40
|
+
{ emoji: "🥰", label: "Loved" },
|
|
41
|
+
{ emoji: "😆", label: "Big laugh" },
|
|
42
|
+
{ emoji: "🤣", label: "Rolling laugh" },
|
|
43
|
+
{ emoji: "😅", label: "Nervous laugh" },
|
|
44
|
+
{ emoji: "😬", label: "Grimace" },
|
|
45
|
+
{ emoji: "😱", label: "Scream" },
|
|
46
|
+
{ emoji: "😭", label: "Sob" },
|
|
47
|
+
{ emoji: "😴", label: "Sleepy" },
|
|
48
|
+
{ emoji: "🤷", label: "Shrug" },
|
|
49
|
+
{ emoji: "🙄", label: "Eye roll" },
|
|
50
|
+
{ emoji: "😇", label: "Angel" },
|
|
51
|
+
{ emoji: "🤮", label: "Gross" },
|
|
52
|
+
{ emoji: "🤐", label: "Quiet" },
|
|
53
|
+
{ emoji: "🤫", label: "Shush" },
|
|
54
|
+
{ emoji: "😋", label: "Yum" },
|
|
55
|
+
{ emoji: "🍕", label: "Pizza" },
|
|
56
|
+
{ emoji: "🍿", label: "Popcorn" },
|
|
57
|
+
{ emoji: "🏆", label: "Trophy" },
|
|
58
|
+
{ emoji: "⚡", label: "Lightning" },
|
|
59
|
+
{ emoji: "✨", label: "Sparkles" },
|
|
60
|
+
{ emoji: "💡", label: "Idea" },
|
|
61
|
+
{ emoji: "🫡", label: "Salute" },
|
|
62
|
+
{ emoji: "👋", label: "Wave" },
|
|
63
|
+
{ emoji: "📌", label: "Pin" },
|
|
64
|
+
{ emoji: "❓", label: "Question" },
|
|
65
|
+
{ emoji: "‼️", label: "Double exclamation" },
|
|
66
|
+
];
|
|
67
|
+
export const messageReactions = messageReactionOptions.map(option => option.emoji);
|
|
68
|
+
export function validateReaction(value) {
|
|
69
|
+
if (value === null)
|
|
70
|
+
return null;
|
|
71
|
+
if (!messageReactions.includes(value))
|
|
72
|
+
throw Error("Choose a supported reaction.");
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
export function validatePoll(value) {
|
|
76
|
+
const v = value;
|
|
77
|
+
const validText = (s, max) => typeof s === 'string' && !!s.trim() && s.length <= max && !/[\u0000-\u001f]/.test(s);
|
|
78
|
+
if (!v || !validText(v.question, 300) || !Array.isArray(v.options) || v.options.length < 2 || v.options.length > 12 || v.options.some(s => !validText(s, 100)) || typeof v.multiple !== 'boolean')
|
|
79
|
+
throw Error('Enter a question and between 2 and 12 options.');
|
|
80
|
+
const options = v.options.map(s => s.trim());
|
|
81
|
+
if (new Set(options.map(s => s.toLocaleLowerCase('en'))).size !== options.length)
|
|
82
|
+
throw Error('Each poll option must be different.');
|
|
83
|
+
if (v.kind !== undefined && v.kind !== 'yes_no')
|
|
84
|
+
throw Error('Unknown question type.');
|
|
85
|
+
if (v.kind === 'yes_no' && (v.multiple || options.length !== 2 || options[0] !== 'Yes' || options[1] !== 'No'))
|
|
86
|
+
throw Error('Yes/No questions require exactly Yes and No.');
|
|
87
|
+
return { question: v.question.trim(), options, multiple: v.multiple, ...(v.kind ? { kind: v.kind } : {}) };
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=interactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../src/generated/interactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const robonoSdkVersions: {
|
|
2
|
+
readonly server: "0.27.0";
|
|
3
|
+
readonly messaging: "0.7.1";
|
|
4
|
+
readonly "messaging-web": "0.10.0";
|
|
5
|
+
readonly "messaging-react-native": "0.11.0";
|
|
6
|
+
readonly location: "0.4.0";
|
|
7
|
+
readonly "location-web": "0.4.0";
|
|
8
|
+
readonly "location-react-native": "0.4.0";
|
|
9
|
+
readonly calling: "0.6.0";
|
|
10
|
+
readonly "calling-react-native": "0.9.0";
|
|
11
|
+
};
|
|
12
|
+
export declare const sdkPackage: (name: keyof typeof robonoSdkVersions) => string;
|
|
13
|
+
//# sourceMappingURL=sdk-versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-versions.d.ts","sourceRoot":"","sources":["../../src/generated/sdk-versions.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB;;;;;;;;;;CAAuO,CAAC;AACtQ,eAAO,MAAM,UAAU,GAAE,MAAK,MAAM,OAAO,iBAAiB,WAA+C,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// Generated from package manifests. Do not edit by hand.
|
|
2
|
+
export const robonoSdkVersions = { "server": "0.27.0", "messaging": "0.7.1", "messaging-web": "0.10.0", "messaging-react-native": "0.11.0", "location": "0.4.0", "location-web": "0.4.0", "location-react-native": "0.4.0", "calling": "0.6.0", "calling-react-native": "0.9.0" };
|
|
3
|
+
export const sdkPackage = (name) => "@robono/" + name + "@^" + robonoSdkVersions[name];
|
|
4
|
+
//# sourceMappingURL=sdk-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-versions.js","sourceRoot":"","sources":["../../src/generated/sdk-versions.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAC,EAAC,QAAQ,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,eAAe,EAAC,QAAQ,EAAC,wBAAwB,EAAC,QAAQ,EAAC,UAAU,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,uBAAuB,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAC,sBAAsB,EAAC,OAAO,EAAU,CAAC;AACtQ,MAAM,CAAC,MAAM,UAAU,GAAC,CAAC,IAAmC,EAAC,EAAE,CAAA,UAAU,GAAC,IAAI,GAAC,IAAI,GAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { HistoryImportMessage } from './history-import.js';
|
|
2
|
+
import type { MessagingUploadFile, MessagingMediaKind } from './messaging-media.js';
|
|
3
|
+
export interface HistoryAttachmentMapping {
|
|
4
|
+
path: string;
|
|
5
|
+
mimeType: string;
|
|
6
|
+
fileName?: string;
|
|
7
|
+
durationMs?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface HistoryMigrationMapping {
|
|
10
|
+
conversations: Record<string, string>;
|
|
11
|
+
users?: Record<string, string>;
|
|
12
|
+
/** Use only when the old provider's IDs are the same IDs authenticated by your app. */
|
|
13
|
+
preserveUserIds?: boolean;
|
|
14
|
+
reactions?: Record<string, string>;
|
|
15
|
+
/** Private local files exported from the old provider, by channel and message ID. */
|
|
16
|
+
attachments?: Record<string, Record<string, HistoryAttachmentMapping | HistoryAttachmentMapping[]>>;
|
|
17
|
+
/** Full poll definitions omitted by the provider's ordinary message export. */
|
|
18
|
+
polls?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface HistoryConversionIssue {
|
|
21
|
+
record: number;
|
|
22
|
+
code: string;
|
|
23
|
+
sourceId?: string;
|
|
24
|
+
channel?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface HistoryMigrationPlan {
|
|
27
|
+
version: 1;
|
|
28
|
+
provider: 'sendbird' | 'stream';
|
|
29
|
+
conversations: {
|
|
30
|
+
jobId: string;
|
|
31
|
+
conversationId: string;
|
|
32
|
+
sourceChannel: string;
|
|
33
|
+
authors: string[];
|
|
34
|
+
messages: HistoryImportMessage[];
|
|
35
|
+
}[];
|
|
36
|
+
issues: HistoryConversionIssue[];
|
|
37
|
+
notices?: HistoryConversionIssue[];
|
|
38
|
+
attachments?: {
|
|
39
|
+
conversationId: string;
|
|
40
|
+
sourceId: string;
|
|
41
|
+
uploadId: string;
|
|
42
|
+
path: string;
|
|
43
|
+
kind: MessagingMediaKind;
|
|
44
|
+
file: MessagingUploadFile;
|
|
45
|
+
sha256?: string;
|
|
46
|
+
}[];
|
|
47
|
+
}
|
|
48
|
+
/** Local-only conversion. Never downloads URLs or uses the old provider's keys.
|
|
49
|
+
* Any unsupported data is reported and prevents applying the generated plan.
|
|
50
|
+
*/
|
|
51
|
+
export declare function convertHistory(provider: 'sendbird' | 'stream', source: unknown, mapping: HistoryMigrationMapping): HistoryMigrationPlan;
|
|
52
|
+
//# sourceMappingURL=history-convert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-convert.d.ts","sourceRoot":"","sources":["../src/history-convert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAG9D,OAAO,KAAK,EAAC,mBAAmB,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAGjF,MAAM,WAAW,wBAAwB;IAAE,IAAI,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAA;CAAC;AAC3G,MAAM,WAAW,uBAAuB;IACvC,aAAa,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IACpC,KAAK,CAAC,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IAC7B,uFAAuF;IACvF,eAAe,CAAC,EAAC,OAAO,CAAC;IACzB,SAAS,CAAC,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IACjC,qFAAqF;IACrF,WAAW,CAAC,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,MAAM,EAAC,wBAAwB,GAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;IAC/F,+EAA+E;IAC/E,KAAK,CAAC,EAAC,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC,CAAC;CAC9B;AACD,MAAM,WAAW,sBAAsB;IAAE,MAAM,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAA,OAAO,CAAC,EAAC,MAAM,CAAA;CAAC;AACpG,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAC,CAAC,CAAC;IAAA,QAAQ,EAAC,UAAU,GAAC,QAAQ,CAAC;IACvC,aAAa,EAAC;QAAC,KAAK,EAAC,MAAM,CAAC;QAAA,cAAc,EAAC,MAAM,CAAC;QAAA,aAAa,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,MAAM,EAAE,CAAC;QAAA,QAAQ,EAAC,oBAAoB,EAAE,CAAA;KAAC,EAAE,CAAC;IAC3H,MAAM,EAAC,sBAAsB,EAAE,CAAC;IAChC,OAAO,CAAC,EAAC,sBAAsB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAC;QAAC,cAAc,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,kBAAkB,CAAC;QAAA,IAAI,EAAC,mBAAmB,CAAC;QAAA,MAAM,CAAC,EAAC,MAAM,CAAA;KAAC,EAAE,CAAC;CACnJ;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAC,UAAU,GAAC,QAAQ,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,uBAAuB,GAAE,oBAAoB,CAwH/H"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { randomUUID, createHash } from 'node:crypto';
|
|
2
|
+
import { validateHistoryImportFile } from './history-import-validation.js';
|
|
3
|
+
import { validateReaction } from './generated/interactions.js';
|
|
4
|
+
import { convertImportedPoll } from './history-polls.js';
|
|
5
|
+
const object = (v) => v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
6
|
+
const own = (v, k) => object(v) && Object.hasOwn(v, k) ? v[k] : undefined;
|
|
7
|
+
const id = (v) => typeof v === 'string' && v.length > 0 && v.length <= 200 && !/[\u0000-\u001f\u007f]/.test(v) && v === v.trim() ? v : typeof v === 'number' && Number.isSafeInteger(v) && v >= 0 ? String(v) : null;
|
|
8
|
+
const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
9
|
+
/** Local-only conversion. Never downloads URLs or uses the old provider's keys.
|
|
10
|
+
* Any unsupported data is reported and prevents applying the generated plan.
|
|
11
|
+
*/
|
|
12
|
+
export function convertHistory(provider, source, mapping) {
|
|
13
|
+
if (!['sendbird', 'stream'].includes(provider) || !object(mapping) || !object(mapping.conversations) || mapping.users !== undefined && !object(mapping.users) || mapping.reactions !== undefined && !object(mapping.reactions) || mapping.attachments !== undefined && !object(mapping.attachments) || mapping.polls !== undefined && !object(mapping.polls) || mapping.preserveUserIds !== undefined && typeof mapping.preserveUserIds !== 'boolean')
|
|
14
|
+
throw Error('Provide a supported provider and explicit conversation/user mapping.');
|
|
15
|
+
const targets = Object.values(mapping.conversations);
|
|
16
|
+
if (!targets.length || targets.some(v => typeof v !== 'string' || !uuid.test(v)) || new Set(targets).size !== targets.length)
|
|
17
|
+
throw Error('Map each source channel to a different authorized Robono conversation UUID.');
|
|
18
|
+
if (mapping.users) {
|
|
19
|
+
const values = Object.values(mapping.users);
|
|
20
|
+
if (values.some(v => !id(v)) || new Set(values).size !== values.length)
|
|
21
|
+
throw Error('Map each source user to a different authenticated user ID.');
|
|
22
|
+
}
|
|
23
|
+
const plan = { version: 1, provider, conversations: [], issues: [] };
|
|
24
|
+
const groups = new Map();
|
|
25
|
+
const rows = [];
|
|
26
|
+
function expand(value, channel) {
|
|
27
|
+
if (Array.isArray(value)) {
|
|
28
|
+
for (const v of value)
|
|
29
|
+
expand(v, channel);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (!object(value))
|
|
33
|
+
throw Error('Expected exported message objects or channel objects.');
|
|
34
|
+
if (Array.isArray(value.channels)) {
|
|
35
|
+
expand(value.channels);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (Array.isArray(value.messages)) {
|
|
39
|
+
const c = id(value.channel?.cid) ?? (id(value.channel?.type) && id(value.channel?.id) ? value.channel.type + ':' + value.channel.id : undefined) ?? id(value.channel_url) ?? channel;
|
|
40
|
+
for (const m of value.messages)
|
|
41
|
+
rows.push({ data: m, ...(c ? { channel: c } : {}) });
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (provider === 'stream' && typeof value.type === 'string' && object(value.data)) {
|
|
45
|
+
if (['user', 'channel', 'member'].includes(value.type))
|
|
46
|
+
return; // membership remains the customer's explicit authorization
|
|
47
|
+
rows.push({ data: value.data, entity: value.type, ...(channel ? { channel } : {}) });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
rows.push({ data: value, ...(channel ? { channel } : {}) });
|
|
51
|
+
}
|
|
52
|
+
expand(source);
|
|
53
|
+
if (!rows.length || rows.length > 1000000)
|
|
54
|
+
throw Error('Provide 1–1,000,000 exported records.');
|
|
55
|
+
const issue = (record, code, data, channel) => { plan.issues.push({ record: record + 1, code, ...(id(data?.message_id ?? data?.id) ? { sourceId: id(data.message_id ?? data.id) } : {}), ...(channel ? { channel } : {}) }); };
|
|
56
|
+
const user = (value) => { const key = id(typeof value === 'object' ? value?.id : value); if (!key)
|
|
57
|
+
return null; return id(own(mapping.users, key) ?? (mapping.preserveUserIds ? key : null)); };
|
|
58
|
+
const pending = [];
|
|
59
|
+
const polls = new Map(), pollVotes = new Map(), usedPolls = new Set();
|
|
60
|
+
for (const [record, row] of rows.entries())
|
|
61
|
+
if (row.entity === 'poll') {
|
|
62
|
+
const pid = id(row.data?.id);
|
|
63
|
+
if (!pid || polls.has(pid))
|
|
64
|
+
issue(record, 'invalid_or_duplicate_poll', row.data);
|
|
65
|
+
else
|
|
66
|
+
polls.set(pid, row.data);
|
|
67
|
+
}
|
|
68
|
+
else if (row.entity === 'poll_vote') {
|
|
69
|
+
const pid = id(row.data?.poll_id);
|
|
70
|
+
if (!pid)
|
|
71
|
+
issue(record, 'poll_vote_mapping_required', row.data);
|
|
72
|
+
else {
|
|
73
|
+
const list = pollVotes.get(pid) ?? [];
|
|
74
|
+
list.push(row.data);
|
|
75
|
+
pollVotes.set(pid, list);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
for (const [record, row] of rows.entries()) {
|
|
79
|
+
const m = row.data;
|
|
80
|
+
if (!object(m)) {
|
|
81
|
+
issue(record, 'invalid_record', m);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const channel = id(m.channel_url ?? m.cid) ?? (id(m.channel_type) && id(m.channel_id) ? m.channel_type + ':' + m.channel_id : row.channel);
|
|
85
|
+
if (row.entity && row.entity !== 'message') {
|
|
86
|
+
if (['poll', 'poll_vote'].includes(row.entity))
|
|
87
|
+
continue;
|
|
88
|
+
if (row.entity === 'reaction')
|
|
89
|
+
pending.push({ record, data: m, ...(channel ? { channel } : {}) });
|
|
90
|
+
else
|
|
91
|
+
issue(record, 'unsupported_entity_' + row.entity, m, channel);
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const destination = channel && own(mapping.conversations, channel);
|
|
95
|
+
if (!destination) {
|
|
96
|
+
issue(record, 'conversation_mapping_required', m, channel);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (m.is_removed === true || m.deleted_at || m.type === 'deleted') {
|
|
100
|
+
issue(record, 'deleted_message_excluded', m, channel);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (provider === 'sendbird' && !['MESG', 'FILE'].includes(m.type) || provider === 'stream' && m.type && !['regular', 'reply'].includes(m.type)) {
|
|
104
|
+
issue(record, 'unsupported_message_type', m, channel);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const pollId = id(m.poll_id ?? m.poll?.id), hasPoll = !!(m.poll || pollId);
|
|
108
|
+
let convertedPoll;
|
|
109
|
+
if (hasPoll) {
|
|
110
|
+
const definition = m.poll ?? (pollId ? polls.get(pollId) ?? own(mapping.polls, pollId) : undefined);
|
|
111
|
+
try {
|
|
112
|
+
convertedPoll = convertImportedPoll(provider, definition, pollId && polls.has(pollId) ? pollVotes.get(pollId) ?? [] : undefined, user);
|
|
113
|
+
if (pollId)
|
|
114
|
+
usedPolls.add(pollId);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
issue(record, error instanceof Error ? error.message : 'invalid_poll', m, channel);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const sourceId = id(provider === 'sendbird' ? m.message_id : m.id), authorId = user(provider === 'sendbird' ? m.user?.user_id ?? m.sender?.user_id ?? m.user_id : m.user_id ?? m.user);
|
|
122
|
+
const hasFile = m.type === 'FILE' || Array.isArray(m.attachments) && m.attachments.length || m.url || m.files;
|
|
123
|
+
const attachment = sourceId && own(own(mapping.attachments, channel), sourceId);
|
|
124
|
+
if (hasFile && !attachment) {
|
|
125
|
+
issue(record, 'private_attachment_mapping_required', m, channel);
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const files = hasFile ? (Array.isArray(attachment) ? attachment : [attachment]) : [];
|
|
129
|
+
const count = Array.isArray(m.attachments) && m.attachments.length ? m.attachments.length : Array.isArray(m.files) && m.files.length ? m.files.length : 1;
|
|
130
|
+
if (hasFile && (files.length !== count || count > 100)) {
|
|
131
|
+
issue(record, 'attachment_count_mismatch', m, channel);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const rawDate = provider === 'sendbird' ? m.created_at : m.created_at;
|
|
135
|
+
const time = typeof rawDate === 'number' && Number.isSafeInteger(rawDate) ? rawDate : typeof rawDate === 'string' ? Date.parse(rawDate) : NaN;
|
|
136
|
+
const text = provider === 'sendbird' ? m.message : m.text;
|
|
137
|
+
if (!sourceId || !authorId || !Number.isFinite(time) || time < 0 || time > Date.now() || !hasFile && !hasPoll && (typeof text !== 'string' || !text.trim())) {
|
|
138
|
+
issue(record, 'invalid_message_or_user_mapping', m, channel);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
let group = groups.get(channel);
|
|
142
|
+
if (!group) {
|
|
143
|
+
group = { jobId: randomUUID(), conversationId: destination, sourceChannel: channel, authors: [], messages: [] };
|
|
144
|
+
groups.set(channel, group);
|
|
145
|
+
}
|
|
146
|
+
const message = { sourceId, authorId, sentAt: new Date(time).toISOString(), content: { kind: 'text', text } };
|
|
147
|
+
if (convertedPoll) {
|
|
148
|
+
Object.assign(message, convertedPoll);
|
|
149
|
+
if (hasFile || typeof text === 'string' && text.trim() && text.trim() !== convertedPoll.content.poll?.question)
|
|
150
|
+
issue(record, 'poll_message_text_requires_mapping', m, channel);
|
|
151
|
+
}
|
|
152
|
+
const extraMessages = [];
|
|
153
|
+
if (hasFile)
|
|
154
|
+
for (const [fileIndex, attachment] of files.entries()) {
|
|
155
|
+
if (!object(attachment) || typeof attachment.path !== 'string' || !attachment.path.trim() || typeof attachment.mimeType !== 'string' || !/^[-a-z0-9+.]+\/[-a-z0-9+.]+$/.test(attachment.mimeType)) {
|
|
156
|
+
issue(record, 'invalid_attachment_mapping', m, channel);
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const mimeType = attachment.mimeType, kind = mimeType.startsWith('image/') ? 'image' : mimeType.startsWith('video/') ? 'video' : mimeType.startsWith('audio/') ? 'voice' : 'document';
|
|
160
|
+
if (['voice', 'video'].includes(kind) && (!Number.isSafeInteger(attachment.durationMs) || attachment.durationMs < 1)) {
|
|
161
|
+
issue(record, 'attachment_duration_required', m, channel);
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const file = { mimeType, fileName: attachment.fileName ?? attachment.path.split(/[\\/]/).at(-1), byteSize: 0, ...(attachment.durationMs ? { durationMs: attachment.durationMs } : {}) };
|
|
165
|
+
if (!file.fileName || file.fileName.length > 240 || /[\u0000-\u001f\u007f]/.test(file.fileName)) {
|
|
166
|
+
issue(record, 'invalid_attachment_mapping', m, channel);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
const item = fileIndex === 0 ? message : { sourceId: 'file:' + createHash('sha256').update(JSON.stringify([sourceId, fileIndex])).digest('hex'), authorId, sentAt: message.sentAt, content: { kind: 'text', text: '' } };
|
|
170
|
+
const uploadId = randomUUID();
|
|
171
|
+
item.content = { kind, ...(fileIndex === 0 && typeof text === 'string' && text.trim() ? { text } : {}), media: { ...file, assetId: 'robono-r2:pending-' + uploadId } };
|
|
172
|
+
(plan.attachments ??= []).push({ conversationId: destination, sourceId: item.sourceId, uploadId, path: attachment.path, kind, file });
|
|
173
|
+
if (fileIndex > 0)
|
|
174
|
+
extraMessages.push(item);
|
|
175
|
+
}
|
|
176
|
+
const thread = id(m.parent_message_id ?? m.parent_id);
|
|
177
|
+
const parent = id(m.quoted_message_id) ?? thread;
|
|
178
|
+
if (parent && parent !== '0')
|
|
179
|
+
message.replyToSourceId = parent;
|
|
180
|
+
if (thread && thread !== '0')
|
|
181
|
+
message.threadRootSourceId = thread;
|
|
182
|
+
// Vendor metadata is retained as custom data rather than mistaken for executable actions.
|
|
183
|
+
const understood = new Set(['message_id', 'id', 'type', 'channel_url', 'cid', 'channel_type', 'channel_id', 'user', 'sender', 'user_id', 'created_at', 'updated_at', 'message', 'text', 'data', 'custom_type', 'attachments', 'url', 'files', 'poll', 'poll_id', 'parent_message_id', 'parent_id', 'quoted_message_id', 'pinned', 'is_pinned', 'pinned_by_id', 'pinned_by', 'pinned_at', 'reactions', 'latest_reactions', 'is_removed', 'deleted_at', 'request_id', 'req_id', 'message_survival_seconds', 'reply_count', 'thread_participants', 'own_reactions', 'reaction_counts', 'reaction_scores', 'reaction_groups', 'mentioned_users', 'mentioned_user_ids', 'mention_type', 'silent', 'hide_push', 'show_in_channel', 'is_reply_to_channel', 'pinned_expires', 'pin_expires', 'file', 'size', 'name', 'thumbnails']);
|
|
184
|
+
const extra = Object.fromEntries(Object.entries(m).filter(([key]) => !understood.has(key)));
|
|
185
|
+
if (m.silent || m.hide_push || m.show_in_channel || m.is_reply_to_channel || m.pinned_expires || m.pin_expires || m.message_survival_seconds)
|
|
186
|
+
issue(record, 'message_behavior_requires_mapping', m, channel);
|
|
187
|
+
if (m.data !== undefined && m.data !== '' || m.custom_type || Object.keys(extra).length) {
|
|
188
|
+
if (hasFile || hasPoll)
|
|
189
|
+
issue(record, 'nontext_custom_metadata_requires_mapping', m, channel);
|
|
190
|
+
else
|
|
191
|
+
message.content.custom = { type: provider + '.message', version: 1, data: { ...(m.data !== undefined ? { data: m.data } : {}), ...(m.custom_type ? { customType: m.custom_type } : {}), ...(Object.keys(extra).length ? { extra } : {}) } };
|
|
192
|
+
}
|
|
193
|
+
if (m.pinned || m.is_pinned) {
|
|
194
|
+
const pinnedBy = user(m.pinned_by_id ?? m.pinned_by?.user_id ?? m.pinned_by), date = typeof m.pinned_at === 'number' ? m.pinned_at : Date.parse(m.pinned_at);
|
|
195
|
+
if (!pinnedBy || !Number.isFinite(date) || date < time || date > Date.now())
|
|
196
|
+
issue(record, 'pin_author_and_date_required', m, channel);
|
|
197
|
+
else
|
|
198
|
+
message.interactions = { ...message.interactions, pin: { userId: pinnedBy, createdAt: new Date(date).toISOString() } };
|
|
199
|
+
}
|
|
200
|
+
if (Array.isArray(m.reactions))
|
|
201
|
+
for (const reaction of m.reactions) {
|
|
202
|
+
if (provider === 'sendbird') {
|
|
203
|
+
if (!Array.isArray(reaction.user_ids)) {
|
|
204
|
+
issue(record, 'reaction_users_missing', m, channel);
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
for (const uid of reaction.user_ids)
|
|
208
|
+
pending.push({ record, data: { message_id: sourceId, user_id: uid, type: reaction.key }, channel: channel });
|
|
209
|
+
}
|
|
210
|
+
else
|
|
211
|
+
pending.push({ record, data: { ...reaction, message_id: sourceId }, channel: channel });
|
|
212
|
+
}
|
|
213
|
+
if (m.latest_reactions?.length && !m.reactions)
|
|
214
|
+
issue(record, 'complete_reaction_list_required', m, channel);
|
|
215
|
+
for (const extra of extraMessages) {
|
|
216
|
+
if (message.replyToSourceId)
|
|
217
|
+
extra.replyToSourceId = message.replyToSourceId;
|
|
218
|
+
if (message.threadRootSourceId)
|
|
219
|
+
extra.threadRootSourceId = message.threadRootSourceId;
|
|
220
|
+
}
|
|
221
|
+
if (extraMessages.length)
|
|
222
|
+
(plan.notices ??= []).push({ record: record + 1, code: 'attachments_converted_to_consecutive_messages', sourceId, channel: channel });
|
|
223
|
+
group.messages.push(message, ...extraMessages);
|
|
224
|
+
}
|
|
225
|
+
for (const pid of new Set([...polls.keys(), ...pollVotes.keys()]))
|
|
226
|
+
if (!usedPolls.has(pid))
|
|
227
|
+
plan.issues.push({ record: 0, code: 'unreferenced_poll_or_votes' });
|
|
228
|
+
const messageIndex = new Map(), channelMessageIndex = new Map();
|
|
229
|
+
for (const g of groups.values())
|
|
230
|
+
for (const m of g.messages) {
|
|
231
|
+
const key = JSON.stringify([g.sourceChannel, m.sourceId]);
|
|
232
|
+
messageIndex.set(m.sourceId, [...(messageIndex.get(m.sourceId) ?? []), m]);
|
|
233
|
+
channelMessageIndex.set(key, [...(channelMessageIndex.get(key) ?? []), m]);
|
|
234
|
+
}
|
|
235
|
+
for (const { record, data: r, channel } of pending) {
|
|
236
|
+
const mid = id(r.message_id);
|
|
237
|
+
const matches = mid ? (channel ? channelMessageIndex.get(JSON.stringify([channel, mid])) : messageIndex.get(mid)) ?? [] : [];
|
|
238
|
+
const authorId = user(r.user_id ?? r.user);
|
|
239
|
+
const emoji = own(mapping.reactions, String(r.type)) ?? r.type;
|
|
240
|
+
if (matches.length !== 1 || !authorId) {
|
|
241
|
+
issue(record, 'reaction_target_or_user_missing', r, channel);
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
if (!validateReaction(emoji))
|
|
246
|
+
throw Error();
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
issue(record, 'reaction_mapping_required', r, channel);
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
const m = matches[0];
|
|
253
|
+
m.interactions ??= {};
|
|
254
|
+
m.interactions.reactions ??= [];
|
|
255
|
+
const existing = m.interactions.reactions.find(v => v.userId === authorId);
|
|
256
|
+
if (existing) {
|
|
257
|
+
if (existing.emoji !== emoji)
|
|
258
|
+
issue(record, 'multiple_reactions_per_person', r, channel);
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
m.interactions.reactions.push({ userId: authorId, emoji });
|
|
262
|
+
}
|
|
263
|
+
for (const group of groups.values()) {
|
|
264
|
+
group.messages.sort((a, b) => Date.parse(a.sentAt) - Date.parse(b.sentAt));
|
|
265
|
+
group.authors = [...new Set(group.messages.flatMap(m => [m.authorId, ...(m.interactions?.pin ? [m.interactions.pin.userId] : []), ...(m.interactions?.reactions ?? []).map(r => r.userId), ...(m.interactions?.votes ?? []).map(r => r.userId)]))].sort();
|
|
266
|
+
try {
|
|
267
|
+
validateHistoryImportFile(group);
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
plan.issues.push({ record: 0, channel: group.sourceChannel, code: 'conversation_validation_failed' });
|
|
271
|
+
}
|
|
272
|
+
plan.conversations.push(group);
|
|
273
|
+
}
|
|
274
|
+
return plan;
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=history-convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-convert.js","sourceRoot":"","sources":["../src/history-convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/** Writes private JSONL and a checkpoint; no message contents or keys are logged. */
|
|
3
|
+
export declare function runHistoryExport(args: string[], env?: NodeJS.ProcessEnv, log?: (line: string) => void, fetcher?: typeof fetch): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=history-export-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-export-cli.d.ts","sourceRoot":"","sources":["../src/history-export-cli.ts"],"names":[],"mappings":";AAwBA,qFAAqF;AACrF,wBAAsB,gBAAgB,CAAC,IAAI,EAAC,MAAM,EAAE,EAAC,GAAG,GAAC,MAAM,CAAC,UAAsB,EAAC,GAAG,GAAC,CAAC,IAAI,EAAC,MAAM,KAAG,IAAgB,EAAC,OAAO,CAAC,EAAC,OAAO,KAAK,iBAuD/I"}
|