wechat-md-publisher 1.0.4 → 1.0.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,kBAAkB,IAAI,OAAO,CAiH5C"}
1
+ {"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,kBAAkB,IAAI,OAAO,CAiI5C"}
@@ -3,6 +3,16 @@ import { container } from '../../container';
3
3
  import chalk from 'chalk';
4
4
  import Table from 'cli-table3';
5
5
  import ora from 'ora';
6
+ function parseRemoteAuth(options) {
7
+ const { credentialServer, userId, apiKey } = options;
8
+ if (credentialServer || userId || apiKey) {
9
+ if (!credentialServer || !userId || !apiKey) {
10
+ throw new Error('--credential-server, --user-id, --api-key 必须同时提供');
11
+ }
12
+ return { serverUrl: credentialServer, userId, apiKey };
13
+ }
14
+ return undefined;
15
+ }
6
16
  export function createDraftCommand() {
7
17
  const cmd = new Command('draft')
8
18
  .description('草稿管理');
@@ -10,11 +20,15 @@ export function createDraftCommand() {
10
20
  .description('创建草稿')
11
21
  .requiredOption('-f, --file <file>', 'Markdown 文件路径')
12
22
  .option('-t, --theme <theme>', '主题 ID')
23
+ .option('--credential-server <url>', '远程凭证服务地址')
24
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
25
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
13
26
  .action(async (options) => {
14
27
  const spinner = ora('正在创建草稿...').start();
15
28
  try {
29
+ const remoteAuth = parseRemoteAuth(options);
16
30
  await container.initialize();
17
- const draftService = await container.getDraftService();
31
+ const draftService = await container.getDraftService(remoteAuth);
18
32
  const result = await draftService.create({
19
33
  file: options.file,
20
34
  theme: options.theme,
@@ -33,11 +47,15 @@ export function createDraftCommand() {
33
47
  .description('列出草稿')
34
48
  .option('-p, --page <page>', '页码', '1')
35
49
  .option('-s, --size <size>', '每页数量', '20')
50
+ .option('--credential-server <url>', '远程凭证服务地址')
51
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
52
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
36
53
  .action(async (options) => {
37
54
  const spinner = ora('正在获取草稿列表...').start();
38
55
  try {
56
+ const remoteAuth = parseRemoteAuth(options);
39
57
  await container.initialize();
40
- const draftService = await container.getDraftService();
58
+ const draftService = await container.getDraftService(remoteAuth);
41
59
  const page = parseInt(options.page);
42
60
  const size = parseInt(options.size);
43
61
  const result = await draftService.list(page, size);
@@ -70,11 +88,15 @@ export function createDraftCommand() {
70
88
  });
71
89
  cmd.command('delete <media-id>')
72
90
  .description('删除草稿')
73
- .action(async (mediaId) => {
91
+ .option('--credential-server <url>', '远程凭证服务地址')
92
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
93
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
94
+ .action(async (mediaId, options) => {
74
95
  const spinner = ora('正在删除草稿...').start();
75
96
  try {
97
+ const remoteAuth = parseRemoteAuth(options);
76
98
  await container.initialize();
77
- const draftService = await container.getDraftService();
99
+ const draftService = await container.getDraftService(remoteAuth);
78
100
  await draftService.delete(mediaId);
79
101
  spinner.succeed('草稿删除成功');
80
102
  }
@@ -86,10 +108,14 @@ export function createDraftCommand() {
86
108
  });
87
109
  cmd.command('count')
88
110
  .description('获取草稿总数')
89
- .action(async () => {
111
+ .option('--credential-server <url>', '远程凭证服务地址')
112
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
113
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
114
+ .action(async (options) => {
90
115
  try {
116
+ const remoteAuth = parseRemoteAuth(options);
91
117
  await container.initialize();
92
- const draftService = await container.getDraftService();
118
+ const draftService = await container.getDraftService(remoteAuth);
93
119
  const count = await draftService.count();
94
120
  console.log(chalk.green(`草稿总数: ${count}`));
95
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../src/cli/commands/draft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../../src/cli/commands/draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,SAAS,eAAe,CAAC,OAAY;IACjC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACrD,IAAI,gBAAgB,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACvC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAC9B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;SAC3B,WAAW,CAAC,MAAM,CAAC,CAAC;IAEzB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;SAChB,WAAW,CAAC,MAAM,CAAC;SACnB,cAAc,CAAC,mBAAmB,EAAE,eAAe,CAAC;SACpD,MAAM,CAAC,qBAAqB,EAAE,OAAO,CAAC;SACtC,MAAM,CAAC,2BAA2B,EAAE,UAAU,CAAC;SAC/C,MAAM,CAAC,oBAAoB,EAAE,aAAa,CAAC;SAC3C,MAAM,CAAC,oBAAoB,EAAE,cAAc,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;QAEzC,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;gBACrC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;aACvB,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;IAEP,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;SACd,WAAW,CAAC,MAAM,CAAC;SACnB,MAAM,CAAC,mBAAmB,EAAE,IAAI,EAAE,GAAG,CAAC;SACtC,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC;SACzC,MAAM,CAAC,2BAA2B,EAAE,UAAU,CAAC;SAC/C,MAAM,CAAC,oBAAoB,EAAE,aAAa,CAAC;SAC3C,MAAM,CAAC,oBAAoB,EAAE,cAAc,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;QAE3C,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEjE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEnD,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClC,OAAO;YACX,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;gBACpB,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC;gBAChC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;aAC1B,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAE9E,KAAK,CAAC,IAAI,CAAC;oBACP,KAAK,CAAC,QAAQ;oBACd,OAAO,CAAC,KAAK,IAAI,GAAG;oBACpB,UAAU;iBACb,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,WAAW,WAAW,IAAI,KAAK,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;IAEP,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAC3B,WAAW,CAAC,MAAM,CAAC;SACnB,MAAM,CAAC,2BAA2B,EAAE,UAAU,CAAC;SAC/C,MAAM,CAAC,oBAAoB,EAAE,aAAa,CAAC;SAC3C,MAAM,CAAC,oBAAoB,EAAE,cAAc,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;QAEzC,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEjE,MAAM,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEnC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;IAEP,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;SACf,WAAW,CAAC,QAAQ,CAAC;SACrB,MAAM,CAAC,2BAA2B,EAAE,UAAU,CAAC;SAC/C,MAAM,CAAC,oBAAoB,EAAE,aAAa,CAAC;SAC3C,MAAM,CAAC,oBAAoB,EAAE,cAAc,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEjE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;YAEzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;IAEP,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,oBAAoB,IAAI,OAAO,CAiJ9C"}
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,oBAAoB,IAAI,OAAO,CAqK9C"}
@@ -3,16 +3,30 @@ import { container } from '../../container';
3
3
  import chalk from 'chalk';
4
4
  import Table from 'cli-table3';
5
5
  import ora from 'ora';
6
+ function parseRemoteAuth(options) {
7
+ const { credentialServer, userId, apiKey } = options;
8
+ if (credentialServer || userId || apiKey) {
9
+ if (!credentialServer || !userId || !apiKey) {
10
+ throw new Error('--credential-server, --user-id, --api-key 必须同时提供');
11
+ }
12
+ return { serverUrl: credentialServer, userId, apiKey };
13
+ }
14
+ return undefined;
15
+ }
6
16
  export function createPublishCommand() {
7
17
  const cmd = new Command('publish')
8
18
  .description('发布管理');
9
19
  cmd.command('submit <media-id>')
10
20
  .description('发布草稿')
11
- .action(async (mediaId) => {
21
+ .option('--credential-server <url>', '远程凭证服务地址')
22
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
23
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
24
+ .action(async (mediaId, options) => {
12
25
  const spinner = ora('正在发布草稿...').start();
13
26
  try {
27
+ const remoteAuth = parseRemoteAuth(options);
14
28
  await container.initialize();
15
- const publishService = await container.getPublishService();
29
+ const publishService = await container.getPublishService(remoteAuth);
16
30
  const result = await publishService.submit(mediaId);
17
31
  spinner.succeed('发布任务提交成功');
18
32
  console.log(chalk.green(` Publish ID: ${result.publish_id}`));
@@ -28,11 +42,15 @@ export function createPublishCommand() {
28
42
  .description('创建并发布文章')
29
43
  .requiredOption('-f, --file <file>', 'Markdown 文件路径')
30
44
  .option('-t, --theme <theme>', '主题 ID')
45
+ .option('--credential-server <url>', '远程凭证服务地址')
46
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
47
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
31
48
  .action(async (options) => {
32
49
  const spinner = ora('正在创建并发布文章...').start();
33
50
  try {
51
+ const remoteAuth = parseRemoteAuth(options);
34
52
  await container.initialize();
35
- const publishService = await container.getPublishService();
53
+ const publishService = await container.getPublishService(remoteAuth);
36
54
  const result = await publishService.createAndPublish({
37
55
  file: options.file,
38
56
  theme: options.theme,
@@ -50,11 +68,15 @@ export function createPublishCommand() {
50
68
  .description('列出已发布文章')
51
69
  .option('-p, --page <page>', '页码', '1')
52
70
  .option('-s, --size <size>', '每页数量', '20')
71
+ .option('--credential-server <url>', '远程凭证服务地址')
72
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
73
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
53
74
  .action(async (options) => {
54
75
  const spinner = ora('正在获取已发布文章列表...').start();
55
76
  try {
77
+ const remoteAuth = parseRemoteAuth(options);
56
78
  await container.initialize();
57
- const publishService = await container.getPublishService();
79
+ const publishService = await container.getPublishService(remoteAuth);
58
80
  const page = parseInt(options.page);
59
81
  const size = parseInt(options.size);
60
82
  const result = await publishService.list(page, size);
@@ -88,11 +110,15 @@ export function createPublishCommand() {
88
110
  cmd.command('delete <article-id>')
89
111
  .description('删除已发布文章')
90
112
  .option('-i, --index <index>', '文章索引', '0')
113
+ .option('--credential-server <url>', '远程凭证服务地址')
114
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
115
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
91
116
  .action(async (articleId, options) => {
92
117
  const spinner = ora('正在删除已发布文章...').start();
93
118
  try {
119
+ const remoteAuth = parseRemoteAuth(options);
94
120
  await container.initialize();
95
- const publishService = await container.getPublishService();
121
+ const publishService = await container.getPublishService(remoteAuth);
96
122
  const index = parseInt(options.index);
97
123
  await publishService.delete(articleId, index);
98
124
  spinner.succeed('已发布文章删除成功');
@@ -105,10 +131,14 @@ export function createPublishCommand() {
105
131
  });
106
132
  cmd.command('status <publish-id>')
107
133
  .description('查询发布状态')
108
- .action(async (publishId) => {
134
+ .option('--credential-server <url>', '远程凭证服务地址')
135
+ .option('--user-id <userId>', '用户 ID(远程凭证)')
136
+ .option('--api-key <apiKey>', 'API 密钥(远程凭证)')
137
+ .action(async (publishId, options) => {
109
138
  try {
139
+ const remoteAuth = parseRemoteAuth(options);
110
140
  await container.initialize();
111
- const publishService = await container.getPublishService();
141
+ const publishService = await container.getPublishService(remoteAuth);
112
142
  const status = await publishService.getStatus(publishId);
113
143
  console.log(chalk.green('发布状态:'));
114
144
  console.log(` Publish ID: ${status.publish_id}`);
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/cli/commands/publish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/cli/commands/publish.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -465,16 +465,39 @@ class AccountService {
465
465
  const accounts = await this.listAccounts();
466
466
  return accounts.find((a) => a.id === id) || null;
467
467
  }
468
- async getCurrentAccount() {
468
+ async getCurrentAccount(remoteAuth) {
469
469
  const accounts = await this.listAccounts();
470
- if (accounts.length === 0) {
471
- throw new Error("未配置账号,请先使用 account add 命令添加账号");
470
+ if (accounts.length > 0) {
471
+ const defaultAccount = accounts.find((a) => a.isDefault);
472
+ return defaultAccount || accounts[0];
472
473
  }
473
- const defaultAccount = accounts.find((a) => a.isDefault);
474
- if (defaultAccount) {
475
- return defaultAccount;
474
+ if (remoteAuth) {
475
+ return await this.fetchRemoteCredentials(remoteAuth.serverUrl, remoteAuth.userId, remoteAuth.apiKey);
476
476
  }
477
- return accounts[0];
477
+ throw new Error("未配置账号,请先使用 account add 命令添加账号,或提供 --credential-server/--user-id/--api-key 参数");
478
+ }
479
+ async fetchRemoteCredentials(serverUrl, userId, apiKey) {
480
+ this.logger.info("从远程凭证服务获取账号", { serverUrl, userId });
481
+ const response = await fetch(serverUrl, {
482
+ method: "POST",
483
+ headers: { "Content-Type": "application/json" },
484
+ body: JSON.stringify({ userId, apiKey })
485
+ });
486
+ if (!response.ok) {
487
+ const msg = response.status === 401 ? "远程认证失败:userId 或 apiKey 无效" : `远程凭证服务请求失败: ${response.status}`;
488
+ throw new Error(msg);
489
+ }
490
+ const data = await response.json();
491
+ if (!data.appId || !data.appSecret) {
492
+ throw new Error("远程凭证服务返回数据不完整,缺少 appId 或 appSecret");
493
+ }
494
+ this.logger.info("远程凭证获取成功", { userId });
495
+ return {
496
+ id: userId,
497
+ name: userId,
498
+ appId: data.appId,
499
+ appSecret: data.appSecret
500
+ };
478
501
  }
479
502
  async setDefaultAccount(id) {
480
503
  this.logger.info("设置默认账号", { id });
@@ -1017,8 +1040,8 @@ class Container {
1017
1040
  getDatabaseManager() {
1018
1041
  return this.dbManager;
1019
1042
  }
1020
- async getDraftService() {
1021
- const account = await this.accountService.getCurrentAccount();
1043
+ async getDraftService(remoteAuth) {
1044
+ const account = await this.accountService.getCurrentAccount(remoteAuth);
1022
1045
  const wechatClient = new WechatClient(
1023
1046
  account.appId,
1024
1047
  account.appSecret,
@@ -1039,9 +1062,9 @@ class Container {
1039
1062
  this.logger
1040
1063
  );
1041
1064
  }
1042
- async getPublishService() {
1043
- const draftService = await this.getDraftService();
1044
- const account = await this.accountService.getCurrentAccount();
1065
+ async getPublishService(remoteAuth) {
1066
+ const draftService = await this.getDraftService(remoteAuth);
1067
+ const account = await this.accountService.getCurrentAccount(remoteAuth);
1045
1068
  const wechatClient = new WechatClient(
1046
1069
  account.appId,
1047
1070
  account.appSecret,
@@ -1202,13 +1225,24 @@ function createThemeCommand() {
1202
1225
  });
1203
1226
  return cmd;
1204
1227
  }
1228
+ function parseRemoteAuth$1(options) {
1229
+ const { credentialServer, userId, apiKey } = options;
1230
+ if (credentialServer || userId || apiKey) {
1231
+ if (!credentialServer || !userId || !apiKey) {
1232
+ throw new Error("--credential-server, --user-id, --api-key 必须同时提供");
1233
+ }
1234
+ return { serverUrl: credentialServer, userId, apiKey };
1235
+ }
1236
+ return void 0;
1237
+ }
1205
1238
  function createDraftCommand() {
1206
1239
  const cmd = new Command("draft").description("草稿管理");
1207
- cmd.command("create").description("创建草稿").requiredOption("-f, --file <file>", "Markdown 文件路径").option("-t, --theme <theme>", "主题 ID").action(async (options) => {
1240
+ cmd.command("create").description("创建草稿").requiredOption("-f, --file <file>", "Markdown 文件路径").option("-t, --theme <theme>", "主题 ID").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (options) => {
1208
1241
  const spinner = ora("正在创建草稿...").start();
1209
1242
  try {
1243
+ const remoteAuth = parseRemoteAuth$1(options);
1210
1244
  await container.initialize();
1211
- const draftService = await container.getDraftService();
1245
+ const draftService = await container.getDraftService(remoteAuth);
1212
1246
  const result = await draftService.create({
1213
1247
  file: options.file,
1214
1248
  theme: options.theme
@@ -1222,11 +1256,12 @@ function createDraftCommand() {
1222
1256
  process.exit(1);
1223
1257
  }
1224
1258
  });
1225
- cmd.command("list").description("列出草稿").option("-p, --page <page>", "页码", "1").option("-s, --size <size>", "每页数量", "20").action(async (options) => {
1259
+ cmd.command("list").description("列出草稿").option("-p, --page <page>", "页码", "1").option("-s, --size <size>", "每页数量", "20").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (options) => {
1226
1260
  const spinner = ora("正在获取草稿列表...").start();
1227
1261
  try {
1262
+ const remoteAuth = parseRemoteAuth$1(options);
1228
1263
  await container.initialize();
1229
- const draftService = await container.getDraftService();
1264
+ const draftService = await container.getDraftService(remoteAuth);
1230
1265
  const page = parseInt(options.page);
1231
1266
  const size = parseInt(options.size);
1232
1267
  const result = await draftService.list(page, size);
@@ -1257,11 +1292,12 @@ function createDraftCommand() {
1257
1292
  process.exit(1);
1258
1293
  }
1259
1294
  });
1260
- cmd.command("delete <media-id>").description("删除草稿").action(async (mediaId) => {
1295
+ cmd.command("delete <media-id>").description("删除草稿").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (mediaId, options) => {
1261
1296
  const spinner = ora("正在删除草稿...").start();
1262
1297
  try {
1298
+ const remoteAuth = parseRemoteAuth$1(options);
1263
1299
  await container.initialize();
1264
- const draftService = await container.getDraftService();
1300
+ const draftService = await container.getDraftService(remoteAuth);
1265
1301
  await draftService.delete(mediaId);
1266
1302
  spinner.succeed("草稿删除成功");
1267
1303
  } catch (error) {
@@ -1270,10 +1306,11 @@ function createDraftCommand() {
1270
1306
  process.exit(1);
1271
1307
  }
1272
1308
  });
1273
- cmd.command("count").description("获取草稿总数").action(async () => {
1309
+ cmd.command("count").description("获取草稿总数").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (options) => {
1274
1310
  try {
1311
+ const remoteAuth = parseRemoteAuth$1(options);
1275
1312
  await container.initialize();
1276
- const draftService = await container.getDraftService();
1313
+ const draftService = await container.getDraftService(remoteAuth);
1277
1314
  const count = await draftService.count();
1278
1315
  console.log(chalk.green(`草稿总数: ${count}`));
1279
1316
  } catch (error) {
@@ -1283,13 +1320,24 @@ function createDraftCommand() {
1283
1320
  });
1284
1321
  return cmd;
1285
1322
  }
1323
+ function parseRemoteAuth(options) {
1324
+ const { credentialServer, userId, apiKey } = options;
1325
+ if (credentialServer || userId || apiKey) {
1326
+ if (!credentialServer || !userId || !apiKey) {
1327
+ throw new Error("--credential-server, --user-id, --api-key 必须同时提供");
1328
+ }
1329
+ return { serverUrl: credentialServer, userId, apiKey };
1330
+ }
1331
+ return void 0;
1332
+ }
1286
1333
  function createPublishCommand() {
1287
1334
  const cmd = new Command("publish").description("发布管理");
1288
- cmd.command("submit <media-id>").description("发布草稿").action(async (mediaId) => {
1335
+ cmd.command("submit <media-id>").description("发布草稿").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (mediaId, options) => {
1289
1336
  const spinner = ora("正在发布草稿...").start();
1290
1337
  try {
1338
+ const remoteAuth = parseRemoteAuth(options);
1291
1339
  await container.initialize();
1292
- const publishService = await container.getPublishService();
1340
+ const publishService = await container.getPublishService(remoteAuth);
1293
1341
  const result = await publishService.submit(mediaId);
1294
1342
  spinner.succeed("发布任务提交成功");
1295
1343
  console.log(chalk.green(` Publish ID: ${result.publish_id}`));
@@ -1300,11 +1348,12 @@ function createPublishCommand() {
1300
1348
  process.exit(1);
1301
1349
  }
1302
1350
  });
1303
- cmd.command("create").description("创建并发布文章").requiredOption("-f, --file <file>", "Markdown 文件路径").option("-t, --theme <theme>", "主题 ID").action(async (options) => {
1351
+ cmd.command("create").description("创建并发布文章").requiredOption("-f, --file <file>", "Markdown 文件路径").option("-t, --theme <theme>", "主题 ID").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (options) => {
1304
1352
  const spinner = ora("正在创建并发布文章...").start();
1305
1353
  try {
1354
+ const remoteAuth = parseRemoteAuth(options);
1306
1355
  await container.initialize();
1307
- const publishService = await container.getPublishService();
1356
+ const publishService = await container.getPublishService(remoteAuth);
1308
1357
  const result = await publishService.createAndPublish({
1309
1358
  file: options.file,
1310
1359
  theme: options.theme
@@ -1317,11 +1366,12 @@ function createPublishCommand() {
1317
1366
  process.exit(1);
1318
1367
  }
1319
1368
  });
1320
- cmd.command("list").description("列出已发布文章").option("-p, --page <page>", "页码", "1").option("-s, --size <size>", "每页数量", "20").action(async (options) => {
1369
+ cmd.command("list").description("列出已发布文章").option("-p, --page <page>", "页码", "1").option("-s, --size <size>", "每页数量", "20").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (options) => {
1321
1370
  const spinner = ora("正在获取已发布文章列表...").start();
1322
1371
  try {
1372
+ const remoteAuth = parseRemoteAuth(options);
1323
1373
  await container.initialize();
1324
- const publishService = await container.getPublishService();
1374
+ const publishService = await container.getPublishService(remoteAuth);
1325
1375
  const page = parseInt(options.page);
1326
1376
  const size = parseInt(options.size);
1327
1377
  const result = await publishService.list(page, size);
@@ -1352,11 +1402,12 @@ function createPublishCommand() {
1352
1402
  process.exit(1);
1353
1403
  }
1354
1404
  });
1355
- cmd.command("delete <article-id>").description("删除已发布文章").option("-i, --index <index>", "文章索引", "0").action(async (articleId, options) => {
1405
+ cmd.command("delete <article-id>").description("删除已发布文章").option("-i, --index <index>", "文章索引", "0").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (articleId, options) => {
1356
1406
  const spinner = ora("正在删除已发布文章...").start();
1357
1407
  try {
1408
+ const remoteAuth = parseRemoteAuth(options);
1358
1409
  await container.initialize();
1359
- const publishService = await container.getPublishService();
1410
+ const publishService = await container.getPublishService(remoteAuth);
1360
1411
  const index = parseInt(options.index);
1361
1412
  await publishService.delete(articleId, index);
1362
1413
  spinner.succeed("已发布文章删除成功");
@@ -1366,10 +1417,11 @@ function createPublishCommand() {
1366
1417
  process.exit(1);
1367
1418
  }
1368
1419
  });
1369
- cmd.command("status <publish-id>").description("查询发布状态").action(async (publishId) => {
1420
+ cmd.command("status <publish-id>").description("查询发布状态").option("--credential-server <url>", "远程凭证服务地址").option("--user-id <userId>", "用户 ID(远程凭证)").option("--api-key <apiKey>", "API 密钥(远程凭证)").action(async (publishId, options) => {
1370
1421
  try {
1422
+ const remoteAuth = parseRemoteAuth(options);
1371
1423
  await container.initialize();
1372
- const publishService = await container.getPublishService();
1424
+ const publishService = await container.getPublishService(remoteAuth);
1373
1425
  const status = await publishService.getStatus(publishId);
1374
1426
  console.log(chalk.green("发布状态:"));
1375
1427
  console.log(` Publish ID: ${status.publish_id}`);