insta-dista-cli 1.0.0 → 1.2.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/dist/auth.d.ts CHANGED
@@ -2,5 +2,6 @@ import { IgApiClient } from 'instagram-private-api';
2
2
  export declare function getClient(): IgApiClient;
3
3
  export declare function login(): Promise<IgApiClient>;
4
4
  export declare function logout(): Promise<void>;
5
+ export declare function isLoggedIn(): string | null;
5
6
  export declare function ensureLoggedIn(): Promise<IgApiClient>;
6
7
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOpD,wBAAgB,SAAS,IAAI,WAAW,CAKvC;AAED,wBAAsB,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CA4FlD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAG5C;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAO3D"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2C,MAAM,uBAAuB,CAAC;AAQ7F,wBAAgB,SAAS,IAAI,WAAW,CAKvC;AAWD,wBAAsB,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CA8IlD;AAED,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAG5C;AAED,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAG1C;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAE3D"}
package/dist/auth.js CHANGED
@@ -39,10 +39,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.getClient = getClient;
40
40
  exports.login = login;
41
41
  exports.logout = logout;
42
+ exports.isLoggedIn = isLoggedIn;
42
43
  exports.ensureLoggedIn = ensureLoggedIn;
43
44
  const instagram_private_api_1 = require("instagram-private-api");
44
45
  const inquirer = __importStar(require("inquirer"));
45
46
  const chalk_1 = __importDefault(require("chalk"));
47
+ const boxen_1 = __importDefault(require("boxen"));
46
48
  const config_1 = require("./config");
47
49
  let ig = null;
48
50
  function getClient() {
@@ -51,6 +53,12 @@ function getClient() {
51
53
  }
52
54
  return ig;
53
55
  }
