alemonjs 2.1.21 → 2.1.23
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/lib/app/hook-use-api.d.ts +1 -1
- package/lib/app/index.js +1 -1
- package/lib/app/message-format-old.d.ts +7 -2
- package/lib/app/message-format-old.js +34 -2
- package/lib/app/message-format.d.ts +8 -3
- package/lib/app/message-format.js +24 -4
- package/lib/core/config.d.ts +13 -11
- package/lib/core/config.js +107 -41
- package/lib/core/index.js +1 -1
- package/lib/index.js +2 -2
- package/lib/jsx/index.d.ts +105 -0
- package/lib/jsx/index.js +211 -0
- package/lib/jsx/jsx-dev-runtime.d.ts +2 -0
- package/lib/jsx/jsx-dev-runtime.js +1 -0
- package/lib/jsx/jsx-runtime.d.ts +18 -0
- package/lib/jsx/jsx-runtime.js +24 -0
- package/lib/types/message/attachment.d.ts +7 -0
- package/lib/types/message/attachment.js +1 -0
- package/lib/types/message/audio.d.ts +4 -0
- package/lib/types/message/audio.js +1 -0
- package/lib/types/message/index.d.ts +10 -2
- package/lib/types/message/markdown-raw.d.ts +4 -0
- package/lib/types/message/markdown-raw.js +1 -0
- package/lib/types/message/markdown.d.ts +8 -1
- package/lib/types/message/video.d.ts +4 -0
- package/lib/types/message/video.js +1 -0
- package/package.json +1 -1
|
@@ -25,7 +25,7 @@ export declare const useMessage: <T extends EventKeys>(event: Events[T]) => read
|
|
|
25
25
|
addLink(val: string, options?: {
|
|
26
26
|
style?: "none" | "bold" | "block" | "strikethrough" | "boldItalic" | "italic";
|
|
27
27
|
}): any;
|
|
28
|
-
addImage(val: Buffer<ArrayBufferLike>): any;
|
|
28
|
+
addImage(val: string | Buffer<ArrayBufferLike>): any;
|
|
29
29
|
addImageFile(val: string): any;
|
|
30
30
|
addImageURL(val: string): any;
|
|
31
31
|
addMention(UserId?: string, options?: {
|
package/lib/app/index.js
CHANGED
|
@@ -19,4 +19,4 @@ export { onState, unState, useState } from './hook-use-state.js';
|
|
|
19
19
|
export { useObserver, useSubscribe } from './hook-use-subscribe.js';
|
|
20
20
|
export { createDataFormat, createEventValue, format, getMessageIntent, sendToChannel, sendToUser } from './message-api.js';
|
|
21
21
|
export { Format, createEvent } from './message-format.js';
|
|
22
|
-
export { Ark, BT, Image, ImageFile, ImageURL, Link, MD, Mention, Text } from './message-format-old.js';
|
|
22
|
+
export { Ark, Attachment, Audio, BT, Custom, Image, ImageFile, ImageURL, Link, MD, Markdown, Mention, Text, Video } from './message-format-old.js';
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { DataMention, DataImage, DataText, DataImageURL, DataImageFile, ButtonRow, DataButtonGroup, DataButton, DataArkList, DataArkListTip, DataArkListContent, DataArkListItem, DataArkCard, DataArkBigCard, DataMarkdownTemplate, DataMarkDown, DataMarkdownTitle, DataMarkdownSubtitle, DataMarkdownBold, DataMarkdownItalic, DataMarkdownItalicStar, DataMarkdownStrikethrough, DataMarkdownLink, DataMarkdownImage, DataMarkdownList, DataMarkdownListItem, DataMarkdownBlockquote, DataMarkdownDivider, DataMarkdownNewline, DataLink, DataMarkdownText, DataButtonTemplate, DataMarkdownCode } from '../types';
|
|
1
|
+
import { DataMention, DataImage, DataText, DataImageURL, DataImageFile, ButtonRow, DataButtonGroup, DataButton, DataArkList, DataArkListTip, DataArkListContent, DataArkListItem, DataArkCard, DataArkBigCard, DataMarkdownTemplate, DataMarkDown, DataMarkdownTitle, DataMarkdownSubtitle, DataMarkdownBold, DataMarkdownItalic, DataMarkdownItalicStar, DataMarkdownStrikethrough, DataMarkdownLink, DataMarkdownImage, DataMarkdownList, DataMarkdownListItem, DataMarkdownBlockquote, DataMarkdownDivider, DataMarkdownNewline, DataLink, DataMarkdownText, DataButtonTemplate, DataMarkdownCode, DataCustom, DataMarkdownOriginal, DataAttachment, DataAudio, DataVideo } from '../types';
|
|
2
|
+
export declare const Custom: (value: DataCustom["value"], options?: DataCustom["options"], type?: DataCustom["type"]) => DataCustom;
|
|
2
3
|
export declare const Text: (val: DataText["value"], options?: DataText["options"]) => DataText;
|
|
3
4
|
export declare const Link: (val: DataLink["value"], options?: DataText["options"]) => DataText;
|
|
4
5
|
export declare const ImageURL: (val: DataImageURL["value"]) => DataImageURL;
|
|
5
6
|
export declare const ImageFile: (val: DataImageFile["value"]) => DataImageFile;
|
|
6
7
|
declare const Image: {
|
|
7
|
-
(val: Buffer): DataImage;
|
|
8
|
+
(val: Buffer | string): DataImage;
|
|
8
9
|
url: (val: DataImageURL["value"]) => DataImageURL;
|
|
9
10
|
file: (val: DataImageFile["value"]) => DataImageFile;
|
|
10
11
|
};
|
|
@@ -48,3 +49,7 @@ declare const MD: {
|
|
|
48
49
|
code(value: DataMarkdownCode["value"], options?: DataMarkdownCode["options"]): DataMarkdownCode;
|
|
49
50
|
};
|
|
50
51
|
export { MD };
|
|
52
|
+
export declare const Markdown: (val: string) => DataMarkdownOriginal;
|
|
53
|
+
export declare const Attachment: (val: string, options?: DataAttachment["options"]) => DataAttachment;
|
|
54
|
+
export declare const Audio: (val: string) => DataAudio;
|
|
55
|
+
export declare const Video: (val: string) => DataVideo;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
const Custom = (value, options, type) => {
|
|
2
|
+
return {
|
|
3
|
+
type: type,
|
|
4
|
+
value,
|
|
5
|
+
options
|
|
6
|
+
};
|
|
7
|
+
};
|
|
1
8
|
const Text = (val, options) => {
|
|
2
9
|
return {
|
|
3
10
|
type: 'Text',
|
|
@@ -27,7 +34,7 @@ const ImageFile = (val) => {
|
|
|
27
34
|
const Image = (val) => {
|
|
28
35
|
return {
|
|
29
36
|
type: 'Image',
|
|
30
|
-
value: val.toString('base64')
|
|
37
|
+
value: typeof val === 'string' ? val : `base64://${val.toString('base64')}`
|
|
31
38
|
};
|
|
32
39
|
};
|
|
33
40
|
Image.url = ImageURL;
|
|
@@ -213,5 +220,30 @@ MD.code = (value, options) => {
|
|
|
213
220
|
options: options
|
|
214
221
|
};
|
|
215
222
|
};
|
|
223
|
+
const Markdown = (val) => {
|
|
224
|
+
return {
|
|
225
|
+
type: 'MarkdownOriginal',
|
|
226
|
+
value: val
|
|
227
|
+
};
|
|
228
|
+
};
|
|
229
|
+
const Attachment = (val, options) => {
|
|
230
|
+
return {
|
|
231
|
+
type: 'Attachment',
|
|
232
|
+
value: val,
|
|
233
|
+
options
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
const Audio = (val) => {
|
|
237
|
+
return {
|
|
238
|
+
type: 'Audio',
|
|
239
|
+
value: val
|
|
240
|
+
};
|
|
241
|
+
};
|
|
242
|
+
const Video = (val) => {
|
|
243
|
+
return {
|
|
244
|
+
type: 'Video',
|
|
245
|
+
value: val
|
|
246
|
+
};
|
|
247
|
+
};
|
|
216
248
|
|
|
217
|
-
export { Ark, BT, Image, ImageFile, ImageURL, Link, MD, Mention, Text };
|
|
249
|
+
export { Ark, Attachment, Audio, BT, Custom, Image, ImageFile, ImageURL, Link, MD, Markdown, Mention, Text, Video };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataButtonGroup, DataMarkDown, DataEnums, EventKeys, Events } from '../types';
|
|
2
|
-
import { Text, Link, Image, ImageFile, ImageURL, Mention, BT, MD } from './message-format-old.js';
|
|
2
|
+
import { Text, Link, Image, ImageFile, ImageURL, Mention, BT, MD, Markdown, Attachment, Audio, Video, Custom } from './message-format-old.js';
|
|
3
3
|
export * from './message-format-old.js';
|
|
4
4
|
declare class FormatButtonGroup {
|
|
5
5
|
#private;
|
|
@@ -31,8 +31,8 @@ declare class FormatMarkDown {
|
|
|
31
31
|
export declare class Format {
|
|
32
32
|
#private;
|
|
33
33
|
static create(): Format;
|
|
34
|
-
createMarkdown(): FormatMarkDown;
|
|
35
|
-
createButtonGroup(): FormatButtonGroup;
|
|
34
|
+
static createMarkdown(): FormatMarkDown;
|
|
35
|
+
static createButtonGroup(): FormatButtonGroup;
|
|
36
36
|
get value(): DataEnums[];
|
|
37
37
|
addText(...args: Parameters<typeof Text>): this;
|
|
38
38
|
addTextBreak(): this;
|
|
@@ -45,6 +45,11 @@ export declare class Format {
|
|
|
45
45
|
addButtonGroup(...args: Parameters<typeof BT.group>): this;
|
|
46
46
|
addMarkdown(md: FormatMarkDown): this;
|
|
47
47
|
addMarkdown(...args: Parameters<typeof MD>): this;
|
|
48
|
+
addMarkdownOriginal(...args: Parameters<typeof Markdown>): this;
|
|
49
|
+
addAttachment(...args: Parameters<typeof Attachment>): this;
|
|
50
|
+
addAudio(...args: Parameters<typeof Audio>): this;
|
|
51
|
+
addVideo(...args: Parameters<typeof Video>): this;
|
|
52
|
+
addCustom(...args: Parameters<typeof Custom>): this;
|
|
48
53
|
clear(): this;
|
|
49
54
|
}
|
|
50
55
|
export declare function createEvent<T extends EventKeys>(options: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Text, Link, Image, ImageFile, ImageURL, Mention, BT, MD } from './message-format-old.js';
|
|
1
|
+
import { Text, Link, Image, ImageFile, ImageURL, Mention, BT, MD, Markdown, Attachment, Audio, Video, Custom } from './message-format-old.js';
|
|
2
2
|
export { Ark } from './message-format-old.js';
|
|
3
3
|
|
|
4
4
|
class FormatButtonGroup {
|
|
@@ -107,10 +107,10 @@ class Format {
|
|
|
107
107
|
static create() {
|
|
108
108
|
return new Format();
|
|
109
109
|
}
|
|
110
|
-
createMarkdown() {
|
|
110
|
+
static createMarkdown() {
|
|
111
111
|
return new FormatMarkDown();
|
|
112
112
|
}
|
|
113
|
-
createButtonGroup() {
|
|
113
|
+
static createButtonGroup() {
|
|
114
114
|
return new FormatButtonGroup();
|
|
115
115
|
}
|
|
116
116
|
get value() {
|
|
@@ -162,6 +162,26 @@ class Format {
|
|
|
162
162
|
}
|
|
163
163
|
return this;
|
|
164
164
|
}
|
|
165
|
+
addMarkdownOriginal(...args) {
|
|
166
|
+
this.#data.push(Markdown(...args));
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
addAttachment(...args) {
|
|
170
|
+
this.#data.push(Attachment(...args));
|
|
171
|
+
return this;
|
|
172
|
+
}
|
|
173
|
+
addAudio(...args) {
|
|
174
|
+
this.#data.push(Audio(...args));
|
|
175
|
+
return this;
|
|
176
|
+
}
|
|
177
|
+
addVideo(...args) {
|
|
178
|
+
this.#data.push(Video(...args));
|
|
179
|
+
return this;
|
|
180
|
+
}
|
|
181
|
+
addCustom(...args) {
|
|
182
|
+
this.#data.push(Custom(...args));
|
|
183
|
+
return this;
|
|
184
|
+
}
|
|
165
185
|
clear() {
|
|
166
186
|
this.#data = [];
|
|
167
187
|
return this;
|
|
@@ -192,4 +212,4 @@ function createEvent(options) {
|
|
|
192
212
|
return { ...event, ...o };
|
|
193
213
|
}
|
|
194
214
|
|
|
195
|
-
export { BT, Format, Image, ImageFile, ImageURL, Link, MD, Mention, Text, createEvent };
|
|
215
|
+
export { Attachment, Audio, BT, Custom, Format, Image, ImageFile, ImageURL, Link, MD, Markdown, Mention, Text, Video, createEvent };
|
package/lib/core/config.d.ts
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import type { Package } from '../types';
|
|
2
|
-
|
|
2
|
+
type ConfigValue = {
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
};
|
|
5
|
+
type ConfigListener = (value: ConfigValue) => void;
|
|
6
|
+
declare class ConfigCore {
|
|
3
7
|
#private;
|
|
4
8
|
constructor(dir: string);
|
|
5
|
-
get value():
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}): void;
|
|
11
|
-
get package(): null | Package;
|
|
9
|
+
get value(): ConfigValue | null;
|
|
10
|
+
saveValue(value: ConfigValue): void;
|
|
11
|
+
onWatch(listener: ConfigListener): () => void;
|
|
12
|
+
dispose(): void;
|
|
13
|
+
get package(): Package | null;
|
|
12
14
|
get argv(): {
|
|
13
15
|
[key: string]: string;
|
|
14
16
|
};
|
|
15
17
|
}
|
|
16
18
|
export declare const getConfig: () => typeof ConfigCore.prototype;
|
|
17
|
-
export declare const getConfigValue: () =>
|
|
18
|
-
|
|
19
|
-
};
|
|
19
|
+
export declare const getConfigValue: () => ConfigValue;
|
|
20
|
+
export declare const onWatchConfigValue: (callback: ConfigListener) => (() => void);
|
|
21
|
+
export {};
|
package/lib/core/config.js
CHANGED
|
@@ -1,38 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readFileSync, existsSync, watch, mkdirSync, writeFileSync } from 'fs';
|
|
2
2
|
import { join, dirname } from 'path';
|
|
3
3
|
import YAML from 'yaml';
|
|
4
4
|
import { ResultCode } from './variable.js';
|
|
5
5
|
|
|
6
6
|
class ConfigCore {
|
|
7
|
-
#dir = null;
|
|
8
7
|
#value = null;
|
|
9
8
|
#mergedValue = null;
|
|
10
9
|
#watcher = null;
|
|
10
|
+
#listeners = new Set();
|
|
11
|
+
#debounceTimer = null;
|
|
12
|
+
#debounceDelay = 100;
|
|
13
|
+
#argvProxy = null;
|
|
14
|
+
#resolvedDir = null;
|
|
11
15
|
#initValue = {
|
|
12
16
|
gui: {
|
|
13
17
|
port: 17127
|
|
14
18
|
}
|
|
15
19
|
};
|
|
16
20
|
constructor(dir) {
|
|
17
|
-
this.#
|
|
21
|
+
this.#resolvedDir = join(process.cwd(), dir);
|
|
18
22
|
}
|
|
19
23
|
#invalidateMergedCache() {
|
|
20
24
|
this.#mergedValue = null;
|
|
21
25
|
}
|
|
22
|
-
#
|
|
23
|
-
if (!this.#
|
|
24
|
-
return
|
|
25
|
-
}
|
|
26
|
-
const dir = join(process.cwd(), this.#dir);
|
|
27
|
-
if (!existsSync(dir)) {
|
|
28
|
-
this.saveValue(this.#initValue);
|
|
29
|
-
return this.#value;
|
|
26
|
+
#readConfig() {
|
|
27
|
+
if (!this.#resolvedDir) {
|
|
28
|
+
return null;
|
|
30
29
|
}
|
|
31
30
|
try {
|
|
32
|
-
const data = readFileSync(
|
|
33
|
-
|
|
34
|
-
this.#value = d;
|
|
35
|
-
this.#invalidateMergedCache();
|
|
31
|
+
const data = readFileSync(this.#resolvedDir, 'utf-8');
|
|
32
|
+
return YAML.parse(data);
|
|
36
33
|
}
|
|
37
34
|
catch (err) {
|
|
38
35
|
logger.error({
|
|
@@ -40,31 +37,69 @@ class ConfigCore {
|
|
|
40
37
|
message: 'Config file parse error',
|
|
41
38
|
data: err
|
|
42
39
|
});
|
|
40
|
+
return null;
|
|
43
41
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
}
|
|
43
|
+
#applyValue(newValue) {
|
|
44
|
+
if (newValue === null) {
|
|
45
|
+
return;
|
|
47
46
|
}
|
|
48
|
-
this.#
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
this.#value = newValue;
|
|
48
|
+
this.#invalidateMergedCache();
|
|
49
|
+
}
|
|
50
|
+
#notifyListeners() {
|
|
51
|
+
if (this.#debounceTimer) {
|
|
52
|
+
clearTimeout(this.#debounceTimer);
|
|
53
|
+
}
|
|
54
|
+
this.#debounceTimer = setTimeout(() => {
|
|
55
|
+
this.#debounceTimer = null;
|
|
56
|
+
const val = this.value;
|
|
57
|
+
if (!val) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
for (const listener of this.#listeners) {
|
|
61
|
+
try {
|
|
62
|
+
listener(val);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
logger.error({
|
|
66
|
+
code: ResultCode.FailInternal,
|
|
67
|
+
message: 'Config listener error',
|
|
68
|
+
data: err
|
|
69
|
+
});
|
|
70
|
+
}
|
|
54
71
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
}, this.#debounceDelay);
|
|
73
|
+
}
|
|
74
|
+
#ensureWatcher() {
|
|
75
|
+
if (this.#watcher || !this.#resolvedDir) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!existsSync(this.#resolvedDir)) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this.#watcher = watch(this.#resolvedDir, () => {
|
|
82
|
+
const newValue = this.#readConfig();
|
|
83
|
+
if (newValue !== null) {
|
|
84
|
+
this.#applyValue(newValue);
|
|
85
|
+
this.#notifyListeners();
|
|
61
86
|
}
|
|
62
87
|
});
|
|
63
|
-
|
|
88
|
+
}
|
|
89
|
+
#init() {
|
|
90
|
+
if (!this.#resolvedDir) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (!existsSync(this.#resolvedDir)) {
|
|
94
|
+
this.saveValue(this.#initValue);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
this.#applyValue(this.#readConfig());
|
|
98
|
+
this.#ensureWatcher();
|
|
64
99
|
}
|
|
65
100
|
get value() {
|
|
66
101
|
if (!this.#value) {
|
|
67
|
-
this.#
|
|
102
|
+
this.#init();
|
|
68
103
|
}
|
|
69
104
|
if (this.#mergedValue) {
|
|
70
105
|
return this.#mergedValue;
|
|
@@ -76,15 +111,40 @@ class ConfigCore {
|
|
|
76
111
|
return this.#mergedValue;
|
|
77
112
|
}
|
|
78
113
|
saveValue(value) {
|
|
79
|
-
if (!this.#
|
|
114
|
+
if (!this.#resolvedDir) {
|
|
80
115
|
return;
|
|
81
116
|
}
|
|
82
|
-
const
|
|
83
|
-
if (!existsSync(
|
|
84
|
-
mkdirSync(
|
|
117
|
+
const dirPath = dirname(this.#resolvedDir);
|
|
118
|
+
if (!existsSync(this.#resolvedDir)) {
|
|
119
|
+
mkdirSync(dirPath, { recursive: true });
|
|
85
120
|
}
|
|
86
121
|
const data = YAML.stringify(value);
|
|
87
|
-
writeFileSync(
|
|
122
|
+
writeFileSync(this.#resolvedDir, data, 'utf-8');
|
|
123
|
+
this.#applyValue(value);
|
|
124
|
+
this.#ensureWatcher();
|
|
125
|
+
}
|
|
126
|
+
onWatch(listener) {
|
|
127
|
+
this.#listeners.add(listener);
|
|
128
|
+
if (!this.#value) {
|
|
129
|
+
this.#init();
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.#ensureWatcher();
|
|
133
|
+
}
|
|
134
|
+
return () => {
|
|
135
|
+
this.#listeners.delete(listener);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
dispose() {
|
|
139
|
+
if (this.#watcher) {
|
|
140
|
+
this.#watcher.close();
|
|
141
|
+
this.#watcher = null;
|
|
142
|
+
}
|
|
143
|
+
if (this.#debounceTimer) {
|
|
144
|
+
clearTimeout(this.#debounceTimer);
|
|
145
|
+
this.#debounceTimer = null;
|
|
146
|
+
}
|
|
147
|
+
this.#listeners.clear();
|
|
88
148
|
}
|
|
89
149
|
#package = null;
|
|
90
150
|
get package() {
|
|
@@ -100,8 +160,8 @@ class ConfigCore {
|
|
|
100
160
|
});
|
|
101
161
|
return null;
|
|
102
162
|
}
|
|
103
|
-
const data = readFileSync(dir, 'utf-8');
|
|
104
163
|
try {
|
|
164
|
+
const data = readFileSync(dir, 'utf-8');
|
|
105
165
|
this.#package = JSON.parse(data);
|
|
106
166
|
}
|
|
107
167
|
catch (err) {
|
|
@@ -115,8 +175,10 @@ class ConfigCore {
|
|
|
115
175
|
return this.#package;
|
|
116
176
|
}
|
|
117
177
|
get argv() {
|
|
118
|
-
|
|
119
|
-
|
|
178
|
+
if (this.#argvProxy) {
|
|
179
|
+
return this.#argvProxy;
|
|
180
|
+
}
|
|
181
|
+
this.#argvProxy = new Proxy({}, {
|
|
120
182
|
get(_target, key) {
|
|
121
183
|
if (typeof key === 'symbol') {
|
|
122
184
|
return undefined;
|
|
@@ -132,6 +194,7 @@ class ConfigCore {
|
|
|
132
194
|
return null;
|
|
133
195
|
}
|
|
134
196
|
});
|
|
197
|
+
return this.#argvProxy;
|
|
135
198
|
}
|
|
136
199
|
}
|
|
137
200
|
const getConfig = () => {
|
|
@@ -143,5 +206,8 @@ const getConfig = () => {
|
|
|
143
206
|
return global.__config;
|
|
144
207
|
};
|
|
145
208
|
const getConfigValue = () => getConfig()?.value || {};
|
|
209
|
+
const onWatchConfigValue = (callback) => {
|
|
210
|
+
return getConfig().onWatch(callback);
|
|
211
|
+
};
|
|
146
212
|
|
|
147
|
-
export {
|
|
213
|
+
export { getConfig, getConfigValue, onWatchConfigValue };
|
package/lib/core/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { ResultCode } from './variable.js';
|
|
2
|
-
export {
|
|
2
|
+
export { getConfig, getConfigValue, onWatchConfigValue } from './config.js';
|
|
3
3
|
export { createEventName, createHash, createResult, getInputExportPath, getRecursiveDirFiles, showErrorModule, stringToNumber, useUserHashKey } from './utils.js';
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { ActionsEventEnum } from './types/event/actions.js';
|
|
2
2
|
export { ResultCode } from './core/variable.js';
|
|
3
|
-
export {
|
|
3
|
+
export { getConfig, getConfigValue, onWatchConfigValue } from './core/config.js';
|
|
4
4
|
export { createEventName, createHash, createResult, getInputExportPath, getRecursiveDirFiles, showErrorModule, stringToNumber, useUserHashKey } from './core/utils.js';
|
|
5
5
|
export { cbpClient } from './cbp/connects/client.js';
|
|
6
6
|
export { cbpPlatform } from './cbp/connects/platform.js';
|
|
@@ -27,4 +27,4 @@ export { useObserver, useSubscribe } from './app/hook-use-subscribe.js';
|
|
|
27
27
|
export { createDataFormat, createEventValue, format, getMessageIntent, sendToChannel, sendToUser } from './app/message-api.js';
|
|
28
28
|
export { Format, createEvent } from './app/message-format.js';
|
|
29
29
|
export { start } from './main.js';
|
|
30
|
-
export { Ark, BT, Image, ImageFile, ImageURL, Link, MD, Mention, Text } from './app/message-format-old.js';
|
|
30
|
+
export { Ark, Attachment, Audio, BT, Custom, Image, ImageFile, ImageURL, Link, MD, Markdown, Mention, Text, Video } from './app/message-format-old.js';
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { DataText, DataLink, DataImage, DataImageURL, DataImageFile, DataMention, DataButton, ButtonRow, DataButtonGroup, DataMarkDown, DataMarkdownTitle, DataMarkdownSubtitle, DataMarkdownText, DataMarkdownBold, DataMarkdownCode } from '../types/index.js';
|
|
2
|
+
export interface FormatProps {
|
|
3
|
+
name?: string;
|
|
4
|
+
children?: any;
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
export interface TextProps {
|
|
8
|
+
children?: any;
|
|
9
|
+
style?: DataText['options']['style'];
|
|
10
|
+
}
|
|
11
|
+
export interface LinkProps {
|
|
12
|
+
children?: any;
|
|
13
|
+
link: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ImageProps {
|
|
16
|
+
children?: Buffer;
|
|
17
|
+
}
|
|
18
|
+
export interface ImageURLProps {
|
|
19
|
+
children?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ImageFileProps {
|
|
22
|
+
children?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface MentionProps {
|
|
25
|
+
children?: string;
|
|
26
|
+
belong?: 'user' | 'guild' | 'channel' | 'everyone';
|
|
27
|
+
payload?: any;
|
|
28
|
+
}
|
|
29
|
+
export interface ButtonProps {
|
|
30
|
+
children?: any;
|
|
31
|
+
data?: DataButton['options']['data'];
|
|
32
|
+
command?: string;
|
|
33
|
+
toolTip?: string;
|
|
34
|
+
autoEnter?: boolean;
|
|
35
|
+
showList?: boolean;
|
|
36
|
+
type?: 'command' | 'link' | 'call';
|
|
37
|
+
}
|
|
38
|
+
export interface RowProps {
|
|
39
|
+
children?: any;
|
|
40
|
+
}
|
|
41
|
+
export interface ButtonGroupProps {
|
|
42
|
+
children?: any;
|
|
43
|
+
}
|
|
44
|
+
export interface MarkdownProps {
|
|
45
|
+
children?: any;
|
|
46
|
+
}
|
|
47
|
+
export interface MarkdownTitleProps {
|
|
48
|
+
children?: any;
|
|
49
|
+
}
|
|
50
|
+
export interface MarkdownSubtitleProps {
|
|
51
|
+
children?: any;
|
|
52
|
+
}
|
|
53
|
+
export interface MarkdownTextProps {
|
|
54
|
+
children?: any;
|
|
55
|
+
}
|
|
56
|
+
export interface MarkdownBoldProps {
|
|
57
|
+
children?: any;
|
|
58
|
+
}
|
|
59
|
+
export interface MarkdownCodeProps {
|
|
60
|
+
children?: any;
|
|
61
|
+
language?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface CustomProps {
|
|
64
|
+
name: string;
|
|
65
|
+
children?: any;
|
|
66
|
+
[key: string]: any;
|
|
67
|
+
}
|
|
68
|
+
declare function FormatComponent(props: FormatProps): any;
|
|
69
|
+
declare namespace FormatComponent {
|
|
70
|
+
var Text: typeof FormatText;
|
|
71
|
+
var Link: typeof FormatLink;
|
|
72
|
+
var Image: typeof FormatImage;
|
|
73
|
+
var ImageURL: typeof FormatImageURL;
|
|
74
|
+
var ImageFile: typeof FormatImageFile;
|
|
75
|
+
var Mention: typeof FormatMention;
|
|
76
|
+
var Button: typeof FormatButton;
|
|
77
|
+
var Row: typeof FormatRow;
|
|
78
|
+
var ButtonGroup: typeof FormatButtonGroup;
|
|
79
|
+
var Markdown: typeof FormatMarkdown;
|
|
80
|
+
var Custom: typeof FormatCustomComponent;
|
|
81
|
+
}
|
|
82
|
+
declare function FormatText(props: TextProps): DataText;
|
|
83
|
+
declare function FormatLink(props: LinkProps): DataLink;
|
|
84
|
+
declare function FormatImage(props: ImageProps): DataImage;
|
|
85
|
+
declare function FormatImageURL(props: ImageURLProps): DataImageURL;
|
|
86
|
+
declare function FormatImageFile(props: ImageFileProps): DataImageFile;
|
|
87
|
+
declare function FormatMention(props: MentionProps): DataMention;
|
|
88
|
+
declare function FormatButton(props: ButtonProps): DataButton;
|
|
89
|
+
declare function FormatRow(props: RowProps): ButtonRow;
|
|
90
|
+
declare function FormatButtonGroup(props: ButtonGroupProps): DataButtonGroup;
|
|
91
|
+
declare function FormatMarkdownTitle(props: MarkdownTitleProps): DataMarkdownTitle;
|
|
92
|
+
declare function FormatMarkdownSubtitle(props: MarkdownSubtitleProps): DataMarkdownSubtitle;
|
|
93
|
+
declare function FormatMarkdownText(props: MarkdownTextProps): DataMarkdownText;
|
|
94
|
+
declare function FormatMarkdownBold(props: MarkdownBoldProps): DataMarkdownBold;
|
|
95
|
+
declare function FormatMarkdownCode(props: MarkdownCodeProps): DataMarkdownCode;
|
|
96
|
+
declare function FormatMarkdown(props: MarkdownProps): DataMarkDown;
|
|
97
|
+
declare namespace FormatMarkdown {
|
|
98
|
+
var Title: typeof FormatMarkdownTitle;
|
|
99
|
+
var Subtitle: typeof FormatMarkdownSubtitle;
|
|
100
|
+
var Text: typeof FormatMarkdownText;
|
|
101
|
+
var Bold: typeof FormatMarkdownBold;
|
|
102
|
+
var Code: typeof FormatMarkdownCode;
|
|
103
|
+
}
|
|
104
|
+
declare function FormatCustomComponent(props: CustomProps): any;
|
|
105
|
+
export { FormatComponent as Component, FormatCustomComponent as Custom };
|
package/lib/jsx/index.js
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
function childrenToString(children) {
|
|
2
|
+
if (children === null || children === undefined) {
|
|
3
|
+
return '';
|
|
4
|
+
}
|
|
5
|
+
if (typeof children === 'string') {
|
|
6
|
+
return children;
|
|
7
|
+
}
|
|
8
|
+
if (typeof children === 'number' || typeof children === 'boolean') {
|
|
9
|
+
return String(children);
|
|
10
|
+
}
|
|
11
|
+
if (Array.isArray(children)) {
|
|
12
|
+
return children.map(childrenToString).join('');
|
|
13
|
+
}
|
|
14
|
+
return String(children);
|
|
15
|
+
}
|
|
16
|
+
function flattenChildren(children) {
|
|
17
|
+
if (children === null || children === undefined) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(children)) {
|
|
21
|
+
const result = [];
|
|
22
|
+
for (const child of children) {
|
|
23
|
+
if (Array.isArray(child)) {
|
|
24
|
+
result.push(...flattenChildren(child));
|
|
25
|
+
}
|
|
26
|
+
else if (child !== null && child !== undefined && typeof child === 'object' && 'type' in child) {
|
|
27
|
+
result.push(child);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
if (typeof children === 'object' && children !== null && children !== undefined && 'type' in children) {
|
|
33
|
+
return [children];
|
|
34
|
+
}
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
function collectChildren(children, typeCheck) {
|
|
38
|
+
const flat = flattenChildren(children);
|
|
39
|
+
return flat.filter(c => c.type === typeCheck);
|
|
40
|
+
}
|
|
41
|
+
function extractOptions(props, excludeKeys = []) {
|
|
42
|
+
const exclude = new Set(['children', ...excludeKeys]);
|
|
43
|
+
const options = {};
|
|
44
|
+
let hasKeys = false;
|
|
45
|
+
for (const key of Object.keys(props)) {
|
|
46
|
+
if (!exclude.has(key)) {
|
|
47
|
+
options[key] = props[key];
|
|
48
|
+
hasKeys = true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return hasKeys ? options : undefined;
|
|
52
|
+
}
|
|
53
|
+
function FormatComponent(props) {
|
|
54
|
+
if (props.name !== undefined) {
|
|
55
|
+
const { name, children, ...rest } = props;
|
|
56
|
+
const options = Object.keys(rest).length > 0 ? rest : undefined;
|
|
57
|
+
return {
|
|
58
|
+
type: name,
|
|
59
|
+
value: children !== null && children !== undefined ? childrenToString(children) : undefined,
|
|
60
|
+
options
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return flattenChildren(props.children);
|
|
64
|
+
}
|
|
65
|
+
function FormatText(props) {
|
|
66
|
+
return {
|
|
67
|
+
type: 'Text',
|
|
68
|
+
value: childrenToString(props.children),
|
|
69
|
+
options: extractOptions(props)
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function FormatLink(props) {
|
|
73
|
+
return {
|
|
74
|
+
type: 'Link',
|
|
75
|
+
value: childrenToString(props.children),
|
|
76
|
+
options: extractOptions(props)
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function FormatImage(props) {
|
|
80
|
+
const buf = props.children;
|
|
81
|
+
return {
|
|
82
|
+
type: 'Image',
|
|
83
|
+
value: buf instanceof Buffer ? buf.toString('base64') : ''
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function FormatImageURL(props) {
|
|
87
|
+
return {
|
|
88
|
+
type: 'ImageURL',
|
|
89
|
+
value: childrenToString(props.children)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function FormatImageFile(props) {
|
|
93
|
+
return {
|
|
94
|
+
type: 'ImageFile',
|
|
95
|
+
value: childrenToString(props.children)
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function FormatMention(props) {
|
|
99
|
+
return {
|
|
100
|
+
type: 'Mention',
|
|
101
|
+
value: props.children !== null && props.children !== undefined ? childrenToString(props.children) : undefined,
|
|
102
|
+
options: extractOptions(props)
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function FormatButton(props) {
|
|
106
|
+
const options = {};
|
|
107
|
+
if (props.command !== undefined) {
|
|
108
|
+
options.data = props.command;
|
|
109
|
+
options.type = 'command';
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
if (props.data !== undefined) {
|
|
113
|
+
options.data = props.data;
|
|
114
|
+
}
|
|
115
|
+
if (props.type !== undefined) {
|
|
116
|
+
options.type = props.type;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (props.toolTip !== undefined) {
|
|
120
|
+
options.toolTip = props.toolTip;
|
|
121
|
+
}
|
|
122
|
+
if (props.autoEnter !== undefined) {
|
|
123
|
+
options.autoEnter = props.autoEnter;
|
|
124
|
+
}
|
|
125
|
+
if (props.showList !== undefined) {
|
|
126
|
+
options.showList = props.showList;
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
type: 'Button',
|
|
130
|
+
value: childrenToString(props.children),
|
|
131
|
+
options: Object.keys(options).length > 0 ? options : undefined
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function FormatRow(props) {
|
|
135
|
+
return {
|
|
136
|
+
type: 'BT.row',
|
|
137
|
+
value: collectChildren(props.children, 'Button')
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function FormatButtonGroup(props) {
|
|
141
|
+
return {
|
|
142
|
+
type: 'BT.group',
|
|
143
|
+
value: collectChildren(props.children, 'BT.row')
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function FormatMarkdownTitle(props) {
|
|
147
|
+
return {
|
|
148
|
+
type: 'MD.title',
|
|
149
|
+
value: childrenToString(props.children)
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function FormatMarkdownSubtitle(props) {
|
|
153
|
+
return {
|
|
154
|
+
type: 'MD.subtitle',
|
|
155
|
+
value: childrenToString(props.children)
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function FormatMarkdownText(props) {
|
|
159
|
+
return {
|
|
160
|
+
type: 'MD.text',
|
|
161
|
+
value: childrenToString(props.children)
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function FormatMarkdownBold(props) {
|
|
165
|
+
return {
|
|
166
|
+
type: 'MD.bold',
|
|
167
|
+
value: childrenToString(props.children)
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function FormatMarkdownCode(props) {
|
|
171
|
+
return {
|
|
172
|
+
type: 'MD.code',
|
|
173
|
+
value: childrenToString(props.children),
|
|
174
|
+
options: extractOptions(props)
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
function FormatMarkdown(props) {
|
|
178
|
+
const flat = flattenChildren(props.children);
|
|
179
|
+
const items = flat.filter(c => typeof c.type === 'string' && c.type.startsWith('MD.'));
|
|
180
|
+
return {
|
|
181
|
+
type: 'Markdown',
|
|
182
|
+
value: items
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
FormatMarkdown.Title = FormatMarkdownTitle;
|
|
186
|
+
FormatMarkdown.Subtitle = FormatMarkdownSubtitle;
|
|
187
|
+
FormatMarkdown.Text = FormatMarkdownText;
|
|
188
|
+
FormatMarkdown.Bold = FormatMarkdownBold;
|
|
189
|
+
FormatMarkdown.Code = FormatMarkdownCode;
|
|
190
|
+
function FormatCustomComponent(props) {
|
|
191
|
+
const { name, children, ...rest } = props;
|
|
192
|
+
const options = Object.keys(rest).length > 0 ? rest : undefined;
|
|
193
|
+
return {
|
|
194
|
+
type: name,
|
|
195
|
+
value: children !== null && children !== undefined ? childrenToString(children) : undefined,
|
|
196
|
+
options
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
FormatComponent.Text = FormatText;
|
|
200
|
+
FormatComponent.Link = FormatLink;
|
|
201
|
+
FormatComponent.Image = FormatImage;
|
|
202
|
+
FormatComponent.ImageURL = FormatImageURL;
|
|
203
|
+
FormatComponent.ImageFile = FormatImageFile;
|
|
204
|
+
FormatComponent.Mention = FormatMention;
|
|
205
|
+
FormatComponent.Button = FormatButton;
|
|
206
|
+
FormatComponent.Row = FormatRow;
|
|
207
|
+
FormatComponent.ButtonGroup = FormatButtonGroup;
|
|
208
|
+
FormatComponent.Markdown = FormatMarkdown;
|
|
209
|
+
FormatComponent.Custom = FormatCustomComponent;
|
|
210
|
+
|
|
211
|
+
export { FormatComponent as Component, FormatCustomComponent as Custom };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Fragment, jsx, jsxs } from './jsx-runtime.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type JsxChild = any;
|
|
2
|
+
type JsxProps = Record<string, any>;
|
|
3
|
+
type JsxComponent = (props: JsxProps) => any;
|
|
4
|
+
export declare function jsx(type: string | JsxComponent, props: JsxProps, _key?: string): any;
|
|
5
|
+
export declare function jsxs(type: string | JsxComponent, props: JsxProps, _key?: string): any;
|
|
6
|
+
export declare function Fragment(props: {
|
|
7
|
+
children?: JsxChild;
|
|
8
|
+
}): any[];
|
|
9
|
+
export declare namespace JSX {
|
|
10
|
+
type Element = any;
|
|
11
|
+
interface ElementChildrenAttribute {
|
|
12
|
+
children: object;
|
|
13
|
+
}
|
|
14
|
+
interface IntrinsicElements {
|
|
15
|
+
[elemName: string]: any;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function jsx(type, props, _key) {
|
|
2
|
+
if (typeof type === 'function') {
|
|
3
|
+
return type(props);
|
|
4
|
+
}
|
|
5
|
+
return { type, props };
|
|
6
|
+
}
|
|
7
|
+
function jsxs(type, props, _key) {
|
|
8
|
+
if (typeof type === 'function') {
|
|
9
|
+
return type(props);
|
|
10
|
+
}
|
|
11
|
+
return { type, props };
|
|
12
|
+
}
|
|
13
|
+
function Fragment(props) {
|
|
14
|
+
const { children } = props;
|
|
15
|
+
if (children === null || children === undefined) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
if (Array.isArray(children)) {
|
|
19
|
+
return children;
|
|
20
|
+
}
|
|
21
|
+
return [children];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { Fragment, jsx, jsxs };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { DataButtonGroup, DataButtonTemplate } from './button';
|
|
2
2
|
import { DataArkBigCard, DataArkCard, DataArkList } from './ark';
|
|
3
|
-
import { DataMarkDown, DataMarkdownTemplate } from './markdown';
|
|
3
|
+
import { DataMarkDown, DataMarkdownTemplate, DataCustom } from './markdown';
|
|
4
4
|
import { DataImage, DataImageFile, DataImageURL } from './image';
|
|
5
5
|
import { DataText } from './text';
|
|
6
6
|
import { DataMention } from './mention';
|
|
7
7
|
import { DataLink } from './link';
|
|
8
|
+
import { DataAttachment } from './attachment';
|
|
9
|
+
import { DataAudio } from './audio';
|
|
10
|
+
import { DataVideo } from './video';
|
|
11
|
+
import { DataMarkdownOriginal } from './markdown-raw';
|
|
8
12
|
export * from './text';
|
|
9
13
|
export * from './link';
|
|
10
14
|
export * from './mention';
|
|
@@ -12,5 +16,9 @@ export * from './image';
|
|
|
12
16
|
export * from './button';
|
|
13
17
|
export * from './ark';
|
|
14
18
|
export * from './markdown';
|
|
15
|
-
export
|
|
19
|
+
export * from './markdown-raw';
|
|
20
|
+
export * from './attachment';
|
|
21
|
+
export * from './audio';
|
|
22
|
+
export * from './video';
|
|
23
|
+
export type DataEnums = DataText | DataLink | DataImage | DataImageURL | DataImageFile | DataMention | DataButtonGroup | DataButtonTemplate | DataArkList | DataArkCard | DataArkBigCard | DataMarkDown | DataMarkdownTemplate | DataMarkdownOriginal | DataAttachment | DataAudio | DataVideo | DataCustom;
|
|
16
24
|
export type MessageDataFormat = DataEnums[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -79,7 +79,14 @@ export type DataMarkdownCode = {
|
|
|
79
79
|
language?: string;
|
|
80
80
|
};
|
|
81
81
|
};
|
|
82
|
-
type
|
|
82
|
+
export type DataCustom = {
|
|
83
|
+
type: string;
|
|
84
|
+
value: string;
|
|
85
|
+
options?: {
|
|
86
|
+
[key: string]: any;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
type DataMarkDownBalue = DataMarkdownText | DataMarkdownTitle | DataMarkdownSubtitle | DataMarkdownBold | DataMarkdownItalic | DataMarkdownItalicStar | DataMarkdownStrikethrough | DataMarkdownLink | DataMarkdownImage | DataMarkdownList | DataMarkdownBlockquote | DataMarkdownDivider | DataMarkdownNewline | DataMarkdownCode | DataCustom;
|
|
83
90
|
export type DataMarkDown = {
|
|
84
91
|
type: 'Markdown';
|
|
85
92
|
value: DataMarkDownBalue[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|