@xbongbong/xbbcli 2.0.0 → 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.
- package/README.md +101 -2
- package/ai-call-add-task.js +3 -6
- package/ai-word-list.js +3 -6
- package/bin/xbbcli.js +20 -2
- package/buyer-inquiry-detail.js +2 -5
- package/buyer-inquiry-list.js +2 -5
- package/clue-add-couser.js +2 -5
- package/clue-add.js +2 -5
- package/clue-back.js +2 -5
- package/clue-del.js +2 -5
- package/clue-delete-couser.js +2 -5
- package/clue-delete-mainuser.js +2 -5
- package/clue-detail.js +2 -5
- package/clue-distribution.js +2 -5
- package/clue-edit.js +2 -5
- package/clue-handover.js +3 -6
- package/clue-list.js +2 -5
- package/clue-thorough-delete.js +2 -5
- package/communicate-add.js +2 -5
- package/communicate-del.js +2 -5
- package/communicate-detail.js +2 -5
- package/communicate-edit.js +2 -5
- package/communicate-list.js +2 -5
- package/communicate-plan-add.js +2 -5
- package/communicate-plan-cancel.js +2 -5
- package/communicate-plan-del.js +2 -5
- package/communicate-plan-detail.js +2 -5
- package/communicate-plan-list.js +2 -5
- package/communicate-plan-single-operate.js +2 -5
- package/contact-add-couser.js +2 -5
- package/contact-add-mainuser.js +2 -5
- package/contact-add.js +2 -5
- package/contact-del.js +2 -1
- package/contact-delete-couser.js +2 -5
- package/contact-delete-mainuser.js +2 -5
- package/contact-detail.js +2 -1
- package/contact-edit.js +2 -5
- package/contact-handover.js +2 -5
- package/contact-list.js +2 -5
- package/contract-add-couser.js +2 -5
- package/contract-add-mainuser.js +2 -5
- package/contract-add.js +2 -5
- package/contract-del.js +2 -5
- package/contract-delete-couser.js +2 -5
- package/contract-delete-mainuser.js +2 -5
- package/contract-detail.js +2 -5
- package/contract-edit.js +2 -5
- package/contract-handover.js +2 -5
- package/contract-list.js +2 -5
- package/contract-outstock-add.js +2 -5
- package/contract-outstock-del.js +2 -5
- package/contract-outstock-detail.js +2 -5
- package/contract-outstock-edit.js +2 -5
- package/contract-outstock-list.js +2 -5
- package/customer-add-couser.js +2 -5
- package/customer-add.js +2 -5
- package/customer-back.js +2 -5
- package/customer-del.js +2 -5
- package/customer-delete-couser.js +2 -5
- package/customer-delete-mainuser.js +2 -5
- package/customer-detail.js +2 -5
- package/customer-distribution.js +2 -5
- package/customer-edit.js +2 -5
- package/customer-handover.js +2 -5
- package/customer-invoice-address-add.js +2 -5
- package/customer-invoice-address-edit.js +2 -5
- package/customer-invoice-address.js +2 -5
- package/customer-invoice-info-add.js +2 -5
- package/customer-invoice-info-edit.js +2 -5
- package/customer-invoice-info.js +2 -5
- package/customer-list.js +2 -5
- package/department-add.js +2 -5
- package/department-del.js +2 -5
- package/department-edit.js +2 -5
- package/department-list.js +2 -5
- package/form-data-add-couser.js +2 -5
- package/form-data-add-mainuser.js +2 -5
- package/form-data-add.js +2 -5
- package/form-data-del.js +2 -5
- package/form-data-delete-couser.js +2 -5
- package/form-data-delete-mainuser.js +2 -5
- package/form-data-detail.js +2 -5
- package/form-data-edit.js +2 -5
- package/form-data-handover.js +2 -5
- package/form-data-list.js +2 -5
- package/form-get.js +2 -5
- package/form-list.js +2 -5
- package/invoice-add.js +3 -6
- package/invoice-cancel.js +3 -6
- package/invoice-del.js +3 -6
- package/invoice-detail.js +3 -6
- package/invoice-edit.js +3 -6
- package/invoice-get-amount-detail.js +3 -6
- package/invoice-list.js +3 -6
- package/invoice-red.js +3 -6
- package/label-add.js +3 -6
- package/label-all-list.js +3 -6
- package/label-batch-add.js +3 -6
- package/label-batch-remove.js +3 -6
- package/label-del-completely.js +3 -6
- package/label-del.js +3 -6
- package/label-edit.js +3 -6
- package/label-group-add.js +3 -6
- package/label-group-del.js +3 -6
- package/label-group-list.js +3 -6
- package/label-group-update.js +3 -6
- package/label-list.js +3 -6
- package/label-reduction.js +3 -6
- package/label-repeat.js +3 -6
- package/market-activity-add.js +2 -5
- package/market-activity-del.js +2 -5
- package/market-activity-detail.js +2 -5
- package/market-activity-edit.js +2 -5
- package/market-activity-handover.js +2 -5
- package/market-activity-list.js +2 -5
- package/opportunity-add-couser.js +2 -5
- package/opportunity-add-mainuser.js +2 -5
- package/opportunity-add.js +2 -5
- package/opportunity-del.js +2 -5
- package/opportunity-delete-couser.js +2 -5
- package/opportunity-delete-mainuser.js +2 -5
- package/opportunity-detail.js +2 -5
- package/opportunity-edit.js +2 -5
- package/opportunity-handover.js +2 -5
- package/opportunity-list.js +2 -5
- package/package.json +1 -1
- package/pay-plan-add-couser.js +2 -5
- package/pay-plan-add-mainuser.js +2 -5
- package/pay-plan-add.js +2 -5
- package/pay-plan-delete-couser.js +2 -5
- package/pay-plan-delete-mainuser.js +2 -5
- package/pay-plan-handover.js +2 -5
- package/pay-sheet-add-bad.js +2 -5
- package/pay-sheet-add-couser.js +2 -5
- package/pay-sheet-add-mainuser.js +2 -5
- package/pay-sheet-add-red.js +2 -5
- package/pay-sheet-add-write-off.js +2 -5
- package/pay-sheet-del.js +2 -5
- package/pay-sheet-delete-couser.js +2 -5
- package/pay-sheet-delete-mainuser.js +2 -5
- package/pay-sheet-detail.js +2 -5
- package/pay-sheet-edit-bad.js +2 -5
- package/pay-sheet-edit-red.js +2 -5
- package/pay-sheet-edit-write-off.js +2 -5
- package/pay-sheet-get-amount-detail.js +2 -5
- package/pay-sheet-list.js +2 -5
- package/payment-add-couser.js +2 -5
- package/payment-add-mainuser.js +2 -5
- package/payment-add.js +2 -5
- package/payment-del.js +2 -5
- package/payment-delete-couser.js +2 -5
- package/payment-delete-mainuser.js +2 -5
- package/payment-detail.js +2 -5
- package/payment-edit.js +2 -5
- package/payment-handover.js +2 -5
- package/payment-list.js +2 -5
- package/payment-sheet-add-bad-debt.js +2 -5
- package/payment-sheet-add-pre.js +2 -5
- package/payment-sheet-add-red.js +2 -5
- package/payment-sheet-add-write-off.js +2 -5
- package/payment-sheet-del.js +2 -5
- package/payment-sheet-detail.js +2 -5
- package/payment-sheet-edit-bad-debt.js +2 -5
- package/payment-sheet-edit-red.js +2 -5
- package/payment-sheet-edit-write-off.js +2 -5
- package/payment-sheet-get-amount-detail.js +2 -5
- package/payment-sheet-handover.js +2 -5
- package/payment-sheet-list.js +2 -5
- package/product-add.js +2 -5
- package/product-category-add.js +2 -5
- package/product-category-del.js +2 -5
- package/product-category-list.js +2 -5
- package/product-category-update.js +2 -5
- package/product-del.js +2 -5
- package/product-detail.js +2 -5
- package/product-edit.js +2 -5
- package/product-list.js +2 -5
- package/product-online.js +2 -5
- package/quotation-add-couser.js +3 -6
- package/quotation-add-mainuser.js +3 -6
- package/quotation-add.js +3 -6
- package/quotation-del.js +3 -6
- package/quotation-delete-couser.js +3 -6
- package/quotation-delete-mainuser.js +3 -6
- package/quotation-detail.js +3 -6
- package/quotation-edit.js +3 -6
- package/quotation-handover.js +2 -5
- package/quotation-list.js +3 -6
- package/refund-add.js +4 -1
- package/refund-del.js +4 -1
- package/refund-detail.js +4 -1
- package/refund-edit.js +4 -1
- package/refund-list.js +2 -5
- package/role-list.js +2 -5
- package/sign-in-list.js +2 -5
- package/stage-get.js +2 -5
- package/stage-jump.js +2 -5
- package/supplier-add.js +2 -5
- package/token-del.js +106 -0
- package/token-generate.js +2 -5
- package/token-list.js +119 -0
- package/token-set.js +191 -10
- package/token-use.js +102 -0
- package/user-add.js +2 -5
- package/user-del.js +2 -5
- package/user-edit.js +2 -5
- package/user-handover.js +2 -5
- package/user-list.js +5 -8
- package/work-order-add.js +2 -5
- package/work-order-asset-add-couser.js +3 -6
- package/work-order-asset-add-mainuser.js +3 -6
- package/work-order-asset-add.js +3 -6
- package/work-order-asset-del-couser.js +3 -6
- package/work-order-asset-del-mainuser.js +3 -6
- package/work-order-asset-del.js +3 -6
- package/work-order-asset-detail.js +3 -6
- package/work-order-asset-edit.js +3 -6
- package/work-order-asset-handover.js +3 -6
- package/work-order-asset-list.js +3 -6
- package/work-order-del.js +2 -5
- package/work-order-detail.js +2 -5
- package/work-order-dynamic-list.js +2 -5
- package/work-order-edit.js +2 -5
- package/work-order-list.js +2 -5
- package/work-order-operate.js +2 -5
- package/work-order-template-detail.js +2 -5
- package/work-order-template-list.js +2 -5
- package/work-report-daily-add.js +2 -5
- package/work-report-daily-del.js +2 -5
- package/work-report-daily-detail.js +2 -5
- package/work-report-daily-edit.js +2 -5
- package/work-report-daily-get-work-plan.js +2 -5
- package/work-report-daily-list.js +2 -5
- package/work-report-monthly-add.js +2 -5
- package/work-report-monthly-del.js +2 -5
- package/work-report-monthly-detail.js +2 -5
- package/work-report-monthly-edit.js +2 -5
- package/work-report-monthly-list.js +2 -5
- package/work-report-weekly-add.js +2 -5
- package/work-report-weekly-del.js +2 -5
- package/work-report-weekly-detail.js +2 -5
- package/work-report-weekly-edit.js +2 -5
- package/work-report-weekly-list.js +2 -5
- package/work-task-add-couser.js +2 -5
- package/work-task-add.js +2 -5
- package/work-task-delete-couser.js +2 -5
- package/work-task-detail.js +2 -5
- package/work-task-edit.js +2 -5
- package/work-task-handover.js +2 -5
- package/workorder-add-couser.js +2 -5
- package/workorder-delete-couser.js +2 -5
- package/workorder-handover.js +2 -5
- package/workorderlist.js +2 -5
- package/workorderproductlist.js +2 -5
- package/worktimerecorddetail.js +2 -5
- package/worktimerecordlist.js +2 -5
- package/xbb-config.js +113 -0
- package/version.js +0 -18
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workReportMonthly/list';
|
|
@@ -11,11 +12,7 @@ const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --co
|
|
|
11
12
|
let lastPagination = null;
|
|
12
13
|
|
|
13
14
|
function readConfig() {
|
|
14
|
-
|
|
15
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
-
} catch {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
15
|
+
return readActiveConfig();
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
function getRuntimeConfig() {
|
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workReportWeekly/add';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workReportWeekly/del';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workReportWeekly/detail';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workReportWeekly/edit';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workReportWeekly/list';
|
|
@@ -11,11 +12,7 @@ const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --co
|
|
|
11
12
|
let lastPagination = null;
|
|
12
13
|
|
|
13
14
|
function readConfig() {
|
|
14
|
-
|
|
15
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
-
} catch {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
15
|
+
return readActiveConfig();
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
function getRuntimeConfig() {
|
package/work-task-add-couser.js
CHANGED
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workTask/addCoUser';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
package/work-task-add.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workTask/add';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workTask/deleteCoUser';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
package/work-task-detail.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workTask/detail';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
package/work-task-edit.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workTask/edit';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
package/work-task-handover.js
CHANGED
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workTask/handover';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
package/workorder-add-couser.js
CHANGED
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
8
9
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -10,11 +11,7 @@ const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrderV2/addCoUser';
|
|
|
10
11
|
const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
8
9
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -10,11 +11,7 @@ const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrderV2/deleteCoUse
|
|
|
10
11
|
const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
package/workorder-handover.js
CHANGED
|
@@ -3,6 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_DIR = path.join(os.homedir(), '.xbbcli');
|
|
8
9
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.env');
|
|
@@ -10,11 +11,7 @@ const API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrderV2/handover';
|
|
|
10
11
|
const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
package/workorderlist.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const WORK_ORDER_LIST_API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrder/list';
|
|
@@ -11,11 +12,7 @@ const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --co
|
|
|
11
12
|
let lastPagination = null;
|
|
12
13
|
|
|
13
14
|
function readConfig() {
|
|
14
|
-
|
|
15
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
-
} catch {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
15
|
+
return readActiveConfig();
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
function getRuntimeConfig() {
|
package/workorderproductlist.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const WORK_ORDER_PRODUCT_LIST_API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workOrder/productList';
|
|
@@ -11,11 +12,7 @@ const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --co
|
|
|
11
12
|
let lastPagination = null;
|
|
12
13
|
|
|
13
14
|
function readConfig() {
|
|
14
|
-
|
|
15
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
-
} catch {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
15
|
+
return readActiveConfig();
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
function getRuntimeConfig() {
|
package/worktimerecorddetail.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const WORK_TIME_RECORD_DETAIL_API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workTimeRecord/detail';
|
|
@@ -10,11 +11,7 @@ const DEFAULT_BASE_URL = 'https://proapi.xbongbong.com';
|
|
|
10
11
|
const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --corpid <CORPID> --token <TOKEN> --userId <USERID>';
|
|
11
12
|
|
|
12
13
|
function readConfig() {
|
|
13
|
-
|
|
14
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
15
|
-
} catch {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
14
|
+
return readActiveConfig();
|
|
18
15
|
}
|
|
19
16
|
|
|
20
17
|
function getRuntimeConfig() {
|
package/worktimerecordlist.js
CHANGED
|
@@ -3,6 +3,7 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { cli, Strategy } from './xbb-registry.js';
|
|
6
|
+
import { readActiveConfig } from './xbb-config.js';
|
|
6
7
|
|
|
7
8
|
const CONFIG_FILE = path.join(os.homedir(), '.xbbcli', 'config.env');
|
|
8
9
|
const WORK_TIME_RECORD_LIST_API_URL = 'https://proapi.xbongbong.com/pro/v2/api/workTimeRecord/list';
|
|
@@ -11,11 +12,7 @@ const MISSING_TOKEN_MESSAGE = '缺少 token;请先执行 xbbcli token-set --co
|
|
|
11
12
|
let lastPagination = null;
|
|
12
13
|
|
|
13
14
|
function readConfig() {
|
|
14
|
-
|
|
15
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
|
|
16
|
-
} catch {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
15
|
+
return readActiveConfig();
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
function getRuntimeConfig() {
|
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
|
-
});
|