@zhin.js/cli 1.0.13 → 1.0.15

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.
@@ -9,6 +9,7 @@ export const newCommand = new Command('new')
9
9
  .argument('[plugin-name]', '插件名称(如: my-plugin)')
10
10
  .option('--is-official', '是否为官方插件', false)
11
11
  .option('--skip-install', '跳过依赖安装', false)
12
+ .option('--type <type>', '插件类型 (normal|service|adapter)', 'normal')
12
13
  .action(async (pluginName, options) => {
13
14
  try {
14
15
  let name = pluginName;
@@ -39,7 +40,24 @@ export const newCommand = new Command('new')
39
40
  logger.error(`插件目录已存在: ${pluginDir}`);
40
41
  process.exit(1);
41
42
  }
42
- logger.info(`正在创建插件包 ${name}...`);
43
+ // 询问插件类型(如果未指定)
44
+ if (!options.type) {
45
+ const { type } = await inquirer.prompt([
46
+ {
47
+ type: 'list',
48
+ name: 'type',
49
+ message: '请选择插件类型:',
50
+ choices: [
51
+ { name: '普通插件 (Normal)', value: 'normal' },
52
+ { name: '服务 (Service)', value: 'service' },
53
+ { name: '适配器 (Adapter)', value: 'adapter' }
54
+ ],
55
+ default: 'normal'
56
+ }
57
+ ]);
58
+ options.type = type;
59
+ }
60
+ logger.info(`正在创建${options.type === 'service' ? '服务' : options.type === 'adapter' ? '适配器' : '插件'}包 ${name}...`);
43
61
  // 创建插件包结构
44
62
  await createPluginPackage(pluginDir, name, options);
45
63
  // 自动添加到 app/package.json
@@ -58,7 +76,12 @@ export const newCommand = new Command('new')
58
76
  logger.log(` pnpm publish`);
59
77
  }
60
78
  catch (error) {
61
- logger.error(`创建插件失败: ${error}`);
79
+ const errorMessage = error instanceof Error ? error.message : String(error);
80
+ const errorStack = error instanceof Error ? error.stack : undefined;
81
+ logger.error(`创建插件失败: ${errorMessage}`);
82
+ if (errorStack && process.env.DEBUG) {
83
+ logger.error(errorStack);
84
+ }
62
85
  process.exit(1);
63
86
  }
64
87
  });
