@optima-chat/ads-cli 0.5.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.
Files changed (182) hide show
  1. package/.claude/CLAUDE.md +279 -0
  2. package/dist/commands/account/check.d.ts +6 -0
  3. package/dist/commands/account/check.d.ts.map +1 -0
  4. package/dist/commands/account/check.js +179 -0
  5. package/dist/commands/account/check.js.map +1 -0
  6. package/dist/commands/account/create.d.ts +6 -0
  7. package/dist/commands/account/create.d.ts.map +1 -0
  8. package/dist/commands/account/create.js +172 -0
  9. package/dist/commands/account/create.js.map +1 -0
  10. package/dist/commands/account/index.d.ts +6 -0
  11. package/dist/commands/account/index.d.ts.map +1 -0
  12. package/dist/commands/account/index.js +11 -0
  13. package/dist/commands/account/index.js.map +1 -0
  14. package/dist/commands/ad/create.d.ts +6 -0
  15. package/dist/commands/ad/create.d.ts.map +1 -0
  16. package/dist/commands/ad/create.js +77 -0
  17. package/dist/commands/ad/create.js.map +1 -0
  18. package/dist/commands/ad/delete.d.ts +6 -0
  19. package/dist/commands/ad/delete.d.ts.map +1 -0
  20. package/dist/commands/ad/delete.js +50 -0
  21. package/dist/commands/ad/delete.js.map +1 -0
  22. package/dist/commands/ad/index.d.ts +6 -0
  23. package/dist/commands/ad/index.d.ts.map +1 -0
  24. package/dist/commands/ad/index.js +17 -0
  25. package/dist/commands/ad/index.js.map +1 -0
  26. package/dist/commands/ad/info.d.ts +6 -0
  27. package/dist/commands/ad/info.d.ts.map +1 -0
  28. package/dist/commands/ad/info.js +90 -0
  29. package/dist/commands/ad/info.js.map +1 -0
  30. package/dist/commands/ad/list.d.ts +6 -0
  31. package/dist/commands/ad/list.d.ts.map +1 -0
  32. package/dist/commands/ad/list.js +94 -0
  33. package/dist/commands/ad/list.js.map +1 -0
  34. package/dist/commands/ad/update.d.ts +6 -0
  35. package/dist/commands/ad/update.d.ts.map +1 -0
  36. package/dist/commands/ad/update.js +42 -0
  37. package/dist/commands/ad/update.js.map +1 -0
  38. package/dist/commands/ad-group/create.d.ts +6 -0
  39. package/dist/commands/ad-group/create.d.ts.map +1 -0
  40. package/dist/commands/ad-group/create.js +59 -0
  41. package/dist/commands/ad-group/create.js.map +1 -0
  42. package/dist/commands/ad-group/delete.d.ts +6 -0
  43. package/dist/commands/ad-group/delete.d.ts.map +1 -0
  44. package/dist/commands/ad-group/delete.js +49 -0
  45. package/dist/commands/ad-group/delete.js.map +1 -0
  46. package/dist/commands/ad-group/index.d.ts +6 -0
  47. package/dist/commands/ad-group/index.d.ts.map +1 -0
  48. package/dist/commands/ad-group/index.js +17 -0
  49. package/dist/commands/ad-group/index.js.map +1 -0
  50. package/dist/commands/ad-group/info.d.ts +6 -0
  51. package/dist/commands/ad-group/info.d.ts.map +1 -0
  52. package/dist/commands/ad-group/info.js +59 -0
  53. package/dist/commands/ad-group/info.js.map +1 -0
  54. package/dist/commands/ad-group/list.d.ts +6 -0
  55. package/dist/commands/ad-group/list.d.ts.map +1 -0
  56. package/dist/commands/ad-group/list.js +83 -0
  57. package/dist/commands/ad-group/list.js.map +1 -0
  58. package/dist/commands/ad-group/update.d.ts +6 -0
  59. package/dist/commands/ad-group/update.d.ts.map +1 -0
  60. package/dist/commands/ad-group/update.js +56 -0
  61. package/dist/commands/ad-group/update.js.map +1 -0
  62. package/dist/commands/auth/index.d.ts +6 -0
  63. package/dist/commands/auth/index.d.ts.map +1 -0
  64. package/dist/commands/auth/index.js +13 -0
  65. package/dist/commands/auth/index.js.map +1 -0
  66. package/dist/commands/auth/login.d.ts +10 -0
  67. package/dist/commands/auth/login.d.ts.map +1 -0
  68. package/dist/commands/auth/login.js +154 -0
  69. package/dist/commands/auth/login.js.map +1 -0
  70. package/dist/commands/auth/logout.d.ts +6 -0
  71. package/dist/commands/auth/logout.d.ts.map +1 -0
  72. package/dist/commands/auth/logout.js +28 -0
  73. package/dist/commands/auth/logout.js.map +1 -0
  74. package/dist/commands/auth/status.d.ts +6 -0
  75. package/dist/commands/auth/status.d.ts.map +1 -0
  76. package/dist/commands/auth/status.js +47 -0
  77. package/dist/commands/auth/status.js.map +1 -0
  78. package/dist/commands/campaign/create.d.ts +6 -0
  79. package/dist/commands/campaign/create.d.ts.map +1 -0
  80. package/dist/commands/campaign/create.js +58 -0
  81. package/dist/commands/campaign/create.js.map +1 -0
  82. package/dist/commands/campaign/delete.d.ts +6 -0
  83. package/dist/commands/campaign/delete.d.ts.map +1 -0
  84. package/dist/commands/campaign/delete.js +49 -0
  85. package/dist/commands/campaign/delete.js.map +1 -0
  86. package/dist/commands/campaign/index.d.ts +6 -0
  87. package/dist/commands/campaign/index.d.ts.map +1 -0
  88. package/dist/commands/campaign/index.js +17 -0
  89. package/dist/commands/campaign/index.js.map +1 -0
  90. package/dist/commands/campaign/info.d.ts +6 -0
  91. package/dist/commands/campaign/info.d.ts.map +1 -0
  92. package/dist/commands/campaign/info.js +57 -0
  93. package/dist/commands/campaign/info.js.map +1 -0
  94. package/dist/commands/campaign/list.d.ts +6 -0
  95. package/dist/commands/campaign/list.d.ts.map +1 -0
  96. package/dist/commands/campaign/list.js +71 -0
  97. package/dist/commands/campaign/list.js.map +1 -0
  98. package/dist/commands/campaign/update.d.ts +6 -0
  99. package/dist/commands/campaign/update.d.ts.map +1 -0
  100. package/dist/commands/campaign/update.js +56 -0
  101. package/dist/commands/campaign/update.js.map +1 -0
  102. package/dist/commands/config.d.ts +6 -0
  103. package/dist/commands/config.d.ts.map +1 -0
  104. package/dist/commands/config.js +104 -0
  105. package/dist/commands/config.js.map +1 -0
  106. package/dist/commands/keyword/add.d.ts +6 -0
  107. package/dist/commands/keyword/add.d.ts.map +1 -0
  108. package/dist/commands/keyword/add.js +47 -0
  109. package/dist/commands/keyword/add.js.map +1 -0
  110. package/dist/commands/keyword/delete.d.ts +6 -0
  111. package/dist/commands/keyword/delete.d.ts.map +1 -0
  112. package/dist/commands/keyword/delete.js +50 -0
  113. package/dist/commands/keyword/delete.js.map +1 -0
  114. package/dist/commands/keyword/index.d.ts +6 -0
  115. package/dist/commands/keyword/index.d.ts.map +1 -0
  116. package/dist/commands/keyword/index.js +15 -0
  117. package/dist/commands/keyword/index.js.map +1 -0
  118. package/dist/commands/keyword/list.d.ts +6 -0
  119. package/dist/commands/keyword/list.d.ts.map +1 -0
  120. package/dist/commands/keyword/list.js +77 -0
  121. package/dist/commands/keyword/list.js.map +1 -0
  122. package/dist/commands/keyword/update.d.ts +6 -0
  123. package/dist/commands/keyword/update.d.ts.map +1 -0
  124. package/dist/commands/keyword/update.js +51 -0
  125. package/dist/commands/keyword/update.js.map +1 -0
  126. package/dist/commands/query.d.ts +6 -0
  127. package/dist/commands/query.d.ts.map +1 -0
  128. package/dist/commands/query.js +71 -0
  129. package/dist/commands/query.js.map +1 -0
  130. package/dist/config.d.ts +32 -0
  131. package/dist/config.d.ts.map +1 -0
  132. package/dist/config.js +10 -0
  133. package/dist/config.js.map +1 -0
  134. package/dist/index.d.ts +7 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +75 -0
  137. package/dist/index.js.map +1 -0
  138. package/dist/lib/api-client.d.ts +100 -0
  139. package/dist/lib/api-client.d.ts.map +1 -0
  140. package/dist/lib/api-client.js +186 -0
  141. package/dist/lib/api-client.js.map +1 -0
  142. package/dist/lib/callback-server.d.ts +32 -0
  143. package/dist/lib/callback-server.d.ts.map +1 -0
  144. package/dist/lib/callback-server.js +132 -0
  145. package/dist/lib/callback-server.js.map +1 -0
  146. package/dist/lib/google-ads-client.d.ts +177 -0
  147. package/dist/lib/google-ads-client.d.ts.map +1 -0
  148. package/dist/lib/google-ads-client.js +826 -0
  149. package/dist/lib/google-ads-client.js.map +1 -0
  150. package/dist/lib/oauth2-manager.d.ts +27 -0
  151. package/dist/lib/oauth2-manager.d.ts.map +1 -0
  152. package/dist/lib/oauth2-manager.js +123 -0
  153. package/dist/lib/oauth2-manager.js.map +1 -0
  154. package/dist/lib/token-store.d.ts +43 -0
  155. package/dist/lib/token-store.d.ts.map +1 -0
  156. package/dist/lib/token-store.js +103 -0
  157. package/dist/lib/token-store.js.map +1 -0
  158. package/dist/utils/config.d.ts +9 -0
  159. package/dist/utils/config.d.ts.map +1 -0
  160. package/dist/utils/config.js +34 -0
  161. package/dist/utils/config.js.map +1 -0
  162. package/dist/utils/customer-id.d.ts +10 -0
  163. package/dist/utils/customer-id.d.ts.map +1 -0
  164. package/dist/utils/customer-id.js +29 -0
  165. package/dist/utils/customer-id.js.map +1 -0
  166. package/dist/utils/env-updater.d.ts +8 -0
  167. package/dist/utils/env-updater.d.ts.map +1 -0
  168. package/dist/utils/env-updater.js +45 -0
  169. package/dist/utils/env-updater.js.map +1 -0
  170. package/dist/utils/errors.d.ts +32 -0
  171. package/dist/utils/errors.d.ts.map +1 -0
  172. package/dist/utils/errors.js +68 -0
  173. package/dist/utils/errors.js.map +1 -0
  174. package/dist/utils/logger.d.ts +10 -0
  175. package/dist/utils/logger.d.ts.map +1 -0
  176. package/dist/utils/logger.js +25 -0
  177. package/dist/utils/logger.js.map +1 -0
  178. package/dist/utils/optima-config.d.ts +9 -0
  179. package/dist/utils/optima-config.d.ts.map +1 -0
  180. package/dist/utils/optima-config.js +83 -0
  181. package/dist/utils/optima-config.js.map +1 -0
  182. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-ads-client.js","sourceRoot":"","sources":["../../src/lib/google-ads-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * OAuth2 Manager - Google Ads OAuth2 认证管理