56
+ function isCheckpointError(err) {
57
+ return (err instanceof instagram_private_api_1.IgCheckpointError ||
58
+ err.name === 'IgCheckpointError' ||
59
+ (err.message && err.message.includes('checkpoint_required')) ||
60
+ (err.response?.body?.error_type === 'checkpoint_challenge_required'));
61
+ }
54
62
  async function login() {
55
63
  const client = getClient();
56
64
  // Check for saved session first
@@ -96,11 +104,11 @@ async function login() {
96
104
  const loggedInUser = await client.account.login(answers.username, answers.password);
97
105
  // Save session
98
106
  const serialized = await client.state.serialize();
99
- delete serialized.constants; // remove large constants to reduce file size
107
+ delete serialized.constants;
100
108
  (0, config_1.saveSession)({ username: answers.username, cookies: serialized, userId: loggedInUser.pk });
101
109
  (0, config_1.saveConfig)({ username: answers.username, userId: loggedInUser.pk });
102
110
  console.log(chalk_1.default.green(` ✓ Successfully logged in as @${answers.username}\n`));
103
- // Simulate post-login (non-critical, may fail on newer IG API versions)
111
+ // Simulate post-login (non-critical)
104
112
  try {
105
113
  await client.simulate.postLoginFlow();
106
114
  }
@@ -108,21 +116,51 @@ async function login() {
108
116
  return client;
109
117
  }
110
118
  catch (err) {
111
- if (err.name === 'IgCheckpointError') {
112
- // 2FA / Checkpoint challenge
113
- console.log(chalk_1.default.yellow('\n ⚠ Instagram requires verification (2FA/Checkpoint).'));
114
- await client.challenge.auto(true); // Trigger the challenge (sends code via SMS/email)
115
- console.log(chalk_1.default.cyan(' A verification code has been sent to your device.\n'));
119
+ // ─── Handle 2FA / Checkpoint Challenge ───
120
+ if (isCheckpointError(err)) {
121
+ console.log('');
122
+ console.log((0, boxen_1.default)(chalk_1.default.yellow.bold('⚠ Instagram Verification Required') + '\n\n' +
123
+ chalk_1.default.dim('Instagram wants to verify it\'s really you.\n') +
124
+ chalk_1.default.dim('A code will be sent to your phone or email.'), {
125
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
126
+ borderStyle: 'round',
127
+ borderColor: 'yellow',
128
+ margin: { top: 0, bottom: 0, left: 2, right: 2 },
129
+ }));
130
+ try {
131
+ await client.challenge.auto(true); // Trigger the challenge
132
+ console.log(chalk_1.default.green('\n ✓ Verification code sent!\n'));
133
+ }
134
+ catch (autoErr) {
135
+ // If auto fails, try to get challenge URL
136
+ console.log(chalk_1.default.yellow('\n ⚠ Could not auto-send code. Trying alternative...\n'));
137
+ try {
138
+ await client.challenge.auto(false);
139
+ console.log(chalk_1.default.green(' ✓ Code sent via alternative method.\n'));
140
+ }
141
+ catch {
142
+ console.error(chalk_1.default.red(' ✗ Could not send verification code.'));
143
+ console.log(chalk_1.default.dim(' Try logging in from the Instagram app first to clear the challenge.\n'));
144
+ return client; // Return anyway, let them retry
145
+ }
146
+ }
116
147
  const { code } = await inquirer.prompt([
117
148
  {
118
149
  type: 'input',
119
150
  name: 'code',
120
- message: chalk_1.default.bold('Enter the verification code:'),
121
- validate: (val) => val.length > 0 || 'Code is required',
151
+ message: chalk_1.default.bold('Enter the 6-digit code:'),
152
+ validate: (val) => {
153
+ if (val.trim().length === 0)
154
+ return 'Code is required';
155
+ if (!/^\d{6}$/.test(val.trim()))
156
+ return 'Code must be 6 digits';
157
+ return true;
158
+ },
122
159
  },
123
160
  ]);
124
161
  try {
125
- await client.challenge.sendSecurityCode(code);
162
+ console.log(chalk_1.default.cyan(' Verifying...'));
163
+ await client.challenge.sendSecurityCode(code.trim());
126
164
  const loggedInUser = await client.account.currentUser();
127
165
  const serialized = await client.state.serialize();
128
166
  delete serialized.constants;
@@ -133,10 +171,23 @@ async function login() {
133
171
  }
134
172
  catch (challengeErr) {
135
173
  console.error(chalk_1.default.red(` ✗ Verification failed: ${challengeErr.message}`));
174
+ console.log(chalk_1.default.dim(' Try opening Instagram on your phone and approving the login.\n'));
136
175
  process.exit(1);
137
176
  }
138
177
  }
139
- console.error(chalk_1.default.red(` ✗ Login failed: ${err.message}`));
178
+ // ─── Other login errors ───
179
+ console.error(chalk_1.default.red(`\n ✗ Login failed: ${err.message}`));
180
+ console.log('');
181
+ console.log((0, boxen_1.default)(chalk_1.default.dim('Possible fixes:\n') +
182
+ chalk_1.default.dim(' 1. Double-check your username and password\n') +
183
+ chalk_1.default.dim(' 2. Open Instagram on your phone and approve any login alerts\n') +
184
+ chalk_1.default.dim(' 3. Try again in a few minutes (Instagram rate limits)'), {
185
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
186
+ borderStyle: 'round',
187
+ borderColor: 'gray',
188
+ dimBorder: true,
189
+ margin: { top: 0, bottom: 1, left: 2, right: 2 },
190
+ }));
140
191
  process.exit(1);
141
192
  }
142
193
  }
@@ -144,12 +195,11 @@ async function logout() {
144
195
  (0, config_1.clearSession)();
145
196
  console.log(chalk_1.default.green(' ✓ Logged out successfully. Session cleared.\n'));
146
197
  }
147
- async function ensureLoggedIn() {
198
+ function isLoggedIn() {
148
199
  const saved = (0, config_1.loadSession)();
149
- if (!saved) {
150
- console.log(chalk_1.default.yellow(' You are not logged in. Please log in first.\n'));
151
- return login();
152
- }
200
+ return saved?.username || null;
201
+ }
202
+ async function ensureLoggedIn() {
153
203
  return login();
154
204
  }
155
205
  //# sourceMappingURL=auth.js.map
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/dm.d.ts CHANGED
@@ -1,10 +1,3 @@
1
1
  import { IgApiClient } from 'instagram-private-api';
2
- /**
3
- * Fetches and displays the DM inbox.
4
- */
5
- export declare function showInbox(client: IgApiClient): Promise<void>;
6
- /**
7
- * Opens a chat with a specific user.
8
- */
9
- export declare function openChat(client: IgApiClient, targetUsername: string): Promise<void>;
2
+ export declare function interactiveInbox(client: IgApiClient): Promise<void>;
10
3
  //# sourceMappingURL=dm.d.ts.map
package/dist/dm.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dm.d.ts","sourceRoot":"","sources":["../src/dm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMpD;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFlE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDzF"}
1
+ {"version":3,"file":"dm.d.ts","sourceRoot":"","sources":["../src/dm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAcpD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFzE"}
package/dist/dm.js CHANGED
@@ -36,294 +36,253 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.showInbox = showInbox;
40
- exports.openChat = openChat;
39
+ exports.interactiveInbox = interactiveInbox;
41
40
  const chalk_1 = __importDefault(require("chalk"));
42
- const cli_table3_1 = __importDefault(require("cli-table3"));
41
+ const boxen_1 = __importDefault(require("boxen"));
43
42
  const inquirer = __importStar(require("inquirer"));
44
43
  const ora_1 = __importDefault(require("ora"));
45
- /**
46
- * Fetches and displays the DM inbox.
47
- */
48
- async function showInbox(client) {
49
- const spinner = (0, ora_1.default)(chalk_1.default.cyan(' Fetching inbox...')).start();
50
- try {
51
- const inboxFeed = client.feed.directInbox();
52
- const threads = await inboxFeed.items();
53
- spinner.stop();
44
+ // ─── Brand Colors ───
45
+ const pink = chalk_1.default.hex('#E1306C');
46
+ const orange = chalk_1.default.hex('#F77737');
47
+ const gold = chalk_1.default.hex('#FCAF45');
48
+ const me = chalk_1.default.hex('#58C4DC');
49
+ const them = chalk_1.default.hex('#C678DD');
50
+ // ─── Inbox ───
51
+ async function interactiveInbox(client) {
52
+ while (true) {
53
+ console.clear();
54
+ console.log('');
55
+ console.log((0, boxen_1.default)(pink.bold('📬 INBOX'), {
56
+ padding: { top: 0, bottom: 0, left: 2, right: 2 },
57
+ borderStyle: 'round',
58
+ borderColor: '#E1306C',
59
+ margin: { top: 0, bottom: 0, left: 2, right: 2 },
60
+ }));
61
+ const spinner = (0, ora_1.default)({ text: chalk_1.default.dim(' Loading conversations...'), indent: 4 }).start();
62
+ let threads;
63
+ try {
64
+ const inboxFeed = client.feed.directInbox();
65
+ threads = await inboxFeed.items();
66
+ spinner.stop();
67
+ }
68
+ catch (err) {
69
+ spinner.stop();
70
+ console.error(chalk_1.default.red(`\n ✗ Failed to load inbox: ${err.message}\n`));
71
+ await pause();
72
+ return;
73
+ }
54
74
  if (!threads || threads.length === 0) {
55
- console.log(chalk_1.default.yellow('\n 📭 Your inbox is empty.\n'));
75
+ console.log(chalk_1.default.yellow('\n 📭 No conversations yet.\n'));
76
+ await pause();
56
77
  return;
57
78
  }
58
- console.log(chalk_1.default.bold.white('\n ╔══════════════════════════════════════╗'));
59
- console.log(chalk_1.default.bold.white(' ║') + chalk_1.default.bold.cyan(' 📬 YOUR INBOX ') + chalk_1.default.bold.white('║'));
60
- console.log(chalk_1.default.bold.white(' ╚══════════════════════════════════════╝\n'));
61
- const table = new cli_table3_1.default({
62
- head: [
63
- chalk_1.default.bold.cyan('#'),
64
- chalk_1.default.bold.cyan('User'),
65
- chalk_1.default.bold.cyan('Last Message'),
66
- chalk_1.default.bold.cyan('Time'),
67
- ],
68
- colWidths: [5, 22, 40, 14],
69
- style: { 'padding-left': 1, 'padding-right': 1 },
70
- chars: {
71
- 'top': '─', 'top-mid': '┬', 'top-left': '┌', 'top-right': '┐',
72
- 'bottom': '─', 'bottom-mid': '┴', 'bottom-left': '└', 'bottom-right': '┘',
73
- 'left': '│', 'left-mid': '├', 'mid': '─', 'mid-mid': '┼',
74
- 'right': '│', 'right-mid': '┤', 'middle': '│',
75
- },
76
- });
77
- threads.forEach((thread, index) => {
79
+ console.log(chalk_1.default.dim(` ${threads.length} conversations • `) + chalk_1.default.dim('Use ↑ ↓ to browse, Enter to open\n'));
80
+ // Build choices
81
+ const choices = threads.map((thread, index) => {
78
82
  const users = thread.users?.map((u) => u.username).join(', ') || 'Unknown';
79
83
  const lastItem = thread.last_permanent_item || thread.items?.[0];
80
- let lastMessage = '';
81
- if (lastItem) {
82
- if (lastItem.item_type === 'text') {
83
- lastMessage = lastItem.text || '';
84
- }
85
- else if (lastItem.item_type === 'reel_share') {
86
- lastMessage = '📷 Story reply';
87
- }
88
- else if (lastItem.item_type === 'media_share') {
89
- lastMessage = '🖼️ Shared post';
90
- }
91
- else if (lastItem.item_type === 'media') {
92
- lastMessage = '📸 Photo';
93
- }
94
- else if (lastItem.item_type === 'voice_media') {
95
- lastMessage = '🎤 Voice message';
96
- }
97
- else if (lastItem.item_type === 'animated_media') {
98
- lastMessage = '🎬 GIF';
99
- }
100
- else if (lastItem.item_type === 'like') {
101
- lastMessage = '❤️ Like';
102
- }
103
- else if (lastItem.item_type === 'link') {
104
- lastMessage = '🔗 Link';
105
- }
106
- else {
107
- lastMessage = `[${lastItem.item_type}]`;
108
- }
109
- }
110
- // Truncate message
111
- if (lastMessage.length > 36) {
112
- lastMessage = lastMessage.substring(0, 33) + '...';
113
- }
114
- // Format timestamp
115
- const timestamp = lastItem?.timestamp
84
+ const preview = getMessagePreview(lastItem);
85
+ const time = lastItem?.timestamp
116
86
  ? formatTimestamp(Number(lastItem.timestamp) / 1000)
117
87
  : '';
118
88
  const isUnread = !thread.read_state;
119
- const prefix = isUnread ? chalk_1.default.green('● ') : ' ';
120
- table.push([
121
- chalk_1.default.gray(`${index + 1}`),
122
- prefix + chalk_1.default.white(users),
123
- chalk_1.default.gray(lastMessage),
124
- chalk_1.default.dim(timestamp),
125
- ]);
89
+ const num = chalk_1.default.dim(`${(index + 1).toString().padStart(2)}`);
90
+ const dot = isUnread ? chalk_1.default.green('●') : chalk_1.default.dim('○');
91
+ const user = chalk_1.default.bold.white(truncate(users, 18).padEnd(18));
92
+ const msg = chalk_1.default.dim(truncate(preview, 30).padEnd(30));
93
+ const ts = chalk_1.default.dim(time.padStart(8));
94
+ return {
95
+ name: ` ${num} ${dot} ${user} ${msg} ${ts}`,
96
+ value: { threadId: thread.thread_id, users: thread.users, username: users },
97
+ short: `@${users}`,
98
+ };
126
99
  });
127
- console.log(table.toString());
128
- console.log(chalk_1.default.dim(`\n ${chalk_1.default.green('●')} = unread | Use ${chalk_1.default.cyan('ig chat <username>')} to open a conversation\n`));
129
- }
130
- catch (err) {
131
- spinner.stop();
132
- console.error(chalk_1.default.red(` ✗ Failed to fetch inbox: ${err.message}\n`));
100
+ choices.push(new inquirer.Separator(chalk_1.default.dim(' ─────────────────────────────────────────────────────────')), { name: ` ${chalk_1.default.dim('🔄 Refresh')}`, value: { action: 'refresh' } }, { name: ` ${chalk_1.default.dim('⬅ Back to menu')}`, value: { action: 'back' } });
101
+ const { selected } = await inquirer.prompt([
102
+ {
103
+ type: 'list',
104
+ name: 'selected',
105
+ message: pink('Pick a conversation'),
106
+ choices,
107
+ pageSize: 15,
108
+ prefix: chalk_1.default.dim(' '),
109
+ loop: false,
110
+ },
111
+ ]);
112
+ if (selected.action === 'back')
113
+ return;
114
+ if (selected.action === 'refresh')
115
+ continue;
116
+ // Open chat
117
+ const otherUser = selected.users?.[0];
118
+ await interactiveChat(client, selected.threadId, selected.username, otherUser?.pk);
133
119
  }
134
120
  }
135
- /**
136
- * Opens a chat with a specific user.
137
- */
138
- async function openChat(client, targetUsername) {
139
- const spinner = (0, ora_1.default)(chalk_1.default.cyan(` Finding @${targetUsername}...`)).start();
140
- try {
141
- // Find the user ID
142
- const userId = await client.user.getIdByUsername(targetUsername);
143
- // Find or create the thread with this user
144
- spinner.text = chalk_1.default.cyan(' Opening thread...');
145
- const threadResponse = await client.directThread.getByParticipants([userId.toString()]);
146
- const threadId = threadResponse.thread?.thread_id;
147
- if (!threadId) {
121
+ // ─── Chat ───
122
+ async function interactiveChat(client, threadId, username, userId) {
123
+ while (true) {
124
+ // Load & render messages
125
+ console.clear();
126
+ console.log('');
127
+ console.log((0, boxen_1.default)(them.bold(`💬 @${username}`), {
128
+ padding: { top: 0, bottom: 0, left: 2, right: 2 },
129
+ borderStyle: 'round',
130
+ borderColor: '#C678DD',
131
+ margin: { top: 0, bottom: 0, left: 2, right: 2 },
132
+ }));
133
+ const spinner = (0, ora_1.default)({ text: chalk_1.default.dim(' Loading messages...'), indent: 4 }).start();
134
+ let messages = [];
135
+ try {
136
+ const threadFeed = client.feed.directThread({
137
+ thread_id: threadId,
138
+ oldest_cursor: '',
139
+ });
140
+ messages = await threadFeed.items();
148
141
  spinner.stop();
149
- console.log(chalk_1.default.yellow(`\n No existing conversation with @${targetUsername}.`));
150
- console.log(chalk_1.default.dim(' Send your first message to start a conversation!\n'));
151
- // Create a new thread by sending a message
152
- await newChatLoop(client, userId, targetUsername);
142
+ }
143
+ catch (err) {
144
+ spinner.stop();
145
+ console.error(chalk_1.default.red(`\n ✗ Could not load messages: ${err.message}\n`));
146
+ await pause();
153
147
  return;
154
148
  }
155
- spinner.text = chalk_1.default.cyan(' Loading messages...');
156
- const threadFeed = client.feed.directThread({
157
- thread_id: threadId,
158
- oldest_cursor: '',
159
- });
160
- const messages = await threadFeed.items();
161
- spinner.stop();
162
- console.log(chalk_1.default.bold.white('\n ╔══════════════════════════════════════════════╗'));
163
- console.log(chalk_1.default.bold.white('') + chalk_1.default.bold.cyan(` 💬 Chat with @${targetUsername}`.padEnd(45)) + chalk_1.default.bold.white(''));
164
- console.log(chalk_1.default.bold.white(' ╚══════════════════════════════════════════════╝\n'));
165
- if (messages && messages.length > 0) {
166
- // Display messages in chronological order (oldest first)
167
- const reversed = [...messages].reverse();
168
- for (const msg of reversed) {
169
- displayMessage(msg, userId, targetUsername);
149
+ renderMessages(messages, userId, username);
150
+ // Action menu
151
+ const { action } = await inquirer.prompt([
152
+ {
153
+ type: 'list',
154
+ name: 'action',
155
+ message: them('What do you want to do?'),
156
+ choices: [
157
+ { name: ` ${me('✏️')} ${chalk_1.default.bold('Send a message')}`, value: 'send' },
158
+ { name: ` ${gold('🔄')} ${chalk_1.default.bold('Refresh')} ${chalk_1.default.dim('Reload latest messages')}`, value: 'refresh' },
159
+ new inquirer.Separator(chalk_1.default.dim(' ────────────────────────────────')),
160
+ { name: ` ${chalk_1.default.dim('⬅')} ${chalk_1.default.dim('Back to inbox')}`, value: 'back' },
161
+ ],
162
+ prefix: chalk_1.default.dim(' '),
163
+ },
164
+ ]);
165
+ if (action === 'back')
166
+ return;
167
+ if (action === 'refresh')
168
+ continue; // re-loops and re-renders
169
+ if (action === 'send') {
170
+ // Enter send mode — allow sending multiple messages back-to-back
171
+ console.log('');
172
+ console.log((0, boxen_1.default)(chalk_1.default.dim('Type your message and press Enter to send\n') +
173
+ chalk_1.default.dim('Type ') + chalk_1.default.yellow('/done') + chalk_1.default.dim(' when finished'), {
174
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
175
+ borderStyle: 'round',
176
+ borderColor: 'gray',
177
+ dimBorder: true,
178
+ margin: { top: 0, bottom: 0, left: 4, right: 4 },
179
+ }));
180
+ console.log('');
181
+ while (true) {
182
+ const { text } = await inquirer.prompt([
183
+ {
184
+ type: 'input',
185
+ name: 'text',
186
+ message: me(' ➤'),
187
+ prefix: '',
188
+ },
189
+ ]);
190
+ const trimmed = text.trim();
191
+ if (!trimmed)
192
+ continue;
193
+ if (trimmed === '/done' || trimmed === '/exit' || trimmed === '/back')
194
+ break;
195
+ const sendSpinner = (0, ora_1.default)({ text: chalk_1.default.dim(' Sending...'), indent: 6 }).start();
196
+ try {
197
+ const threadEntity = client.entity.directThread(threadId);
198
+ await threadEntity.broadcastText(trimmed);
199
+ sendSpinner.succeed(chalk_1.default.green(' Sent!'));
200
+ }
201
+ catch (err) {
202
+ sendSpinner.fail(chalk_1.default.red(` Failed: ${err.message}`));
203
+ }
170
204
  }
205
+ // After sending, loop back to refresh and show updated messages
206
+ continue;
171
207
  }
172
- else {
173
- console.log(chalk_1.default.dim(' No messages yet. Start the conversation!\n'));
174
- }
175
- // Enter interactive chat mode
176
- await chatLoop(client, threadId, targetUsername, userId);
177
208
  }
178
- catch (err) {
179
- spinner.stop();
180
- if (err.message?.includes('User not found')) {
181
- console.error(chalk_1.default.red(` ✗ User @${targetUsername} not found.\n`));
209
+ }
210
+ // ─── Render Messages ───
211
+ function renderMessages(messages, otherUserId, otherUsername) {
212
+ if (!messages || messages.length === 0) {
213
+ console.log(chalk_1.default.dim('\n No messages yet. Send one to start the conversation!\n'));
214
+ return;
215
+ }
216
+ const chronological = [...messages].reverse().slice(-15);
217
+ let lastDate = '';
218
+ console.log('');
219
+ for (const msg of chronological) {
220
+ const isFromMe = msg.user_id !== otherUserId;
221
+ const time = new Date(Number(msg.timestamp) / 1000)
222
+ .toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
223
+ const dateStr = new Date(Number(msg.timestamp) / 1000).toLocaleDateString();
224
+ // Date separator
225
+ if (dateStr !== lastDate) {
226
+ console.log(chalk_1.default.dim(`\n ────── ${dateStr} ──────`));
227
+ lastDate = dateStr;
228
+ }
229
+ const sender = isFromMe
230
+ ? me.bold(' You')
231
+ : them.bold(` @${otherUsername}`);
232
+ const content = getMessageContent(msg);
233
+ if (isFromMe) {
234
+ console.log(` ${chalk_1.default.dim(time)} ${sender} ${chalk_1.default.white(content)}`);
182
235
  }
183
236
  else {
184
- console.error(chalk_1.default.red(` ✗ Failed to open chat: ${err.message}\n`));
237
+ console.log(` ${chalk_1.default.dim(time)} ${sender} ${chalk_1.default.gray(content)}`);
185
238
  }
186
239
  }
187
- }
188
- function displayMessage(msg, otherUserId, otherUsername) {
189
- const isMe = msg.user_id !== otherUserId;
190
- const sender = isMe ? chalk_1.default.cyan('You') : chalk_1.default.magenta(`@${otherUsername}`);
191
- const time = formatTimestamp(Number(msg.timestamp) / 1000);
192
- let content = '';
193
- switch (msg.item_type) {
194
- case 'text':
195
- content = msg.text || '';
196
- break;
197
- case 'media':
198
- content = '📸 [Photo]';
199
- break;
200
- case 'voice_media':
201
- content = '🎤 [Voice message]';
202
- break;
203
- case 'animated_media':
204
- content = '🎬 [GIF]';
205
- break;
206
- case 'reel_share':
207
- content = '📷 [Story reply]';
208
- if (msg.reel_share?.text) {
209
- content += `: ${msg.reel_share.text}`;
210
- }
211
- break;
212
- case 'media_share':
213
- content = '🖼️ [Shared post]';
214
- break;
215
- case 'like':
216
- content = '❤️';
217
- break;
218
- case 'link':
219
- content = `🔗 ${msg.link?.text || '[Link]'}`;
220
- break;
221
- default:
222
- content = `[${msg.item_type}]`;
223
- }
224
- if (isMe) {
225
- console.log(` ${chalk_1.default.dim(time)} ${sender}: ${chalk_1.default.white(content)}`);
226
- }
227
- else {
228
- console.log(` ${chalk_1.default.dim(time)} ${sender}: ${chalk_1.default.gray(content)}`);
240
+ if (messages.length > 15) {
241
+ console.log(chalk_1.default.dim(`\n ... ${messages.length - 15} older messages not shown`));
229
242
  }
243
+ console.log(chalk_1.default.dim('\n ──────────────────────────────────────\n'));
230
244
  }
231
- /**
232
- * New chat loop — for when there's no existing thread. Creates thread on first message.
233
- */
234
- async function newChatLoop(client, targetUserId, targetUsername) {
235
- console.log(chalk_1.default.dim(` Type a message and press Enter to send.`));
236
- console.log(chalk_1.default.dim(` Type ${chalk_1.default.yellow('/exit')} to leave.\n`));
237
- const { message } = await inquirer.prompt([
238
- {
239
- type: 'input',
240
- name: 'message',
241
- message: chalk_1.default.green(''),
242
- prefix: '',
243
- },
244
- ]);
245
- const trimmed = message.trim();
246
- if (!trimmed || trimmed === '/exit' || trimmed === '/quit') {
247
- console.log(chalk_1.default.dim('\n 👋 Left the chat.\n'));
248
- return;
249
- }
250
- try {
251
- const threadEntity = client.entity.directThread([targetUserId.toString()]);
252
- await threadEntity.broadcastText(trimmed);
253
- const now = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
254
- console.log(` ${chalk_1.default.dim(now)} ${chalk_1.default.cyan('You')}: ${chalk_1.default.white(trimmed)}`);
255
- // Now get the thread ID and continue in chatLoop
256
- const threadResponse = await client.directThread.getByParticipants([targetUserId.toString()]);
257
- const threadId = threadResponse.thread?.thread_id;
258
- if (threadId) {
259
- await chatLoop(client, threadId, targetUsername, targetUserId);
260
- }
261
- }
262
- catch (err) {
263
- console.error(chalk_1.default.red(` ✗ Failed to send: ${err.message}`));
245
+ // ─── Helpers ───
246
+ function getMessagePreview(item) {
247
+ if (!item)
248
+ return '';
249
+ switch (item.item_type) {
250
+ case 'text': return item.text || '';
251
+ case 'reel_share': return '📷 Story reply';
252
+ case 'media_share': return '🖼️ Shared post';
253
+ case 'media': return '📸 Photo';
254
+ case 'voice_media': return '🎤 Voice message';
255
+ case 'animated_media': return '🎬 GIF';
256
+ case 'like': return '❤️ Like';
257
+ case 'link': return '🔗 Link';
258
+ case 'clip': return '🎬 Reel';
259
+ case 'placeholder': return item.placeholder?.message || '[Media]';
260
+ default: return `[${item.item_type || 'message'}]`;
264
261
  }
265
262
  }
266
- /**
267
- * Interactive chat loop — send messages back-and-forth.
268
- */
269
- async function chatLoop(client, threadId, targetUsername, targetUserId) {
270
- console.log(chalk_1.default.dim('\n ─────────────────────────────────────────'));
271
- console.log(chalk_1.default.dim(` Type a message and press Enter to send.`));
272
- console.log(chalk_1.default.dim(` Type ${chalk_1.default.yellow('/refresh')} to reload messages.`));
273
- console.log(chalk_1.default.dim(` Type ${chalk_1.default.yellow('/exit')} or press Ctrl+C to leave.\n`));
274
- while (true) {
275
- const { message } = await inquirer.prompt([
276
- {
277
- type: 'input',
278
- name: 'message',
279
- message: chalk_1.default.green(''),
280
- prefix: '',
281
- },
282
- ]);
283
- const trimmed = message.trim();
284
- if (!trimmed)
285
- continue;
286
- if (trimmed === '/exit' || trimmed === '/quit') {
287
- console.log(chalk_1.default.dim('\n 👋 Left the chat.\n'));
288
- break;
289
- }
290
- if (trimmed === '/refresh') {
291
- console.log('');
292
- const spinner = (0, ora_1.default)(chalk_1.default.cyan(' Refreshing messages...')).start();
293
- try {
294
- const threadFeed = client.feed.directThread({
295
- thread_id: threadId,
296
- oldest_cursor: '',
297
- });
298
- const messages = await threadFeed.items();
299
- spinner.stop();
300
- if (messages && messages.length > 0) {
301
- console.log(chalk_1.default.dim('\n ─── Recent Messages ───\n'));
302
- const reversed = [...messages].reverse().slice(-10); // last 10
303
- for (const msg of reversed) {
304
- displayMessage(msg, targetUserId, targetUsername);
305
- }
306
- console.log(chalk_1.default.dim('\n ─────────────────────────────────────────\n'));
307
- }
308
- }
309
- catch (err) {
310
- spinner.stop();
311
- console.error(chalk_1.default.red(` ✗ Refresh failed: ${err.message}`));
312
- }
313
- continue;
314
- }
315
- // Send the message via the thread entity
316
- try {
317
- const threadEntity = client.entity.directThread(threadId);
318
- await threadEntity.broadcastText(trimmed);
319
- const now = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
320
- console.log(` ${chalk_1.default.dim(now)} ${chalk_1.default.cyan('You')}: ${chalk_1.default.white(trimmed)}`);
321
- }
322
- catch (err) {
323
- console.error(chalk_1.default.red(` ✗ Failed to send: ${err.message}`));
324
- }
263
+ function getMessageContent(msg) {
264
+ switch (msg.item_type) {
265
+ case 'text': return msg.text || '';
266
+ case 'media': return '📸 [Photo]';
267
+ case 'voice_media': return '🎤 [Voice message]';
268
+ case 'animated_media': return '🎬 [GIF]';
269
+ case 'reel_share':
270
+ return msg.reel_share?.text
271
+ ? `📷 Story reply: ${msg.reel_share.text}`
272
+ : '📷 [Story reply]';
273
+ case 'media_share': return '🖼️ [Shared post]';
274
+ case 'like': return '❤️';
275
+ case 'link': return `🔗 ${msg.link?.text || '[Link]'}`;
276
+ case 'clip': return '🎬 [Reel]';
277
+ case 'placeholder': return msg.placeholder?.message || '[Media]';
278
+ default: return `[${msg.item_type}]`;
325
279
  }
326
280
  }
281
+ function truncate(str, len) {
282
+ if (str.length <= len)
283
+ return str;
284
+ return str.substring(0, len - 1) + '…';
285
+ }
327
286
  function formatTimestamp(epochMs) {
328
287
  const date = new Date(epochMs);
329
288
  const now = new Date();
@@ -332,13 +291,23 @@ function formatTimestamp(epochMs) {
332
291
  const diffHours = Math.floor(diffMs / 3600000);
333
292
  const diffDays = Math.floor(diffMs / 86400000);
334
293
  if (diffMins < 1)
335
- return 'just now';
294
+ return 'now';
336
295
  if (diffMins < 60)
337
- return `${diffMins}m ago`;
296
+ return `${diffMins}m`;
338
297
  if (diffHours < 24)
339
- return `${diffHours}h ago`;
298
+ return `${diffHours}h`;
340
299
  if (diffDays < 7)
341
- return `${diffDays}d ago`;
342
- return date.toLocaleDateString();
300
+ return `${diffDays}d`;
301
+ return date.toLocaleDateString([], { month: 'short', day: 'numeric' });
302
+ }
303
+ async function pause() {
304
+ await inquirer.prompt([
305
+ {
306
+ type: 'input',
307
+ name: '_',
308
+ message: chalk_1.default.dim('Press Enter to continue...'),
309
+ prefix: ' ',
310
+ },
311
+ ]);
343
312
  }
344
313
  //# sourceMappingURL=dm.js.map
package/dist/dm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dm.js","sourceRoot":"","sources":["../src/dm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dm.js","sourceRoot":"","sources":["../src/dm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,4CAmFC;AAhGD,kDAA0B;AAC1B,kDAA0B;AAC1B,mDAAqC;AACrC,8CAAsB;AAEtB,uBAAuB;AACvB,MAAM,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACpC,MAAM,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClC,MAAM,EAAE,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAElC,gBAAgB;AACT,KAAK,UAAU,gBAAgB,CAAC,MAAmB;IACtD,OAAO,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACP,IAAA,eAAK,EAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC1B,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;YACjD,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SACnD,CAAC,CACL,CAAC;QAEF,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,eAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAEzF,IAAI,OAAc,CAAC;QACnB,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YACzE,MAAM,KAAK,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC5D,MAAM,KAAK,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,MAAM,qBAAqB,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAErH,gBAAgB;QAChB,MAAM,OAAO,GAAU,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,KAAa,EAAE,EAAE;YAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;YAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,QAAQ,EAAE,SAAS;gBAC5B,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;gBACpD,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YAEpC,MAAM,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM,EAAE,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvC,OAAO;gBACH,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,EAAE;gBAChD,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC3E,KAAK,EAAE,IAAI,KAAK,EAAE;aACrB,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CACR,IAAI,QAAQ,CAAC,SAAS,CAAC,eAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,EACnG,EAAE,IAAI,EAAE,SAAS,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAC3E,EAAE,IAAI,EAAE,SAAS,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAChF,CAAC;QAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACvC;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC;gBACpC,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAE,KAAK;aACd;SACJ,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO;QACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;YAAE,SAAS;QAE5C,YAAY;QACZ,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC;AACL,CAAC;AAED,eAAe;AACf,KAAK,UAAU,eAAe,CAC1B,MAAmB,EACnB,QAAgB,EAChB,QAAgB,EAChB,MAAc;IAEd,OAAO,IAAI,EAAE,CAAC;QACV,yBAAyB;QACzB,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACP,IAAA,eAAK,EAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,QAAQ,EAAE,CAAC,EAAE;YACjC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;YACjD,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SACnD,CAAC,CACL,CAAC;QAEF,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,eAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACpF,IAAI,QAAQ,GAAU,EAAE,CAAC;QAEzB,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;gBACxC,SAAS,EAAE,QAAQ;gBACnB,aAAa,EAAE,EAAE;aACb,CAAC,CAAC;YACV,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YAC5E,MAAM,KAAK,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE3C,cAAc;QACd,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACrC;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,CAAC,yBAAyB,CAAC;gBACxC,OAAO,EAAE;oBACL,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;oBAC1E,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;oBACzH,IAAI,QAAQ,CAAC,SAAS,CAAC,eAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;oBAC1E,EAAE,IAAI,EAAE,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;iBACjF;gBACD,MAAM,EAAE,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC;aAC1B;SACJ,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO;QAE9B,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS,CAAC,0BAA0B;QAE9D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,iEAAiE;YACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CACP,IAAA,eAAK,EACD,eAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC;gBACxD,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EACxE;gBACI,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;gBACjD,WAAW,EAAE,OAAO;gBACpB,WAAW,EAAE,MAAM;gBACnB,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aACnD,CACJ,CACJ,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,OAAO,IAAI,EAAE,CAAC;gBACV,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;oBACnC;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC;wBAClB,MAAM,EAAE,EAAE;qBACb;iBACJ,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO;oBAAE,SAAS;gBACvB,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO;oBAAE,MAAM;gBAE7E,MAAM,WAAW,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC/E,IAAI,CAAC;oBACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBAC1D,MAAM,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAC1C,WAAW,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAChB,WAAW,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;YACD,gEAAgE;YAChE,SAAS;QACb,CAAC;IACL,CAAC;AACL,CAAC;AAED,0BAA0B;AAC1B,SAAS,cAAc,CAAC,QAAe,EAAE,WAAmB,EAAE,aAAqB;IAC/E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;QACvF,OAAO;IACX,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;aAC9C,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAE5E,iBAAiB;QACjB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,OAAO,SAAS,CAAC,CAAC,CAAC;YACzD,QAAQ,GAAG,OAAO,CAAC;QACvB,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ;YACnB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YACrB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,KAAK,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,KAAK,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,GAAG,EAAE,2BAA2B,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,kBAAkB;AAClB,SAAS,iBAAiB,CAAC,IAAS;IAChC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,KAAK,YAAY,CAAC,CAAC,OAAO,gBAAgB,CAAC;QAC3C,KAAK,aAAa,CAAC,CAAC,OAAO,kBAAkB,CAAC;QAC9C,KAAK,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC;QAChC,KAAK,aAAa,CAAC,CAAC,OAAO,kBAAkB,CAAC;QAC9C,KAAK,gBAAgB,CAAC,CAAC,OAAO,QAAQ,CAAC;QACvC,KAAK,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC;QAC9B,KAAK,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC;QAC9B,KAAK,aAAa,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,SAAS,CAAC;QAClE,OAAO,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,GAAG,CAAC;IACvD,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAQ;IAC/B,QAAQ,GAAG,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACnC,KAAK,OAAO,CAAC,CAAC,OAAO,YAAY,CAAC;QAClC,KAAK,aAAa,CAAC,CAAC,OAAO,oBAAoB,CAAC;QAChD,KAAK,gBAAgB,CAAC,CAAC,OAAO,UAAU,CAAC;QACzC,KAAK,YAAY;YACb,OAAO,GAAG,CAAC,UAAU,EAAE,IAAI;gBACvB,CAAC,CAAC,mBAAmB,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC1C,CAAC,CAAC,kBAAkB,CAAC;QAC7B,KAAK,aAAa,CAAC,CAAC,OAAO,oBAAoB,CAAC;QAChD,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,CAAC,OAAO,WAAW,CAAC;QAChC,KAAK,aAAa,CAAC,CAAC,OAAO,GAAG,CAAC,WAAW,EAAE,OAAO,IAAI,SAAS,CAAC;QACjE,OAAO,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC;IACzC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAW;IACtC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAClC,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3C,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;IAE/C,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,QAAQ,GAAG,EAAE;QAAE,OAAO,GAAG,QAAQ,GAAG,CAAC;IACzC,IAAI,SAAS,GAAG,EAAE;QAAE,OAAO,GAAG,SAAS,GAAG,CAAC;IAC3C,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,GAAG,QAAQ,GAAG,CAAC;IACxC,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,KAAK;IAChB,MAAM,QAAQ,CAAC,MAAM,CAAC;QAClB;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,eAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC;YAChD,MAAM,EAAE,IAAI;SACf;KACJ,CAAC,CAAC;AACP,CAAC"}
package/dist/index.js CHANGED
@@ -1,64 +1,138 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
3
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
38
  };
6
39
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const commander_1 = require("commander");
8
40
  const chalk_1 = __importDefault(require("chalk"));
41
+ const boxen_1 = __importDefault(require("boxen"));
9
42
  const auth_1 = require("./auth");
10
43
  const dm_1 = require("./dm");
11
- const program = new commander_1.Command();
12
- const BANNER = `
13
- ${chalk_1.default.bold.magenta(' ╦╗╗╔═╗╔╦╗╔═╗ ╔═╗╦ ╦')}
14
- ${chalk_1.default.bold.magenta(' ║║║╚═╗ ║ ╠═╣───║ ║ ║')}
15
- ${chalk_1.default.bold.magenta(' ╩╝╚╚═╝ ╩ ╩ ╩ ╚═╝╩═╝╩')}
16
- ${chalk_1.default.dim(' Distraction-free Instagram from your terminal')}
17
- ${chalk_1.default.dim(' ─────────────────────────────────────────────')}
18
- `;
19
- program
20
- .name('ig')
21
- .description('Distraction-free Instagram CLI — DMs only, no reels, no feed.')
22
- .version('1.0.0')
23
- .addHelpText('before', BANNER);
24
- // ─── Login ───
25
- program
26
- .command('login')
27
- .description('Log in to your Instagram account')
28
- .action(async () => {
29
- console.log(BANNER);
30
- await (0, auth_1.login)();
31
- });
32
- // ─── Logout ───
33
- program
34
- .command('logout')
35
- .description('Log out and clear saved session')
36
- .action(async () => {
37
- console.log(BANNER);
38
- await (0, auth_1.logout)();
39
- });
40
- // ─── Inbox ───
41
- program
42
- .command('inbox')
43
- .description('View your DM inbox')
44
- .action(async () => {
45
- console.log(BANNER);
46
- const client = await (0, auth_1.ensureLoggedIn)();
47
- await (0, dm_1.showInbox)(client);
48
- });
49
- // ─── Chat ───
50
- program
51
- .command('chat <username>')
52
- .description('Open a chat with a specific user')
53
- .action(async (username) => {
54
- console.log(BANNER);
55
- const client = await (0, auth_1.ensureLoggedIn)();
56
- await (0, dm_1.openChat)(client, username);
57
- });
58
- // ─── Default: show help ───
59
- if (!process.argv.slice(2).length) {
60
- console.log(BANNER);
61
- program.outputHelp();
44
+ const inquirer = __importStar(require("inquirer"));
45
+ // ─── Brand Colors ───
46
+ const pink = chalk_1.default.hex('#E1306C');
47
+ const orange = chalk_1.default.hex('#F77737');
48
+ const gold = chalk_1.default.hex('#FCAF45');
49
+ function showWelcome() {
50
+ console.clear();
51
+ const logo = `${pink.bold(' ╦╗╗╔═╗╔╦╗╔═╗')} ${orange.bold('╔═╗╦ ╦')}
52
+ ${pink.bold(' ║║║╚═╗ ║ ╠═╣')}${chalk_1.default.dim('───')}${orange.bold('║ ║ ║')}
53
+ ${gold.bold(' ╩╝╚╚═╝ ╩ ╩ ╩')} ${gold.bold('╚═╝╩═╝╩')}`;
54
+ console.log('\n' +
55
+ (0, boxen_1.default)(logo + '\n\n' + chalk_1.default.white.bold(' Distraction-free Instagram') + '\n' + chalk_1.default.dim(' DMs only • No reels • No feed • No stories'), {
56
+ padding: { top: 1, bottom: 1, left: 2, right: 2 },
57
+ borderStyle: 'round',
58
+ borderColor: '#E1306C',
59
+ margin: { top: 0, bottom: 0, left: 2, right: 2 },
60
+ }));
61
+ const status = (0, auth_1.isLoggedIn)();
62
+ if (status) {
63
+ console.log(chalk_1.default.green(` ✓ Logged in as @${status}`));
64
+ }
65
+ else {
66
+ console.log(chalk_1.default.yellow(` ○ Not logged in`));
67
+ }
68
+ console.log('');
69
+ }
70
+ function showTip(text) {
71
+ console.log((0, boxen_1.default)(chalk_1.default.dim(text), {
72
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
73
+ borderStyle: 'round',
74
+ borderColor: 'gray',
75
+ dimBorder: true,
76
+ margin: { top: 0, bottom: 1, left: 4, right: 4 },
77
+ }));
62
78
  }
63
- program.parse(process.argv);
79
+ async function mainMenu() {
80
+ showWelcome();
81
+ showTip('💡 Use ↑ ↓ arrow keys to navigate, Enter to select');
82
+ while (true) {
83
+ const loggedIn = (0, auth_1.isLoggedIn)();
84
+ const choices = [];
85
+ if (loggedIn) {
86
+ choices.push({ name: ` ${pink('📬')} ${chalk_1.default.bold('Open Inbox')} ${chalk_1.default.dim('View & reply to DMs')}`, value: 'inbox' }, new inquirer.Separator(chalk_1.default.dim(' ─────────────────────────────────────')), { name: ` ${chalk_1.default.red('🚪')} ${chalk_1.default.bold('Logout')} ${chalk_1.default.dim('Clear saved session')}`, value: 'logout' });
87
+ }
88
+ else {
89
+ choices.push({ name: ` ${chalk_1.default.green('🔑')} ${chalk_1.default.bold('Login')} ${chalk_1.default.dim('Connect your Instagram')}`, value: 'login' });
90
+ }
91
+ choices.push(new inquirer.Separator(chalk_1.default.dim(' ─────────────────────────────────────')), { name: ` ${chalk_1.default.dim('👋')} ${chalk_1.default.dim('Exit')}`, value: 'exit' });
92
+ const { action } = await inquirer.prompt([
93
+ {
94
+ type: 'list',
95
+ name: 'action',
96
+ message: pink.bold('What would you like to do?'),
97
+ choices,
98
+ prefix: chalk_1.default.dim(' '),
99
+ },
100
+ ]);
101
+ switch (action) {
102
+ case 'login':
103
+ console.log('');
104
+ await (0, auth_1.login)();
105
+ showWelcome();
106
+ break;
107
+ case 'logout':
108
+ console.log('');
109
+ await (0, auth_1.logout)();
110
+ showWelcome();
111
+ break;
112
+ case 'inbox':
113
+ try {
114
+ const client = await (0, auth_1.ensureLoggedIn)();
115
+ await (0, dm_1.interactiveInbox)(client);
116
+ }
117
+ catch (err) {
118
+ console.error(chalk_1.default.red(`\n ✗ ${err.message}\n`));
119
+ }
120
+ showWelcome();
121
+ break;
122
+ case 'exit':
123
+ console.log('');
124
+ console.log((0, boxen_1.default)(chalk_1.default.dim('Thanks for using ') + pink.bold('INSTA-CLI') + chalk_1.default.dim(' 👋'), {
125
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
126
+ borderStyle: 'round',
127
+ borderColor: '#E1306C',
128
+ margin: { top: 0, bottom: 1, left: 4, right: 4 },
129
+ }));
130
+ process.exit(0);
131
+ }
132
+ }
133
+ }
134
+ mainMenu().catch((err) => {
135
+ console.error(chalk_1.default.red(`Fatal error: ${err.message}`));
136
+ process.exit(1);
137
+ });
64
138
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,iCAAuD;AACvD,6BAA2C;AAE3C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,MAAM,MAAM,GAAG;EACb,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC;EAC9C,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC;EAC9C,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC;EAC9C,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC;EAC5D,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC;CAC7D,CAAC;AAEF,OAAO;KACF,IAAI,CAAC,IAAI,CAAC;KACV,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEnC,gBAAgB;AAChB,OAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,IAAA,YAAK,GAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEP,iBAAiB;AACjB,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,IAAA,aAAM,GAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEP,gBAAgB;AAChB,OAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAc,GAAE,CAAC;IACtC,MAAM,IAAA,cAAS,EAAC,MAAM,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEP,eAAe;AACf,OAAO;KACF,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;IAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAc,GAAE,CAAC;IACtC,MAAM,IAAA,aAAQ,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEP,6BAA6B;AAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,UAAU,EAAE,CAAC;AACzB,CAAC;AAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "insta-dista-cli",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "Distraction-free Instagram CLI — DMs only, no reels, no feed, no stories.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -27,6 +27,7 @@
27
27
  "README.md"
28
28
  ],
29
29
  "dependencies": {
30
+ "boxen": "^5.1.2",
30
31
  "chalk": "^4.1.2",
31
32
  "cli-table3": "^0.6.5",
32
33
  "commander": "^14.0.3",