ziptoweb 1.0.1 → 1.0.3

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 (2) hide show
  1. package/bin/cli.js +81 -5
  2. package/package.json +1 -1
package/bin/cli.js CHANGED
@@ -162,20 +162,92 @@ async function login() {
162
162
  program
163
163
  .name('ziptoweb')
164
164
  .description('CLI для деплоя статических сайтов на ZipToWeb')
165
- .version('1.0.0');
165
+ .version('1.0.2')
166
+ .addHelpText('after', `
167
+ ${chalk.hex('#e67e4d').bold('Примеры использования:')}
168
+
169
+ ${chalk.gray('# Авторизация (первый раз)')}
170
+ ${chalk.white('$ ziptoweb login')}
171
+
172
+ ${chalk.gray('# Деплой текущей директории')}
173
+ ${chalk.white('$ ziptoweb deploy')}
174
+
175
+ ${chalk.gray('# Деплой конкретной папки')}
176
+ ${chalk.white('$ ziptoweb deploy ./dist')}
177
+
178
+ ${chalk.gray('# Деплой с указанием поддомена')}
179
+ ${chalk.white('$ ziptoweb deploy --name myproject')}
180
+
181
+ ${chalk.hex('#e67e4d').bold('Лимиты:')}
182
+
183
+ ${chalk.white('Бесплатный план:')}
184
+ • Максимум 5 сайтов
185
+ • До 50 МБ на сайт
186
+ • До 1000 файлов
187
+ • 10 загрузок в час
188
+
189
+ ${chalk.white('Pro план (299₽/мес):')}
190
+ • Безлимит сайтов
191
+ • До 100 МБ на сайт
192
+ • Приоритетная поддержка
193
+
194
+ ${chalk.hex('#e67e4d').bold('Поддержка:')}
195
+
196
+ Документация: ${chalk.white('https://ziptoweb.ru')}
197
+ Dashboard: ${chalk.white('https://ziptoweb.ru/dashboard')}
198
+ Email: ${chalk.white('support@ziptoweb.ru')}
199
+ `);
166
200
 
167
201
  program
168
202
  .command('login')
169
- .description('Авторизоваться в ZipToWeb')
203
+ .description('Авторизоваться в ZipToWeb через браузер')
204
+ .addHelpText('after', `
205
+ ${chalk.gray('Пример:')}
206
+ ${chalk.white('$ ziptoweb login')}
207
+
208
+ ${chalk.gray('После выполнения команды:')}
209
+ 1. Откроется ссылка для авторизации
210
+ 2. Войдите через браузер
211
+ 3. Токен сохранится автоматически в ~/.ziptoweb/token
212
+ `)
170
213
  .action(async () => {
171
214
  await login();
172
215
  });
173
216
 
174
217
  program
175
218
  .command('deploy')
176
- .description('Задеплоить директорию на ZipToWeb')
177
- .argument('[path]', 'Путь к директории для деплоя (по умолчанию текущая)', '.')
178
- .option('-n, --name <name>', 'Имя поддомена')
219
+ .description('Задеплоить статический сайт на ZipToWeb')
220
+ .argument('[path]', 'Путь к директории (по умолчанию текущая)', '.')
221
+ .option('-n, --name <name>', 'Имя поддомена (например: mysite)')
222
+ .addHelpText('after', `
223
+ ${chalk.gray('Примеры:')}
224
+
225
+ ${chalk.gray('# Деплой текущей директории с автоматическим именем')}
226
+ ${chalk.white('$ ziptoweb deploy')}
227
+
228
+ ${chalk.gray('# Деплой папки dist')}
229
+ ${chalk.white('$ ziptoweb deploy ./dist')}
230
+
231
+ ${chalk.gray('# Деплой с конкретным поддоменом')}
232
+ ${chalk.white('$ ziptoweb deploy --name myproject')}
233
+ ${chalk.gray(' → Сайт будет доступен: https://myproject.ziptoweb.ru')}
234
+
235
+ ${chalk.gray('# Деплой React/Vue build')}
236
+ ${chalk.white('$ npm run build && ziptoweb deploy ./build')}
237
+
238
+ ${chalk.hex('#e67e4d').bold('Что можно деплоить:')}
239
+ • HTML/CSS/JS сайты
240
+ • React, Vue, Angular builds
241
+ • Статические генераторы (Hugo, Jekyll)
242
+ • Экспорты из Figma, Tilda, Webflow
243
+ • Портфолио, лендинги, документация
244
+
245
+ ${chalk.hex('#e67e4d').bold('Безопасность:')}
246
+ • Автоматическая проверка на симлинки
247
+ • Защита от path traversal
248
+ • Предупреждения о .env и .git файлах
249
+ • Проверка размера и количества файлов
250
+ `)
179
251
  .action(async (dirPath, options) => {
180
252
  let token = getToken();
181
253
 
@@ -353,6 +425,10 @@ program
353
425
  } else if (error.response?.status === 401) {
354
426
  console.error(chalk.red(' Токен недействителен. Выполните: ziptoweb login'));
355
427
  if (fs.existsSync(TOKEN_FILE)) fs.unlinkSync(TOKEN_FILE);
428
+ } else if (error.response?.status === 429) {
429
+ console.error(chalk.hex('#e67e4d')('\n ⚠ Превышен лимит загрузок'));
430
+ console.error(chalk.white(' ' + (error.response?.data?.error || 'Слишком много запросов')));
431
+ console.error(chalk.gray(' Лимит: 10 загрузок в час\n'));
356
432
  } else if (error.response?.status === 403 && error.response?.data?.needsUpgrade) {
357
433
  console.error(chalk.hex('#e67e4d')('\n ⚠ Достигнут лимит сайтов'));
358
434
  console.error(chalk.white(' Бесплатный план: максимум 5 сайтов'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ziptoweb",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "CLI для деплоя статических сайтов на ZipToWeb за 30 секунд",
5
5
  "main": "index.js",
6
6
  "bin": {