@@ -71,6 +94,7 @@ async function createPluginPackage(pluginDir, pluginName, options) {
71
94
  await fs.ensureDir(path.join(pluginDir, 'client'));
72
95
  await fs.ensureDir(path.join(pluginDir, 'lib'));
73
96
  await fs.ensureDir(path.join(pluginDir, 'dist'));
97
+ await fs.ensureDir(path.join(pluginDir, 'tests'));
74
98
  // 创建 package.json
75
99
  const packageJson = {
76
100
  name: packageName,
@@ -102,6 +126,9 @@ async function createPluginPackage(pluginDir, pluginName, options) {
102
126
  'build:client': 'zhin-console build',
103
127
  dev: 'tsc --watch',
104
128
  clean: 'rm -rf lib dist',
129
+ test: 'vitest run',
130
+ 'test:watch': 'vitest',
131
+ 'test:coverage': 'vitest run --coverage',
105
132
  prepublishOnly: 'pnpm build'
106
133
  },
107
134
  keywords: [
@@ -126,7 +153,9 @@ async function createPluginPackage(pluginDir, pluginName, options) {
126
153
  "@zhin.js/client": "workspace:*",
127
154
  'lucide-react': 'latest',
128
155
  'radix-ui': 'latest',
129
- '@radix-ui/themes': 'latest'
156
+ '@radix-ui/themes': 'latest',
157
+ 'vitest': 'latest',
158
+ '@vitest/coverage-v8': 'latest'
130
159
  }
131
160
  };
132
161
  await fs.writeJson(path.join(pluginDir, 'package.json'), packageJson, { spaces: 2 });
@@ -301,6 +330,8 @@ dist/
301
330
  .DS_Store
302
331
  `;
303
332
  await fs.writeFile(path.join(pluginDir, '.gitignore'), gitignoreContent);
333
+ // 生成测试文件
334
+ await generateTestFiles(pluginDir, pluginName, capitalizedName, options);
304
335
  // 安装依赖
305
336
  if (!options.skipInstall) {
306
337
  logger.info('正在安装依赖...');
@@ -316,6 +347,504 @@ dist/
316
347
  }
317
348
  }
318
349
  }
350
+ /**
351
+ * 生成测试文件
352
+ */
353
+ async function generateTestFiles(pluginDir, pluginName, capitalizedName, options) {
354
+ const testsDir = path.join(pluginDir, 'tests');
355
+ const pluginType = options.type || 'plugin';
356
+ // 根据插件类型生成不同的测试文件
357
+ if (pluginType === 'service') {
358
+ await generateServiceTest(testsDir, pluginName, capitalizedName);
359
+ }
360
+ else if (pluginType === 'adapter') {
361
+ await generateAdapterTest(testsDir, pluginName, capitalizedName);
362
+ }
363
+ else {
364
+ await generatePluginTest(testsDir, pluginName, capitalizedName);
365
+ }
366
+ logger.success('✓ 测试文件已生成');
367
+ }
368
+ /**
369
+ * 生成普通插件测试
370
+ */
371
+ async function generatePluginTest(testsDir, pluginName, capitalizedName) {
372
+ const testContent = `import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
373
+ import { Plugin } from '@zhin.js/core'
374
+
375
+ describe('${capitalizedName} Plugin', () => {
376
+ let plugin: Plugin
377
+ let rootPlugin: Plugin
378
+
379
+ beforeEach(async () => {
380
+ rootPlugin = new Plugin('/test/root-plugin.ts')
381
+ plugin = new Plugin('/plugins/${pluginName}/src/index.ts', rootPlugin)
382
+ })
383
+
384
+ afterEach(async () => {
385
+ if (plugin && plugin.started) {
386
+ await plugin.stop()
387
+ }
388
+ })
389
+
390
+ describe('Plugin Instance', () => {
391
+ it('should create plugin instance', () => {
392
+ expect(plugin).toBeDefined()
393
+ expect(plugin).toBeInstanceOf(Plugin)
394
+ })
395
+
396
+ it('should have correct name', () => {
397
+ expect(plugin.name).toBe('${pluginName}')
398
+ })
399
+
400
+ it('should have parent plugin', () => {
401
+ expect(plugin.parent).toBe(rootPlugin)
402
+ })
403
+
404
+ it('should have logger', () => {
405
+ expect(plugin.logger).toBeDefined()
406
+ expect(typeof plugin.logger.info).toBe('function')
407
+ })
408
+ })
409
+
410
+ describe('Plugin Lifecycle', () => {
411
+ it('should start successfully', async () => {
412
+ await expect(plugin.start()).resolves.not.toThrow()
413
+ expect(plugin.started).toBe(true)
414
+ })
415
+
416
+ it('should stop successfully', async () => {
417
+ await plugin.start()
418
+ await expect(plugin.stop()).resolves.not.toThrow()
419
+ expect(plugin.started).toBe(false)
420
+ })
421
+
422
+ it('should emit mounted event on start', async () => {
423
+ const mountedSpy = vi.fn()
424
+ plugin.on('mounted', mountedSpy)
425
+
426
+ await plugin.start()
427
+
428
+ expect(mountedSpy).toHaveBeenCalled()
429
+ })
430
+
431
+ it('should emit dispose event on stop', async () => {
432
+ const disposeSpy = vi.fn()
433
+ plugin.on('dispose', disposeSpy)
434
+
435
+ await plugin.start()
436
+ await plugin.stop()
437
+
438
+ expect(disposeSpy).toHaveBeenCalled()
439
+ })
440
+ })
441
+
442
+ describe('Plugin Features', () => {
443
+ it('should register middleware', () => {
444
+ plugin.addMiddleware(async (event, next) => {
445
+ return next()
446
+ })
447
+
448
+ expect(plugin.middlewares.length).toBeGreaterThan(0)
449
+ })
450
+
451
+ it('should execute middleware', async () => {
452
+ const executionOrder: number[] = []
453
+
454
+ plugin.addMiddleware(async (event, next) => {
455
+ executionOrder.push(1)
456
+ await next()
457
+ })
458
+
459
+ plugin.addMiddleware(async (event, next) => {
460
+ executionOrder.push(2)
461
+ await next()
462
+ })
463
+
464
+ const mockEvent = {
465
+ $adapter: 'test',
466
+ $bot: 'test-bot',
467
+ $content: [],
468
+ $raw: 'test'
469
+ } as any
470
+
471
+ await plugin.middleware(mockEvent, async () => {})
472
+
473
+ expect(executionOrder).toEqual([1, 2])
474
+ })
475
+ })
476
+
477
+ describe('Custom Tests', () => {
478
+ // 在这里添加你的自定义测试
479
+ it('should pass custom test', () => {
480
+ expect(true).toBe(true)
481
+ })
482
+ })
483
+ })
484
+ `;
485
+ await fs.writeFile(path.join(testsDir, 'index.test.ts'), testContent);
486
+ }
487
+ /**
488
+ * 生成服务测试
489
+ */
490
+ async function generateServiceTest(testsDir, pluginName, capitalizedName) {
491
+ const testContent = `import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
492
+ import { Plugin } from '@zhin.js/core'
493
+
494
+ describe('${capitalizedName} Service', () => {
495
+ let plugin: Plugin
496
+ let service: any
497
+
498
+ beforeEach(async () => {
499
+ plugin = new Plugin('/test/service-plugin.ts')
500
+ // TODO: 初始化你的服务实例
501
+ // service = await createYourService(plugin)
502
+ })
503
+
504
+ afterEach(() => {
505
+ if (plugin && typeof (plugin as any).stop === 'function') {
506
+ (plugin as any).stop()
507
+ }
508
+ })
509
+
510
+ describe('Service Instance', () => {
511
+ it('should create service instance', () => {
512
+ // TODO: 取消注释并实现
513
+ // expect(service).toBeDefined()
514
+ // expect(service).not.toBeNull()
515
+ expect(true).toBe(true)
516
+ })
517
+
518
+ it('should have correct type', () => {
519
+ // TODO: 取消注释并实现
520
+ // expect(typeof service).toBe('object')
521
+ expect(true).toBe(true)
522
+ })
523
+ })
524
+
525
+ describe('Service Methods', () => {
526
+ it('should have required methods', () => {
527
+ // TODO: 添加你的服务方法测试
528
+ // expect(service).toHaveProperty('methodName')
529
+ // expect(typeof service.methodName).toBe('function')
530
+ expect(true).toBe(true)
531
+ })
532
+
533
+ it('should execute methods correctly', async () => {
534
+ // TODO: 测试方法执行
535
+ // const result = await service.methodName()
536
+ // expect(result).toBeDefined()
537
+ expect(true).toBe(true)
538
+ })
539
+ })
540
+
541
+ describe('Service Lifecycle', () => {
542
+ it('should handle initialization', async () => {
543
+ // TODO: 测试初始化
544
+ expect(true).toBe(true)
545
+ })
546
+
547
+ it('should handle cleanup on dispose', async () => {
548
+ // TODO: 测试清理逻辑
549
+ expect(true).toBe(true)
550
+ })
551
+ })
552
+
553
+ describe('Service Dependencies', () => {
554
+ it('should inject required dependencies', () => {
555
+ // TODO: 测试依赖注入
556
+ // plugin.provide({ name: 'dep', value: mockDep })
557
+ // const dep = plugin.inject('dep')
558
+ // expect(dep).toBeDefined()
559
+ expect(true).toBe(true)
560
+ })
561
+ })
562
+
563
+ describe('Custom Tests', () => {
564
+ // 在这里添加你的自定义测试
565
+ it('should pass custom test', () => {
566
+ expect(true).toBe(true)
567
+ })
568
+ })
569
+ })
570
+ `;
571
+ await fs.writeFile(path.join(testsDir, 'index.test.ts'), testContent);
572
+ }
573
+ /**
574
+ * 生成适配器测试
575
+ */
576
+ async function generateAdapterTest(testsDir, pluginName, capitalizedName) {
577
+ const testContent = `import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
578
+ import { Plugin, Adapter, Bot } from '@zhin.js/core'
579
+ import { EventEmitter } from 'events'
580
+
581
+ // TODO: 导入你的适配器和 Bot 类
582
+ // import { ${capitalizedName}Adapter, ${capitalizedName}Bot } from '../src/index'
583
+
584
+ // Mock Bot 类(用于测试)
585
+ class Mock${capitalizedName}Bot extends EventEmitter implements Bot {
586
+ adapter: string
587
+ unique: string
588
+ self_id: string
589
+ quote_self: boolean
590
+ forward_length: number
591
+ $connected: boolean = false
592
+
593
+ constructor(adapter: any, config: any) {
594
+ super()
595
+ this.adapter = '${pluginName}'
596
+ this.unique = config.name || 'mock-bot'
597
+ this.self_id = config.self_id || 'mock-bot-id'
598
+ this.quote_self = config.quote_self ?? true
599
+ this.forward_length = config.forward_length ?? 3
600
+ }
601
+
602
+ async connect() {
603
+ this.$connected = true
604
+ this.emit('online')
605
+ return true
606
+ }
607
+
608
+ async disconnect() {
609
+ this.$connected = false
610
+ this.emit('offline')
611
+ return true
612
+ }
613
+
614
+ async sendMessage(channel_id: string, content: any) {
615
+ return 'mock-message-id'
616
+ }
617
+
618
+ async recallMessage(message_id: string) {
619
+ return true
620
+ }
621
+ }
622
+
623
+ // Mock Adapter 类(用于测试)
624
+ class Mock${capitalizedName}Adapter extends Adapter<any, any> {
625
+ constructor(plugin: Plugin, name: string, config: any[]) {
626
+ super(plugin, name)
627
+ config.forEach(cfg => {
628
+ const bot = this.createBot(cfg)
629
+ this.bots.set(bot.unique, bot)
630
+ })
631
+ }
632
+
633
+ createBot(config: any): Bot {
634
+ return new Mock${capitalizedName}Bot(this, config)
635
+ }
636
+ }
637
+
638
+ describe('${capitalizedName} Adapter', () => {
639
+ let plugin: Plugin
640
+ let adapter: Mock${capitalizedName}Adapter
641
+
642
+ beforeEach(() => {
643
+ plugin = new Plugin('/test/adapter-plugin.ts')
644
+ adapter = new Mock${capitalizedName}Adapter(plugin, '${pluginName}', [
645
+ { name: 'test-bot', token: 'test-token' }
646
+ ])
647
+ })
648
+
649
+ afterEach(async () => {
650
+ if (adapter) {
651
+ await adapter.stop()
652
+ }
653
+ })
654
+
655
+ describe('Adapter Instance', () => {
656
+ it('should create adapter instance', () => {
657
+ expect(adapter).toBeDefined()
658
+ expect(adapter).toBeInstanceOf(Adapter)
659
+ })
660
+
661
+ it('should have correct name', () => {
662
+ expect(adapter.name).toBe('${pluginName}')
663
+ })
664
+
665
+ it('should have plugin reference', () => {
666
+ expect(adapter.plugin).toBe(plugin)
667
+ })
668
+
669
+ it('should have logger', () => {
670
+ expect(adapter.logger).toBeDefined()
671
+ expect(typeof adapter.logger.info).toBe('function')
672
+ })
673
+
674
+ it('should initialize with bots', () => {
675
+ expect(adapter.bots).toBeInstanceOf(Map)
676
+ expect(adapter.bots.size).toBeGreaterThan(0)
677
+ })
678
+ })
679
+
680
+ describe('Bot Management', () => {
681
+ it('should create bots from config', () => {
682
+ expect(adapter.bots.size).toBe(1)
683
+ const bot = adapter.bots.values().next().value
684
+ expect(bot).toBeDefined()
685
+ expect(bot.adapter).toBe('${pluginName}')
686
+ })
687
+
688
+ it('should have createBot method', () => {
689
+ expect(typeof adapter.createBot).toBe('function')
690
+ })
691
+
692
+ it('should create bot with correct properties', () => {
693
+ const bot = adapter.bots.values().next().value
694
+ expect(bot.unique).toBeDefined()
695
+ expect(bot.self_id).toBeDefined()
696
+ })
697
+ })
698
+
699
+ describe('Adapter Lifecycle', () => {
700
+ it('should have start method', () => {
701
+ expect(typeof adapter.start).toBe('function')
702
+ })
703
+
704
+ it('should have stop method', () => {
705
+ expect(typeof adapter.stop).toBe('function')
706
+ })
707
+
708
+ it('should start successfully', async () => {
709
+ await expect(adapter.start()).resolves.not.toThrow()
710
+ })
711
+
712
+ it('should stop successfully', async () => {
713
+ await adapter.start()
714
+ await expect(adapter.stop()).resolves.not.toThrow()
715
+ })
716
+
717
+ it('should add to plugin adapters on start', async () => {
718
+ await adapter.start()
719
+ expect(plugin.adapters).toContain(adapter)
720
+ })
721
+
722
+ it('should remove from plugin adapters on stop', async () => {
723
+ await adapter.start()
724
+ await adapter.stop()
725
+ expect(plugin.adapters).not.toContain(adapter)
726
+ })
727
+
728
+ it('should clear bots on stop', async () => {
729
+ await adapter.start()
730
+ await adapter.stop()
731
+ expect(adapter.bots.size).toBe(0)
732
+ })
733
+ })
734
+
735
+ describe('Event Handling', () => {
736
+ it('should listen to call.recallMessage event', () => {
737
+ const listeners = adapter.listeners('call.recallMessage')
738
+ expect(listeners.length).toBeGreaterThan(0)
739
+ })
740
+
741
+ it('should listen to call.sendMessage event', () => {
742
+ const listeners = adapter.listeners('call.sendMessage')
743
+ expect(listeners.length).toBeGreaterThan(0)
744
+ })
745
+
746
+ it('should listen to message.receive event', () => {
747
+ const listeners = adapter.listeners('message.receive')
748
+ expect(listeners.length).toBeGreaterThan(0)
749
+ })
750
+
751
+ it('should remove all listeners on stop', async () => {
752
+ await adapter.start()
753
+ await adapter.stop()
754
+
755
+ expect(adapter.listenerCount('call.recallMessage')).toBe(0)
756
+ expect(adapter.listenerCount('call.sendMessage')).toBe(0)
757
+ expect(adapter.listenerCount('message.receive')).toBe(0)
758
+ })
759
+ })
760
+
761
+ describe('Message Sending', () => {
762
+ it('should handle sendMessage event', async () => {
763
+ const bot = adapter.bots.values().next().value
764
+ const sendSpy = vi.spyOn(bot, 'sendMessage')
765
+
766
+ await adapter.emit('call.sendMessage', bot.unique, 'test-channel', 'test message')
767
+
768
+ expect(sendSpy).toHaveBeenCalled()
769
+ })
770
+
771
+ it('should throw error when bot not found for sending', async () => {
772
+ await expect(
773
+ adapter.emit('call.sendMessage', 'non-existent-bot', 'channel', 'message')
774
+ ).rejects.toThrow()
775
+ })
776
+ })
777
+
778
+ describe('Message Receiving', () => {
779
+ it('should process received messages through middleware', async () => {
780
+ const bot = adapter.bots.values().next().value
781
+
782
+ const middlewareSpy = vi.fn()
783
+ plugin.addMiddleware(async (event, next) => {
784
+ middlewareSpy(event)
785
+ return next()
786
+ })
787
+
788
+ const mockMessage = {
789
+ adapter: '${pluginName}',
790
+ bot: bot.unique,
791
+ channel: { id: 'test-channel', type: 'text' },
792
+ sender: { id: 'test-user' },
793
+ content: 'test message',
794
+ timestamp: Date.now()
795
+ }
796
+
797
+ await adapter.emit('message.receive', mockMessage)
798
+
799
+ expect(middlewareSpy).toHaveBeenCalled()
800
+ })
801
+ })
802
+
803
+ describe('Bot Methods', () => {
804
+ let bot: Mock${capitalizedName}Bot
805
+
806
+ beforeEach(() => {
807
+ bot = adapter.bots.values().next().value as Mock${capitalizedName}Bot
808
+ })
809
+
810
+ it('should have connect method', () => {
811
+ expect(typeof bot.connect).toBe('function')
812
+ })
813
+
814
+ it('should have disconnect method', () => {
815
+ expect(typeof bot.disconnect).toBe('function')
816
+ })
817
+
818
+ it('should have sendMessage method', () => {
819
+ expect(typeof bot.sendMessage).toBe('function')
820
+ })
821
+
822
+ it('should have recallMessage method', () => {
823
+ expect(typeof bot.recallMessage).toBe('function')
824
+ })
825
+
826
+ it('should connect successfully', async () => {
827
+ await bot.connect()
828
+ expect(bot.$connected).toBe(true)
829
+ })
830
+
831
+ it('should disconnect successfully', async () => {
832
+ await bot.connect()
833
+ await bot.disconnect()
834
+ expect(bot.$connected).toBe(false)
835
+ })
836
+ })
837
+
838
+ describe('Custom Tests', () => {
839
+ // 在这里添加你的自定义测试
840
+ it('should pass custom test', () => {
841
+ expect(true).toBe(true)
842
+ })
843
+ })
844
+ })
845
+ `;
846
+ await fs.writeFile(path.join(testsDir, 'index.test.ts'), testContent);
847
+ }
319
848
  async function addPluginToApp(pluginName, isOfficial) {
320
849
  try {
321
850
  const rootPackageJsonPath = path.resolve(process.cwd(), 'package.json');
@@ -349,7 +878,8 @@ async function addPluginToApp(pluginName, isOfficial) {
349
878
  }
350
879
  }
351
880
  catch (error) {
352
- logger.warn(`⚠ 添加到 package.json 失败: ${error}`);
881
+ const errorMessage = error instanceof Error ? error.message : String(error);
882
+ logger.warn(`⚠ 添加到 package.json 失败: ${errorMessage}`);
353
883
  }
354
884
  }
355
885
  //# sourceMappingURL=new.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}