@ukwhatn/wikidot 1.0.10 → 4.0.3

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.
Files changed (93) hide show
  1. package/README.md +242 -78
  2. package/dist/errors.cjs +114 -0
  3. package/dist/errors.d.cts +94 -0
  4. package/dist/errors.d.ts +94 -0
  5. package/dist/errors.js +81 -0
  6. package/dist/index.cjs +4615 -0
  7. package/dist/index.d.cts +2158 -0
  8. package/dist/index.d.ts +2158 -1
  9. package/dist/index.js +4582 -6
  10. package/package.json +64 -40
  11. package/.eslintrc.js +0 -23
  12. package/.github/dependabot.yml +0 -12
  13. package/.prettierrc +0 -6
  14. package/Makefile +0 -24
  15. package/dist/common/exceptions.d.ts +0 -95
  16. package/dist/common/exceptions.js +0 -146
  17. package/dist/common/exceptions.js.map +0 -1
  18. package/dist/common/index.d.ts +0 -1
  19. package/dist/common/index.js +0 -6
  20. package/dist/common/index.js.map +0 -1
  21. package/dist/common/logger.d.ts +0 -2
  22. package/dist/common/logger.js +0 -19
  23. package/dist/common/logger.js.map +0 -1
  24. package/dist/connector/ajax.d.ts +0 -142
  25. package/dist/connector/ajax.js +0 -260
  26. package/dist/connector/ajax.js.map +0 -1
  27. package/dist/connector/api.d.ts +0 -11
  28. package/dist/connector/api.js +0 -17
  29. package/dist/connector/api.js.map +0 -1
  30. package/dist/connector/index.d.ts +0 -0
  31. package/dist/connector/index.js +0 -2
  32. package/dist/connector/index.js.map +0 -1
  33. package/dist/index.js.map +0 -1
  34. package/dist/module/auth.d.ts +0 -8
  35. package/dist/module/auth.js +0 -80
  36. package/dist/module/auth.js.map +0 -1
  37. package/dist/module/client.d.ts +0 -39
  38. package/dist/module/client.js +0 -96
  39. package/dist/module/client.js.map +0 -1
  40. package/dist/module/index.d.ts +0 -0
  41. package/dist/module/index.js +0 -2
  42. package/dist/module/index.js.map +0 -1
  43. package/dist/module/page.d.ts +0 -102
  44. package/dist/module/page.js +0 -402
  45. package/dist/module/page.js.map +0 -1
  46. package/dist/module/pageRevision.d.ts +0 -29
  47. package/dist/module/pageRevision.js +0 -114
  48. package/dist/module/pageRevision.js.map +0 -1
  49. package/dist/module/pageSource.d.ts +0 -7
  50. package/dist/module/pageSource.js +0 -11
  51. package/dist/module/pageSource.js.map +0 -1
  52. package/dist/module/pageVote.d.ts +0 -14
  53. package/dist/module/pageVote.js +0 -20
  54. package/dist/module/pageVote.js.map +0 -1
  55. package/dist/module/privateMessage.d.ts +0 -29
  56. package/dist/module/privateMessage.js +0 -132
  57. package/dist/module/privateMessage.js.map +0 -1
  58. package/dist/module/site.d.ts +0 -32
  59. package/dist/module/site.js +0 -117
  60. package/dist/module/site.js.map +0 -1
  61. package/dist/module/siteApplication.d.ts +0 -14
  62. package/dist/module/siteApplication.js +0 -100
  63. package/dist/module/siteApplication.js.map +0 -1
  64. package/dist/module/user.d.ts +0 -56
  65. package/dist/module/user.js +0 -115
  66. package/dist/module/user.js.map +0 -1
  67. package/dist/util/index.d.ts +0 -3
  68. package/dist/util/index.js +0 -10
  69. package/dist/util/index.js.map +0 -1
  70. package/dist/util/parser/index.d.ts +0 -1
  71. package/dist/util/parser/index.js +0 -18
  72. package/dist/util/parser/index.js.map +0 -1
  73. package/dist/util/parser/odate.d.ts +0 -12
  74. package/dist/util/parser/odate.js +0 -25
  75. package/dist/util/parser/odate.js.map +0 -1
  76. package/dist/util/parser/user.d.ts +0 -16
  77. package/dist/util/parser/user.js +0 -36
  78. package/dist/util/parser/user.js.map +0 -1
  79. package/dist/util/quickModule.d.ts +0 -96
  80. package/dist/util/quickModule.js +0 -137
  81. package/dist/util/quickModule.js.map +0 -1
  82. package/dist/util/requestUtil.d.ts +0 -26
  83. package/dist/util/requestUtil.js +0 -69
  84. package/dist/util/requestUtil.js.map +0 -1
  85. package/dist/util/stringUtil.d.ts +0 -21
  86. package/dist/util/stringUtil.js +0 -64
  87. package/dist/util/stringUtil.js.map +0 -1
  88. package/dist/util/table/charTable.d.ts +0 -3
  89. package/dist/util/table/charTable.js +0 -472
  90. package/dist/util/table/charTable.js.map +0 -1
  91. package/dist/util/table/index.d.ts +0 -1
  92. package/dist/util/table/index.js +0 -18
  93. package/dist/util/table/index.js.map +0 -1
