@ukwhatn/wikidot 4.0.5 → 4.0.6
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 +83 -83
- package/dist/errors.cjs +1 -1
- package/dist/errors.d.cts +34 -34
- package/dist/errors.d.ts +34 -34
- package/dist/errors.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +644 -644
- package/dist/index.d.ts +644 -644
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,187 +1,187 @@
|
|
|
1
1
|
# wikidot-ts
|
|
2
2
|
|
|
3
|
-
TypeScript
|
|
3
|
+
An async utility library for interacting with Wikidot sites in TypeScript.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Overview
|
|
6
6
|
|
|
7
|
-
wikidot-ts
|
|
7
|
+
wikidot-ts is a TypeScript library for working with the Wikidot API. It supports major Wikidot features including page retrieval and editing, forum operations, private messages, and user information retrieval.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Features
|
|
10
10
|
|
|
11
|
-
-
|
|
12
|
-
- Result
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- wikidot.py
|
|
11
|
+
- Type-safe API (full TypeScript support)
|
|
12
|
+
- Result-based error handling (using neverthrow)
|
|
13
|
+
- Full async/await support
|
|
14
|
+
- Covers major features: pages, forums, private messages, and more
|
|
15
|
+
- High compatibility with wikidot.py
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Installation
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
bun add @ukwhatn/wikidot
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
or
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
26
|
npm install @ukwhatn/wikidot
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
##
|
|
29
|
+
## Basic Usage
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
This library uses the Result type from `neverthrow`. All async methods return `WikidotResultAsync<T>`. Check success with `isOk()`, then access the value with `.value`.
|
|
32
32
|
|
|
33
|
-
###
|
|
33
|
+
### Creating a Client
|
|
34
34
|
|
|
35
35
|
```typescript
|
|
36
36
|
import { Client } from '@ukwhatn/wikidot';
|
|
37
37
|
|
|
38
|
-
//
|
|
38
|
+
// Access without login (public information only)
|
|
39
39
|
const clientResult = await Client.create();
|
|
40
40
|
if (!clientResult.isOk()) {
|
|
41
|
-
throw new Error('
|
|
41
|
+
throw new Error('Failed to create client');
|
|
42
42
|
}
|
|
43
43
|
const client = clientResult.value;
|
|
44
44
|
|
|
45
|
-
//
|
|
45
|
+
// Access with login
|
|
46
46
|
const authClientResult = await Client.create({
|
|
47
47
|
username: 'your_username',
|
|
48
48
|
password: 'your_password',
|
|
49
49
|
});
|
|
50
50
|
if (!authClientResult.isOk()) {
|
|
51
|
-
throw new Error('
|
|
51
|
+
throw new Error('Login failed');
|
|
52
52
|
}
|
|
53
53
|
const authClient = authClientResult.value;
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
###
|
|
56
|
+
### Retrieving a Site
|
|
57
57
|
|
|
58
58
|
```typescript
|
|
59
|
-
//
|
|
59
|
+
// Get a site
|
|
60
60
|
const siteResult = await client.site.get('scp-jp');
|
|
61
61
|
if (!siteResult.isOk()) {
|
|
62
|
-
throw new Error('
|
|
62
|
+
throw new Error('Failed to retrieve site');
|
|
63
63
|
}
|
|
64
64
|
const site = siteResult.value;
|
|
65
|
-
console.log(
|
|
65
|
+
console.log(`Site: ${site.title}`);
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
###
|
|
68
|
+
### Page Operations
|
|
69
69
|
|
|
70
70
|
```typescript
|
|
71
|
-
//
|
|
71
|
+
// Search pages
|
|
72
72
|
const pagesResult = await site.pages.search({ category: 'scp', tags: ['safe'] });
|
|
73
73
|
if (!pagesResult.isOk()) {
|
|
74
|
-
throw new Error('
|
|
74
|
+
throw new Error('Failed to search pages');
|
|
75
75
|
}
|
|
76
76
|
for (const page of pagesResult.value) {
|
|
77
77
|
console.log(`${page.fullname}: ${page.title}`);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
//
|
|
80
|
+
// Get a single page
|
|
81
81
|
const pageResult = await site.page.get('scp-001');
|
|
82
82
|
if (!pageResult.isOk()) {
|
|
83
|
-
throw new Error('
|
|
83
|
+
throw new Error('Failed to retrieve page');
|
|
84
84
|
}
|
|
85
85
|
const page = pageResult.value;
|
|
86
|
-
console.log(
|
|
87
|
-
console.log(
|
|
86
|
+
console.log(`Title: ${page.title}`);
|
|
87
|
+
console.log(`Rating: ${page.rating}`);
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
###
|
|
90
|
+
### Forum Operations
|
|
91
91
|
|
|
92
92
|
```typescript
|
|
93
|
-
//
|
|
93
|
+
// Get forum categories
|
|
94
94
|
const categoriesResult = await site.forum.getCategories();
|
|
95
95
|
if (!categoriesResult.isOk()) {
|
|
96
|
-
throw new Error('
|
|
96
|
+
throw new Error('Failed to retrieve forum categories');
|
|
97
97
|
}
|
|
98
98
|
for (const category of categoriesResult.value) {
|
|
99
|
-
console.log(
|
|
99
|
+
console.log(`Category: ${category.title}`);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
//
|
|
102
|
+
// Reply to a thread (requires login)
|
|
103
103
|
const threadResult = await site.forum.getThread(12345);
|
|
104
104
|
if (!threadResult.isOk()) {
|
|
105
|
-
throw new Error('
|
|
105
|
+
throw new Error('Failed to retrieve thread');
|
|
106
106
|
}
|
|
107
107
|
const thread = threadResult.value;
|
|
108
|
-
await thread.reply('
|
|
108
|
+
await thread.reply('Reply content', 'Re: Title');
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
###
|
|
111
|
+
### Private Messages (requires login)
|
|
112
112
|
|
|
113
113
|
```typescript
|
|
114
|
-
//
|
|
114
|
+
// Get inbox
|
|
115
115
|
const inboxResult = await client.privateMessage.inbox();
|
|
116
116
|
if (!inboxResult.isOk()) {
|
|
117
|
-
throw new Error('
|
|
117
|
+
throw new Error('Failed to retrieve inbox');
|
|
118
118
|
}
|
|
119
119
|
for (const message of inboxResult.value) {
|
|
120
120
|
console.log(`From: ${message.sender.name}, Subject: ${message.subject}`);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
//
|
|
124
|
-
await client.privateMessage.send(recipientUser, '
|
|
123
|
+
// Send a message
|
|
124
|
+
await client.privateMessage.send(recipientUser, 'Subject', 'Body');
|
|
125
125
|
|
|
126
|
-
//
|
|
127
|
-
const searchResult = await client.privateMessage.search('
|
|
126
|
+
// Search messages
|
|
127
|
+
const searchResult = await client.privateMessage.search('search query', 'all');
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
-
##
|
|
130
|
+
## Error Handling
|
|
131
131
|
|
|
132
|
-
wikidot-ts
|
|
132
|
+
wikidot-ts handles errors using the Result type from the `neverthrow` library.
|
|
133
133
|
|
|
134
134
|
```typescript
|
|
135
135
|
const result = await site.page.get('non-existent-page');
|
|
136
136
|
|
|
137
137
|
if (result.isOk()) {
|
|
138
138
|
const page = result.value;
|
|
139
|
-
//
|
|
139
|
+
// Handle success
|
|
140
140
|
} else {
|
|
141
141
|
const error = result.error;
|
|
142
142
|
if (error instanceof NotFoundException) {
|
|
143
|
-
console.log('
|
|
143
|
+
console.log('Page not found');
|
|
144
144
|
} else if (error instanceof ForbiddenError) {
|
|
145
|
-
console.log('
|
|
145
|
+
console.log('Access denied');
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
##
|
|
150
|
+
## Main Error Types
|
|
151
151
|
|
|
152
|
-
|
|
|
153
|
-
|
|
154
|
-
| `LoginRequiredError` |
|
|
155
|
-
| `NotFoundException` |
|
|
156
|
-
| `ForbiddenError` |
|
|
157
|
-
| `TargetExistsError` |
|
|
158
|
-
| `WikidotStatusError` | Wikidot API
|
|
152
|
+
| Error | Description |
|
|
153
|
+
|-------|-------------|
|
|
154
|
+
| `LoginRequiredError` | Operation requires login |
|
|
155
|
+
| `NotFoundException` | Resource not found |
|
|
156
|
+
| `ForbiddenError` | Access denied |
|
|
157
|
+
| `TargetExistsError` | Resource already exists |
|
|
158
|
+
| `WikidotStatusError` | Wikidot API error |
|
|
159
159
|
|
|
160
|
-
## wikidot.py
|
|
160
|
+
## Differences from wikidot.py
|
|
161
161
|
|
|
162
|
-
wikidot-ts
|
|
162
|
+
wikidot-ts is a port of wikidot.py, with some differences to follow TypeScript conventions.
|
|
163
163
|
|
|
164
|
-
###
|
|
164
|
+
### Property to Method Conversion
|
|
165
165
|
|
|
166
|
-
Python
|
|
166
|
+
Python properties using the `@property` decorator are implemented as getter methods in TypeScript.
|
|
167
167
|
|
|
168
168
|
| Python (wikidot.py) | TypeScript (wikidot-ts) |
|
|
169
169
|
|---------------------|------------------------|
|
|
170
170
|
| `site.base_url` | `site.getBaseUrl()` |
|
|
171
171
|
| `page.url` | `page.getUrl()` |
|
|
172
|
-
| `user.avatar_url` | `user.avatarUrl` (
|
|
172
|
+
| `user.avatar_url` | `user.avatarUrl` (readonly property) |
|
|
173
173
|
|
|
174
|
-
###
|
|
174
|
+
### Naming Conventions
|
|
175
175
|
|
|
176
|
-
-
|
|
177
|
-
- `page.fullname` (
|
|
178
|
-
- `page.children_count`
|
|
179
|
-
- `page.created_by`
|
|
176
|
+
- snake_case to camelCase
|
|
177
|
+
- `page.fullname` (unchanged)
|
|
178
|
+
- `page.children_count` to `page.childrenCount`
|
|
179
|
+
- `page.created_by` to `page.createdBy`
|
|
180
180
|
|
|
181
|
-
###
|
|
181
|
+
### Error Handling
|
|
182
182
|
|
|
183
|
-
- Python:
|
|
184
|
-
- TypeScript: `Result
|
|
183
|
+
- Python: Throws exceptions
|
|
184
|
+
- TypeScript: Returns `Result` type (using `neverthrow`)
|
|
185
185
|
|
|
186
186
|
```python
|
|
187
187
|
# Python
|
|
@@ -201,49 +201,49 @@ if (result.isErr()) {
|
|
|
201
201
|
}
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
-
###
|
|
204
|
+
### Optional Arguments
|
|
205
205
|
|
|
206
|
-
|
|
206
|
+
Some methods support optional arguments similar to the Python version.
|
|
207
207
|
|
|
208
208
|
```typescript
|
|
209
|
-
// raiseWhenNotFound
|
|
209
|
+
// raiseWhenNotFound option
|
|
210
210
|
const user = await client.user.get("username", { raiseWhenNotFound: true });
|
|
211
211
|
|
|
212
|
-
// returnExceptions
|
|
212
|
+
// returnExceptions option (AMCClient)
|
|
213
213
|
const results = await client.amcClient.requestWithOptions(bodies, { returnExceptions: true });
|
|
214
214
|
```
|
|
215
215
|
|
|
216
|
-
##
|
|
216
|
+
## Development
|
|
217
217
|
|
|
218
|
-
###
|
|
218
|
+
### Setup
|
|
219
219
|
|
|
220
220
|
```bash
|
|
221
221
|
bun install
|
|
222
222
|
```
|
|
223
223
|
|
|
224
|
-
###
|
|
224
|
+
### Commands
|
|
225
225
|
|
|
226
226
|
```bash
|
|
227
|
-
#
|
|
227
|
+
# Type check
|
|
228
228
|
bun run typecheck
|
|
229
229
|
|
|
230
230
|
# Lint
|
|
231
231
|
bun run lint
|
|
232
232
|
|
|
233
|
-
#
|
|
233
|
+
# Format
|
|
234
234
|
bun run format
|
|
235
235
|
|
|
236
|
-
#
|
|
236
|
+
# Test
|
|
237
237
|
bun test
|
|
238
238
|
|
|
239
|
-
#
|
|
239
|
+
# Build
|
|
240
240
|
bun run build
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
-
##
|
|
243
|
+
## License
|
|
244
244
|
|
|
245
245
|
MIT
|
|
246
246
|
|
|
247
|
-
##
|
|
247
|
+
## Related Projects
|
|
248
248
|
|
|
249
|
-
- [wikidot.py](https://github.com/ukwhatn/wikidot.py) - Python
|
|
249
|
+
- [wikidot.py](https://github.com/ukwhatn/wikidot.py) - Python version of the Wikidot library
|
package/dist/errors.cjs
CHANGED
|
@@ -111,4 +111,4 @@ class NoElementError extends WikidotError {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
//# debugId=34CEA15B1F492E1F64756E2164756E21
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2NvbW1vbi9lcnJvcnMvYmFzZS50cyIsICJzcmMvY29tbW9uL2Vycm9ycy9hbWMudHMiLCAic3JjL2NvbW1vbi9lcnJvcnMvc2Vzc2lvbi50cyIsICJzcmMvY29tbW9uL2Vycm9ycy90YXJnZXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLyoqXG4gKiBCYXNlIGVycm9yIGNsYXNzIGZvciB0aGUgV2lraWRvdCBsaWJyYXJ5XG4gKiBBbGwgY3VzdG9tIGVycm9ycyBpbmhlcml0IGZyb20gdGhpcyBjbGFzc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2lraWRvdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKiogRXJyb3IgbmFtZSAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpO1xuICB9XG59XG5cbi8qKlxuICogVW5leHBlY3RlZCBlcnJvclxuICogUmVwcmVzZW50cyBpbnRlcm5hbCBpbmNvbnNpc3RlbmNpZXMgb3IgYnVnc1xuICovXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZEVycm9yIGV4dGVuZHMgV2lraWRvdEVycm9yIHt9XG4iLAogICAgImltcG9ydCB7IFdpa2lkb3RFcnJvciB9IGZyb20gJy4vYmFzZSc7XG5cbi8qKlxuICogQmFzZSBlcnJvciBmb3IgQWpheCBNb2R1bGUgQ29ubmVjdG9yIHJlbGF0ZWQgaXNzdWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBBTUNFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIEhUVFAgc3RhdHVzIGNvZGUgZXJyb3JcbiAqIFRocm93biB3aGVuIGFuIEFNQyByZXF1ZXN0IGZhaWxzIHdpdGggYW4gSFRUUCBlcnJvclxuICovXG5leHBvcnQgY2xhc3MgQU1DSHR0cEVycm9yIGV4dGVuZHMgQU1DRXJyb3Ige1xuICAvKiogSFRUUCBzdGF0dXMgY29kZSAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1c0NvZGU6IG51bWJlcikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gIH1cbn1cblxuLyoqXG4gKiBXaWtpZG90IHN0YXR1cyBjb2RlIGVycm9yXG4gKiBUaHJvd24gd2hlbiBBTUMgcmVzcG9uc2Ugc3RhdHVzIGlzIG5vdCBva1xuICovXG5leHBvcnQgY2xhc3MgV2lraWRvdFN0YXR1c0Vycm9yIGV4dGVuZHMgQU1DRXJyb3Ige1xuICAvKiogV2lraWRvdCBzdGF0dXMgY29kZSBzdHJpbmcgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSBzdGF0dXNDb2RlIC0gU3RhdHVzIGNvZGUgKGUuZy4sICdub3Rfb2snLCAndHJ5X2FnYWluJylcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRhdGEgZXJyb3JcbiAqIFRocm93biB3aGVuIHJlc3BvbnNlIHBhcnNpbmcgZmFpbHNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc3BvbnNlRGF0YUVycm9yIGV4dGVuZHMgQU1DRXJyb3Ige31cbiIsCiAgICAiaW1wb3J0IHsgV2lraWRvdEVycm9yIH0gZnJvbSAnLi9iYXNlJztcblxuLyoqXG4gKiBCYXNlIGVycm9yIGZvciBzZXNzaW9uIHJlbGF0ZWQgaXNzdWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXNzaW9uRXJyb3IgZXh0ZW5kcyBXaWtpZG90RXJyb3Ige31cblxuLyoqXG4gKiBTZXNzaW9uIGNyZWF0aW9uIGZhaWx1cmUgZXJyb3JcbiAqIFRocm93biB3aGVuIGEgbG9naW4gYXR0ZW1wdCBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvbkNyZWF0ZUVycm9yIGV4dGVuZHMgU2Vzc2lvbkVycm9yIHt9XG5cbi8qKlxuICogTG9naW4gcmVxdWlyZWQgZXJyb3JcbiAqIFRocm93biB3aGVuIGFuIGF1dGhlbnRpY2F0ZWQgb3BlcmF0aW9uIGlzIGF0dGVtcHRlZCB3aXRob3V0IGxvZ2luXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dpblJlcXVpcmVkRXJyb3IgZXh0ZW5kcyBTZXNzaW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gJ0xvZ2luIGlzIHJlcXVpcmVkIGZvciB0aGlzIG9wZXJhdGlvbicpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgeyBXaWtpZG90RXJyb3IgfSBmcm9tICcuL2Jhc2UnO1xuXG4vKipcbiAqIFJlc291cmNlIG5vdCBmb3VuZCBlcnJvclxuICogVGhyb3duIHdoZW4gdGhlIHJlcXVlc3RlZCByZXNvdXJjZSBkb2VzIG5vdCBleGlzdFxuICovXG5leHBvcnQgY2xhc3MgTm90Rm91bmRFeGNlcHRpb24gZXh0ZW5kcyBXaWtpZG90RXJyb3Ige31cblxuLyoqXG4gKiBSZXNvdXJjZSBhbHJlYWR5IGV4aXN0cyBlcnJvclxuICogVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBjcmVhdGUgYSByZXNvdXJjZSB0aGF0IGFscmVhZHkgZXhpc3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXRFeGlzdHNFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIFRhcmdldCBzdGF0ZSBlcnJvclxuICogVGhyb3duIHdoZW4gYSByZXNvdXJjZSBpcyBpbiBhbiBpbm9wZXJhYmxlIHN0YXRlIChlLmcuLCBsb2NrZWQpXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXRFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIEFjY2VzcyBkZW5pZWQgZXJyb3JcbiAqIFRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBkZW5pZWQgZHVlIHRvIGluc3VmZmljaWVudCBwZXJtaXNzaW9uc1xuICovXG5leHBvcnQgY2xhc3MgRm9yYmlkZGVuRXJyb3IgZXh0ZW5kcyBXaWtpZG90RXJyb3Ige31cblxuLyoqXG4gKiBIVE1MIGVsZW1lbnQgbm90IGZvdW5kIGVycm9yXG4gKiBUaHJvd24gd2hlbiBhIHJlcXVpcmVkIGVsZW1lbnQgaXMgbm90IGZvdW5kIGR1cmluZyBwYXJzaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBOb0VsZW1lbnRFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJTyxNQUFlLHFCQUFxQixNQUFNO0FBQUEsRUFFdEI7QUFBQSxFQUt6QixXQUFXLENBQUMsU0FBaUI7QUFBQSxJQUMzQixNQUFNLE9BQU87QUFBQSxJQUNiLEtBQUssT0FBTyxLQUFLLFlBQVk7QUFBQSxJQUM3QixPQUFPLGVBQWUsTUFBTSxXQUFXLFNBQVM7QUFBQTtBQUVwRDtBQUFBO0FBTU8sTUFBTSx3QkFBd0IsYUFBYTtBQUFDOzs7QUNqQjVDLE1BQU0saUJBQWlCLGFBQWE7QUFBQztBQUFBO0FBTXJDLE1BQU0scUJBQXFCLFNBQVM7QUFBQSxFQUV6QjtBQUFBLEVBTWhCLFdBQVcsQ0FBQyxTQUFpQixZQUFvQjtBQUFBLElBQy9DLE1BQU0sT0FBTztBQUFBLElBQ2IsS0FBSyxhQUFhO0FBQUE7QUFFdEI7QUFBQTtBQU1PLE1BQU0sMkJBQTJCLFNBQVM7QUFBQSxFQUUvQjtBQUFBLEVBTWhCLFdBQVcsQ0FBQyxTQUFpQixZQUFvQjtBQUFBLElBQy9DLE1BQU0sT0FBTztBQUFBLElBQ2IsS0FBSyxhQUFhO0FBQUE7QUFFdEI7QUFBQTtBQU1PLE1BQU0sMEJBQTBCLFNBQVM7QUFBQzs7QUMxQzFDLE1BQU0scUJBQXFCLGFBQWE7QUFBQztBQUFBO0FBTXpDLE1BQU0sMkJBQTJCLGFBQWE7QUFBQztBQUFBO0FBTS9DLE1BQU0sMkJBQTJCLGFBQWE7QUFBQSxFQUNuRCxXQUFXLENBQUMsVUFBVSx3Q0FBd0M7QUFBQSxJQUM1RCxNQUFNLE9BQU87QUFBQTtBQUVqQjs7QUNmTyxNQUFNLDBCQUEwQixhQUFhO0FBQUM7QUFBQTtBQU05QyxNQUFNLDBCQUEwQixhQUFhO0FBQUM7QUFBQTtBQU05QyxNQUFNLG9CQUFvQixhQUFhO0FBQUM7QUFBQTtBQU14QyxNQUFNLHVCQUF1QixhQUFhO0FBQUM7QUFBQTtBQU0zQyxNQUFNLHVCQUF1QixhQUFhO0FBQUM7IiwKICAiZGVidWdJZCI6ICIzNENFQTE1QjFGNDkyRTFGNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
package/dist/errors.d.cts
CHANGED
|
@@ -1,94 +1,94 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Wikidot
|
|
3
|
-
*
|
|
2
|
+
* Base error class for the Wikidot library
|
|
3
|
+
* All custom errors inherit from this class
|
|
4
4
|
*/
|
|
5
5
|
declare abstract class WikidotError extends Error {
|
|
6
|
-
/**
|
|
6
|
+
/** Error name */
|
|
7
7
|
readonly name: string;
|
|
8
8
|
/**
|
|
9
|
-
* @param message -
|
|
9
|
+
* @param message - Error message
|
|
10
10
|
*/
|
|
11
11
|
constructor(message: string);
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* Unexpected error
|
|
15
|
+
* Represents internal inconsistencies or bugs
|
|
16
16
|
*/
|
|
17
17
|
declare class UnexpectedError extends WikidotError {}
|
|
18
18
|
/**
|
|
19
|
-
* Ajax Module Connector
|
|
19
|
+
* Base error for Ajax Module Connector related issues
|
|
20
20
|
*/
|
|
21
21
|
declare class AMCError extends WikidotError {}
|
|
22
22
|
/**
|
|
23
|
-
* HTTP
|
|
24
|
-
* AMC
|
|
23
|
+
* HTTP status code error
|
|
24
|
+
* Thrown when an AMC request fails with an HTTP error
|
|
25
25
|
*/
|
|
26
26
|
declare class AMCHttpError extends AMCError {
|
|
27
|
-
/** HTTP
|
|
27
|
+
/** HTTP status code */
|
|
28
28
|
readonly statusCode: number;
|
|
29
29
|
/**
|
|
30
|
-
* @param message -
|
|
31
|
-
* @param statusCode - HTTP
|
|
30
|
+
* @param message - Error message
|
|
31
|
+
* @param statusCode - HTTP status code
|
|
32
32
|
*/
|
|
33
33
|
constructor(message: string, statusCode: number);
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* Wikidot
|
|
37
|
-
* AMC
|
|
36
|
+
* Wikidot status code error
|
|
37
|
+
* Thrown when AMC response status is not ok
|
|
38
38
|
*/
|
|
39
39
|
declare class WikidotStatusError extends AMCError {
|
|
40
|
-
/** Wikidot
|
|
40
|
+
/** Wikidot status code string */
|
|
41
41
|
readonly statusCode: string;
|
|
42
42
|
/**
|
|
43
|
-
* @param message -
|
|
44
|
-
* @param statusCode -
|
|
43
|
+
* @param message - Error message
|
|
44
|
+
* @param statusCode - Status code (e.g., 'not_ok', 'try_again')
|
|
45
45
|
*/
|
|
46
46
|
constructor(message: string, statusCode: string);
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
49
|
+
* Response data error
|
|
50
|
+
* Thrown when response parsing fails
|
|
51
51
|
*/
|
|
52
52
|
declare class ResponseDataError extends AMCError {}
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* Base error for session related issues
|
|
55
55
|
*/
|
|
56
56
|
declare class SessionError extends WikidotError {}
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
58
|
+
* Session creation failure error
|
|
59
|
+
* Thrown when a login attempt fails
|
|
60
60
|
*/
|
|
61
61
|
declare class SessionCreateError extends SessionError {}
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
63
|
+
* Login required error
|
|
64
|
+
* Thrown when an authenticated operation is attempted without login
|
|
65
65
|
*/
|
|
66
66
|
declare class LoginRequiredError extends SessionError {
|
|
67
67
|
constructor(message?: string);
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
70
|
+
* Resource not found error
|
|
71
|
+
* Thrown when the requested resource does not exist
|
|
72
72
|
*/
|
|
73
73
|
declare class NotFoundException extends WikidotError {}
|
|
74
74
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
75
|
+
* Resource already exists error
|
|
76
|
+
* Thrown when attempting to create a resource that already exists
|
|
77
77
|
*/
|
|
78
78
|
declare class TargetExistsError extends WikidotError {}
|
|
79
79
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
80
|
+
* Target state error
|
|
81
|
+
* Thrown when a resource is in an inoperable state (e.g., locked)
|
|
82
82
|
*/
|
|
83
83
|
declare class TargetError extends WikidotError {}
|
|
84
84
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
85
|
+
* Access denied error
|
|
86
|
+
* Thrown when an operation is denied due to insufficient permissions
|
|
87
87
|
*/
|
|
88
88
|
declare class ForbiddenError extends WikidotError {}
|
|
89
89
|
/**
|
|
90
|
-
* HTML
|
|
91
|
-
*
|
|
90
|
+
* HTML element not found error
|
|
91
|
+
* Thrown when a required element is not found during parsing
|
|
92
92
|
*/
|
|
93
93
|
declare class NoElementError extends WikidotError {}
|
|
94
94
|
export { WikidotStatusError, WikidotError, UnexpectedError, TargetExistsError, TargetError, SessionError, SessionCreateError, ResponseDataError, NotFoundException, NoElementError, LoginRequiredError, ForbiddenError, AMCHttpError, AMCError };
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,94 +1,94 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Wikidot
|
|
3
|
-
*
|
|
2
|
+
* Base error class for the Wikidot library
|
|
3
|
+
* All custom errors inherit from this class
|
|
4
4
|
*/
|
|
5
5
|
declare abstract class WikidotError extends Error {
|
|
6
|
-
/**
|
|
6
|
+
/** Error name */
|
|
7
7
|
readonly name: string;
|
|
8
8
|
/**
|
|
9
|
-
* @param message -
|
|
9
|
+
* @param message - Error message
|
|
10
10
|
*/
|
|
11
11
|
constructor(message: string);
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* Unexpected error
|
|
15
|
+
* Represents internal inconsistencies or bugs
|
|
16
16
|
*/
|
|
17
17
|
declare class UnexpectedError extends WikidotError {}
|
|
18
18
|
/**
|
|
19
|
-
* Ajax Module Connector
|
|
19
|
+
* Base error for Ajax Module Connector related issues
|
|
20
20
|
*/
|
|
21
21
|
declare class AMCError extends WikidotError {}
|
|
22
22
|
/**
|
|
23
|
-
* HTTP
|
|
24
|
-
* AMC
|
|
23
|
+
* HTTP status code error
|
|
24
|
+
* Thrown when an AMC request fails with an HTTP error
|
|
25
25
|
*/
|
|
26
26
|
declare class AMCHttpError extends AMCError {
|
|
27
|
-
/** HTTP
|
|
27
|
+
/** HTTP status code */
|
|
28
28
|
readonly statusCode: number;
|
|
29
29
|
/**
|
|
30
|
-
* @param message -
|
|
31
|
-
* @param statusCode - HTTP
|
|
30
|
+
* @param message - Error message
|
|
31
|
+
* @param statusCode - HTTP status code
|
|
32
32
|
*/
|
|
33
33
|
constructor(message: string, statusCode: number);
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* Wikidot
|
|
37
|
-
* AMC
|
|
36
|
+
* Wikidot status code error
|
|
37
|
+
* Thrown when AMC response status is not ok
|
|
38
38
|
*/
|
|
39
39
|
declare class WikidotStatusError extends AMCError {
|
|
40
|
-
/** Wikidot
|
|
40
|
+
/** Wikidot status code string */
|
|
41
41
|
readonly statusCode: string;
|
|
42
42
|
/**
|
|
43
|
-
* @param message -
|
|
44
|
-
* @param statusCode -
|
|
43
|
+
* @param message - Error message
|
|
44
|
+
* @param statusCode - Status code (e.g., 'not_ok', 'try_again')
|
|
45
45
|
*/
|
|
46
46
|
constructor(message: string, statusCode: string);
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
49
|
+
* Response data error
|
|
50
|
+
* Thrown when response parsing fails
|
|
51
51
|
*/
|
|
52
52
|
declare class ResponseDataError extends AMCError {}
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* Base error for session related issues
|
|
55
55
|
*/
|
|
56
56
|
declare class SessionError extends WikidotError {}
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
58
|
+
* Session creation failure error
|
|
59
|
+
* Thrown when a login attempt fails
|
|
60
60
|
*/
|
|
61
61
|
declare class SessionCreateError extends SessionError {}
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
63
|
+
* Login required error
|
|
64
|
+
* Thrown when an authenticated operation is attempted without login
|
|
65
65
|
*/
|
|
66
66
|
declare class LoginRequiredError extends SessionError {
|
|
67
67
|
constructor(message?: string);
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
70
|
+
* Resource not found error
|
|
71
|
+
* Thrown when the requested resource does not exist
|
|
72
72
|
*/
|
|
73
73
|
declare class NotFoundException extends WikidotError {}
|
|
74
74
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
75
|
+
* Resource already exists error
|
|
76
|
+
* Thrown when attempting to create a resource that already exists
|
|
77
77
|
*/
|
|
78
78
|
declare class TargetExistsError extends WikidotError {}
|
|
79
79
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
80
|
+
* Target state error
|
|
81
|
+
* Thrown when a resource is in an inoperable state (e.g., locked)
|
|
82
82
|
*/
|
|
83
83
|
declare class TargetError extends WikidotError {}
|
|
84
84
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
85
|
+
* Access denied error
|
|
86
|
+
* Thrown when an operation is denied due to insufficient permissions
|
|
87
87
|
*/
|
|
88
88
|
declare class ForbiddenError extends WikidotError {}
|
|
89
89
|
/**
|
|
90
|
-
* HTML
|
|
91
|
-
*
|
|
90
|
+
* HTML element not found error
|
|
91
|
+
* Thrown when a required element is not found during parsing
|
|
92
92
|
*/
|
|
93
93
|
declare class NoElementError extends WikidotError {}
|
|
94
94
|
export { WikidotStatusError, WikidotError, UnexpectedError, TargetExistsError, TargetError, SessionError, SessionCreateError, ResponseDataError, NotFoundException, NoElementError, LoginRequiredError, ForbiddenError, AMCHttpError, AMCError };
|
package/dist/errors.js
CHANGED
|
@@ -78,4 +78,4 @@ export {
|
|
|
78
78
|
};
|
|
79
79
|
|
|
80
80
|
//# debugId=3FBC6FD99D8F8B4264756E2164756E21
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2NvbW1vbi9lcnJvcnMvYmFzZS50cyIsICJzcmMvY29tbW9uL2Vycm9ycy9hbWMudHMiLCAic3JjL2NvbW1vbi9lcnJvcnMvc2Vzc2lvbi50cyIsICJzcmMvY29tbW9uL2Vycm9ycy90YXJnZXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLyoqXG4gKiBCYXNlIGVycm9yIGNsYXNzIGZvciB0aGUgV2lraWRvdCBsaWJyYXJ5XG4gKiBBbGwgY3VzdG9tIGVycm9ycyBpbmhlcml0IGZyb20gdGhpcyBjbGFzc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2lraWRvdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKiogRXJyb3IgbmFtZSAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpO1xuICB9XG59XG5cbi8qKlxuICogVW5leHBlY3RlZCBlcnJvclxuICogUmVwcmVzZW50cyBpbnRlcm5hbCBpbmNvbnNpc3RlbmNpZXMgb3IgYnVnc1xuICovXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZEVycm9yIGV4dGVuZHMgV2lraWRvdEVycm9yIHt9XG4iLAogICAgImltcG9ydCB7IFdpa2lkb3RFcnJvciB9IGZyb20gJy4vYmFzZSc7XG5cbi8qKlxuICogQmFzZSBlcnJvciBmb3IgQWpheCBNb2R1bGUgQ29ubmVjdG9yIHJlbGF0ZWQgaXNzdWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBBTUNFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIEhUVFAgc3RhdHVzIGNvZGUgZXJyb3JcbiAqIFRocm93biB3aGVuIGFuIEFNQyByZXF1ZXN0IGZhaWxzIHdpdGggYW4gSFRUUCBlcnJvclxuICovXG5leHBvcnQgY2xhc3MgQU1DSHR0cEVycm9yIGV4dGVuZHMgQU1DRXJyb3Ige1xuICAvKiogSFRUUCBzdGF0dXMgY29kZSAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIEVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHN0YXR1c0NvZGUgLSBIVFRQIHN0YXR1cyBjb2RlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1c0NvZGU6IG51bWJlcikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gIH1cbn1cblxuLyoqXG4gKiBXaWtpZG90IHN0YXR1cyBjb2RlIGVycm9yXG4gKiBUaHJvd24gd2hlbiBBTUMgcmVzcG9uc2Ugc3RhdHVzIGlzIG5vdCBva1xuICovXG5leHBvcnQgY2xhc3MgV2lraWRvdFN0YXR1c0Vycm9yIGV4dGVuZHMgQU1DRXJyb3Ige1xuICAvKiogV2lraWRvdCBzdGF0dXMgY29kZSBzdHJpbmcgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlXG4gICAqIEBwYXJhbSBzdGF0dXNDb2RlIC0gU3RhdHVzIGNvZGUgKGUuZy4sICdub3Rfb2snLCAndHJ5X2FnYWluJylcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRhdGEgZXJyb3JcbiAqIFRocm93biB3aGVuIHJlc3BvbnNlIHBhcnNpbmcgZmFpbHNcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc3BvbnNlRGF0YUVycm9yIGV4dGVuZHMgQU1DRXJyb3Ige31cbiIsCiAgICAiaW1wb3J0IHsgV2lraWRvdEVycm9yIH0gZnJvbSAnLi9iYXNlJztcblxuLyoqXG4gKiBCYXNlIGVycm9yIGZvciBzZXNzaW9uIHJlbGF0ZWQgaXNzdWVzXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXNzaW9uRXJyb3IgZXh0ZW5kcyBXaWtpZG90RXJyb3Ige31cblxuLyoqXG4gKiBTZXNzaW9uIGNyZWF0aW9uIGZhaWx1cmUgZXJyb3JcbiAqIFRocm93biB3aGVuIGEgbG9naW4gYXR0ZW1wdCBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgU2Vzc2lvbkNyZWF0ZUVycm9yIGV4dGVuZHMgU2Vzc2lvbkVycm9yIHt9XG5cbi8qKlxuICogTG9naW4gcmVxdWlyZWQgZXJyb3JcbiAqIFRocm93biB3aGVuIGFuIGF1dGhlbnRpY2F0ZWQgb3BlcmF0aW9uIGlzIGF0dGVtcHRlZCB3aXRob3V0IGxvZ2luXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dpblJlcXVpcmVkRXJyb3IgZXh0ZW5kcyBTZXNzaW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gJ0xvZ2luIGlzIHJlcXVpcmVkIGZvciB0aGlzIG9wZXJhdGlvbicpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgfVxufVxuIiwKICAgICJpbXBvcnQgeyBXaWtpZG90RXJyb3IgfSBmcm9tICcuL2Jhc2UnO1xuXG4vKipcbiAqIFJlc291cmNlIG5vdCBmb3VuZCBlcnJvclxuICogVGhyb3duIHdoZW4gdGhlIHJlcXVlc3RlZCByZXNvdXJjZSBkb2VzIG5vdCBleGlzdFxuICovXG5leHBvcnQgY2xhc3MgTm90Rm91bmRFeGNlcHRpb24gZXh0ZW5kcyBXaWtpZG90RXJyb3Ige31cblxuLyoqXG4gKiBSZXNvdXJjZSBhbHJlYWR5IGV4aXN0cyBlcnJvclxuICogVGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBjcmVhdGUgYSByZXNvdXJjZSB0aGF0IGFscmVhZHkgZXhpc3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXRFeGlzdHNFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIFRhcmdldCBzdGF0ZSBlcnJvclxuICogVGhyb3duIHdoZW4gYSByZXNvdXJjZSBpcyBpbiBhbiBpbm9wZXJhYmxlIHN0YXRlIChlLmcuLCBsb2NrZWQpXG4gKi9cbmV4cG9ydCBjbGFzcyBUYXJnZXRFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuXG4vKipcbiAqIEFjY2VzcyBkZW5pZWQgZXJyb3JcbiAqIFRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBkZW5pZWQgZHVlIHRvIGluc3VmZmljaWVudCBwZXJtaXNzaW9uc1xuICovXG5leHBvcnQgY2xhc3MgRm9yYmlkZGVuRXJyb3IgZXh0ZW5kcyBXaWtpZG90RXJyb3Ige31cblxuLyoqXG4gKiBIVE1MIGVsZW1lbnQgbm90IGZvdW5kIGVycm9yXG4gKiBUaHJvd24gd2hlbiBhIHJlcXVpcmVkIGVsZW1lbnQgaXMgbm90IGZvdW5kIGR1cmluZyBwYXJzaW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBOb0VsZW1lbnRFcnJvciBleHRlbmRzIFdpa2lkb3RFcnJvciB7fVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQUlPLE1BQWUscUJBQXFCLE1BQU07QUFBQSxFQUV0QjtBQUFBLEVBS3pCLFdBQVcsQ0FBQyxTQUFpQjtBQUFBLElBQzNCLE1BQU0sT0FBTztBQUFBLElBQ2IsS0FBSyxPQUFPLEtBQUssWUFBWTtBQUFBLElBQzdCLE9BQU8sZUFBZSxNQUFNLFdBQVcsU0FBUztBQUFBO0FBRXBEO0FBQUE7QUFNTyxNQUFNLHdCQUF3QixhQUFhO0FBQUM7OztBQ2pCNUMsTUFBTSxpQkFBaUIsYUFBYTtBQUFDO0FBQUE7QUFNckMsTUFBTSxxQkFBcUIsU0FBUztBQUFBLEVBRXpCO0FBQUEsRUFNaEIsV0FBVyxDQUFDLFNBQWlCLFlBQW9CO0FBQUEsSUFDL0MsTUFBTSxPQUFPO0FBQUEsSUFDYixLQUFLLGFBQWE7QUFBQTtBQUV0QjtBQUFBO0FBTU8sTUFBTSwyQkFBMkIsU0FBUztBQUFBLEVBRS9CO0FBQUEsRUFNaEIsV0FBVyxDQUFDLFNBQWlCLFlBQW9CO0FBQUEsSUFDL0MsTUFBTSxPQUFPO0FBQUEsSUFDYixLQUFLLGFBQWE7QUFBQTtBQUV0QjtBQUFBO0FBTU8sTUFBTSwwQkFBMEIsU0FBUztBQUFDOztBQzFDMUMsTUFBTSxxQkFBcUIsYUFBYTtBQUFDO0FBQUE7QUFNekMsTUFBTSwyQkFBMkIsYUFBYTtBQUFDO0FBQUE7QUFNL0MsTUFBTSwyQkFBMkIsYUFBYTtBQUFBLEVBQ25ELFdBQVcsQ0FBQyxVQUFVLHdDQUF3QztBQUFBLElBQzVELE1BQU0sT0FBTztBQUFBO0FBRWpCOztBQ2ZPLE1BQU0sMEJBQTBCLGFBQWE7QUFBQztBQUFBO0FBTTlDLE1BQU0sMEJBQTBCLGFBQWE7QUFBQztBQUFBO0FBTTlDLE1BQU0sb0JBQW9CLGFBQWE7QUFBQztBQUFBO0FBTXhDLE1BQU0sdUJBQXVCLGFBQWE7QUFBQztBQUFBO0FBTTNDLE1BQU0sdUJBQXVCLGFBQWE7QUFBQzsiLAogICJkZWJ1Z0lkIjogIjNGQkM2RkQ5OUQ4RjhCNDI2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|