@newpeak/barista-cli 0.1.1 → 0.1.2
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/dist/commands/arabica/auth/index.d.ts +3 -0
- package/dist/commands/arabica/auth/index.d.ts.map +1 -0
- package/dist/commands/arabica/auth/index.js +244 -0
- package/dist/commands/arabica/auth/index.js.map +1 -0
- package/dist/commands/arabica/auth/login.d.ts +3 -0
- package/dist/commands/arabica/auth/login.d.ts.map +1 -0
- package/dist/commands/arabica/auth/login.js +5 -0
- package/dist/commands/arabica/auth/login.js.map +1 -0
- package/dist/commands/arabica/auth/logout.d.ts +3 -0
- package/dist/commands/arabica/auth/logout.d.ts.map +1 -0
- package/dist/commands/arabica/auth/logout.js +5 -0
- package/dist/commands/arabica/auth/logout.js.map +1 -0
- package/dist/commands/arabica/auth/register.d.ts +3 -0
- package/dist/commands/arabica/auth/register.d.ts.map +1 -0
- package/dist/commands/arabica/auth/register.js +5 -0
- package/dist/commands/arabica/auth/register.js.map +1 -0
- package/dist/commands/arabica/auth/status.d.ts +3 -0
- package/dist/commands/arabica/auth/status.d.ts.map +1 -0
- package/dist/commands/arabica/auth/status.js +5 -0
- package/dist/commands/arabica/auth/status.js.map +1 -0
- package/dist/commands/arabica/index.d.ts +3 -0
- package/dist/commands/arabica/index.d.ts.map +1 -0
- package/dist/commands/arabica/index.js +20 -0
- package/dist/commands/arabica/index.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +92 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/context.d.ts +3 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +50 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/liberica/auth/index.d.ts +3 -0
- package/dist/commands/liberica/auth/index.d.ts.map +1 -0
- package/dist/commands/liberica/auth/index.js +152 -0
- package/dist/commands/liberica/auth/index.js.map +1 -0
- package/dist/commands/liberica/context/index.d.ts +3 -0
- package/dist/commands/liberica/context/index.d.ts.map +1 -0
- package/dist/commands/liberica/context/index.js +36 -0
- package/dist/commands/liberica/context/index.js.map +1 -0
- package/dist/commands/liberica/employees/create.d.ts +3 -0
- package/dist/commands/liberica/employees/create.d.ts.map +1 -0
- package/dist/commands/liberica/employees/create.js +262 -0
- package/dist/commands/liberica/employees/create.js.map +1 -0
- package/dist/commands/liberica/employees/delete.d.ts +3 -0
- package/dist/commands/liberica/employees/delete.d.ts.map +1 -0
- package/dist/commands/liberica/employees/delete.js +119 -0
- package/dist/commands/liberica/employees/delete.js.map +1 -0
- package/dist/commands/liberica/employees/disable.d.ts +3 -0
- package/dist/commands/liberica/employees/disable.d.ts.map +1 -0
- package/dist/commands/liberica/employees/disable.js +88 -0
- package/dist/commands/liberica/employees/disable.js.map +1 -0
- package/dist/commands/liberica/employees/enable.d.ts +3 -0
- package/dist/commands/liberica/employees/enable.d.ts.map +1 -0
- package/dist/commands/liberica/employees/enable.js +88 -0
- package/dist/commands/liberica/employees/enable.js.map +1 -0
- package/dist/commands/liberica/employees/get.d.ts +3 -0
- package/dist/commands/liberica/employees/get.d.ts.map +1 -0
- package/dist/commands/liberica/employees/get.js +104 -0
- package/dist/commands/liberica/employees/get.js.map +1 -0
- package/dist/commands/liberica/employees/index.d.ts +3 -0
- package/dist/commands/liberica/employees/index.d.ts.map +1 -0
- package/dist/commands/liberica/employees/index.js +21 -0
- package/dist/commands/liberica/employees/index.js.map +1 -0
- package/dist/commands/liberica/employees/list.d.ts +3 -0
- package/dist/commands/liberica/employees/list.d.ts.map +1 -0
- package/dist/commands/liberica/employees/list.js +98 -0
- package/dist/commands/liberica/employees/list.js.map +1 -0
- package/dist/commands/liberica/employees/update.d.ts +3 -0
- package/dist/commands/liberica/employees/update.d.ts.map +1 -0
- package/dist/commands/liberica/employees/update.js +147 -0
- package/dist/commands/liberica/employees/update.js.map +1 -0
- package/dist/commands/liberica/index.d.ts +3 -0
- package/dist/commands/liberica/index.d.ts.map +1 -0
- package/dist/commands/liberica/index.js +33 -0
- package/dist/commands/liberica/index.js.map +1 -0
- package/dist/commands/liberica/orgs/index.d.ts +3 -0
- package/dist/commands/liberica/orgs/index.d.ts.map +1 -0
- package/dist/commands/liberica/orgs/index.js +27 -0
- package/dist/commands/liberica/orgs/index.js.map +1 -0
- package/dist/commands/liberica/positions/index.d.ts +3 -0
- package/dist/commands/liberica/positions/index.d.ts.map +1 -0
- package/dist/commands/liberica/positions/index.js +24 -0
- package/dist/commands/liberica/positions/index.js.map +1 -0
- package/dist/commands/liberica/roles/index.d.ts +3 -0
- package/dist/commands/liberica/roles/index.d.ts.map +1 -0
- package/dist/commands/liberica/roles/index.js +50 -0
- package/dist/commands/liberica/roles/index.js.map +1 -0
- package/dist/commands/liberica/users/create.d.ts +3 -0
- package/dist/commands/liberica/users/create.d.ts.map +1 -0
- package/dist/commands/liberica/users/create.js +112 -0
- package/dist/commands/liberica/users/create.js.map +1 -0
- package/dist/commands/liberica/users/delete.d.ts +3 -0
- package/dist/commands/liberica/users/delete.d.ts.map +1 -0
- package/dist/commands/liberica/users/delete.js +41 -0
- package/dist/commands/liberica/users/delete.js.map +1 -0
- package/dist/commands/liberica/users/disable.d.ts +3 -0
- package/dist/commands/liberica/users/disable.d.ts.map +1 -0
- package/dist/commands/liberica/users/disable.js +34 -0
- package/dist/commands/liberica/users/disable.js.map +1 -0
- package/dist/commands/liberica/users/enable.d.ts +3 -0
- package/dist/commands/liberica/users/enable.d.ts.map +1 -0
- package/dist/commands/liberica/users/enable.js +24 -0
- package/dist/commands/liberica/users/enable.js.map +1 -0
- package/dist/commands/liberica/users/get.d.ts +3 -0
- package/dist/commands/liberica/users/get.d.ts.map +1 -0
- package/dist/commands/liberica/users/get.js +38 -0
- package/dist/commands/liberica/users/get.js.map +1 -0
- package/dist/commands/liberica/users/index.d.ts +3 -0
- package/dist/commands/liberica/users/index.d.ts.map +1 -0
- package/dist/commands/liberica/users/index.js +25 -0
- package/dist/commands/liberica/users/index.js.map +1 -0
- package/dist/commands/liberica/users/list.d.ts +3 -0
- package/dist/commands/liberica/users/list.d.ts.map +1 -0
- package/dist/commands/liberica/users/list.js +59 -0
- package/dist/commands/liberica/users/list.js.map +1 -0
- package/dist/commands/liberica/users/me.d.ts +3 -0
- package/dist/commands/liberica/users/me.d.ts.map +1 -0
- package/dist/commands/liberica/users/me.js +34 -0
- package/dist/commands/liberica/users/me.js.map +1 -0
- package/dist/commands/liberica/users/reset-password.d.ts +3 -0
- package/dist/commands/liberica/users/reset-password.d.ts.map +1 -0
- package/dist/commands/liberica/users/reset-password.js +35 -0
- package/dist/commands/liberica/users/reset-password.js.map +1 -0
- package/dist/commands/liberica/users/update.d.ts +3 -0
- package/dist/commands/liberica/users/update.d.ts.map +1 -0
- package/dist/commands/liberica/users/update.js +42 -0
- package/dist/commands/liberica/users/update.js.map +1 -0
- package/dist/core/api/client.d.ts +114 -0
- package/dist/core/api/client.d.ts.map +1 -0
- package/dist/core/api/client.js +644 -0
- package/dist/core/api/client.js.map +1 -0
- package/dist/core/auth/token-manager.d.ts +26 -0
- package/dist/core/auth/token-manager.d.ts.map +1 -0
- package/dist/core/auth/token-manager.js +158 -0
- package/dist/core/auth/token-manager.js.map +1 -0
- package/dist/core/config/manager.d.ts +17 -0
- package/dist/core/config/manager.d.ts.map +1 -0
- package/dist/core/config/manager.js +153 -0
- package/dist/core/config/manager.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/types/employee.d.ts +87 -0
- package/dist/types/employee.d.ts.map +1 -0
- package/dist/types/employee.js +2 -0
- package/dist/types/employee.js.map +1 -0
- package/dist/types/index.d.ts +66 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/org.d.ts +22 -0
- package/dist/types/org.d.ts.map +1 -0
- package/dist/types/org.js +2 -0
- package/dist/types/org.js.map +1 -0
- package/dist/types/position.d.ts +21 -0
- package/dist/types/position.d.ts.map +1 -0
- package/dist/types/position.js +2 -0
- package/dist/types/position.js.map +1 -0
- package/dist/types/user.d.ts +59 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +2 -0
- package/dist/types/user.js.map +1 -0
- package/package.json +1 -1
- package/.eslintrc.json +0 -23
- package/.prettierrc +0 -9
- package/.sisyphus/notepads/liberica-employees/learnings.md +0 -73
- package/AGENTS.md +0 -270
- package/CONTRIBUTING.md +0 -291
- package/tests/unit/commands/arabica/auth.test.ts +0 -230
- package/tests/unit/commands/liberica/auth.test.ts +0 -175
- package/tests/unit/commands/liberica/context.test.ts +0 -98
- package/tests/unit/commands/liberica/employees/create.test.ts +0 -463
- package/tests/unit/commands/liberica/employees/disable.test.ts +0 -82
- package/tests/unit/commands/liberica/employees/enable.test.ts +0 -82
- package/tests/unit/commands/liberica/employees/get.test.ts +0 -111
- package/tests/unit/commands/liberica/employees/list.test.ts +0 -294
- package/tests/unit/commands/liberica/employees/update.test.ts +0 -210
- package/tests/unit/config.test.ts +0 -141
- package/tests/unit/types.test.ts +0 -195
- package/tsconfig.json +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IAEF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AACjE,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE7C,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE;QACR,GAAG,EAAE,WAAW,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,MAAM,CAClB,WAAW,EACX;QACE,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CACF,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAwEA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface Organization {
|
|
2
|
+
organizationId: number;
|
|
3
|
+
orgCode?: string;
|
|
4
|
+
orgName?: string;
|
|
5
|
+
parentId?: number;
|
|
6
|
+
orgLevel?: number;
|
|
7
|
+
sortNo?: number;
|
|
8
|
+
statusFlag?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface OrgListItem {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
}
|
|
14
|
+
export interface OrgListResponse {
|
|
15
|
+
success: boolean;
|
|
16
|
+
data?: OrgListItem[];
|
|
17
|
+
error?: {
|
|
18
|
+
code: string;
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=org.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../../src/types/org.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org.js","sourceRoot":"","sources":["../../src/types/org.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface Position {
|
|
2
|
+
positionId: string;
|
|
3
|
+
positionCode?: string;
|
|
4
|
+
positionName?: string;
|
|
5
|
+
jobType?: string;
|
|
6
|
+
jobLevelNo?: string;
|
|
7
|
+
statusFlag?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface PositionListItem {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PositionListResponse {
|
|
14
|
+
success: boolean;
|
|
15
|
+
data?: PositionListItem[];
|
|
16
|
+
error?: {
|
|
17
|
+
code: string;
|
|
18
|
+
message: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=position.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/types/position.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../src/types/position.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type UserStatusFlag = 1 | 2;
|
|
2
|
+
export interface User {
|
|
3
|
+
userId: string;
|
|
4
|
+
realName: string;
|
|
5
|
+
account: string;
|
|
6
|
+
email?: string;
|
|
7
|
+
employeeId?: string;
|
|
8
|
+
employeeNumber?: string;
|
|
9
|
+
employeeName?: string;
|
|
10
|
+
roleNameList?: string[];
|
|
11
|
+
statusFlag: UserStatusFlag;
|
|
12
|
+
createTime?: string;
|
|
13
|
+
readOnly?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface CreateUserRequest {
|
|
16
|
+
realName: string;
|
|
17
|
+
account: string;
|
|
18
|
+
email?: string;
|
|
19
|
+
roleIdList: string[];
|
|
20
|
+
employeeId?: string;
|
|
21
|
+
employeeNumber?: string;
|
|
22
|
+
employeeCode?: string;
|
|
23
|
+
orgId?: string;
|
|
24
|
+
positionId?: string;
|
|
25
|
+
mainFlag?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface UpdateUserRequest {
|
|
28
|
+
userId: string;
|
|
29
|
+
realName?: string;
|
|
30
|
+
email?: string;
|
|
31
|
+
roleIdList?: string[];
|
|
32
|
+
employeeId?: string;
|
|
33
|
+
statusFlag?: UserStatusFlag;
|
|
34
|
+
}
|
|
35
|
+
export interface UserQueryParams {
|
|
36
|
+
pageNo?: number;
|
|
37
|
+
pageSize?: number;
|
|
38
|
+
status?: UserStatusFlag;
|
|
39
|
+
account?: string;
|
|
40
|
+
realName?: string;
|
|
41
|
+
employeeId?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface PageResult<T> {
|
|
44
|
+
totalRows: number;
|
|
45
|
+
pageSize: number;
|
|
46
|
+
pageNo: number;
|
|
47
|
+
rows: T[];
|
|
48
|
+
}
|
|
49
|
+
export interface UserListResponse extends PageResult<User> {
|
|
50
|
+
}
|
|
51
|
+
export interface UserApiResponse {
|
|
52
|
+
success: boolean;
|
|
53
|
+
data?: User | UserListResponse;
|
|
54
|
+
error?: {
|
|
55
|
+
code: string;
|
|
56
|
+
message: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;AAEnC,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,EAAE,CAAC;CACX;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU,CAAC,IAAI,CAAC;CAAG;AAE7D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,gBAAgB,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
package/.eslintrc.json
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"env": {
|
|
3
|
-
"node": true,
|
|
4
|
-
"es2022": true
|
|
5
|
-
},
|
|
6
|
-
"extends": [
|
|
7
|
-
"eslint:recommended",
|
|
8
|
-
"plugin:@typescript-eslint/recommended"
|
|
9
|
-
],
|
|
10
|
-
"parser": "@typescript-eslint/parser",
|
|
11
|
-
"parserOptions": {
|
|
12
|
-
"ecmaVersion": 2022,
|
|
13
|
-
"sourceType": "module"
|
|
14
|
-
},
|
|
15
|
-
"plugins": ["@typescript-eslint"],
|
|
16
|
-
"rules": {
|
|
17
|
-
"no-console": "off",
|
|
18
|
-
"@typescript-eslint/no-explicit-any": "warn",
|
|
19
|
-
"@typescript-eslint/explicit-function-return-type": "off",
|
|
20
|
-
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }]
|
|
21
|
-
},
|
|
22
|
-
"ignorePatterns": ["dist/", "node_modules/", "*.js"]
|
|
23
|
-
}
|
package/.prettierrc
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# Liberica Employees - Learnings
|
|
2
|
-
|
|
3
|
-
## API Patterns Observed
|
|
4
|
-
|
|
5
|
-
- API expects token WITHOUT "Bearer " prefix
|
|
6
|
-
- API prefix: /api
|
|
7
|
-
- Pagination is 0-based on backend
|
|
8
|
-
- Response fields: rows, pageNo, pageSize, totalRows
|
|
9
|
-
- Backend error format: {success, code, message} directly (not nested under error object)
|
|
10
|
-
- organizationId is `string` (was BigInteger), positionId is `string`
|
|
11
|
-
|
|
12
|
-
## CRITICAL: BigInteger IDs
|
|
13
|
-
|
|
14
|
-
**Backend returns BigInteger for all ID fields, which exceeds JavaScript number range.**
|
|
15
|
-
|
|
16
|
-
```typescript
|
|
17
|
-
// WRONG - Precision loss for IDs > 9007199254740991
|
|
18
|
-
employeeId: number
|
|
19
|
-
|
|
20
|
-
// CORRECT
|
|
21
|
-
employeeId: string
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
**Affected interfaces:**
|
|
25
|
-
- Employee.employeeId
|
|
26
|
-
- Employee.organizationId
|
|
27
|
-
- UpdateEmployeeRequest.employeeId
|
|
28
|
-
- OrgListItem.id (for cached org/position lookups)
|
|
29
|
-
|
|
30
|
-
## CRITICAL: Do NOT Use X-TENANT-ID Header
|
|
31
|
-
|
|
32
|
-
The tenant is embedded in the JWT token. Passing `X-TENANT-ID` with string tenant name causes:
|
|
33
|
-
```
|
|
34
|
-
NumberFormatException: For input string: "shanghai"
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Backend expects numeric tenant ID or no header at all.
|
|
38
|
-
|
|
39
|
-
## HTTP Methods Matter
|
|
40
|
-
|
|
41
|
-
| Endpoint | Method | Common Error |
|
|
42
|
-
|----------|--------|--------------|
|
|
43
|
-
| `/master/org/tree` | POST (not GET!) | A1504: 当前接口不支持GET方式请求 |
|
|
44
|
-
| `/master/position/list` | GET | - |
|
|
45
|
-
| `/employee/delete` | POST | - |
|
|
46
|
-
|
|
47
|
-
## Error Response Normalization
|
|
48
|
-
|
|
49
|
-
Backend returns errors in two formats - must normalize in handleApiError:
|
|
50
|
-
|
|
51
|
-
```typescript
|
|
52
|
-
// Format 1: Error at top level
|
|
53
|
-
{ success: false, code: "A150001", message: "查询结果不存在" }
|
|
54
|
-
|
|
55
|
-
// Format 2: Nested under error
|
|
56
|
-
{ success: false, error: { code: "01001150001", message: "职员不存在" } }
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Implementation Decisions
|
|
60
|
-
|
|
61
|
-
- In-memory cache (Map) for org/position lists with 5-minute TTL
|
|
62
|
-
- Cache key: `${environment}:${tenant}`
|
|
63
|
-
- Generic lookup types (OrgListItem, PositionListItem) with `id` + `name` for reuse across modules
|
|
64
|
-
- Create command resolves names to IDs before building request; exits with descriptive error if not found
|
|
65
|
-
- Position ID stays as string (backend contract)
|
|
66
|
-
- All IDs use string type to handle BigInteger without precision loss
|
|
67
|
-
|
|
68
|
-
## Debugging Tips
|
|
69
|
-
|
|
70
|
-
1. Add `console.error('[DEBUG]', ...)` to see raw API responses
|
|
71
|
-
2. Use `--json` flag to get full response data with IDs
|
|
72
|
-
3. Token stored in `~/.barista/.barista-tokens` (binary format)
|
|
73
|
-
4. Config stored in `~/.barista/config.yaml`
|
package/AGENTS.md
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
# AGENTS.md - Barista CLI
|
|
2
|
-
|
|
3
|
-
**Project**: Node.js CLI (TypeScript) for Liberica & Arabica services
|
|
4
|
-
**Updated**: 2025-04-13
|
|
5
|
-
|
|
6
|
-
## Quick Commands
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
cd coffee-barista-cli
|
|
10
|
-
|
|
11
|
-
npm run build # Build TypeScript
|
|
12
|
-
npm run dev # Watch mode
|
|
13
|
-
npm run test:unit # Run tests (single run)
|
|
14
|
-
npm test # Watch mode
|
|
15
|
-
npm run lint # ESLint check
|
|
16
|
-
npm run lint -- --fix # Auto-fix
|
|
17
|
-
|
|
18
|
-
# Run CLI directly
|
|
19
|
-
node ./bin/barista.js --help
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Project Structure
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
src/
|
|
26
|
-
├── index.ts # Main entry - Commander setup
|
|
27
|
-
├── commands/
|
|
28
|
-
│ ├── context.ts # Context management
|
|
29
|
-
│ ├── auth.ts # Auth commands
|
|
30
|
-
│ ├── liberica/
|
|
31
|
-
│ │ ├── index.ts # Liberica service entry
|
|
32
|
-
│ │ ├── auth/index.ts # Liberica auth
|
|
33
|
-
│ │ ├── context/index.ts # Liberica context
|
|
34
|
-
│ │ └── employees/ # Employee CRUD commands
|
|
35
|
-
│ └── arabica/
|
|
36
|
-
│ └── auth/ # Arabica auth commands
|
|
37
|
-
├── core/
|
|
38
|
-
│ ├── auth/token-manager.ts # Keychain token storage
|
|
39
|
-
│ ├── config/manager.ts # YAML config (~/.barista/config.yaml)
|
|
40
|
-
│ └── api/client.ts # API client (axios wrapper)
|
|
41
|
-
└── types/
|
|
42
|
-
├── index.ts
|
|
43
|
-
├── employee.ts
|
|
44
|
-
├── org.ts
|
|
45
|
-
└── position.ts
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## CRITICAL: API Integration Rules
|
|
49
|
-
|
|
50
|
-
**These rules are hard-won. Breaking them causes silent failures.**
|
|
51
|
-
|
|
52
|
-
### 1. BigInteger IDs → Use String Type
|
|
53
|
-
|
|
54
|
-
Backend returns BigInteger for all ID fields, exceeding JS `number` range (max: 9007199254740991).
|
|
55
|
-
|
|
56
|
-
```typescript
|
|
57
|
-
// WRONG - precision loss
|
|
58
|
-
employeeId: number
|
|
59
|
-
|
|
60
|
-
// CORRECT
|
|
61
|
-
employeeId: string
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**All ID fields from backend MUST be `string`.**
|
|
65
|
-
|
|
66
|
-
### 2. Do NOT Use X-TENANT-ID Header
|
|
67
|
-
|
|
68
|
-
Tenant is embedded in JWT token. Passing `X-TENANT-ID` causes:
|
|
69
|
-
```
|
|
70
|
-
NumberFormatException: For input string: "shanghai"
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
```typescript
|
|
74
|
-
// WRONG
|
|
75
|
-
{ headers: { 'X-TENANT-ID': tenant } }
|
|
76
|
-
|
|
77
|
-
// CORRECT - omit header entirely
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### 3. Authorization: No "Bearer " Prefix
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
// WRONG
|
|
84
|
-
'Authorization': `Bearer ${token}`
|
|
85
|
-
|
|
86
|
-
// CORRECT
|
|
87
|
-
'Authorization': token
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### 4. HTTP Methods Vary by Endpoint
|
|
91
|
-
|
|
92
|
-
Always check the backend controller for correct method:
|
|
93
|
-
|
|
94
|
-
| Endpoint | Method | Notes |
|
|
95
|
-
|----------|--------|-------|
|
|
96
|
-
| `/employee/page` | GET | Paginated list |
|
|
97
|
-
| `/employee/detail` | GET | Single item |
|
|
98
|
-
| `/employee/add\|edit\|delete` | POST | Write operations |
|
|
99
|
-
| `/master/org/tree` | POST | NOT GET |
|
|
100
|
-
| `/master/position/list` | GET | - |
|
|
101
|
-
|
|
102
|
-
### 5. Error Response Has Two Formats
|
|
103
|
-
|
|
104
|
-
Backend returns errors in different structures:
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
// Format 1: Top-level error (common)
|
|
108
|
-
{ success: false, code: "A150001", message: "查询结果不存在" }
|
|
109
|
-
|
|
110
|
-
// Format 2: Nested under 'error'
|
|
111
|
-
{ success: false, error: { code: "01001150001", message: "职员不存在" } }
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Must normalize in `handleApiError()`.
|
|
115
|
-
|
|
116
|
-
### 6. Pagination: 0-Based, Use pageNo/pageSize
|
|
117
|
-
|
|
118
|
-
```typescript
|
|
119
|
-
// CLI page 1 → API page 0
|
|
120
|
-
const pageNo = parseInt(options.page) - 1;
|
|
121
|
-
// Query: /employee/page?pageNo=0&pageSize=20
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### 7. Response Field Names Differ
|
|
125
|
-
|
|
126
|
-
| Backend | Common Mistake |
|
|
127
|
-
|---------|---------------|
|
|
128
|
-
| `rows` | `records` |
|
|
129
|
-
| `pageNo` | `current` |
|
|
130
|
-
| `pageSize` | `size` |
|
|
131
|
-
| `totalRows` | `total` |
|
|
132
|
-
|
|
133
|
-
## Common Issues & Fixes
|
|
134
|
-
|
|
135
|
-
| Error | Cause | Fix |
|
|
136
|
-
|-------|-------|-----|
|
|
137
|
-
| `A1504: 不支持GET方式` | Wrong HTTP method | Use POST for `/org/tree` |
|
|
138
|
-
| `NumberFormatException` | Using `X-TENANT-ID` header | Remove header |
|
|
139
|
-
| Precision loss on IDs | Using `number` for BigInteger | Use `string` |
|
|
140
|
-
| "not found" for valid ID | ID truncated due to precision loss | Use string type |
|
|
141
|
-
| Empty data despite records | Field name mismatch | Check `rows` not `records` |
|
|
142
|
-
|
|
143
|
-
## CLI Conventions
|
|
144
|
-
|
|
145
|
-
### Command Structure
|
|
146
|
-
- Factory functions: `createXxxCommand(): Command`
|
|
147
|
-
- Subcommands via `.addCommand()`
|
|
148
|
-
- Commander.js 12 (not oclif/yargs)
|
|
149
|
-
|
|
150
|
-
### Output Formatting
|
|
151
|
-
- TTY auto-detection: tables for humans, JSON for scripts
|
|
152
|
-
- `--json` flag forces JSON output
|
|
153
|
-
- `chalk` for colors, `cli-table3` for tables
|
|
154
|
-
|
|
155
|
-
### Imports
|
|
156
|
-
- Use `.js` extension even in TypeScript: `'../../core/config/manager.js'`
|
|
157
|
-
- Async parse: `program.parseAsync()` not `parse()`
|
|
158
|
-
|
|
159
|
-
## Token & Config
|
|
160
|
-
|
|
161
|
-
- Tokens: System keychain only (keytar), NOT files
|
|
162
|
-
- Key: `{service}:{environment}:{tenant}` (e.g., `liberica:dev:shanghai`)
|
|
163
|
-
- Config: `~/.barista/config.yaml`
|
|
164
|
-
- First run creates config with defaults
|
|
165
|
-
|
|
166
|
-
## Adding Commands (MANDATORY: Design First)
|
|
167
|
-
|
|
168
|
-
1. Read `docs/COMMAND_DESIGN_SPEC.md`
|
|
169
|
-
2. Find backend Controller endpoints (check facade modules)
|
|
170
|
-
3. Create design doc at `docs/commands/{service}/{resource}/{action}.md`
|
|
171
|
-
4. Implement following existing patterns
|
|
172
|
-
5. Write unit tests
|
|
173
|
-
6. Verify: `npm run build && npm run test:unit`
|
|
174
|
-
|
|
175
|
-
## Functional Verification Workflow
|
|
176
|
-
|
|
177
|
-
**Always verify new commands against the real API before committing.**
|
|
178
|
-
|
|
179
|
-
### Standard Test Environment
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
# Environment: dev
|
|
183
|
-
# Tenant: shanghai
|
|
184
|
-
# User: admin@shanghai.newpeaksh.com
|
|
185
|
-
# Password: 123456
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### Workflow
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
cd coffee-barista-cli
|
|
192
|
-
|
|
193
|
-
# 1. Build
|
|
194
|
-
npm run build
|
|
195
|
-
|
|
196
|
-
# 2. Login to Liberica
|
|
197
|
-
node ./bin/barista.js liberica auth login dev shanghai admin@shanghai.newpeaksh.com 123456
|
|
198
|
-
|
|
199
|
-
# 3. Verify login
|
|
200
|
-
node ./bin/barista.js context show
|
|
201
|
-
|
|
202
|
-
# 4. Test command (use --json to see full IDs)
|
|
203
|
-
node ./bin/barista.js liberica employees list --json
|
|
204
|
-
|
|
205
|
-
# 5. Test specific operations
|
|
206
|
-
node ./bin/barista.js liberica employees get <id>
|
|
207
|
-
node ./bin/barista.js liberica employees create -n "测试" --no "9999"
|
|
208
|
-
node ./bin/barista.js liberica employees delete <id> --force
|
|
209
|
-
|
|
210
|
-
# 6. For create with org/position:
|
|
211
|
-
node ./bin/barista.js liberica employees create \
|
|
212
|
-
-n "测试员工" \
|
|
213
|
-
-p "13300000000" \
|
|
214
|
-
-e "test@example.com" \
|
|
215
|
-
-s M \
|
|
216
|
-
--org "销售部" \
|
|
217
|
-
--position "经理" \
|
|
218
|
-
--no "TEST001"
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
### Why This Matters
|
|
222
|
-
|
|
223
|
-
- Unit tests mock the API but don't catch real integration issues
|
|
224
|
-
- BigInteger ID precision only shows with actual API responses
|
|
225
|
-
- Backend may return different error formats than mocks
|
|
226
|
-
- HTTP method issues only appear with real calls
|
|
227
|
-
|
|
228
|
-
### Troubleshooting
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
# Check current context
|
|
232
|
-
node ./bin/barista.js context show
|
|
233
|
-
|
|
234
|
-
# Re-login if token expired
|
|
235
|
-
node ./bin/barista.js liberica auth login dev shanghai admin@shanghai.newpeaksh.com 123456
|
|
236
|
-
|
|
237
|
-
# Debug: use --json to see full response
|
|
238
|
-
node ./bin/barista.js liberica employees list --json
|
|
239
|
-
|
|
240
|
-
# Debug: check API calls
|
|
241
|
-
# Add to client.ts temporarily:
|
|
242
|
-
console.error('[DEBUG]', JSON.stringify(response.data));
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
## Testing
|
|
246
|
-
|
|
247
|
-
- Vitest with TypeScript
|
|
248
|
-
- Mock `keytar` and `axios`
|
|
249
|
-
- Tests co-located: `tests/unit/commands/...`
|
|
250
|
-
|
|
251
|
-
## Key Files Reference
|
|
252
|
-
|
|
253
|
-
| Purpose | File |
|
|
254
|
-
|---------|------|
|
|
255
|
-
| API client | `src/core/api/client.ts` |
|
|
256
|
-
| Types | `src/types/employee.ts`, `org.ts`, `position.ts` |
|
|
257
|
-
| Commands | `src/commands/liberica/employees/*.ts` |
|
|
258
|
-
| Integration lessons | `docs/INTEGRATION_NOTES.md` |
|
|
259
|
-
| Command design | `docs/COMMAND_DESIGN_SPEC.md` |
|
|
260
|
-
|
|
261
|
-
## Environment URLs
|
|
262
|
-
|
|
263
|
-
```
|
|
264
|
-
Liberica: https://{tenant}-{env}.newpeaksh.com
|
|
265
|
-
dev: https://{tenant}-dev.newpeaksh.com
|
|
266
|
-
prod-jp: https://{tenant}.newpeakjp.com
|
|
267
|
-
|
|
268
|
-
Arabica: https://arabica-{env}.newpeaksh.com
|
|
269
|
-
prod: https://www.newpeaksh.com
|
|
270
|
-
```
|