3
+ */
4
+ import { OAuth2Token } from '../config.js';
5
+ export declare class OAuth2Manager {
6
+ /**
7
+ * 生成授权 URL
8
+ */
9
+ getAuthorizationUrl(redirectUri: string): string;
10
+ /**
11
+ * 用授权码交换 token
12
+ */
13
+ exchangeCodeForToken(code: string, redirectUri: string): Promise<OAuth2Token>;
14
+ /**
15
+ * 刷新 access token
16
+ */
17
+ refreshAccessToken(refreshToken: string): Promise<OAuth2Token>;
18
+ /**
19
+ * 获取有效的 access token(自动刷新)
20
+ */
21
+ getAccessToken(): Promise<string>;
22
+ /**
23
+ * 获取 refresh token
24
+ */
25
+ getRefreshToken(): Promise<string>;
26
+ }
27
+ //# sourceMappingURL=oauth2-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-manager.d.ts","sourceRoot":"","sources":["../../src/lib/oauth2-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAY3C,qBAAa,aAAa;IACxB;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAehD;;OAEG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgCnF;;OAEG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA+BpE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBvC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;CASzC"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * OAuth2 Manager - Google Ads OAuth2 认证管理
3
+ */
4
+ import axios from 'axios';
5
+ import { loadConfig } from '../utils/config.js';
6
+ import { loadToken, isTokenExpired } from './token-store.js';
7
+ import { AuthError } from '../utils/errors.js';
8
+ // Google OAuth2 端点
9
+ const OAUTH2_AUTH_URL = 'https://accounts.google.com/o/oauth2/v2/auth';
10
+ const OAUTH2_TOKEN_URL = 'https://oauth2.googleapis.com/token';
11
+ // Google Ads API 权限
12
+ const SCOPES = ['https://www.googleapis.com/auth/adwords'];
13
+ export class OAuth2Manager {
14
+ /**
15
+ * 生成授权 URL
16
+ */
17
+ getAuthorizationUrl(redirectUri) {
18
+ const config = loadConfig();
19
+ const params = new URLSearchParams({
20
+ client_id: config.clientId,
21
+ redirect_uri: redirectUri,
22
+ response_type: 'code',
23
+ scope: SCOPES.join(' '),
24
+ access_type: 'offline', // 获取 refresh_token
25
+ prompt: 'consent', // 强制显示授权页面
26
+ });
27
+ return `${OAUTH2_AUTH_URL}?${params.toString()}`;
28
+ }
29
+ /**
30
+ * 用授权码交换 token
31
+ */
32
+ async exchangeCodeForToken(code, redirectUri) {
33
+ const config = loadConfig();
34
+ try {
35
+ const response = await axios.post(OAUTH2_TOKEN_URL, {
36
+ code,
37
+ client_id: config.clientId,
38
+ client_secret: config.clientSecret,
39
+ redirect_uri: redirectUri,
40
+ grant_type: 'authorization_code',
41
+ });
42
+ const data = response.data;
43
+ // 计算过期时间
44
+ const expiresAt = Date.now() + data.expires_in * 1000;
45
+ return {
46
+ access_token: data.access_token,
47
+ refresh_token: data.refresh_token,
48
+ expires_at: expiresAt,
49
+ scope: data.scope,
50
+ token_type: data.token_type,
51
+ };
52
+ }
53
+ catch (error) {
54
+ if (error.response?.data?.error_description) {
55
+ throw new AuthError(`OAuth2 错误: ${error.response.data.error_description}`);
56
+ }
57
+ throw new AuthError(`交换 token 失败: ${error.message}`);
58
+ }
59
+ }
60
+ /**
61
+ * 刷新 access token
62
+ */
63
+ async refreshAccessToken(refreshToken) {
64
+ const config = loadConfig();
65
+ try {
66
+ const response = await axios.post(OAUTH2_TOKEN_URL, {
67
+ client_id: config.clientId,
68
+ client_secret: config.clientSecret,
69
+ refresh_token: refreshToken,
70
+ grant_type: 'refresh_token',
71
+ });
72
+ const data = response.data;
73
+ // 计算过期时间
74
+ const expiresAt = Date.now() + data.expires_in * 1000;
75
+ return {
76
+ access_token: data.access_token,
77
+ refresh_token: refreshToken, // refresh_token 保持不变
78
+ expires_at: expiresAt,
79
+ scope: data.scope,
80
+ token_type: data.token_type,
81
+ };
82
+ }
83
+ catch (error) {
84
+ if (error.response?.data?.error_description) {
85
+ throw new AuthError(`刷新 token 失败: ${error.response.data.error_description}`);
86
+ }
87
+ throw new AuthError(`刷新 token 失败: ${error.message}`);
88
+ }
89
+ }
90
+ /**
91
+ * 获取有效的 access token(自动刷新)
92
+ */
93
+ async getAccessToken() {
94
+ const token = loadToken();
95
+ if (!token) {
96
+ throw new AuthError('未登录,请先运行: google-ads auth login');
97
+ }
98
+ // 如果 token 未过期,直接返回
99
+ if (!isTokenExpired(token)) {
100
+ return token.access_token;
101
+ }
102
+ // 如果过期,刷新 token
103
+ try {
104
+ const newToken = await this.refreshAccessToken(token.refresh_token);
105
+ // refresh_token 保存在环境变量中,只需返回新的 access_token
106
+ return newToken.access_token;
107
+ }
108
+ catch (error) {
109
+ throw new AuthError('Token 已过期且刷新失败,请重新登录: google-ads auth login');
110
+ }
111
+ }
112
+ /**
113
+ * 获取 refresh token
114
+ */
115
+ async getRefreshToken() {
116
+ const token = loadToken();
117
+ if (!token) {
118
+ throw new AuthError('未登录,请先运行: google-ads auth login');
119
+ }
120
+ return token.refresh_token;
121
+ }
122
+ }
123
+ //# sourceMappingURL=oauth2-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-manager.js","sourceRoot":"","sources":["../../src/lib/oauth2-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Token Store - Optima JWT Token 存储和管理
3
+ *
4
+ * 支持从以下位置读取 token:
5
+ * 1. 环境变量 OPTIMA_TOKEN
6
+ * 2. ~/.optima/token.json 文件
7
+ */
8
+ export declare class TokenStore {
9
+ private tokenFilePath;
10
+ constructor();
11
+ /**
12
+ * 获取 JWT access token
13
+ */
14
+ getToken(): Promise<string | null>;
15
+ /**
16
+ * 检查是否已有 token
17
+ */
18
+ hasToken(): Promise<boolean>;
19
+ /**
20
+ * 保存 token 到文件
21
+ */
22
+ saveToken(accessToken: string, refreshToken?: string): Promise<void>;
23
+ /**
24
+ * 清除 token
25
+ */
26
+ clearToken(): Promise<void>;
27
+ }
28
+ import { OAuth2Token } from '../config.js';
29
+ /**
30
+ * 加载 Google Ads refresh token(从环境变量)
31
+ * @deprecated 使用 TokenStore 类替代
32
+ */
33
+ export declare function loadToken(): OAuth2Token | null;
34
+ /**
35
+ * 检查是否已有 Google Ads token
36
+ * @deprecated 使用 TokenStore 类替代
37
+ */
38
+ export declare function hasToken(): boolean;
39
+ /**
40
+ * 检查 token 是否过期
41
+ */
42
+ export declare function isTokenExpired(token: OAuth2Token): boolean;
43
+ //# sourceMappingURL=token-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../src/lib/token-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,qBAAa,UAAU;IACrB,OAAO,CAAC,aAAa,CAAS;;IAM9B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBxC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAKlC;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1E;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAKlC;AAID,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,SAAS,IAAI,WAAW,GAAG,IAAI,CAc9C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAG1D"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Token Store - Optima JWT Token 存储和管理
3
+ *
4
+ * 支持从以下位置读取 token:
5
+ * 1. 环境变量 OPTIMA_TOKEN
6
+ * 2. ~/.optima/token.json 文件
7
+ */
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import * as os from 'os';
11
+ export class TokenStore {
12
+ tokenFilePath;
13
+ constructor() {
14
+ this.tokenFilePath = path.join(os.homedir(), '.optima', 'token.json');
15
+ }
16
+ /**
17
+ * 获取 JWT access token
18
+ */
19
+ async getToken() {
20
+ // 1. 尝试从环境变量读取
21
+ if (process.env.OPTIMA_TOKEN) {
22
+ return process.env.OPTIMA_TOKEN;
23
+ }
24
+ // 2. 尝试从文件读取
25
+ try {
26
+ if (fs.existsSync(this.tokenFilePath)) {
27
+ const content = fs.readFileSync(this.tokenFilePath, 'utf-8');
28
+ const token = JSON.parse(content);
29
+ // 支持两种格式:camelCase 和 snake_case
30
+ const accessToken = token.accessToken || token.access_token;
31
+ if (accessToken) {
32
+ return accessToken;
33
+ }
34
+ }
35
+ }
36
+ catch {
37
+ // 忽略文件读取错误
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * 检查是否已有 token
43
+ */
44
+ async hasToken() {
45
+ const token = await this.getToken();
46
+ return !!token;
47
+ }
48
+ /**
49
+ * 保存 token 到文件
50
+ */
51
+ async saveToken(accessToken, refreshToken) {
52
+ const dir = path.dirname(this.tokenFilePath);
53
+ if (!fs.existsSync(dir)) {
54
+ fs.mkdirSync(dir, { recursive: true });
55
+ }
56
+ const token = {
57
+ accessToken,
58
+ refreshToken,
59
+ expiresAt: Date.now() + 24 * 60 * 60 * 1000, // 24 hours
60
+ };
61
+ fs.writeFileSync(this.tokenFilePath, JSON.stringify(token, null, 2));
62
+ }
63
+ /**
64
+ * 清除 token
65
+ */
66
+ async clearToken() {
67
+ if (fs.existsSync(this.tokenFilePath)) {
68
+ fs.unlinkSync(this.tokenFilePath);
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * 加载 Google Ads refresh token(从环境变量)
74
+ * @deprecated 使用 TokenStore 类替代
75
+ */
76
+ export function loadToken() {
77
+ const refreshToken = process.env.GOOGLE_ADS_REFRESH_TOKEN;
78
+ if (!refreshToken) {
79
+ return null;
80
+ }
81
+ return {
82
+ access_token: '',
83
+ refresh_token: refreshToken,
84
+ expires_at: 0,
85
+ scope: 'https://www.googleapis.com/auth/adwords',
86
+ token_type: 'Bearer',
87
+ };
88
+ }
89
+ /**
90
+ * 检查是否已有 Google Ads token
91
+ * @deprecated 使用 TokenStore 类替代
92
+ */
93
+ export function hasToken() {
94
+ return !!process.env.GOOGLE_ADS_REFRESH_TOKEN;
95
+ }
96
+ /**
97
+ * 检查 token 是否过期
98
+ */
99
+ export function isTokenExpired(token) {
100
+ const expiryBuffer = 5 * 60 * 1000;
101
+ return Date.now() >= token.expires_at - expiryBuffer;
102
+ }
103
+ //# sourceMappingURL=token-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../src/lib/token-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 配置管理工具 - 纯环境变量方式
3
+ */
4
+ import { GoogleAdsConfig } from '../config.js';
5
+ /**
6
+ * 从环境变量加载配置
7
+ */
8
+ export declare function loadConfig(): GoogleAdsConfig;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;GAEG;AACH,wBAAgB,UAAU,IAAI,eAAe,CA8B5C"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * 配置管理工具 - 纯环境变量方式
3
+ */
4
+ /**
5
+ * 从环境变量加载配置
6
+ */
7
+ export function loadConfig() {
8
+ const developerToken = process.env.GOOGLE_ADS_DEVELOPER_TOKEN;
9
+ const clientId = process.env.GOOGLE_ADS_CLIENT_ID;
10
+ const clientSecret = process.env.GOOGLE_ADS_CLIENT_SECRET;
11
+ if (!developerToken || !clientId || !clientSecret) {
12
+ throw new Error('缺少必需的环境变量配置。请设置以下环境变量:\n\n' +
13
+ ' GOOGLE_ADS_DEVELOPER_TOKEN\n' +
14
+ ' GOOGLE_ADS_CLIENT_ID\n' +
15
+ ' GOOGLE_ADS_CLIENT_SECRET\n\n' +
16
+ '方式 1: 创建 .env 文件(推荐)\n' +
17
+ ' 复制 .env.example 为 .env 并填入实际值\n\n' +
18
+ '方式 2: 导出环境变量\n' +
19
+ ' export GOOGLE_ADS_DEVELOPER_TOKEN=xxx\n' +
20
+ ' export GOOGLE_ADS_CLIENT_ID=xxx\n' +
21
+ ' export GOOGLE_ADS_CLIENT_SECRET=xxx\n\n' +
22
+ '详见: https://github.com/Optima-Chat/google-ads-cli#readme');
23
+ }
24
+ return {
25
+ developerToken,
26
+ clientId,
27
+ clientSecret,
28
+ loginCustomerId: (process.env.GOOGLE_ADS_LOGIN_CUSTOMER_ID || process.env.GOOGLE_ADS_MANAGER_ACCOUNT_ID)?.replace(/-/g, ''),
29
+ defaultCustomerId: process.env.GOOGLE_ADS_CUSTOMER_ID,
30
+ outputFormat: process.env.GOOGLE_ADS_OUTPUT_FORMAT || 'table',
31
+ colorOutput: process.env.GOOGLE_ADS_COLOR_OUTPUT !== 'false',
32
+ };
33
+ }
34
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAE1D,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,4BAA4B;YAC5B,gCAAgC;YAChC,0BAA0B;YAC1B,gCAAgC;YAChC,wBAAwB;YACxB,qCAAqC;YACrC,gBAAgB;YAChB,2CAA2C;YAC3C,qCAAqC;YACrC,2CAA2C;YAC3C,0DAA0D,CAC3D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,cAAc;QACd,QAAQ;QACR,YAAY;QACZ,eAAe,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3H,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QACrD,YAAY,EAAG,OAAO,CAAC,GAAG,CAAC,wBAAgC,IAAI,OAAO;QACtE,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,OAAO;KAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Customer ID 获取工具
3
+ */
4
+ /**
5
+ * 获取 Customer ID(从 CLI config 或环境变量)
6
+ * @returns Customer ID
7
+ * @throws 如果既没有配置也没有设置环境变量
8
+ */
9
+ export declare function getCustomerId(): string;
10
+ //# sourceMappingURL=customer-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer-id.d.ts","sourceRoot":"","sources":["../../src/utils/customer-id.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAqBtC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Customer ID 获取工具
3
+ */
4
+ import Conf from 'conf';
5
+ const config = new Conf({ projectName: 'google-ads-cli' });
6
+ /**
7
+ * 获取 Customer ID(从 CLI config 或环境变量)
8
+ * @returns Customer ID
9
+ * @throws 如果既没有配置也没有设置环境变量
10
+ */
11
+ export function getCustomerId() {
12
+ // 1. 优先从 CLI config 读取(account create 保存的)
13
+ const configCustomerId = config.get('customerId');
14
+ if (configCustomerId) {
15
+ return configCustomerId;
16
+ }
17
+ // 2. 从环境变量读取(用于手动配置的情况)
18
+ const envCustomerId = process.env.GOOGLE_ADS_CUSTOMER_ID;
19
+ if (envCustomerId) {
20
+ return envCustomerId;
21
+ }
22
+ // 3. 都没有则报错
23
+ throw new Error('未找到 Google Ads 账号配置\n\n' +
24
+ '请先创建您的账号:\n' +
25
+ ' google-ads account create --email <your-email> --name <your-name>\n\n' +
26
+ '或者在 .env 文件中手动配置:\n' +
27
+ ' GOOGLE_ADS_CUSTOMER_ID=your-customer-id');
28
+ }
29
+ //# sourceMappingURL=customer-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer-id.js","sourceRoot":"","sources":["../../src/utils/customer-id.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAuB,CAAC;IACxE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACzD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,YAAY;IACZ,MAAM,IAAI,KAAK,CACb,yBAAyB;QACvB,aAAa;QACb,yEAAyE;QACzE,qBAAqB;QACrB,2CAA2C,CAC9C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * .env 文件更新工具
3
+ */
4
+ /**
5
+ * 更新 .env 文件中的特定变量
6
+ */
7
+ export declare function updateEnvFile(key: string, value: string): void;
8
+ //# sourceMappingURL=env-updater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-updater.d.ts","sourceRoot":"","sources":["../../src/utils/env-updater.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CA2C9D"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * .env 文件更新工具
3
+ */
4
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
5
+ import { join } from 'path';
6
+ /**
7
+ * 更新 .env 文件中的特定变量
8
+ */
9
+ export function updateEnvFile(key, value) {
10
+ // .env 文件路径(假设在项目根目录)
11
+ const envPath = join(process.cwd(), '.env');
12
+ let envContent = '';
13
+ // 如果文件存在,读取现有内容
14
+ if (existsSync(envPath)) {
15
+ envContent = readFileSync(envPath, 'utf-8');
16
+ }
17
+ const lines = envContent.split('\n');
18
+ let found = false;
19
+ // 查找并更新目标行
20
+ for (let i = 0; i < lines.length; i++) {
21
+ const line = lines[i].trim();
22
+ // 跳过注释和空行
23
+ if (line.startsWith('#') || line === '') {
24
+ continue;
25
+ }
26
+ // 检查是否是目标变量
27
+ if (line.startsWith(`${key}=`) || line.startsWith(`# ${key}=`)) {
28
+ lines[i] = `${key}=${value}`;
29
+ found = true;
30
+ break;
31
+ }
32
+ }
33
+ // 如果没找到,追加到文件末尾
34
+ if (!found) {
35
+ // 确保最后有换行
36
+ if (envContent && !envContent.endsWith('\n')) {
37
+ lines.push('');
38
+ }
39
+ lines.push(`# OAuth2 Refresh Token(通过 google-ads auth login 自动获取)`);
40
+ lines.push(`${key}=${value}`);
41
+ }
42
+ // 写回文件
43
+ writeFileSync(envPath, lines.join('\n'), 'utf-8');
44
+ }
45
+ //# sourceMappingURL=env-updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-updater.js","sourceRoot":"","sources":["../../src/utils/env-updater.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,KAAa;IACtD,sBAAsB;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAE5C,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,gBAAgB;IAChB,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,WAAW;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7B,UAAU;QACV,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,YAAY;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YAC7B,KAAK,GAAG,IAAI,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,UAAU;QACV,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;IACP,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * 错误处理工具
3
+ */
4
+ /**
5
+ * 自定义错误类
6
+ */
7
+ export declare class GoogleAdsError extends Error {
8
+ code?: string | undefined;
9
+ details?: any | undefined;
10
+ constructor(message: string, code?: string | undefined, details?: any | undefined);
11
+ }
12
+ /**
13
+ * 配置错误
14
+ */
15
+ export declare class ConfigError extends GoogleAdsError {
16
+ constructor(message: string);
17
+ }
18
+ /**
19
+ * 认证错误
20
+ */
21
+ export declare class AuthError extends GoogleAdsError {
22
+ constructor(message: string);
23
+ }
24
+ /**
25
+ * 处理并显示错误
26
+ */
27
+ export declare function handleError(err: any): void;
28
+ /**
29
+ * 格式化友好的错误信息
30
+ */
31
+ export declare function formatError(err: any): string;
32
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IAG9B,IAAI,CAAC,EAAE,MAAM;IACb,OAAO,CAAC,EAAE,GAAG;gBAFpB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,GAAG,YAAA;CAKvB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,cAAc;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,cAAc;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAc1C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAU5C"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * 错误处理工具
3
+ */
4
+ import chalk from 'chalk';
5
+ import { error as logError } from './logger.js';
6
+ /**
7
+ * 自定义错误类
8
+ */
9
+ export class GoogleAdsError extends Error {
10
+ code;
11
+ details;
12
+ constructor(message, code, details) {
13
+ super(message);
14
+ this.code = code;
15
+ this.details = details;
16
+ this.name = 'GoogleAdsError';
17
+ }
18
+ }
19
+ /**
20
+ * 配置错误
21
+ */
22
+ export class ConfigError extends GoogleAdsError {
23
+ constructor(message) {
24
+ super(message, 'CONFIG_ERROR');
25
+ this.name = 'ConfigError';
26
+ }
27
+ }
28
+ /**
29
+ * 认证错误
30
+ */
31
+ export class AuthError extends GoogleAdsError {
32
+ constructor(message) {
33
+ super(message, 'AUTH_ERROR');
34
+ this.name = 'AuthError';
35
+ }
36
+ }
37
+ /**
38
+ * 处理并显示错误
39
+ */
40
+ export function handleError(err) {
41
+ if (err instanceof GoogleAdsError) {
42
+ logError(err.message);
43
+ if (err.details) {
44
+ console.error(chalk.gray('详情:'), err.details);
45
+ }
46
+ }
47
+ else if (err.message) {
48
+ logError(err.message);
49
+ }
50
+ else {
51
+ logError('未知错误');
52
+ console.error(err);
53
+ }
54
+ process.exit(1);
55
+ }
56
+ /**
57
+ * 格式化友好的错误信息
58
+ */
59
+ export function formatError(err) {
60
+ if (err instanceof GoogleAdsError) {
61
+ return chalk.red(`✗ ${err.message}`);
62
+ }
63
+ if (err.message) {
64
+ return chalk.red(`✗ ${err.message}`);
65
+ }
66
+ return chalk.red('✗ 未知错误');
67
+ }
68
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG9B;IACA;IAHT,YACE,OAAe,EACR,IAAa,EACb,OAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAS;QACb,YAAO,GAAP,OAAO,CAAM;QAGpB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,cAAc;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,cAAc;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;QAClC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACvB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAQ;IAClC,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC"}