package/README.md CHANGED
@@ -1,85 +1,249 @@
1
- # wikidot-ts - A TypeScript library for making requests to the Wikidot sites.
1
+ # wikidot-ts
2
+
3
+ TypeScriptでWikidotサイトと対話するための非同期ユーティリティライブラリ。
4
+
5
+ ## 概要
6
+
7
+ wikidot-tsは、Wikidot APIを操作するためのTypeScriptライブラリです。ページの取得・編集、フォーラム操作、プライベートメッセージ、ユーザー情報の取得など、Wikidotの主要機能をサポートしています。
8
+
9
+ ## 特徴
10
+
11
+ - 型安全なAPI(TypeScript完全対応)
12
+ - Result型によるエラーハンドリング(neverthrow使用)
13
+ - 非同期処理の完全サポート
14
+ - ページ、フォーラム、プライベートメッセージなど主要機能をカバー
15
+ - wikidot.pyとの高い互換性
16
+
17
+ ## インストール
18
+
19
+ ```bash
20
+ bun add @ukwhatn/wikidot
21
+ ```
22
+
23
+ または
2
24
 
3
- ## Installation
4
25
  ```bash
5
26
  npm install @ukwhatn/wikidot
6
27
  ```
7
28
 
8
- ## Usage
9
- > [!NOTE]
10
- > You can use this library without logging in, but you can only use the features that do not require logging in.
11
- ```ts
12
- import {Client} from "@ukwhatn/wikidot";
13
-
14
- // Create a new Client class and logging in with the credentials of your wikidot account
15
- // If you don't want to log in:
16
- // const client = await Client.init();
17
- const client = await Client.init('input-your-name', 'input-your-password');
18
-
19
- // ------
20
- // user features
21
- // ------
22
- // Get the user object of the user
23
- const user = await client.user.get('input-a-username');
24
- // Bulk execution by asynchronous request
25
- const users = await client.user.getBulk(['input-a-username', 'input-another-username']);
26
-
27
- // ------
28
- // site features
29
- // ------
30
- // Get the site object of the SCP Foundation
31
- const site = await client.site.get('scp-wiki');
32
-
33
- // invite a user to the site
34
- await site.inviteUser(user)
35
-
36
- // Get all unprocessed applications for the site
37
- const applications = await site.getApplications()
38
-
39
- // process an application
40
- for (const application of applications) {
41
- application.accept()
42
- // or
43
- application.reject()
29
+ ## 基本的な使い方
30
+
31
+ このライブラリは`neverthrow`のResult型を使用します。すべての非同期メソッドは`WikidotResultAsync<T>`を返し、`isOk()`で成功を確認後、`.value`で値を取得します。
32
+
33
+ ### クライアントの作成
34
+
35
+ ```typescript
36
+ import { Client } from '@ukwhatn/wikidot';
37
+
38
+ // ログインなしでアクセス(公開情報のみ)
39
+ const clientResult = await Client.create();
40
+ if (!clientResult.isOk()) {
41
+ throw new Error('クライアントの作成に失敗しました');
42
+ }
43
+ const client = clientResult.value;
44
+
45
+ // ログインしてアクセス
46
+ const authClientResult = await Client.create({
47
+ username: 'your_username',
48
+ password: 'your_password',
49
+ });
50
+ if (!authClientResult.isOk()) {
51
+ throw new Error('ログインに失敗しました');
52
+ }
53
+ const authClient = authClientResult.value;
54
+ ```
55
+
56
+ ### サイトの取得
57
+
58
+ ```typescript
59
+ // サイトを取得
60
+ const siteResult = await client.site.get('scp-jp');
61
+ if (!siteResult.isOk()) {
62
+ throw new Error('サイトの取得に失敗しました');
44
63
  }
