mobx-lark 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.
@@ -1,168 +1,168 @@
1
- import { TranslationMap } from '../../type';
2
-
3
- export type StringMap = Record<string, string>;
4
-
5
- export interface TaskOperator {
6
- id: string;
7
- type: 'user' | 'app';
8
- role?: 'creator' | 'owner' | 'editor' | 'viewer' | 'assignee' | 'follower';
9
- }
10
-
11
- export interface TaskList
12
- extends Record<
13
- 'guid' | 'name' | 'url' | 'created_at' | 'updated_at',
14
- string
15
- > {
16
- creator: TaskOperator;
17
- owner: TaskOperator;
18
- members: TaskOperator[];
19
- }
20
-
21
- export type TaskResourceType = 'tasklist' | 'my_tasks';
22
-
23
- export interface TaskResource {
24
- resource_type: TaskResourceType;
25
- resource_id: string;
26
- }
27
-
28
- export interface TaskListSection
29
- extends Pick<
30
- TaskList,
31
- 'guid' | 'name' | 'creator' | 'created_at' | 'updated_at'
32
- > {
33
- resource_type: TaskResourceType;
34
- is_default: boolean;
35
- tasklist: Pick<TaskList, 'guid' | 'name'>;
36
- }
37
-
38
- export interface TaskTimeEnd {
39
- timestamp: string;
40
- is_all_day?: boolean;
41
- }
42
-
43
- export interface TaskCompletion {
44
- href: string;
45
- tip: TranslationMap;
46
- }
47
-
48
- export type BaseTaskField = Pick<TaskList, 'guid' | 'name'> &
49
- Pick<TaskList, 'creator' | 'created_at' | 'updated_at'>;
50
-
51
- export interface TaskFieldNumberSetting {
52
- format: 'normal' | 'percentage' | 'cny' | 'usd' | 'custom';
53
- custom_symbol?: string;
54
- custom_symbol_position?: 'left' | 'right';
55
- separator: 'none' | 'thousand';
56
- decimal_count: number;
57
- }
58
-
59
- export interface NumberTaskField extends BaseTaskField {
60
- type: 'number';
61
- number_setting: TaskFieldNumberSetting;
62
- }
63
-
64
- export interface TextTaskField extends BaseTaskField {
65
- type: 'text';
66
- text_setting: object;
67
- }
68
-
69
- export interface DateTimeTaskField extends BaseTaskField {
70
- type: 'datetime';
71
- datetime_setting: { format: string };
72
- }
73
-
74
- export interface TaskFieldOption extends Pick<TaskFieldValue, 'guid' | 'name'> {
75
- color_index: number;
76
- is_hidden: boolean;
77
- }
78
-
79
- export interface SingleSelectTaskField extends BaseTaskField {
80
- type: 'single_select';
81
- single_select_setting: { options: TaskFieldOption[] };
82
- }
83
-
84
- export interface MultiSelectTaskField extends BaseTaskField {
85
- type: 'multi_select';
86
- multi_select_setting: { options: TaskFieldOption[] };
87
- }
88
-
89
- export interface MemberTaskField extends BaseTaskField {
90
- type: 'member';
91
- member_setting: { multi: boolean };
92
- }
93
-
94
- export type TaskField =
95
- | NumberTaskField
96
- | TextTaskField
97
- | DateTimeTaskField
98
- | SingleSelectTaskField
99
- | MultiSelectTaskField
100
- | MemberTaskField;
101
-
102
- export type TaskFieldValue = Pick<TaskField, 'guid' | 'type' | 'name'> &
103
- Partial<
104
- Record<
105
- `${Exclude<TaskField['type'], 'member' | 'multi_select'>}_value`,
106
- string
107
- > & {
108
- member_value: TaskOperator[];
109
- multi_select_value: string[];
110
- }
111
- >;
112
-
113
- export interface TaskDependency {
114
- type: 'next';
115
- task_guid: string;
116
- }
117
-
118
- export interface TaskAttachment
119
- extends Pick<TaskList, 'guid' | 'name'>,
120
- Record<'file_token' | 'uploaded_at', string> {
121
- size: 62232;
122
- uploader: TaskOperator;
123
- is_cover: boolean;
124
- resource: { type: 'task'; id: string };
125
- }
126
-
127
- export interface Task
128
- extends TaskList,
129
- Record<
130
- | 'task_id'
131
- | 'summary'
132
- | 'description'
133
- | 'completed_at'
134
- | 'repeat_rule'
135
- | 'extra'
136
- | 'parent_task_guid',
137
- string
138
- >,
139
- Record<'mode' | 'source' | 'subtask_count', number> {
140
- status: 'todo';
141
- is_milestone: boolean;
142
- start: TaskTimeEnd;
143
- due: TaskTimeEnd;
144
- reminders: {
145
- id?: string;
146
- relative_fire_minute: number;
147
- }[];
148
- origin: {
149
- platform_i18n_name: TranslationMap;
150
- href: Record<'url' | 'title', string>;
151
- };
152
- custom_complete: Record<'pc' | 'ios' | 'android', TaskCompletion>;
153
- custom_fields: TaskFieldValue[];
154
- attachments: TaskAttachment[];
155
- dependencies: TaskDependency[];
156
- tasklists: Partial<Record<'tasklist_guid' | 'section_guid', string>>[];
157
- }
158
-
159
- export type TaskSummary = Pick<TaskList, 'guid'> &
160
- Pick<
161
- Task,
162
- | 'summary'
163
- | 'completed_at'
164
- | 'start'
165
- | 'due'
166
- | 'members'
167
- | 'subtask_count'
168
- >;
1
+ import { TranslationMap } from '../../type';
2
+
3
+ export type StringMap = Record<string, string>;
4
+
5
+ export interface TaskOperator {
6
+ id: string;
7
+ type: 'user' | 'app';
8
+ role?: 'creator' | 'owner' | 'editor' | 'viewer' | 'assignee' | 'follower';
9
+ }
10
+
11
+ export interface TaskList
12
+ extends Record<
13
+ 'guid' | 'name' | 'url' | 'created_at' | 'updated_at',
14
+ string
15
+ > {
16
+ creator: TaskOperator;
17
+ owner: TaskOperator;
18
+ members: TaskOperator[];
19
+ }
20
+
21
+ export type TaskResourceType = 'tasklist' | 'my_tasks';
22
+
23
+ export interface TaskResource {
24
+ resource_type: TaskResourceType;
25
+ resource_id: string;
26
+ }
27
+
28
+ export interface TaskListSection
29
+ extends Pick<
30
+ TaskList,
31
+ 'guid' | 'name' | 'creator' | 'created_at' | 'updated_at'
32
+ > {
33
+ resource_type: TaskResourceType;
34
+ is_default: boolean;
35
+ tasklist: Pick<TaskList, 'guid' | 'name'>;
36
+ }
37
+
38
+ export interface TaskTimeEnd {
39
+ timestamp: string;
40
+ is_all_day?: boolean;
41
+ }
42
+
43
+ export interface TaskCompletion {
44
+ href: string;
45
+ tip: TranslationMap;
46
+ }
47
+
48
+ export type BaseTaskField = Pick<TaskList, 'guid' | 'name'> &
49
+ Pick<TaskList, 'creator' | 'created_at' | 'updated_at'>;
50
+
51
+ export interface TaskFieldNumberSetting {
52
+ format: 'normal' | 'percentage' | 'cny' | 'usd' | 'custom';
53
+ custom_symbol?: string;
54
+ custom_symbol_position?: 'left' | 'right';
55
+ separator: 'none' | 'thousand';
56
+ decimal_count: number;
57
+ }
58
+
59
+ export interface NumberTaskField extends BaseTaskField {
60
+ type: 'number';
61
+ number_setting: TaskFieldNumberSetting;
62
+ }
63
+
64
+ export interface TextTaskField extends BaseTaskField {
65
+ type: 'text';
66
+ text_setting: object;
67
+ }
68
+
69
+ export interface DateTimeTaskField extends BaseTaskField {
70
+ type: 'datetime';
71
+ datetime_setting: { format: string };
72
+ }
73
+
74
+ export interface TaskFieldOption extends Pick<TaskFieldValue, 'guid' | 'name'> {
75
+ color_index: number;
76
+ is_hidden: boolean;
77
+ }
78
+
79
+ export interface SingleSelectTaskField extends BaseTaskField {
80
+ type: 'single_select';
81
+ single_select_setting: { options: TaskFieldOption[] };
82
+ }
83
+
84
+ export interface MultiSelectTaskField extends BaseTaskField {
85
+ type: 'multi_select';
86
+ multi_select_setting: { options: TaskFieldOption[] };
87
+ }
88
+
89
+ export interface MemberTaskField extends BaseTaskField {
90
+ type: 'member';
91
+ member_setting: { multi: boolean };
92
+ }
93
+
94
+ export type TaskField =
95
+ | NumberTaskField
96
+ | TextTaskField
97
+ | DateTimeTaskField
98
+ | SingleSelectTaskField
99
+ | MultiSelectTaskField
100
+ | MemberTaskField;
101
+
102
+ export type TaskFieldValue = Pick<TaskField, 'guid' | 'type' | 'name'> &
103
+ Partial<
104
+ Record<
105
+ `${Exclude<TaskField['type'], 'member' | 'multi_select'>}_value`,
106
+ string
107
+ > & {
108
+ member_value: TaskOperator[];
109
+ multi_select_value: string[];
110
+ }
111
+ >;
112
+
113
+ export interface TaskDependency {
114
+ type: 'next';
115
+ task_guid: string;
116
+ }
117
+
118
+ export interface TaskAttachment
119
+ extends Pick<TaskList, 'guid' | 'name'>,
120
+ Record<'file_token' | 'uploaded_at', string> {
121
+ size: 62232;
122
+ uploader: TaskOperator;
123
+ is_cover: boolean;
124
+ resource: { type: 'task'; id: string };
125
+ }
126
+
127
+ export interface Task
128
+ extends TaskList,
129
+ Record<
130
+ | 'task_id'
131
+ | 'summary'
132
+ | 'description'
133
+ | 'completed_at'
134
+ | 'repeat_rule'
135
+ | 'extra'
136
+ | 'parent_task_guid',
137
+ string
138
+ >,
139
+ Record<'mode' | 'source' | 'subtask_count', number> {
140
+ status: 'todo';
141
+ is_milestone: boolean;
142
+ start: TaskTimeEnd;
143
+ due: TaskTimeEnd;
144
+ reminders: {
145
+ id?: string;
146
+ relative_fire_minute: number;
147
+ }[];
148
+ origin: {
149
+ platform_i18n_name: TranslationMap;
150
+ href: Record<'url' | 'title', string>;
151
+ };
152
+ custom_complete: Record<'pc' | 'ios' | 'android', TaskCompletion>;
153
+ custom_fields: TaskFieldValue[];
154
+ attachments: TaskAttachment[];
155
+ dependencies: TaskDependency[];
156
+ tasklists: Partial<Record<'tasklist_guid' | 'section_guid', string>>[];
157
+ }
158
+
159
+ export type TaskSummary = Pick<TaskList, 'guid'> &
160
+ Pick<
161
+ Task,
162
+ | 'summary'
163
+ | 'completed_at'
164
+ | 'start'
165
+ | 'due'
166
+ | 'members'
167
+ | 'subtask_count'
168
+ >;
@@ -1,16 +1,16 @@
1
- export interface LarkWikiNode
2
- extends Record<
3
- | 'title'
4
- | 'creator'
5
- | 'owner'
6
- | `${'' | 'origin_'}space_id`
7
- | `node_create_time`
8
- | `${'' | 'parent_' | 'origin_'}node_token`
9
- | `obj_token`
10
- | `obj_${'create' | 'edit'}_time`,
11
- string
12
- > {
13
- node_type: 'origin' | 'shortcut';
14
- obj_type: `doc${'' | 'x'}` | 'sheet' | 'mindnote' | 'bitable' | 'file';
15
- has_child: boolean;
16
- }
1
+ export interface LarkWikiNode
2
+ extends Record<
3
+ | 'title'
4
+ | 'creator'
5
+ | 'owner'
6
+ | `${'' | 'origin_'}space_id`
7
+ | `node_create_time`
8
+ | `${'' | 'parent_' | 'origin_'}node_token`
9
+ | `obj_token`
10
+ | `obj_${'create' | 'edit'}_time`,
11
+ string
12
+ > {
13
+ node_type: 'origin' | 'shortcut';
14
+ obj_type: `doc${'' | 'x'}` | 'sheet' | 'mindnote' | 'bitable' | 'file';
15
+ has_child: boolean;
16
+ }
@@ -1,34 +1,34 @@
1
- import { DataObject, RESTClient } from 'mobx-restful';
2
- import { buildURLData } from 'web-utility';
3
-
4
- import { LarkPageData } from '../type';
5
-
6
- export async function* createPageStream<T extends DataObject>(
7
- client: RESTClient,
8
- path: string,
9
- onCount: (total: number) => any,
10
- filter: DataObject = {}
11
- ) {
12
- var count = 0,
13
- lastPage = '';
14
-
15
- do {
16
- const { body } = await client.get<LarkPageData<T>>(
17
- `${path}?${buildURLData({
18
- ...filter,
19
- page_size: 500,
20
- page_token: lastPage
21
- })}`
22
- );
23
- var { items, total, has_more, page_token } = body!.data!;
24
-
25
- if (total != null) count = total;
26
- else count += items?.length || 0;
27
-
28
- lastPage = page_token;
29
-
30
- onCount(has_more ? Infinity : count);
31
-
32
- yield* items || [];
33
- } while (has_more);
34
- }
1
+ import { DataObject, RESTClient } from 'mobx-restful';
2
+ import { buildURLData } from 'web-utility';
3
+
4
+ import { LarkPageData } from '../type';
5
+
6
+ export async function* createPageStream<T extends DataObject>(
7
+ client: RESTClient,
8
+ path: string,
9
+ onCount: (total: number) => any,
10
+ filter: DataObject = {}
11
+ ) {
12
+ var count = 0,
13
+ lastPage = '';
14
+
15
+ do {
16
+ const { body } = await client.get<LarkPageData<T>>(
17
+ `${path}?${buildURLData({
18
+ ...filter,
19
+ page_size: 500,
20
+ page_token: lastPage
21
+ })}`
22
+ );
23
+ var { items, total, has_more, page_token } = body!.data!;
24
+
25
+ if (total != null) count = total;
26
+ else count += items?.length || 0;
27
+
28
+ lastPage = page_token;
29
+
30
+ onCount(has_more ? Infinity : count);
31
+
32
+ yield* items || [];
33
+ } while (has_more);
34
+ }
@@ -1,6 +1,6 @@
1
- export * from './base';
2
- export * from './InstantMessenger';
3
- export * from './Task';
4
- export * from './SpreadSheet';
5
- export * from './BITable';
6
- export * from './Wiki/type';
1
+ export * from './base';
2
+ export * from './InstantMessenger';
3
+ export * from './Task';
4
+ export * from './SpreadSheet';
5
+ export * from './BITable';
6
+ export * from './Wiki/type';
package/src/type.ts CHANGED
@@ -1,75 +1,75 @@
1
- export type LarkData<
2
- D extends Record<string, any> = {},
3
- E extends Record<string, any> = {}
4
- > = E & {
5
- code: number;
6
- msg: string;
7
- data?: D;
8
- error?: {
9
- log_id: string;
10
- [key: string]: any;
11
- };
12
- };
13
-
14
- export type LarkPageData<D extends Record<string, any> = {}> = LarkData<{
15
- page_token: string;
16
- items: D[];
17
- has_more: boolean;
18
- total?: number;
19
- }>;
20
-
21
- export function isLarkError(data?: any): data is LarkData {
22
- return !!(data as LarkData)?.code;
23
- }
24
-
25
- export type TenantAccessToken = LarkData<
26
- {},
27
- {
28
- expire: number;
29
- tenant_access_token: string;
30
- }
31
- >;
32
-
33
- export type UserIdType = `${'open' | 'union' | 'user'}_id`;
34
-
35
- export type LocaleUser = Record<
36
- `${'' | 'en_'}name` | `${'' | 'enterprise_'}email`,
37
- string
38
- >;
39
-
40
- export interface UserMeta
41
- extends LocaleUser,
42
- Record<
43
- | `avatar_${'url' | 'thumb' | 'middle' | 'big'}`
44
- | UserIdType
45
- | 'mobile'
46
- | 'tenant_key'
47
- | 'employee_no'
48
- | `${'access' | 'refresh'}_token`,
49
- string
50
- >,
51
- Record<`${'' | 'refresh_'}expires_in`, number> {
52
- token_type: 'Bearer';
53
- }
54
-
55
- export interface JSTicket {
56
- expire_in: number;
57
- ticket: string;
58
- }
59
-
60
- export type I18nKey = `${string}_${string}`;
61
-
62
- export type TranslationMap = Record<I18nKey, string>;
63
-
64
- export type UploadTargetType =
65
- | 'doc_image'
66
- | 'docx_image'
67
- | 'sheet_image'
68
- | 'doc_file'
69
- | 'docx_file'
70
- | 'sheet_file'
71
- | 'vc_virtual_background'
72
- | 'bitable_image'
73
- | 'bitable_file'
74
- | 'moments'
75
- | 'ccm_import_open';
1
+ export type LarkData<
2
+ D extends Record<string, any> = {},
3
+ E extends Record<string, any> = {}
4
+ > = E & {
5
+ code: number;
6
+ msg: string;
7
+ data?: D;
8
+ error?: {
9
+ log_id: string;
10
+ [key: string]: any;
11
+ };
12
+ };
13
+
14
+ export type LarkPageData<D extends Record<string, any> = {}> = LarkData<{
15
+ page_token: string;
16
+ items: D[];
17
+ has_more: boolean;
18
+ total?: number;
19
+ }>;
20
+
21
+ export function isLarkError(data?: any): data is LarkData {
22
+ return !!(data as LarkData)?.code;
23
+ }
24
+
25
+ export type TenantAccessToken = LarkData<
26
+ {},
27
+ {
28
+ expire: number;
29
+ tenant_access_token: string;
30
+ }
31
+ >;
32
+
33
+ export type UserIdType = `${'open' | 'union' | 'user'}_id`;
34
+
35
+ export type LocaleUser = Record<
36
+ `${'' | 'en_'}name` | `${'' | 'enterprise_'}email`,
37
+ string
38
+ >;
39
+
40
+ export interface UserMeta
41
+ extends LocaleUser,
42
+ Record<
43
+ | `avatar_${'url' | 'thumb' | 'middle' | 'big'}`
44
+ | UserIdType
45
+ | 'mobile'
46
+ | 'tenant_key'
47
+ | 'employee_no'
48
+ | `${'access' | 'refresh'}_token`,
49
+ string
50
+ >,
51
+ Record<`${'' | 'refresh_'}expires_in`, number> {
52
+ token_type: 'Bearer';
53
+ }
54
+
55
+ export interface JSTicket {
56
+ expire_in: number;
57
+ ticket: string;
58
+ }
59
+
60
+ export type I18nKey = `${string}_${string}`;
61
+
62
+ export type TranslationMap = Record<I18nKey, string>;
63
+
64
+ export type UploadTargetType =
65
+ | 'doc_image'
66
+ | 'docx_image'
67
+ | 'sheet_image'
68
+ | 'doc_file'
69
+ | 'docx_file'
70
+ | 'sheet_file'
71
+ | 'vc_virtual_background'
72
+ | 'bitable_image'
73
+ | 'bitable_file'
74
+ | 'moments'
75
+ | 'ccm_import_open';
package/tsconfig.json CHANGED
@@ -1,21 +1,21 @@
1
- {
2
- "compilerOptions": {
3
- "strict": true,
4
- "target": "ES6",
5
- "module": "CommonJS",
6
- "moduleResolution": "Node",
7
- "useDefineForClassFields": true,
8
- "declaration": true,
9
- "skipLibCheck": true,
10
- "lib": ["ES2023", "DOM"],
11
- "outDir": "dist/"
12
- },
13
- "include": ["src/**/*.ts"],
14
- "typedocOptions": {
15
- "name": "Lark SDK",
16
- "excludeExternals": true,
17
- "excludePrivate": true,
18
- "readme": "./ReadMe.md",
19
- "plugin": ["typedoc-plugin-mdn-links"]
20
- }
21
- }
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "target": "ES6",
5
+ "module": "CommonJS",
6
+ "moduleResolution": "Node",
7
+ "useDefineForClassFields": true,
8
+ "declaration": true,
9
+ "skipLibCheck": true,
10
+ "lib": ["ES2023", "DOM"],
11
+ "outDir": "dist/"
12
+ },
13
+ "include": ["src/**/*.ts"],
14
+ "typedocOptions": {
15
+ "name": "Lark SDK",
16
+ "excludeExternals": true,
17
+ "excludePrivate": true,
18
+ "readme": "./ReadMe.md",
19
+ "plugin": ["typedoc-plugin-mdn-links"]
20
+ }
21
+ }