skapi-js 1.0.19 → 1.0.21
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/dist/skapi.js +1 -1
- package/dist/skapi.js.map +1 -1
- package/dist/skapi.module.js +1 -1
- package/dist/skapi.module.js.map +1 -1
- package/js/main/skapi.d.ts +11 -4
- package/js/main/skapi.js +8 -2
- package/js/methods/realtime.d.ts +13 -8
- package/js/methods/realtime.js +56 -5
- package/js/methods/request.js +0 -11
- package/package.json +1 -1
package/js/main/skapi.d.ts
CHANGED
|
@@ -40,18 +40,25 @@ export default class Skapi {
|
|
|
40
40
|
connectRealtime(cb: (rt: {
|
|
41
41
|
status: 'message' | 'error' | 'success' | 'close' | 'notice';
|
|
42
42
|
message: any;
|
|
43
|
-
|
|
43
|
+
sender?: string;
|
|
44
|
+
}) => Promise<WebSocket>): any;
|
|
44
45
|
closeRealtime(): Promise<void>;
|
|
45
46
|
getRealtimeUsers(params: {
|
|
46
47
|
group: string;
|
|
47
48
|
user_id?: string;
|
|
48
49
|
}, fetchOptions?: FetchOptions): Promise<DatabaseResponse<string[]>>;
|
|
50
|
+
getRealtimeGroups(params?: {
|
|
51
|
+
searchFor: 'group' | 'number_of_users';
|
|
52
|
+
value: string | number;
|
|
53
|
+
condition?: '>' | '>=' | '=' | '<' | '<=' | '!=' | 'gt' | 'gte' | 'eq' | 'lt' | 'lte' | 'ne';
|
|
54
|
+
range?: string | number;
|
|
55
|
+
} | null, fetchOptions?: FetchOptions): Promise<DatabaseResponse<{
|
|
56
|
+
group: string;
|
|
57
|
+
number_of_users: number;
|
|
58
|
+
}>>;
|
|
49
59
|
postRealtime(message: any, recipient: string): Promise<{
|
|
50
60
|
status: 'success';
|
|
51
61
|
message: 'Message sent.';
|
|
52
|
-
} | {
|
|
53
|
-
status: 'error';
|
|
54
|
-
message: 'Realtime connection is not open.';
|
|
55
62
|
}>;
|
|
56
63
|
joinRealtime(params: {
|
|
57
64
|
group: string | null;
|
package/js/main/skapi.js
CHANGED
|
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import SkapiError from './error';
|
|
8
8
|
import validator from '../utils/validator';
|
|
9
9
|
import { getRecords, postRecord, deleteRecords, getTables, getIndexes, getTags, uploadFiles, getFile, grantPrivateRecordAccess, removePrivateRecordAccess, listPrivateRecordAccess, requestPrivateRecordAccessKey, deleteFiles, normalizeRecord } from '../methods/database';
|
|
10
|
-
import { connectRealtime, joinRealtime, postRealtime, closeRealtime, getRealtimeUsers } from '../methods/realtime';
|
|
10
|
+
import { connectRealtime, joinRealtime, postRealtime, closeRealtime, getRealtimeUsers, getRealtimeGroups } from '../methods/realtime';
|
|
11
11
|
import { request, secureRequest, mock, getFormResponse, formHandler, getConnection } from '../methods/request';
|
|
12
12
|
import { subscribe, unsubscribe, blockSubscriber, unblockSubscriber, getSubscriptions, subscribeNewsletter, getNewsletters, unsubscribeNewsletter, getNewsletterSubscription } from '../methods/subscription';
|
|
13
13
|
import { checkAdmin, getProfile, logout, recoverAccount, resendSignupConfirmation, authentication, login, signup, disableAccount, resetPassword, verifyEmail, verifyPhoneNumber, forgotPassword, changePassword, updateProfile, getUsers, setUserPool, userPool, lastVerifiedEmail, requestUsernameChange } from '../methods/user';
|
|
@@ -23,7 +23,7 @@ export default class Skapi {
|
|
|
23
23
|
set user(value) {
|
|
24
24
|
}
|
|
25
25
|
constructor(service, owner, options) {
|
|
26
|
-
this.version = '1.0.
|
|
26
|
+
this.version = '1.0.21';
|
|
27
27
|
this.session = null;
|
|
28
28
|
this.connection = null;
|
|
29
29
|
this.host = 'skapi';
|
|
@@ -200,6 +200,9 @@ export default class Skapi {
|
|
|
200
200
|
getRealtimeUsers(params, fetchOptions) {
|
|
201
201
|
return getRealtimeUsers.bind(this)(params, fetchOptions);
|
|
202
202
|
}
|
|
203
|
+
getRealtimeGroups(params, fetchOptions) {
|
|
204
|
+
return getRealtimeGroups.bind(this)(params, fetchOptions);
|
|
205
|
+
}
|
|
203
206
|
postRealtime(message, recipient) {
|
|
204
207
|
return postRealtime.bind(this)(message, recipient);
|
|
205
208
|
}
|
|
@@ -308,6 +311,9 @@ export default class Skapi {
|
|
|
308
311
|
__decorate([
|
|
309
312
|
formHandler()
|
|
310
313
|
], Skapi.prototype, "getRealtimeUsers", null);
|
|
314
|
+
__decorate([
|
|
315
|
+
formHandler()
|
|
316
|
+
], Skapi.prototype, "getRealtimeGroups", null);
|
|
311
317
|
__decorate([
|
|
312
318
|
formHandler()
|
|
313
319
|
], Skapi.prototype, "postRealtime", null);
|
package/js/methods/realtime.d.ts
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import { DatabaseResponse, FetchOptions } from '../Types';
|
|
2
|
-
type
|
|
2
|
+
type RealtimeCallback = (rt: {
|
|
3
3
|
status: 'message' | 'error' | 'success' | 'close' | 'notice';
|
|
4
|
-
message:
|
|
5
|
-
|
|
6
|
-
};
|
|
4
|
+
message: any;
|
|
5
|
+
sender?: string;
|
|
7
6
|
}) => void;
|
|
8
7
|
export declare function closeRealtime(): Promise<void>;
|
|
9
|
-
export declare function connectRealtime(cb:
|
|
8
|
+
export declare function connectRealtime(cb: RealtimeCallback, delay?: number): Promise<WebSocket>;
|
|
10
9
|
export declare function postRealtime(message: any, recipient: string): Promise<{
|
|
11
10
|
status: 'success';
|
|
12
11
|
message: 'Message sent.';
|
|
13
|
-
} | {
|
|
14
|
-
status: 'error';
|
|
15
|
-
message: 'Realtime connection is not open.';
|
|
16
12
|
}>;
|
|
17
13
|
export declare function joinRealtime(params: {
|
|
18
14
|
group?: string | null;
|
|
@@ -24,4 +20,13 @@ export declare function getRealtimeUsers(params: {
|
|
|
24
20
|
group: string;
|
|
25
21
|
user_id?: string;
|
|
26
22
|
}, fetchOptions?: FetchOptions): Promise<DatabaseResponse<string[]>>;
|
|
23
|
+
export declare function getRealtimeGroups(params?: {
|
|
24
|
+
searchFor: 'group' | 'number_of_users';
|
|
25
|
+
value?: string | number;
|
|
26
|
+
condition?: '>' | '>=' | '=' | '<' | '<=' | '!=' | 'gt' | 'gte' | 'eq' | 'lt' | 'lte' | 'ne';
|
|
27
|
+
range?: string | number;
|
|
28
|
+
} | null, fetchOptions?: FetchOptions): Promise<DatabaseResponse<{
|
|
29
|
+
group: string;
|
|
30
|
+
number_of_users: number;
|
|
31
|
+
}>>;
|
|
27
32
|
export {};
|
package/js/methods/realtime.js
CHANGED
|
@@ -43,12 +43,14 @@ export function connectRealtime(cb, delay = 0) {
|
|
|
43
43
|
};
|
|
44
44
|
socket.onmessage = event => {
|
|
45
45
|
let data = JSON.parse(decodeURI(event.data));
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
let ret = { status: 'message', message: data?.['#message'] || null };
|
|
47
|
+
if (data?.['#user_id']) {
|
|
48
|
+
ret.sender = data['#user_id'];
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
if (data?.['#notice']) {
|
|
51
|
+
Object.assign(ret, { status: 'notice', message: data['#notice'] });
|
|
51
52
|
}
|
|
53
|
+
cb(ret);
|
|
52
54
|
};
|
|
53
55
|
socket.onclose = event => {
|
|
54
56
|
if (event.wasClean) {
|
|
@@ -113,7 +115,7 @@ export async function postRealtime(message, recipient) {
|
|
|
113
115
|
}
|
|
114
116
|
return { status: 'success', message: 'Message sent.' };
|
|
115
117
|
}
|
|
116
|
-
|
|
118
|
+
throw new SkapiError('Realtime connection is not open. Try reconnecting with connectRealtime().', { code: 'INVALID_REQUEST' });
|
|
117
119
|
}
|
|
118
120
|
export async function joinRealtime(params) {
|
|
119
121
|
let socket = this.__socket ? await this.__socket : this.__socket;
|
|
@@ -157,3 +159,52 @@ export async function getRealtimeUsers(params, fetchOptions) {
|
|
|
157
159
|
}
|
|
158
160
|
return res;
|
|
159
161
|
}
|
|
162
|
+
export async function getRealtimeGroups(params, fetchOptions) {
|
|
163
|
+
await this.__connection;
|
|
164
|
+
if (!params) {
|
|
165
|
+
params = { searchFor: 'group' };
|
|
166
|
+
}
|
|
167
|
+
params = validator.Params(params, {
|
|
168
|
+
searchFor: ['group', 'number_of_users', () => 'group'],
|
|
169
|
+
value: ['string', 'number', () => {
|
|
170
|
+
if (params?.searchFor && params?.searchFor === 'number_of_users') {
|
|
171
|
+
return 0;
|
|
172
|
+
}
|
|
173
|
+
return ' ';
|
|
174
|
+
}],
|
|
175
|
+
condition: ['>', '>=', '=', '<', '<=', '!=', 'gt', 'gte', 'eq', 'lt', 'lte', 'ne'],
|
|
176
|
+
range: ['string', 'number']
|
|
177
|
+
});
|
|
178
|
+
if (!params.condition) {
|
|
179
|
+
if (params.value === ' ' || !params.value) {
|
|
180
|
+
params.condition = '>';
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
params.condition = '=';
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (params.range && params.condition) {
|
|
187
|
+
delete params.condition;
|
|
188
|
+
}
|
|
189
|
+
if (params.searchFor === 'number_of_users' && typeof params.value !== 'number') {
|
|
190
|
+
throw new SkapiError(`"value" must be a number.`, { code: 'INVALID_PARAMETER' });
|
|
191
|
+
}
|
|
192
|
+
if (params.searchFor === 'group' && typeof params.value !== 'string') {
|
|
193
|
+
throw new SkapiError(`"value" must be a string.`, { code: 'INVALID_PARAMETER' });
|
|
194
|
+
}
|
|
195
|
+
if (params.hasOwnProperty('range') && typeof params.range !== typeof params.value) {
|
|
196
|
+
throw new SkapiError(`"range" must be a ${typeof params.value}.`, { code: 'INVALID_PARAMETER' });
|
|
197
|
+
}
|
|
198
|
+
let res = await request.bind(this)('get-ws-group', params, {
|
|
199
|
+
fetchOptions,
|
|
200
|
+
auth: true,
|
|
201
|
+
method: 'post'
|
|
202
|
+
});
|
|
203
|
+
res.list = res.list.map((v) => {
|
|
204
|
+
return {
|
|
205
|
+
group: v.rid.split('#')[1],
|
|
206
|
+
number_of_users: v.cnt
|
|
207
|
+
};
|
|
208
|
+
});
|
|
209
|
+
return res;
|
|
210
|
+
}
|
package/js/methods/request.js
CHANGED
|
@@ -50,9 +50,6 @@ export async function request(url, data = null, options) {
|
|
|
50
50
|
switch (dest) {
|
|
51
51
|
case 'get-newsletters':
|
|
52
52
|
case 'get-public-newsletters':
|
|
53
|
-
case 'delete-newsletter':
|
|
54
|
-
case 'block-account':
|
|
55
|
-
case 'register-service':
|
|
56
53
|
case 'get-users':
|
|
57
54
|
case 'post-userdata':
|
|
58
55
|
case 'remove-account':
|
|
@@ -63,18 +60,11 @@ export async function request(url, data = null, options) {
|
|
|
63
60
|
case 'confirm-signup':
|
|
64
61
|
case 'recover-account':
|
|
65
62
|
case 'mock':
|
|
66
|
-
case 'get-services':
|
|
67
63
|
case 'service':
|
|
68
64
|
case 'grant-access':
|
|
69
65
|
case 'last-verified-email':
|
|
70
66
|
case 'get-newsletter-subscription':
|
|
71
67
|
case 'request-username-change':
|
|
72
|
-
case 'register-subdomain':
|
|
73
|
-
case 'list-host-directory':
|
|
74
|
-
case 'refresh-cdn':
|
|
75
|
-
case 'request-newsletter-sender':
|
|
76
|
-
case 'set-404':
|
|
77
|
-
case 'subdomain-info':
|
|
78
68
|
return {
|
|
79
69
|
public: admin.admin_public,
|
|
80
70
|
private: admin.admin_private
|
|
@@ -87,7 +77,6 @@ export async function request(url, data = null, options) {
|
|
|
87
77
|
case 'get-table':
|
|
88
78
|
case 'get-tag':
|
|
89
79
|
case 'get-index':
|
|
90
|
-
case 'storage-info':
|
|
91
80
|
case 'get-signed-url':
|
|
92
81
|
case 'grant-private-access':
|
|
93
82
|
case 'request-private-access-key':
|
package/package.json
CHANGED