mixi2-js 1.2.1 → 1.3.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 +16 -13
- package/dist/client-C90Zd_yq.d.cts +303 -0
- package/dist/client-DPeVTCYr.d.mts +303 -0
- package/dist/helpers/index.cjs +305 -207
- package/dist/helpers/index.d.cts +150 -65
- package/dist/helpers/index.d.mts +207 -0
- package/dist/helpers/index.mjs +304 -0
- package/dist/index.cjs +542 -750
- package/dist/index.d.cts +41 -37
- package/dist/index.d.mts +50 -0
- package/dist/index.mjs +559 -0
- package/dist/types-BrJ83qtL.mjs +92 -0
- package/dist/types-D9t_NdQ0.cjs +175 -0
- package/package.json +43 -51
- package/dist/chunk-4NKIICB5.js +0 -107
- package/dist/client-iXbbRxc-.d.cts +0 -296
- package/dist/client-iXbbRxc-.d.ts +0 -296
- package/dist/helpers/index.d.ts +0 -122
- package/dist/helpers/index.js +0 -186
- package/dist/index.d.ts +0 -46
- package/dist/index.js +0 -680
package/dist/helpers/index.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { L as PostPublishingType, d as EventReason, f as EventType, h as InitiatePostMediaUploadRequest, j as PostMask, l as CreatePostRequest, o as EventHandler, t as Client, u as Event } from "../client-C90Zd_yq.cjs";
|
|
2
2
|
|
|
3
|
+
//#region src/helpers/address.d.ts
|
|
3
4
|
/**
|
|
4
5
|
* アクセストークン取得用のエンドポイント URL です。
|
|
5
6
|
*/
|
|
@@ -12,40 +13,91 @@ declare const apiAddress: string;
|
|
|
12
13
|
* gRPC ストリーミング接続用のサーバーアドレスです。
|
|
13
14
|
*/
|
|
14
15
|
declare const streamAddress: string;
|
|
15
|
-
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/helpers/event-deduplicator.d.ts
|
|
18
|
+
interface EventDeduplicatorOptions {
|
|
19
|
+
/** 記憶する最大イベント数。デフォルト: 1000 */
|
|
20
|
+
maxSize?: number;
|
|
21
|
+
/** イベント ID を記憶する最大時間(ミリ秒)。デフォルト: 300000 (5 分) */
|
|
22
|
+
maxAge?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 重複したイベントを検出してスキップするミドルウェア。
|
|
26
|
+
* Webhook 方式のリトライなどで同じイベントが複数回届いた場合に、
|
|
27
|
+
* 内部ハンドラへの二重処理を防ぐ。
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* const dedup = new EventDeduplicator(innerHandler);
|
|
31
|
+
* const server = new WebhookServer({ handler: dedup, ... });
|
|
32
|
+
*/
|
|
33
|
+
declare class EventDeduplicator implements EventHandler {
|
|
34
|
+
private readonly inner;
|
|
35
|
+
private readonly maxSize;
|
|
36
|
+
private readonly maxAge;
|
|
37
|
+
private readonly seen;
|
|
38
|
+
constructor(handler: EventHandler, options?: EventDeduplicatorOptions);
|
|
39
|
+
handle(event: Event): Promise<void>;
|
|
40
|
+
private evict;
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/helpers/event-logger.d.ts
|
|
44
|
+
interface EventLoggerOptions {
|
|
45
|
+
/** ログ出力関数。デフォルト: console.log */
|
|
46
|
+
logger?: (message: string) => void;
|
|
47
|
+
/** イベントの詳細(eventId・eventType)をログに含めるか。デフォルト: true */
|
|
48
|
+
verbose?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 受信したイベントをログ出力するデバッグ用ミドルウェア。
|
|
52
|
+
* 内部ハンドラへの処理はそのまま委譲する。
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* const logger = new EventLogger(router);
|
|
56
|
+
* await watcher.watch(logger);
|
|
57
|
+
*/
|
|
58
|
+
declare class EventLogger implements EventHandler {
|
|
59
|
+
private readonly inner;
|
|
60
|
+
private readonly logger;
|
|
61
|
+
private readonly verbose;
|
|
62
|
+
constructor(handler: EventHandler, options?: EventLoggerOptions);
|
|
63
|
+
handle(event: Event): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/helpers/event-router.d.ts
|
|
16
67
|
type EventListener = (event: Event) => void | Promise<void>;
|
|
17
68
|
/**
|
|
18
69
|
* イベントタイプ別にハンドラを登録できる EventHandler 実装。
|
|
19
70
|
* StreamWatcher.watch() や WebhookServer に直接渡して使用できる。
|
|
20
71
|
*/
|
|
21
72
|
declare class EventRouter implements EventHandler {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
73
|
+
private readonly listeners;
|
|
74
|
+
/**
|
|
75
|
+
* 指定したイベントタイプのハンドラを登録する。
|
|
76
|
+
* 同じイベントタイプに複数のハンドラを登録可能(登録順に実行)。
|
|
77
|
+
*/
|
|
78
|
+
on(eventType: EventType, listener: EventListener): this;
|
|
79
|
+
/**
|
|
80
|
+
* 指定したイベントタイプのハンドラを削除する。
|
|
81
|
+
* listener を省略した場合、そのイベントタイプのすべてのハンドラを削除する。
|
|
82
|
+
*/
|
|
83
|
+
off(eventType: EventType, listener?: EventListener): this;
|
|
84
|
+
/**
|
|
85
|
+
* EventHandler.handle() の実装。
|
|
86
|
+
* 登録されたリスナーに対してイベントをルーティングする。
|
|
87
|
+
*/
|
|
88
|
+
handle(event: Event): Promise<void>;
|
|
38
89
|
}
|
|
39
|
-
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/helpers/media-uploader.d.ts
|
|
40
92
|
interface MediaUploaderOptions {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
93
|
+
/** ポーリング間隔(ミリ秒)。デフォルト: 1000 */
|
|
94
|
+
pollInterval?: number;
|
|
95
|
+
/** タイムアウト(ミリ秒)。デフォルト: 60000 */
|
|
96
|
+
timeout?: number;
|
|
45
97
|
}
|
|
46
98
|
interface UploadedMedia {
|
|
47
|
-
|
|
48
|
-
|
|
99
|
+
mediaId: string;
|
|
100
|
+
uploadUrl: string;
|
|
49
101
|
}
|
|
50
102
|
/**
|
|
51
103
|
* メディアアップロードの開始 → データ送信 → 処理完了待機を簡略化するヘルパー。
|
|
@@ -54,21 +106,22 @@ interface UploadedMedia {
|
|
|
54
106
|
* このクラスで waitForReady() を呼ぶだけで完了まで待機できる。
|
|
55
107
|
*/
|
|
56
108
|
declare class MediaUploader {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
109
|
+
private readonly client;
|
|
110
|
+
private readonly pollInterval;
|
|
111
|
+
private readonly timeout;
|
|
112
|
+
constructor(client: Client, options?: MediaUploaderOptions);
|
|
113
|
+
/**
|
|
114
|
+
* メディアアップロードを開始し、uploadUrl と mediaId を返す。
|
|
115
|
+
*/
|
|
116
|
+
initiate(request: InitiatePostMediaUploadRequest): Promise<UploadedMedia>;
|
|
117
|
+
/**
|
|
118
|
+
* メディアの処理が完了するまでポーリングして待機する。
|
|
119
|
+
* 完了時に mediaId を返す。失敗時はエラーをスローする。
|
|
120
|
+
*/
|
|
121
|
+
waitForReady(mediaId: string): Promise<string>;
|
|
70
122
|
}
|
|
71
|
-
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region src/helpers/post-builder.d.ts
|
|
72
125
|
/**
|
|
73
126
|
* ポスト作成リクエストをメソッドチェーンで組み立てるビルダー。
|
|
74
127
|
*
|
|
@@ -80,26 +133,27 @@ declare class MediaUploader {
|
|
|
80
133
|
* .build();
|
|
81
134
|
*/
|
|
82
135
|
declare class PostBuilder {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
136
|
+
private readonly request;
|
|
137
|
+
constructor(text: string);
|
|
138
|
+
/** 返信先ポスト ID を設定する。 */
|
|
139
|
+
reply(postId: string): this;
|
|
140
|
+
/** 引用対象ポスト ID を設定する。 */
|
|
141
|
+
quote(postId: string): this;
|
|
142
|
+
/** 添付メディア ID を設定する(最大 4 件)。 */
|
|
143
|
+
media(mediaIdList: string[]): this;
|
|
144
|
+
/** センシティブマスクを設定する。 */
|
|
145
|
+
sensitive(caption?: string): this;
|
|
146
|
+
/** ネタバレマスクを設定する。 */
|
|
147
|
+
spoiler(caption?: string): this;
|
|
148
|
+
/** カスタムマスクを設定する。 */
|
|
149
|
+
mask(postMask: PostMask): this;
|
|
150
|
+
/** 配信設定を設定する。 */
|
|
151
|
+
publishing(type: PostPublishingType): this;
|
|
152
|
+
/** CreatePostRequest オブジェクトを構築する。 */
|
|
153
|
+
build(): CreatePostRequest;
|
|
101
154
|
}
|
|
102
|
-
|
|
155
|
+
//#endregion
|
|
156
|
+
//#region src/helpers/reason-filter.d.ts
|
|
103
157
|
/**
|
|
104
158
|
* EventReason に基づいてイベントをフィルタリングするミドルウェア。
|
|
105
159
|
* 指定した理由に一致するイベントのみを内部のハンドラに渡す。
|
|
@@ -112,11 +166,42 @@ declare class PostBuilder {
|
|
|
112
166
|
* await watcher.watch(filter);
|
|
113
167
|
*/
|
|
114
168
|
declare class ReasonFilter implements EventHandler {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
169
|
+
private readonly inner;
|
|
170
|
+
private readonly allowedReasons;
|
|
171
|
+
constructor(handler: EventHandler, reasons: EventReason[]);
|
|
172
|
+
handle(event: Event): Promise<void>;
|
|
173
|
+
private getReasons;
|
|
120
174
|
}
|
|
121
|
-
|
|
122
|
-
|
|
175
|
+
//#endregion
|
|
176
|
+
//#region src/helpers/text-splitter.d.ts
|
|
177
|
+
/** mixi2 の 1 ポストあたりの最大文字数 */
|
|
178
|
+
declare const maxPostLength = 149;
|
|
179
|
+
interface TextSplitterOptions {
|
|
180
|
+
/** 1 ポストあたりの最大文字数。デフォルト: 149 */
|
|
181
|
+
maxLength?: number;
|
|
182
|
+
/** 単語境界(スペース・句読点)で分割を試みるか。デフォルト: true */
|
|
183
|
+
splitOnWord?: boolean;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 長いテキストを mixi2 の文字数制限内に収まる複数チャンクに分割するヘルパー。
|
|
187
|
+
* デフォルトは 149 文字制限(mixi2 のポスト本文上限)に準拠。
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* const splitter = new TextSplitter();
|
|
191
|
+
* const chunks = splitter.split('長いテキスト...');
|
|
192
|
+
* for (const chunk of chunks) {
|
|
193
|
+
* await client.createPost({ text: chunk });
|
|
194
|
+
* }
|
|
195
|
+
*/
|
|
196
|
+
declare class TextSplitter {
|
|
197
|
+
private readonly maxLength;
|
|
198
|
+
private readonly splitOnWord;
|
|
199
|
+
constructor(options?: TextSplitterOptions);
|
|
200
|
+
/**
|
|
201
|
+
* テキストを maxLength 以内の複数チャンクに分割して返す。
|
|
202
|
+
* テキストが maxLength 以内の場合は 1 要素の配列を返す。
|
|
203
|
+
*/
|
|
204
|
+
split(text: string): string[];
|
|
205
|
+
}
|
|
206
|
+
//#endregion
|
|
207
|
+
export { EventDeduplicator, type EventDeduplicatorOptions, EventLogger, type EventLoggerOptions, EventRouter, MediaUploader, type MediaUploaderOptions, PostBuilder, ReasonFilter, TextSplitter, type TextSplitterOptions, type UploadedMedia, apiAddress, maxPostLength, streamAddress, tokenUrl };
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { L as PostPublishingType, d as EventReason, f as EventType, h as InitiatePostMediaUploadRequest, j as PostMask, l as CreatePostRequest, o as EventHandler, t as Client, u as Event } from "../client-DPeVTCYr.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/helpers/address.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* アクセストークン取得用のエンドポイント URL です。
|
|
6
|
+
*/
|
|
7
|
+
declare const tokenUrl: string;
|
|
8
|
+
/**
|
|
9
|
+
* API サーバーアドレスです。
|
|
10
|
+
*/
|
|
11
|
+
declare const apiAddress: string;
|
|
12
|
+
/**
|
|
13
|
+
* gRPC ストリーミング接続用のサーバーアドレスです。
|
|
14
|
+
*/
|
|
15
|
+
declare const streamAddress: string;
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/helpers/event-deduplicator.d.ts
|
|
18
|
+
interface EventDeduplicatorOptions {
|
|
19
|
+
/** 記憶する最大イベント数。デフォルト: 1000 */
|
|
20
|
+
maxSize?: number;
|
|
21
|
+
/** イベント ID を記憶する最大時間(ミリ秒)。デフォルト: 300000 (5 分) */
|
|
22
|
+
maxAge?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 重複したイベントを検出してスキップするミドルウェア。
|
|
26
|
+
* Webhook 方式のリトライなどで同じイベントが複数回届いた場合に、
|
|
27
|
+
* 内部ハンドラへの二重処理を防ぐ。
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* const dedup = new EventDeduplicator(innerHandler);
|
|
31
|
+
* const server = new WebhookServer({ handler: dedup, ... });
|
|
32
|
+
*/
|
|
33
|
+
declare class EventDeduplicator implements EventHandler {
|
|
34
|
+
private readonly inner;
|
|
35
|
+
private readonly maxSize;
|
|
36
|
+
private readonly maxAge;
|
|
37
|
+
private readonly seen;
|
|
38
|
+
constructor(handler: EventHandler, options?: EventDeduplicatorOptions);
|
|
39
|
+
handle(event: Event): Promise<void>;
|
|
40
|
+
private evict;
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/helpers/event-logger.d.ts
|
|
44
|
+
interface EventLoggerOptions {
|
|
45
|
+
/** ログ出力関数。デフォルト: console.log */
|
|
46
|
+
logger?: (message: string) => void;
|
|
47
|
+
/** イベントの詳細(eventId・eventType)をログに含めるか。デフォルト: true */
|
|
48
|
+
verbose?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 受信したイベントをログ出力するデバッグ用ミドルウェア。
|
|
52
|
+
* 内部ハンドラへの処理はそのまま委譲する。
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* const logger = new EventLogger(router);
|
|
56
|
+
* await watcher.watch(logger);
|
|
57
|
+
*/
|
|
58
|
+
declare class EventLogger implements EventHandler {
|
|
59
|
+
private readonly inner;
|
|
60
|
+
private readonly logger;
|
|
61
|
+
private readonly verbose;
|
|
62
|
+
constructor(handler: EventHandler, options?: EventLoggerOptions);
|
|
63
|
+
handle(event: Event): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/helpers/event-router.d.ts
|
|
67
|
+
type EventListener = (event: Event) => void | Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* イベントタイプ別にハンドラを登録できる EventHandler 実装。
|
|
70
|
+
* StreamWatcher.watch() や WebhookServer に直接渡して使用できる。
|
|
71
|
+
*/
|
|
72
|
+
declare class EventRouter implements EventHandler {
|
|
73
|
+
private readonly listeners;
|
|
74
|
+
/**
|
|
75
|
+
* 指定したイベントタイプのハンドラを登録する。
|
|
76
|
+
* 同じイベントタイプに複数のハンドラを登録可能(登録順に実行)。
|
|
77
|
+
*/
|
|
78
|
+
on(eventType: EventType, listener: EventListener): this;
|
|
79
|
+
/**
|
|
80
|
+
* 指定したイベントタイプのハンドラを削除する。
|
|
81
|
+
* listener を省略した場合、そのイベントタイプのすべてのハンドラを削除する。
|
|
82
|
+
*/
|
|
83
|
+
off(eventType: EventType, listener?: EventListener): this;
|
|
84
|
+
/**
|
|
85
|
+
* EventHandler.handle() の実装。
|
|
86
|
+
* 登録されたリスナーに対してイベントをルーティングする。
|
|
87
|
+
*/
|
|
88
|
+
handle(event: Event): Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/helpers/media-uploader.d.ts
|
|
92
|
+
interface MediaUploaderOptions {
|
|
93
|
+
/** ポーリング間隔(ミリ秒)。デフォルト: 1000 */
|
|
94
|
+
pollInterval?: number;
|
|
95
|
+
/** タイムアウト(ミリ秒)。デフォルト: 60000 */
|
|
96
|
+
timeout?: number;
|
|
97
|
+
}
|
|
98
|
+
interface UploadedMedia {
|
|
99
|
+
mediaId: string;
|
|
100
|
+
uploadUrl: string;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* メディアアップロードの開始 → データ送信 → 処理完了待機を簡略化するヘルパー。
|
|
104
|
+
*
|
|
105
|
+
* 通常は initiatePostMediaUpload → HTTP POST → getPostMediaStatus のポーリングが必要だが、
|
|
106
|
+
* このクラスで waitForReady() を呼ぶだけで完了まで待機できる。
|
|
107
|
+
*/
|
|
108
|
+
declare class MediaUploader {
|
|
109
|
+
private readonly client;
|
|
110
|
+
private readonly pollInterval;
|
|
111
|
+
private readonly timeout;
|
|
112
|
+
constructor(client: Client, options?: MediaUploaderOptions);
|
|
113
|
+
/**
|
|
114
|
+
* メディアアップロードを開始し、uploadUrl と mediaId を返す。
|
|
115
|
+
*/
|
|
116
|
+
initiate(request: InitiatePostMediaUploadRequest): Promise<UploadedMedia>;
|
|
117
|
+
/**
|
|
118
|
+
* メディアの処理が完了するまでポーリングして待機する。
|
|
119
|
+
* 完了時に mediaId を返す。失敗時はエラーをスローする。
|
|
120
|
+
*/
|
|
121
|
+
waitForReady(mediaId: string): Promise<string>;
|
|
122
|
+
}
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region src/helpers/post-builder.d.ts
|
|
125
|
+
/**
|
|
126
|
+
* ポスト作成リクエストをメソッドチェーンで組み立てるビルダー。
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* const request = new PostBuilder('Hello mixi2!')
|
|
130
|
+
* .reply('post-id')
|
|
131
|
+
* .media(['media-id-1'])
|
|
132
|
+
* .sensitive()
|
|
133
|
+
* .build();
|
|
134
|
+
*/
|
|
135
|
+
declare class PostBuilder {
|
|
136
|
+
private readonly request;
|
|
137
|
+
constructor(text: string);
|
|
138
|
+
/** 返信先ポスト ID を設定する。 */
|
|
139
|
+
reply(postId: string): this;
|
|
140
|
+
/** 引用対象ポスト ID を設定する。 */
|
|
141
|
+
quote(postId: string): this;
|
|
142
|
+
/** 添付メディア ID を設定する(最大 4 件)。 */
|
|
143
|
+
media(mediaIdList: string[]): this;
|
|
144
|
+
/** センシティブマスクを設定する。 */
|
|
145
|
+
sensitive(caption?: string): this;
|
|
146
|
+
/** ネタバレマスクを設定する。 */
|
|
147
|
+
spoiler(caption?: string): this;
|
|
148
|
+
/** カスタムマスクを設定する。 */
|
|
149
|
+
mask(postMask: PostMask): this;
|
|
150
|
+
/** 配信設定を設定する。 */
|
|
151
|
+
publishing(type: PostPublishingType): this;
|
|
152
|
+
/** CreatePostRequest オブジェクトを構築する。 */
|
|
153
|
+
build(): CreatePostRequest;
|
|
154
|
+
}
|
|
155
|
+
//#endregion
|
|
156
|
+
//#region src/helpers/reason-filter.d.ts
|
|
157
|
+
/**
|
|
158
|
+
* EventReason に基づいてイベントをフィルタリングするミドルウェア。
|
|
159
|
+
* 指定した理由に一致するイベントのみを内部のハンドラに渡す。
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* const filter = new ReasonFilter(innerHandler, [
|
|
163
|
+
* EventReason.POST_REPLY,
|
|
164
|
+
* EventReason.POST_MENTIONED,
|
|
165
|
+
* ]);
|
|
166
|
+
* await watcher.watch(filter);
|
|
167
|
+
*/
|
|
168
|
+
declare class ReasonFilter implements EventHandler {
|
|
169
|
+
private readonly inner;
|
|
170
|
+
private readonly allowedReasons;
|
|
171
|
+
constructor(handler: EventHandler, reasons: EventReason[]);
|
|
172
|
+
handle(event: Event): Promise<void>;
|
|
173
|
+
private getReasons;
|
|
174
|
+
}
|
|
175
|
+
//#endregion
|
|
176
|
+
//#region src/helpers/text-splitter.d.ts
|
|
177
|
+
/** mixi2 の 1 ポストあたりの最大文字数 */
|
|
178
|
+
declare const maxPostLength = 149;
|
|
179
|
+
interface TextSplitterOptions {
|
|
180
|
+
/** 1 ポストあたりの最大文字数。デフォルト: 149 */
|
|
181
|
+
maxLength?: number;
|
|
182
|
+
/** 単語境界(スペース・句読点)で分割を試みるか。デフォルト: true */
|
|
183
|
+
splitOnWord?: boolean;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 長いテキストを mixi2 の文字数制限内に収まる複数チャンクに分割するヘルパー。
|
|
187
|
+
* デフォルトは 149 文字制限(mixi2 のポスト本文上限)に準拠。
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* const splitter = new TextSplitter();
|
|
191
|
+
* const chunks = splitter.split('長いテキスト...');
|
|
192
|
+
* for (const chunk of chunks) {
|
|
193
|
+
* await client.createPost({ text: chunk });
|
|
194
|
+
* }
|
|
195
|
+
*/
|
|
196
|
+
declare class TextSplitter {
|
|
197
|
+
private readonly maxLength;
|
|
198
|
+
private readonly splitOnWord;
|
|
199
|
+
constructor(options?: TextSplitterOptions);
|
|
200
|
+
/**
|
|
201
|
+
* テキストを maxLength 以内の複数チャンクに分割して返す。
|
|
202
|
+
* テキストが maxLength 以内の場合は 1 要素の配列を返す。
|
|
203
|
+
*/
|
|
204
|
+
split(text: string): string[];
|
|
205
|
+
}
|
|
206
|
+
//#endregion
|
|
207
|
+
export { EventDeduplicator, type EventDeduplicatorOptions, EventLogger, type EventLoggerOptions, EventRouter, MediaUploader, type MediaUploaderOptions, PostBuilder, ReasonFilter, TextSplitter, type TextSplitterOptions, type UploadedMedia, apiAddress, maxPostLength, streamAddress, tokenUrl };
|