64
+ const site = siteResult.value;
65
+ console.log(`サイト: ${site.title}`);
66
+ ```
67
+
68
+ ### ページの操作
69
+
70
+ ```typescript
71
+ // ページを検索
72
+ const pagesResult = await site.pages.search({ category: 'scp', tags: ['safe'] });
73
+ if (!pagesResult.isOk()) {
74
+ throw new Error('ページの検索に失敗しました');
75
+ }
76
+ for (const page of pagesResult.value) {
77
+ console.log(`${page.fullname}: ${page.title}`);
78
+ }
79
+
80
+ // 単一ページを取得
81
+ const pageResult = await site.page.get('scp-001');
82
+ if (!pageResult.isOk()) {
83
+ throw new Error('ページの取得に失敗しました');
84
+ }
85
+ const page = pageResult.value;
86
+ console.log(`タイトル: ${page.title}`);
87
+ console.log(`レーティング: ${page.rating}`);
88
+ ```
89
+
90
+ ### フォーラムの操作
91
+
92
+ ```typescript
93
+ // フォーラムカテゴリを取得
94
+ const categoriesResult = await site.forum.getCategories();
95
+ if (!categoriesResult.isOk()) {
96
+ throw new Error('フォーラムカテゴリの取得に失敗しました');
97
+ }
98
+ for (const category of categoriesResult.value) {
99
+ console.log(`カテゴリ: ${category.title}`);
100
+ }
101
+
102
+ // スレッドに返信(要ログイン)
103
+ const threadResult = await site.forum.getThread(12345);
104
+ if (!threadResult.isOk()) {
105
+ throw new Error('スレッドの取得に失敗しました');
106
+ }
107
+ const thread = threadResult.value;
108
+ await thread.reply('返信内容', 'Re: タイトル');
109
+ ```
110
+
111
+ ### プライベートメッセージ(要ログイン)
112
+
113
+ ```typescript
114
+ // 受信箱を取得
115
+ const inboxResult = await client.privateMessage.inbox();
116
+ if (!inboxResult.isOk()) {
117
+ throw new Error('受信箱の取得に失敗しました');
118
+ }
119
+ for (const message of inboxResult.value) {
120
+ console.log(`From: ${message.sender.name}, Subject: ${message.subject}`);
121
+ }
122
+
123
+ // メッセージを送信
124
+ await client.privateMessage.send(recipientUser, '件名', '本文');
125
+
126
+ // メッセージを検索
127
+ const searchResult = await client.privateMessage.search('検索クエリ', 'all');
128
+ ```
129
+
130
+ ## エラーハンドリング
131
+
132
+ wikidot-tsは`neverthrow`ライブラリを使用したResult型でエラーを処理します。
133
+
134
+ ```typescript
135
+ const result = await site.page.get('non-existent-page');
136
+
137
+ if (result.isOk()) {
138
+ const page = result.value;
139
+ // 成功時の処理
140
+ } else {
141
+ const error = result.error;
142
+ if (error instanceof NotFoundException) {
143
+ console.log('ページが見つかりません');
144
+ } else if (error instanceof ForbiddenError) {
145
+ console.log('アクセス権限がありません');
146
+ }
147
+ }
148
+ ```
149
+
150
+ ## 主要なエラー型
151
+
152
+ | エラー | 説明 |
153
+ |--------|------|
154
+ | `LoginRequiredError` | ログインが必要な操作 |
155
+ | `NotFoundException` | リソースが見つからない |
156
+ | `ForbiddenError` | アクセス権限がない |
157
+ | `TargetExistsError` | リソースが既に存在する |
158
+ | `WikidotStatusError` | Wikidot APIエラー |
159
+
160
+ ## wikidot.pyとの差異
161
+
162
+ wikidot-tsはwikidot.pyからの移植ですが、TypeScriptの慣習に合わせていくつかの違いがあります。
163
+
164
+ ### プロパティ → メソッド変換
165
+
166
+ Pythonの`@property`デコレータを使用したプロパティは、TypeScriptではgetterメソッドとして実装されています。
167
+
168
+ | Python (wikidot.py) | TypeScript (wikidot-ts) |
169
+ |---------------------|------------------------|
170
+ | `site.base_url` | `site.getBaseUrl()` |
171
+ | `page.url` | `page.getUrl()` |
172
+ | `user.avatar_url` | `user.avatarUrl` (読み取り専用プロパティ) |
173
+
174
+ ### 命名規則
175
+
176
+ - スネークケース → キャメルケース
177
+ - `page.fullname` (変更なし)
178
+ - `page.children_count` → `page.childrenCount`
179
+ - `page.created_by` → `page.createdBy`
180
+
181
+ ### エラーハンドリング
182
+
183
+ - Python: 例外をスロー
184
+ - TypeScript: `Result`型を返却(`neverthrow`使用)
185
+
186
+ ```python
187
+ # Python
188
+ try:
189
+ page = await site.get_page("scp-001")
190
+ except NotFoundException:
191
+ print("Page not found")
192
+ ```
193
+
194
+ ```typescript
195
+ // TypeScript
196
+ const result = await site.page.get("scp-001");
197
+ if (result.isErr()) {
198
+ if (result.error instanceof NotFoundException) {
199
+ console.log("Page not found");
200
+ }
201
+ }
202
+ ```
203
+
204
+ ### オプション引数
205
+
206
+ 一部のメソッドでは、Python版と同様のオプション引数をサポートしています。
207
+
208
+ ```typescript
209
+ // raiseWhenNotFound オプション
210
+ const user = await client.user.get("username", { raiseWhenNotFound: true });
211
+
212
+ // returnExceptions オプション(AMCClient)
213
+ const results = await client.amcClient.requestWithOptions(bodies, { returnExceptions: true });
214
+ ```
215
+
216
+ ## 開発
217
+
218
+ ### セットアップ
219
+
220
+ ```bash
221
+ bun install
222
+ ```
223
+
224
+ ### コマンド
225
+
226
+ ```bash
227
+ # 型チェック
228
+ bun run typecheck
229
+
230
+ # Lint
231
+ bun run lint
232
+
233
+ # フォーマット
234
+ bun run format
235
+
236
+ # テスト
237
+ bun test
238
+
239
+ # ビルド
240
+ bun run build
241
+ ```
242
+
243
+ ## ライセンス
244
+
245
+ MIT
246
+
247
+ ## 関連プロジェクト
45
248
 
46
- // ------
47
- // page features
48
- // ------
49
- // Search pages by some criteria
50
- // NOTE: The search criteria are the same as in the ListPages module
51
- pages = await site.pages.search({
52
- category: "_default",
53
- tags: ["tag1", "tag2"], // You can also use the "tag1 -tag2" syntax
54
- order: "created_at desc desc",
55
- limit: 10,
56
- })
57
-
58
- // Get the page object of the SCP-001
59
- const page = await site.page.get('scp-001')
60
-
61
- // destroy a page
62
- await page.destroy()
63
-
64
- // ------
65
- // private message features
66
- // ------
67
- // Get messages in your inbox
68
- const receivedMessages = await client.privateMessage.getInbox()
69
-
70
- // Get messages in your sent box
71
- const sentMessages = await client.privateMessage.getSentbox()
72
-
73
- // Get message by id
74
- // NOTE: You can only get the message that you have received or sent
75
- message = client.privateMessage.getMessage(123456)
76
- // Bulk execution by asynchronous request
77
- messages = client.privateMessage.getMessages([123456, 123457])
78
-
79
- // Send a message to a user
80
- await client.privateMessage.send(
81
- recipient = user,
82
- subject = 'Hello',
83
- body = 'Hello, world!'
84
- )
85
- ```
249
+ - [wikidot.py](https://github.com/ukwhatn/wikidot.py) - Python版のWikidotライブラリ
@@ -0,0 +1,114 @@
1
+ var import_node_module = require("node:module");
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
7
+ var __toCommonJS = (from) => {
8
+ var entry = __moduleCache.get(from), desc;
9
+ if (entry)
10
+ return entry;
11
+ entry = __defProp({}, "__esModule", { value: true });
12
+ if (from && typeof from === "object" || typeof from === "function")
13
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ }));
17
+ __moduleCache.set(from, entry);
18
+ return entry;
19
+ };
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, {
23
+ get: all[name],
24
+ enumerable: true,
25
+ configurable: true,
26
+ set: (newValue) => all[name] = () => newValue
27
+ });
28
+ };
29
+
30
+ // src/errors.ts
31
+ var exports_errors = {};
32
+ __export(exports_errors, {
33
+ WikidotStatusError: () => WikidotStatusError,
34
+ WikidotError: () => WikidotError,
35
+ UnexpectedError: () => UnexpectedError,
36
+ TargetExistsError: () => TargetExistsError,
37
+ TargetError: () => TargetError,
38
+ SessionError: () => SessionError,
39
+ SessionCreateError: () => SessionCreateError,
40
+ ResponseDataError: () => ResponseDataError,
41
+ NotFoundException: () => NotFoundException,
42
+ NoElementError: () => NoElementError,
43
+ LoginRequiredError: () => LoginRequiredError,
44
+ ForbiddenError: () => ForbiddenError,
45
+ AMCHttpError: () => AMCHttpError,
46
+ AMCError: () => AMCError
47
+ });
48
+ module.exports = __toCommonJS(exports_errors);
49
+
50
+ // src/common/errors/base.ts
51
+ class WikidotError extends Error {
52
+ name;
53
+ constructor(message) {
54
+ super(message);
55
+ this.name = this.constructor.name;
56
+ Object.setPrototypeOf(this, new.target.prototype);
57
+ }
58
+ }
59
+
60
+ class UnexpectedError extends WikidotError {
61
+ }
62
+
63
+ // src/common/errors/amc.ts
64
+ class AMCError extends WikidotError {
65
+ }
66
+
67
+ class AMCHttpError extends AMCError {
68
+ statusCode;
69
+ constructor(message, statusCode) {
70
+ super(message);
71
+ this.statusCode = statusCode;
72
+ }
73
+ }
74
+
75
+ class WikidotStatusError extends AMCError {
76
+ statusCode;
77
+ constructor(message, statusCode) {
78
+ super(message);
79
+ this.statusCode = statusCode;
80
+ }
81
+ }
82
+
83
+ class ResponseDataError extends AMCError {
84
+ }
85
+ // src/common/errors/session.ts
86
+ class SessionError extends WikidotError {
87
+ }
88
+
89
+ class SessionCreateError extends SessionError {
90
+ }
91
+
92
+ class LoginRequiredError extends SessionError {
93
+ constructor(message = "Login is required for this operation") {
94
+ super(message);
95
+ }
96
+ }
97
+ // src/common/errors/target.ts
98
+ class NotFoundException extends WikidotError {
99
+ }
100
+
101
+ class TargetExistsError extends WikidotError {
102
+ }
103
+
104
+ class TargetError extends WikidotError {
105
+ }
106
+
107
+ class ForbiddenError extends WikidotError {
108
+ }
109
+
110
+ class NoElementError extends WikidotError {
111
+ }
112
+
113
+ //# debugId=34CEA15B1F492E1F64756E2164756E21
114
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2NvbW1vbi9lcnJvcnMvYmFzZS50cyIsICJzcmMvY29tbW9uL2Vycm9ycy9hbWMudHMiLCAic3JjL2NvbW1vbi9lcnJvcnMvc2Vzc2lvbi50cyIsICJzcmMvY29tbW9uL2Vycm9ycy90YXJnZXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLyoqXG4gKiBXaWtpZG9044Op44Kk44OW44Op44Oq44Gu5Z+65bqV44Ko44Op44O844Kv44Op44K5XG4gKiDlhajjgabjga7jgqvjgrnjgr/jg6Djgqjjg6njg7zjga/jgZPjga7jgq/jg6njgrnjgpLntpnmib/jgZnjgotcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdpa2lkb3RFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqIOOCqOODqeODvOWQjSAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIOOCqOODqeODvOODoeODg+OCu+ODvOOCuFxuICAgKi9cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBuZXcudGFyZ2V0LnByb3RvdHlwZSk7XG4gIH1cbn1cblxuLyoqXG4gKiDkuojmnJ/jgZvjgazjgqjjg6njg7xcbiAqIOWGhemDqOeahOOBquS4jeaVtOWQiOOChOODkOOCsOOCkuihqOOBmVxuICovXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZEVycm9yIGV4dGVuZHMgV2lraWRvdEVycm9yIHt9XG4iLAogICAgImltcG9ydCB7IFdpa2lkb3RFcnJvciB9IGZyb20gJy4vYmFzZSc7XG5cbi8qKlxuICogQWpheCBNb2R1bGUgQ29ubmVjdG9y6Zai6YCj44Gu5Z+65bqV44Ko44Op44O8XG4gKi9cbmV4cG9ydCBjbGFzcyBBTUNFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIEhUVFDjgrnjg4bjg7zjgr/jgrnjgrPjg7zjg4njgqjjg6njg7xcbiAqIEFNQ+OBuOOBruODquOCr+OCqOOCueODiOOBjEhUVFDjgqjjg6njg7zjgaflpLHmlZfjgZfjgZ/loLTlkIhcbiAqL1xuZXhwb3J0IGNsYXNzIEFNQ0h0dHBFcnJvciBleHRlbmRzIEFNQ0Vycm9yIHtcbiAgLyoqIEhUVFDjgrnjg4bjg7zjgr/jgrnjgrPjg7zjg4kgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSDjgqjjg6njg7zjg6Hjg4Pjgrvjg7zjgrhcbiAgICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQ44K544OG44O844K/44K544Kz44O844OJXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1c0NvZGU6IG51bWJlcikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gIH1cbn1cblxuLyoqXG4gKiBXaWtpZG9044K544OG44O844K/44K544Kz44O844OJ44Ko44Op44O8XG4gKiBBTUPjg6zjgrnjg53jg7Pjgrnjga5zdGF0dXPjgYxva+OBp+OBquOBhOWgtOWQiFxuICovXG5leHBvcnQgY2xhc3MgV2lraWRvdFN0YXR1c0Vycm9yIGV4dGVuZHMgQU1DRXJyb3Ige1xuICAvKiogV2lraWRvdOOCueODhuODvOOCv+OCueOCs+ODvOODieaWh+Wtl+WIlyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIOOCqOODqeODvOODoeODg+OCu+ODvOOCuFxuICAgKiBAcGFyYW0gc3RhdHVzQ29kZSAtIOOCueODhuODvOOCv+OCueOCs+ODvOODie+8iOS+izogJ25vdF9vaycsICd0cnlfYWdhaW4n77yJXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1c0NvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gIH1cbn1cblxuLyoqXG4gKiDjg6zjgrnjg53jg7Pjgrnjg4fjg7zjgr/jgqjjg6njg7xcbiAqIOODrOOCueODneODs+OCueOBruODkeODvOOCueOBq+WkseaVl+OBl+OBn+WgtOWQiFxuICovXG5leHBvcnQgY2xhc3MgUmVzcG9uc2VEYXRhRXJyb3IgZXh0ZW5kcyBBTUNFcnJvciB7fVxuIiwKICAgICJpbXBvcnQgeyBXaWtpZG90RXJyb3IgfSBmcm9tICcuL2Jhc2UnO1xuXG4vKipcbiAqIOOCu+ODg+OCt+ODp+ODs+mWoumAo+OBruWfuuW6leOCqOODqeODvFxuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvbkVycm9yIGV4dGVuZHMgV2lraWRvdEVycm9yIHt9XG5cbi8qKlxuICog44K744OD44K344On44Oz5L2c5oiQ5aSx5pWX44Ko44Op44O8XG4gKiDjg63jgrDjgqTjg7PoqabooYzjgYzlpLHmlZfjgZfjgZ/loLTlkIjjgavjgrnjg63jg7xcbiAqL1xuZXhwb3J0IGNsYXNzIFNlc3Npb25DcmVhdGVFcnJvciBleHRlbmRzIFNlc3Npb25FcnJvciB7fVxuXG4vKipcbiAqIOODreOCsOOCpOODs+W/hemgiOOCqOODqeODvFxuICog6KqN6Ki844GM5b+F6KaB44Gq5pON5L2c44KS5pyq44Ot44Kw44Kk44Oz54q25oWL44Gn5a6f6KGM44GX44Gf5aC05ZCI44Gr44K544Ot44O8XG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dpblJlcXVpcmVkRXJyb3IgZXh0ZW5kcyBTZXNzaW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gJ0xvZ2luIGlzIHJlcXVpcmVkIGZvciB0aGlzIG9wZXJhdGlvbicpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgeyBXaWtpZG90RXJyb3IgfSBmcm9tICcuL2Jhc2UnO1xuXG4vKipcbiAqIOODquOCveODvOOCueacqueZuuimi+OCqOODqeODvFxuICog6KaB5rGC44GV44KM44Gf44Oq44K944O844K544GM5a2Y5Zyo44GX44Gq44GE5aC05ZCIXG4gKi9cbmV4cG9ydCBjbGFzcyBOb3RGb3VuZEV4Y2VwdGlvbiBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIOODquOCveODvOOCueaXouWtmOOCqOODqeODvFxuICog5L2c5oiQ44GX44KI44GG44Go44GX44Gf44Oq44K944O844K544GM5pei44Gr5a2Y5Zyo44GZ44KL5aC05ZCIXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXRFeGlzdHNFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIOOCv+ODvOOCsuODg+ODiOeKtuaFi+OCqOODqeODvFxuICog44Oq44K944O844K544GM5pON5L2c5LiN5Y+v6IO944Gq54q25oWL44Gu5aC05ZCI77yI44Ot44OD44Kv5Lit44Gq44Gp77yJXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXRFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIOOCouOCr+OCu+OCueaLkuWQpuOCqOODqeODvFxuICog5qip6ZmQ5LiN6Laz44Gn5pON5L2c44GM5ouS5ZCm44GV44KM44Gf5aC05ZCIXG4gKi9cbmV4cG9ydCBjbGFzcyBGb3JiaWRkZW5FcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIEhUTUzopoHntKDmnKrnmbropovjgqjjg6njg7xcbiAqIOODkeODvOOCueS4reOBq+W/heimgeOBquimgee0oOOBjOimi+OBpOOBi+OCieOBquOBhOWgtOWQiFxuICovXG5leHBvcnQgY2xhc3MgTm9FbGVtZW50RXJyb3IgZXh0ZW5kcyBXaWtpZG90RXJyb3Ige31cbiIKICBdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSU8sTUFBZSxxQkFBcUIsTUFBTTtBQUFBLEVBRXRCO0FBQUEsRUFLekIsV0FBVyxDQUFDLFNBQWlCO0FBQUEsSUFDM0IsTUFBTSxPQUFPO0FBQUEsSUFDYixLQUFLLE9BQU8sS0FBSyxZQUFZO0FBQUEsSUFDN0IsT0FBTyxlQUFlLE1BQU0sV0FBVyxTQUFTO0FBQUE7QUFFcEQ7QUFBQTtBQU1PLE1BQU0sd0JBQXdCLGFBQWE7QUFBQzs7O0FDakI1QyxNQUFNLGlCQUFpQixhQUFhO0FBQUM7QUFBQTtBQU1yQyxNQUFNLHFCQUFxQixTQUFTO0FBQUEsRUFFekI7QUFBQSxFQU1oQixXQUFXLENBQUMsU0FBaUIsWUFBb0I7QUFBQSxJQUMvQyxNQUFNLE9BQU87QUFBQSxJQUNiLEtBQUssYUFBYTtBQUFBO0FBRXRCO0FBQUE7QUFNTyxNQUFNLDJCQUEyQixTQUFTO0FBQUEsRUFFL0I7QUFBQSxFQU1oQixXQUFXLENBQUMsU0FBaUIsWUFBb0I7QUFBQSxJQUMvQyxNQUFNLE9BQU87QUFBQSxJQUNiLEtBQUssYUFBYTtBQUFBO0FBRXRCO0FBQUE7QUFNTyxNQUFNLDBCQUEwQixTQUFTO0FBQUM7O0FDMUMxQyxNQUFNLHFCQUFxQixhQUFhO0FBQUM7QUFBQTtBQU16QyxNQUFNLDJCQUEyQixhQUFhO0FBQUM7QUFBQTtBQU0vQyxNQUFNLDJCQUEyQixhQUFhO0FBQUEsRUFDbkQsV0FBVyxDQUFDLFVBQVUsd0NBQXdDO0FBQUEsSUFDNUQsTUFBTSxPQUFPO0FBQUE7QUFFakI7O0FDZk8sTUFBTSwwQkFBMEIsYUFBYTtBQUFDO0FBQUE7QUFNOUMsTUFBTSwwQkFBMEIsYUFBYTtBQUFDO0FBQUE7QUFNOUMsTUFBTSxvQkFBb0IsYUFBYTtBQUFDO0FBQUE7QUFNeEMsTUFBTSx1QkFBdUIsYUFBYTtBQUFDO0FBQUE7QUFNM0MsTUFBTSx1QkFBdUIsYUFBYTtBQUFDOyIsCiAgImRlYnVnSWQiOiAiMzRDRUExNUIxRjQ5MkUxRjY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Wikidotライブラリの基底エラークラス
3
+ * 全てのカスタムエラーはこのクラスを継承する
4
+ */
5
+ declare abstract class WikidotError extends Error {
6
+ /** エラー名 */
7
+ readonly name: string;
8
+ /**
9
+ * @param message - エラーメッセージ
10
+ */
11
+ constructor(message: string);
12
+ }
13
+ /**
14
+ * 予期せぬエラー
15
+ * 内部的な不整合やバグを表す
16
+ */
17
+ declare class UnexpectedError extends WikidotError {}
18
+ /**
19
+ * Ajax Module Connector関連の基底エラー
20
+ */
21
+ declare class AMCError extends WikidotError {}
22
+ /**
23
+ * HTTPステータスコードエラー
24
+ * AMCへのリクエストがHTTPエラーで失敗した場合
25
+ */
26
+ declare class AMCHttpError extends AMCError {
27
+ /** HTTPステータスコード */
28
+ readonly statusCode: number;
29
+ /**
30
+ * @param message - エラーメッセージ
31
+ * @param statusCode - HTTPステータスコード
32
+ */
33
+ constructor(message: string, statusCode: number);
34
+ }
35
+ /**
36
+ * Wikidotステータスコードエラー
37
+ * AMCレスポンスのstatusがokでない場合
38
+ */
39
+ declare class WikidotStatusError extends AMCError {
40
+ /** Wikidotステータスコード文字列 */
41
+ readonly statusCode: string;
42
+ /**
43
+ * @param message - エラーメッセージ
44
+ * @param statusCode - ステータスコード(例: 'not_ok', 'try_again')
45
+ */
46
+ constructor(message: string, statusCode: string);
47
+ }
48
+ /**
49
+ * レスポンスデータエラー
50
+ * レスポンスのパースに失敗した場合
51
+ */
52
+ declare class ResponseDataError extends AMCError {}
53
+ /**
54
+ * セッション関連の基底エラー
55
+ */
56
+ declare class SessionError extends WikidotError {}
57
+ /**
58
+ * セッション作成失敗エラー
59
+ * ログイン試行が失敗した場合にスロー
60
+ */
61
+ declare class SessionCreateError extends SessionError {}
62
+ /**
63
+ * ログイン必須エラー
64
+ * 認証が必要な操作を未ログイン状態で実行した場合にスロー
65
+ */
66
+ declare class LoginRequiredError extends SessionError {
67
+ constructor(message?: string);
68
+ }
69
+ /**
70
+ * リソース未発見エラー
71
+ * 要求されたリソースが存在しない場合
72
+ */
73
+ declare class NotFoundException extends WikidotError {}
74
+ /**
75
+ * リソース既存エラー
76
+ * 作成しようとしたリソースが既に存在する場合
77
+ */
78
+ declare class TargetExistsError extends WikidotError {}
79
+ /**
80
+ * ターゲット状態エラー
81
+ * リソースが操作不可能な状態の場合(ロック中など)
82
+ */
83
+ declare class TargetError extends WikidotError {}
84
+ /**
85
+ * アクセス拒否エラー
86
+ * 権限不足で操作が拒否された場合
87
+ */
88
+ declare class ForbiddenError extends WikidotError {}
89
+ /**
90
+ * HTML要素未発見エラー
91
+ * パース中に必要な要素が見つからない場合
92
+ */
93
+ declare class NoElementError extends WikidotError {}
94
+ export { WikidotStatusError, WikidotError, UnexpectedError, TargetExistsError, TargetError, SessionError, SessionCreateError, ResponseDataError, NotFoundException, NoElementError, LoginRequiredError, ForbiddenError, AMCHttpError, AMCError };
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Wikidotライブラリの基底エラークラス
3
+ * 全てのカスタムエラーはこのクラスを継承する
4
+ */
5
+ declare abstract class WikidotError extends Error {
6
+ /** エラー名 */
7
+ readonly name: string;
8
+ /**
9
+ * @param message - エラーメッセージ
10
+ */
11
+ constructor(message: string);
12
+ }
13
+ /**
14
+ * 予期せぬエラー
15
+ * 内部的な不整合やバグを表す
16
+ */
17
+ declare class UnexpectedError extends WikidotError {}
18
+ /**
19
+ * Ajax Module Connector関連の基底エラー
20
+ */
21
+ declare class AMCError extends WikidotError {}
22
+ /**
23
+ * HTTPステータスコードエラー
24
+ * AMCへのリクエストがHTTPエラーで失敗した場合
25
+ */
26
+ declare class AMCHttpError extends AMCError {
27
+ /** HTTPステータスコード */
28
+ readonly statusCode: number;
29
+ /**
30
+ * @param message - エラーメッセージ
31
+ * @param statusCode - HTTPステータスコード
32
+ */
33
+ constructor(message: string, statusCode: number);
34
+ }
35
+ /**
36
+ * Wikidotステータスコードエラー
37
+ * AMCレスポンスのstatusがokでない場合
38
+ */
39
+ declare class WikidotStatusError extends AMCError {
40
+ /** Wikidotステータスコード文字列 */
41
+ readonly statusCode: string;
42
+ /**
43
+ * @param message - エラーメッセージ
44
+ * @param statusCode - ステータスコード(例: 'not_ok', 'try_again')
45
+ */
46
+ constructor(message: string, statusCode: string);
47
+ }
48
+ /**
49
+ * レスポンスデータエラー
50
+ * レスポンスのパースに失敗した場合
51
+ */
52
+ declare class ResponseDataError extends AMCError {}
53
+ /**
54
+ * セッション関連の基底エラー
55
+ */
56
+ declare class SessionError extends WikidotError {}
57
+ /**
58
+ * セッション作成失敗エラー
59
+ * ログイン試行が失敗した場合にスロー
60
+ */
61
+ declare class SessionCreateError extends SessionError {}
62
+ /**
63
+ * ログイン必須エラー
64
+ * 認証が必要な操作を未ログイン状態で実行した場合にスロー
65
+ */
66
+ declare class LoginRequiredError extends SessionError {
67
+ constructor(message?: string);
68
+ }
69
+ /**
70
+ * リソース未発見エラー
71
+ * 要求されたリソースが存在しない場合
72
+ */
73
+ declare class NotFoundException extends WikidotError {}
74
+ /**
75
+ * リソース既存エラー
76
+ * 作成しようとしたリソースが既に存在する場合
77
+ */
78
+ declare class TargetExistsError extends WikidotError {}
79
+ /**
80
+ * ターゲット状態エラー
81
+ * リソースが操作不可能な状態の場合(ロック中など)
82
+ */
83
+ declare class TargetError extends WikidotError {}
84
+ /**
85
+ * アクセス拒否エラー
86
+ * 権限不足で操作が拒否された場合
87
+ */
88
+ declare class ForbiddenError extends WikidotError {}
89
+ /**
90
+ * HTML要素未発見エラー
91
+ * パース中に必要な要素が見つからない場合
92
+ */
93
+ declare class NoElementError extends WikidotError {}
94
+ export { WikidotStatusError, WikidotError, UnexpectedError, TargetExistsError, TargetError, SessionError, SessionCreateError, ResponseDataError, NotFoundException, NoElementError, LoginRequiredError, ForbiddenError, AMCHttpError, AMCError };