@xbongbong/xbbcli 2.1.1 → 2.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.
Files changed (258) hide show
  1. package/README.md +32 -2
  2. package/ai-call-add-task.js +3 -15
  3. package/ai-word-list.js +3 -15
  4. package/bin/xbbcli.js +15 -2
  5. package/buyer-inquiry-detail.js +2 -14
  6. package/buyer-inquiry-list.js +2 -14
  7. package/clue-add-couser.js +2 -14
  8. package/clue-add.js +2 -14
  9. package/clue-back.js +2 -14
  10. package/clue-del.js +2 -14
  11. package/clue-delete-couser.js +2 -14
  12. package/clue-delete-mainuser.js +2 -14
  13. package/clue-detail.js +2 -14
  14. package/clue-distribution.js +2 -14
  15. package/clue-edit.js +2 -14
  16. package/clue-handover.js +3 -15
  17. package/clue-list.js +2 -14
  18. package/clue-thorough-delete.js +2 -14
  19. package/communicate-add.js +2 -14
  20. package/communicate-del.js +2 -14
  21. package/communicate-detail.js +2 -14
  22. package/communicate-edit.js +2 -14
  23. package/communicate-list.js +2 -14
  24. package/communicate-plan-add.js +2 -14
  25. package/communicate-plan-cancel.js +2 -14
  26. package/communicate-plan-del.js +2 -14
  27. package/communicate-plan-detail.js +2 -14
  28. package/communicate-plan-list.js +2 -14
  29. package/communicate-plan-single-operate.js +2 -14
  30. package/contact-add-couser.js +2 -14
  31. package/contact-add-mainuser.js +2 -14
  32. package/contact-add.js +2 -14
  33. package/contact-del.js +2 -14
  34. package/contact-delete-couser.js +2 -14
  35. package/contact-delete-mainuser.js +2 -14
  36. package/contact-detail.js +2 -14
  37. package/contact-edit.js +2 -14
  38. package/contact-handover.js +2 -14
  39. package/contact-list.js +2 -14
  40. package/contract-add-couser.js +2 -14
  41. package/contract-add-mainuser.js +2 -14
  42. package/contract-add.js +2 -14
  43. package/contract-del.js +2 -14
  44. package/contract-delete-couser.js +2 -14
  45. package/contract-delete-mainuser.js +2 -14
  46. package/contract-detail.js +2 -14
  47. package/contract-edit.js +2 -14
  48. package/contract-handover.js +2 -14
  49. package/contract-list.js +2 -14
  50. package/contract-outstock-add.js +2 -14
  51. package/contract-outstock-del.js +2 -14
  52. package/contract-outstock-detail.js +2 -14
  53. package/contract-outstock-edit.js +2 -14
  54. package/contract-outstock-list.js +2 -14
  55. package/customer-add-couser.js +2 -14
  56. package/customer-add.js +2 -14
  57. package/customer-back.js +2 -14
  58. package/customer-del.js +2 -14
  59. package/customer-delete-couser.js +2 -14
  60. package/customer-delete-mainuser.js +2 -14
  61. package/customer-detail.js +2 -14
  62. package/customer-distribution.js +2 -14
  63. package/customer-edit.js +2 -14
  64. package/customer-handover.js +2 -14
  65. package/customer-invoice-address-add.js +2 -14
  66. package/customer-invoice-address-edit.js +2 -14
  67. package/customer-invoice-address.js +2 -14
  68. package/customer-invoice-info-add.js +2 -14
  69. package/customer-invoice-info-edit.js +2 -14
  70. package/customer-invoice-info.js +2 -14
  71. package/customer-list.js +2 -14
  72. package/department-add.js +2 -14
  73. package/department-del.js +2 -14
  74. package/department-edit.js +2 -14
  75. package/department-list.js +2 -14
  76. package/form-data-add-couser.js +2 -14
  77. package/form-data-add-mainuser.js +2 -14
  78. package/form-data-add.js +2 -14
  79. package/form-data-del.js +2 -14
  80. package/form-data-delete-couser.js +2 -14
  81. package/form-data-delete-mainuser.js +2 -14
  82. package/form-data-detail.js +2 -14
  83. package/form-data-edit.js +2 -14
  84. package/form-data-handover.js +2 -14
  85. package/form-data-list.js +2 -14
  86. package/form-get.js +2 -14
  87. package/form-list.js +2 -14
  88. package/invoice-add.js +3 -15
  89. package/invoice-cancel.js +3 -15
  90. package/invoice-del.js +3 -15
  91. package/invoice-detail.js +3 -15
  92. package/invoice-edit.js +3 -15
  93. package/invoice-get-amount-detail.js +3 -15
  94. package/invoice-list.js +3 -15
  95. package/invoice-red.js +3 -15
  96. package/label-add.js +3 -15
  97. package/label-all-list.js +3 -15
  98. package/label-batch-add.js +3 -15
  99. package/label-batch-remove.js +3 -15
  100. package/label-del-completely.js +3 -15
  101. package/label-del.js +3 -15
  102. package/label-edit.js +3 -15
  103. package/label-group-add.js +3 -15
  104. package/label-group-del.js +3 -15
  105. package/label-group-list.js +3 -15
  106. package/label-group-update.js +3 -15
  107. package/label-list.js +3 -15
  108. package/label-reduction.js +3 -15
  109. package/label-repeat.js +3 -15
  110. package/market-activity-add.js +2 -14
  111. package/market-activity-del.js +2 -14
  112. package/market-activity-detail.js +2 -14
  113. package/market-activity-edit.js +2 -14
  114. package/market-activity-handover.js +2 -14
  115. package/market-activity-list.js +2 -14
  116. package/opportunity-add-couser.js +2 -14
  117. package/opportunity-add-mainuser.js +2 -14
  118. package/opportunity-add.js +2 -14
  119. package/opportunity-del.js +2 -14
  120. package/opportunity-delete-couser.js +2 -14
  121. package/opportunity-delete-mainuser.js +2 -14
  122. package/opportunity-detail.js +2 -14
  123. package/opportunity-edit.js +2 -14
  124. package/opportunity-handover.js +2 -14
  125. package/opportunity-list.js +2 -14
  126. package/package.json +1 -1
  127. package/pay-plan-add-couser.js +2 -14
  128. package/pay-plan-add-mainuser.js +2 -14
  129. package/pay-plan-add.js +2 -14
  130. package/pay-plan-delete-couser.js +2 -14
  131. package/pay-plan-delete-mainuser.js +2 -14
  132. package/pay-plan-handover.js +2 -14
  133. package/pay-sheet-add-bad.js +2 -14
  134. package/pay-sheet-add-couser.js +2 -14
  135. package/pay-sheet-add-mainuser.js +2 -14
  136. package/pay-sheet-add-red.js +2 -14
  137. package/pay-sheet-add-write-off.js +2 -14
  138. package/pay-sheet-del.js +2 -14
  139. package/pay-sheet-delete-couser.js +2 -14
  140. package/pay-sheet-delete-mainuser.js +2 -14
  141. package/pay-sheet-detail.js +2 -14
  142. package/pay-sheet-edit-bad.js +2 -14
  143. package/pay-sheet-edit-red.js +2 -14
  144. package/pay-sheet-edit-write-off.js +2 -14
  145. package/pay-sheet-get-amount-detail.js +2 -14
  146. package/pay-sheet-list.js +2 -14
  147. package/payment-add-couser.js +2 -14
  148. package/payment-add-mainuser.js +2 -14
  149. package/payment-add.js +2 -14
  150. package/payment-del.js +2 -14
  151. package/payment-delete-couser.js +2 -14
  152. package/payment-delete-mainuser.js +2 -14
  153. package/payment-detail.js +2 -14
  154. package/payment-edit.js +2 -14
  155. package/payment-handover.js +2 -14
  156. package/payment-list.js +2 -14
  157. package/payment-sheet-add-bad-debt.js +2 -14
  158. package/payment-sheet-add-pre.js +2 -14
  159. package/payment-sheet-add-red.js +2 -14
  160. package/payment-sheet-add-write-off.js +2 -14
  161. package/payment-sheet-del.js +2 -14
  162. package/payment-sheet-detail.js +2 -14
  163. package/payment-sheet-edit-bad-debt.js +2 -14
  164. package/payment-sheet-edit-red.js +2 -14
  165. package/payment-sheet-edit-write-off.js +2 -14
  166. package/payment-sheet-get-amount-detail.js +2 -14
  167. package/payment-sheet-handover.js +2 -14
  168. package/payment-sheet-list.js +2 -14
  169. package/product-add.js +2 -14
  170. package/product-category-add.js +2 -14
  171. package/product-category-del.js +2 -14
  172. package/product-category-list.js +2 -14
  173. package/product-category-update.js +2 -14
  174. package/product-del.js +2 -14
  175. package/product-detail.js +2 -14
  176. package/product-edit.js +2 -14
  177. package/product-list.js +2 -14
  178. package/product-online.js +2 -14
  179. package/quotation-add-couser.js +3 -15
  180. package/quotation-add-mainuser.js +3 -15
  181. package/quotation-add.js +3 -15
  182. package/quotation-del.js +3 -15
  183. package/quotation-delete-couser.js +3 -15
  184. package/quotation-delete-mainuser.js +3 -15
  185. package/quotation-detail.js +3 -15
  186. package/quotation-edit.js +3 -15
  187. package/quotation-handover.js +2 -14
  188. package/quotation-list.js +3 -15
  189. package/refund-add.js +2 -14
  190. package/refund-del.js +2 -14
  191. package/refund-detail.js +2 -14
  192. package/refund-edit.js +2 -14
  193. package/refund-list.js +2 -14
  194. package/role-list.js +2 -14
  195. package/sign-in-list.js +2 -14
  196. package/stage-get.js +2 -14
  197. package/stage-jump.js +2 -14
  198. package/supplier-add.js +2 -14
  199. package/token-del.js +5 -0
  200. package/token-generate.js +2 -14
  201. package/token-list.js +20 -2
  202. package/token-set.js +19 -3
  203. package/token-use.js +5 -0
  204. package/user-add.js +2 -14
  205. package/user-del.js +2 -14
  206. package/user-edit.js +2 -14
  207. package/user-handover.js +2 -14
  208. package/user-list.js +2 -14
  209. package/work-order-add.js +2 -14
  210. package/work-order-asset-add-couser.js +3 -15
  211. package/work-order-asset-add-mainuser.js +3 -15
  212. package/work-order-asset-add.js +3 -15
  213. package/work-order-asset-del-couser.js +3 -15
  214. package/work-order-asset-del-mainuser.js +3 -15
  215. package/work-order-asset-del.js +3 -15
  216. package/work-order-asset-detail.js +3 -15
  217. package/work-order-asset-edit.js +3 -15
  218. package/work-order-asset-handover.js +3 -15
  219. package/work-order-asset-list.js +3 -15
  220. package/work-order-del.js +2 -14
  221. package/work-order-detail.js +2 -14
  222. package/work-order-dynamic-list.js +2 -14
  223. package/work-order-edit.js +2 -14
  224. package/work-order-list.js +2 -14
  225. package/work-order-operate.js +2 -14
  226. package/work-order-template-detail.js +2 -14
  227. package/work-order-template-list.js +2 -14
  228. package/work-report-daily-add.js +2 -14
  229. package/work-report-daily-del.js +2 -14
  230. package/work-report-daily-detail.js +2 -14
  231. package/work-report-daily-edit.js +2 -14
  232. package/work-report-daily-get-work-plan.js +2 -14
  233. package/work-report-daily-list.js +2 -14
  234. package/work-report-monthly-add.js +2 -14
  235. package/work-report-monthly-del.js +2 -14
  236. package/work-report-monthly-detail.js +2 -14
  237. package/work-report-monthly-edit.js +2 -14
  238. package/work-report-monthly-list.js +2 -14
  239. package/work-report-weekly-add.js +2 -14
  240. package/work-report-weekly-del.js +2 -14
  241. package/work-report-weekly-detail.js +2 -14
  242. package/work-report-weekly-edit.js +2 -14
  243. package/work-report-weekly-list.js +2 -14
  244. package/work-task-add-couser.js +2 -14
  245. package/work-task-add.js +2 -14
  246. package/work-task-delete-couser.js +2 -14
  247. package/work-task-detail.js +2 -14
  248. package/work-task-edit.js +2 -14
  249. package/work-task-handover.js +2 -14
  250. package/workorder-add-couser.js +2 -14
  251. package/workorder-delete-couser.js +2 -14
  252. package/workorder-handover.js +2 -14
  253. package/workorderlist.js +2 -14
  254. package/workorderproductlist.js +2 -14
  255. package/worktimerecorddetail.js +2 -14
  256. package/worktimerecordlist.js +2 -14
  257. package/xbb-config.js +113 -0
  258. package/version.js +0 -18
package/xbb-config.js ADDED
@@ -0,0 +1,113 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { spawnSync } from 'node:child_process';
5
+
6
+ const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
7
+ const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
8
+ const ENV_FILE = path.join(CONFIG_DIR, 'env.sh');
9
+
10
+ // config.env 字段名 -> 对应环境变量名(环境变量模式只支持单公司)
11
+ export const ENV_VAR_NAMES = Object.freeze({
12
+ corpid: 'XBB_CORPID',
13
+ token: 'XBB_TOKEN',
14
+ baseurl: 'XBB_BASEURL',
15
+ userId: 'XBB_USERID',
16
+ corpName: 'XBB_CORPNAME',
17
+ userName: 'XBB_USERNAME',
18
+ });
19
+
20
+ function trim(value) {
21
+ return String(value ?? '').trim();
22
+ }
23
+
24
+ function isTruthy(value) {
25
+ return ['1', 'true', 'yes', 'on'].includes(trim(value).toLowerCase());
26
+ }
27
+
28
+ // 读取环境中非空的 XBB_* 变量,返回与 config.env 单条配置同构的对象
29
+ export function readEnvConfig() {
30
+ const config = {};
31
+ for (const [field, name] of Object.entries(ENV_VAR_NAMES)) {
32
+ const value = trim(process.env[name]);
33
+ if (value) config[field] = value;
34
+ }
35
+ return config;
36
+ }
37
+
38
+ export function hasEnvConfig(config = readEnvConfig()) {
39
+ return Boolean(trim(config.corpid) || trim(config.token));
40
+ }
41
+
42
+ // XBB_ENV_ONLY=1 时强制只使用环境变量,忽略 config.env
43
+ export function isEnvOnly() {
44
+ return isTruthy(process.env.XBB_ENV_ONLY);
45
+ }
46
+
47
+ // 与旧版每个命令内联的 readConfig 行为保持一致:优先返回 enable=true 的公司
48
+ function readFileConfig() {
49
+ try {
50
+ const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
51
+ const companies = Array.isArray(parsed)
52
+ ? parsed
53
+ : Array.isArray(parsed?.companies)
54
+ ? parsed.companies
55
+ : null;
56
+ if (companies) {
57
+ return companies.find((item) => item && item.enable) || {};
58
+ }
59
+ return parsed || {};
60
+ } catch {
61
+ return {};
62
+ }
63
+ }
64
+
65
+ // 配置文件优先:有启用公司就用配置,否则回落到环境变量
66
+ export function readActiveConfig() {
67
+ const envConfig = readEnvConfig();
68
+ if (isEnvOnly()) {
69
+ return envConfig;
70
+ }
71
+ const fileConfig = readFileConfig();
72
+ if (Object.keys(fileConfig).length > 0) {
73
+ return fileConfig;
74
+ }
75
+ return envConfig;
76
+ }
77
+
78
+ // 当前生效来源是否为环境变量
79
+ export function isEnvActive() {
80
+ if (isEnvOnly()) {
81
+ return hasEnvConfig();
82
+ }
83
+ return Object.keys(readFileConfig()).length === 0 && hasEnvConfig();
84
+ }
85
+
86
+ export function getEnvVarNames() {
87
+ return Object.values(ENV_VAR_NAMES);
88
+ }
89
+
90
+ // token-set 成功后把凭证写入环境变量:Windows 用 setx 写用户级变量,其他平台写 ~/.xbbcli/env.sh
91
+ export function persistEnvVars(values) {
92
+ const entries = Object.entries(ENV_VAR_NAMES)
93
+ .map(([field, name]) => [name, trim(values?.[field])])
94
+ .filter(([, value]) => value !== '');
95
+ if (!entries.length) {
96
+ return { stored: 'none', file: '', failed: [] };
97
+ }
98
+ if (process.platform === 'win32') {
99
+ const failed = [];
100
+ for (const [name, value] of entries) {
101
+ const result = spawnSync('setx', [name, value], { encoding: 'utf8', windowsHide: true });
102
+ if (result.error || result.status !== 0) failed.push(name);
103
+ }
104
+ if (failed.length) {
105
+ throw new Error(`写入用户环境变量失败:${failed.join(', ')}`);
106
+ }
107
+ return { stored: 'user', file: '', failed: [] };
108
+ }
109
+ const lines = entries.map(([name, value]) => `export ${name}='${value.replaceAll("'", "'\\''")}'`);
110
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
111
+ fs.writeFileSync(ENV_FILE, `${lines.join('\n')}\n`, { encoding: 'utf8', mode: 0o600 });
112
+ return { stored: 'file', file: ENV_FILE, failed: [] };
113
+ }
package/version.js DELETED
@@ -1,18 +0,0 @@
1
- import { cli, Strategy } from './xbb-registry.js';
2
-
3
- const VERSION = 'v1.6';
4
-
5
- cli({
6
- site: 'xbb',
7
- name: 'version',
8
- description: '查看销帮帮插件版本号',
9
- strategy: Strategy.PUBLIC,
10
- access: 'read',
11
- browser: false,
12
- domain: 'proapi.xbongbong.com',
13
- args: [],
14
- columns: ['version'],
15
- func: async function () {
16
- return [{ version: VERSION }];
17
- },
18
- });