skapi-js 1.2.14-beta.3 → 1.2.14-beta.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.
Files changed (92) hide show
  1. package/dist/bundle-report-commonjs.html +2 -2
  2. package/dist/bundle-report-esm.html +2 -2
  3. package/dist/bundle-report-node-esm.html +2 -2
  4. package/dist/bundle-report.html +2 -2
  5. package/dist/skapi.cjs +1 -1
  6. package/dist/skapi.cjs.map +1 -1
  7. package/dist/skapi.js +1 -1
  8. package/dist/skapi.js.map +1 -1
  9. package/dist/skapi.mjs +1 -1
  10. package/dist/skapi.mjs.map +1 -1
  11. package/dist/skapi.node.mjs +1 -1
  12. package/dist/skapi.node.mjs.map +1 -1
  13. package/js/package.json +6 -5
  14. package/js/src/Types.d.ts +40 -2
  15. package/js/src/main/skapi.d.ts +41 -29
  16. package/js/src/main/skapi.js +48 -60
  17. package/js/src/main/skapi.js.map +1 -1
  18. package/js/src/methods/admin.d.ts +2 -4
  19. package/js/src/methods/database.d.ts +8 -0
  20. package/js/src/methods/database.js +285 -8
  21. package/js/src/methods/database.js.map +1 -1
  22. package/js/src/methods/param_restrictions.d.ts +8 -4
  23. package/js/src/methods/param_restrictions.js +72 -6
  24. package/js/src/methods/param_restrictions.js.map +1 -1
  25. package/js/src/methods/request.js +1 -1
  26. package/js/src/methods/request.js.map +1 -1
  27. package/js/src/methods/subscription.d.ts +0 -6
  28. package/js/src/methods/subscription.js +0 -28
  29. package/js/src/methods/subscription.js.map +1 -1
  30. package/js/src/methods/vivian.d.ts +18 -3
  31. package/js/src/methods/vivian.js +20 -10
  32. package/js/src/methods/vivian.js.map +1 -1
  33. package/js/src/utils/network.js +16 -11
  34. package/js/src/utils/network.js.map +1 -1
  35. package/js/src/utils/utils.d.ts +3 -1
  36. package/js/src/utils/utils.js +15 -3
  37. package/js/src/utils/utils.js.map +1 -1
  38. package/package.json +6 -5
  39. package/js/Main.d.ts +0 -6
  40. package/js/Main.js +0 -6
  41. package/js/Main.js.map +0 -1
  42. package/js/Types.d.ts +0 -305
  43. package/js/Types.js +0 -2
  44. package/js/Types.js.map +0 -1
  45. package/js/main/error.d.ts +0 -9
  46. package/js/main/error.js +0 -46
  47. package/js/main/error.js.map +0 -1
  48. package/js/main/skapi.d.ts +0 -443
  49. package/js/main/skapi.js +0 -853
  50. package/js/main/skapi.js.map +0 -1
  51. package/js/methods/admin.d.ts +0 -61
  52. package/js/methods/admin.js +0 -325
  53. package/js/methods/admin.js.map +0 -1
  54. package/js/methods/database.d.ts +0 -65
  55. package/js/methods/database.js +0 -947
  56. package/js/methods/database.js.map +0 -1
  57. package/js/methods/notification.d.ts +0 -21
  58. package/js/methods/notification.js +0 -81
  59. package/js/methods/notification.js.map +0 -1
  60. package/js/methods/param_restrictions.d.ts +0 -21
  61. package/js/methods/param_restrictions.js +0 -144
  62. package/js/methods/param_restrictions.js.map +0 -1
  63. package/js/methods/realtime.d.ts +0 -35
  64. package/js/methods/realtime.js +0 -408
  65. package/js/methods/realtime.js.map +0 -1
  66. package/js/methods/request.d.ts +0 -43
  67. package/js/methods/request.js +0 -132
  68. package/js/methods/request.js.map +0 -1
  69. package/js/methods/subscription.d.ts +0 -53
  70. package/js/methods/subscription.js +0 -337
  71. package/js/methods/subscription.js.map +0 -1
  72. package/js/methods/user.d.ts +0 -176
  73. package/js/methods/user.js +0 -1120
  74. package/js/methods/user.js.map +0 -1
  75. package/js/methods/vivian.d.ts +0 -3
  76. package/js/methods/vivian.js +0 -36
  77. package/js/methods/vivian.js.map +0 -1
  78. package/js/methods/webrtc.d.ts +0 -26
  79. package/js/methods/webrtc.js +0 -608
  80. package/js/methods/webrtc.js.map +0 -1
  81. package/js/polyfills/global.d.ts +0 -3
  82. package/js/polyfills/global.js +0 -235
  83. package/js/polyfills/global.js.map +0 -1
  84. package/js/utils/network.d.ts +0 -24
  85. package/js/utils/network.js +0 -707
  86. package/js/utils/network.js.map +0 -1
  87. package/js/utils/utils.d.ts +0 -40
  88. package/js/utils/utils.js +0 -651
  89. package/js/utils/utils.js.map +0 -1
  90. package/js/utils/validator.d.ts +0 -24
  91. package/js/utils/validator.js +0 -293
  92. package/js/utils/validator.js.map +0 -1
@@ -1,408 +0,0 @@
1
- import SkapiError from '../main/error';
2
- import validator from '../utils/validator';
3
- import { extractFormData } from '../utils/utils';
4
- import { request } from '../utils/network';
5
- import { answerSdpOffer, receiveIceCandidate, __peerConnection, __receiver_ringing, closeRTC, respondRTC, __caller_ringing } from './webrtc';
6
- import { getJwtToken } from './user';
7
- let __current_socket_room;
8
- let __keepAliveInterval = null;
9
- let closedByIntention = true;
10
- let reconnectAttempts = 0;
11
- async function prepareWebsocket() {
12
- if (typeof window === 'undefined' || window._runningInNodeJS) {
13
- throw new SkapiError('WebSocket is not supported in Node.js environment.', { code: 'NOT_SUPPORTED' });
14
- }
15
- await this.getProfile();
16
- if (!this.session) {
17
- throw new SkapiError(`No access.`, { code: 'INVALID_REQUEST' });
18
- }
19
- let r = await this.record_endpoint;
20
- return new WebSocket(r.websocket_private + '?token=' + this.session.accessToken.jwtToken);
21
- }
22
- let visibilitychange = null;
23
- export async function closeRealtime() {
24
- if (typeof window === 'undefined' || window._runningInNodeJS) {
25
- throw new SkapiError('WebSocket is not supported in Node.js environment.', { code: 'NOT_SUPPORTED' });
26
- }
27
- closedByIntention = true;
28
- let socket = this.__socket ? await this.__socket : this.__socket;
29
- closeRTC.bind(this)({ close_all: true });
30
- if (__current_socket_room) {
31
- joinRealtime.bind(this)({ group: null });
32
- }
33
- reconnectAttempts = 0;
34
- if (__keepAliveInterval) {
35
- __keepAliveInterval.terminate();
36
- __keepAliveInterval = null;
37
- }
38
- try {
39
- if (socket) {
40
- socket.close();
41
- }
42
- }
43
- catch (e) { }
44
- window.removeEventListener('visibilitychange', visibilitychange);
45
- this.__socket = null;
46
- return null;
47
- }
48
- export async function connectRealtime(cb, delay = 50, reconnect) {
49
- if (typeof window === 'undefined' || window._runningInNodeJS) {
50
- throw new SkapiError('WebSocket is not supported in Node.js environment.', { code: 'NOT_SUPPORTED' });
51
- }
52
- if (typeof cb !== 'function') {
53
- throw new SkapiError(`Callback must be a function.`, { code: 'INVALID_REQUEST' });
54
- }
55
- if (reconnect === 'reconnect') {
56
- if (this.__socket instanceof Promise) {
57
- let socket = await this.__socket;
58
- if (socket.readyState !== WebSocket.CLOSED && socket.readyState !== WebSocket.CLOSING) {
59
- return this.__socket;
60
- }
61
- }
62
- }
63
- else if (closedByIntention) {
64
- visibilitychange = () => {
65
- if (!document.hidden && !closedByIntention) {
66
- connectRealtime.bind(this)(cb, 0, 'reconnect');
67
- }
68
- };
69
- if (this.__socket instanceof Promise) {
70
- return this.__socket;
71
- }
72
- }
73
- if (__keepAliveInterval) {
74
- __keepAliveInterval.terminate();
75
- __keepAliveInterval = null;
76
- }
77
- this.__socket = new Promise(async (resolve) => {
78
- await getJwtToken.bind(this)();
79
- setTimeout(async () => {
80
- let socket = await prepareWebsocket.bind(this)();
81
- socket.onopen = () => {
82
- closedByIntention = false;
83
- reconnectAttempts = 0;
84
- if (reconnect !== 'reconnect') {
85
- window.addEventListener('visibilitychange', visibilitychange);
86
- }
87
- this.log('realtime onopen', 'Connected to WebSocket server.');
88
- cb({ type: 'success', message: 'Connected to WebSocket server.' });
89
- if (__current_socket_room) {
90
- socket.send(JSON.stringify({
91
- action: 'joinRoom',
92
- rid: __current_socket_room,
93
- token: this.session.accessToken.jwtToken
94
- }));
95
- }
96
- const workerScript = `
97
- let interval = 15000; // Set interval time 15 seconds
98
-
99
- function runInterval() {
100
- postMessage({ type: "ping" });
101
- setTimeout(runInterval, interval); // Use setTimeout instead of setInterval
102
- }
103
-
104
- runInterval(); // Start interval
105
- `;
106
- const blob = new Blob([workerScript], { type: "application/javascript" });
107
- __keepAliveInterval = new Worker(URL.createObjectURL(blob));
108
- __keepAliveInterval.onmessage = (event) => {
109
- if (socket.readyState === 1) {
110
- socket.send(JSON.stringify({
111
- action: 'keepAlive'
112
- }));
113
- }
114
- };
115
- resolve(socket);
116
- };
117
- socket.onmessage = async (event) => {
118
- let data = '';
119
- try {
120
- data = JSON.parse(decodeURI(event.data));
121
- this.log('socket onmessage', data);
122
- }
123
- catch (e) {
124
- return;
125
- }
126
- let type;
127
- switch (true) {
128
- case !!data?.['#message']:
129
- type = 'message';
130
- break;
131
- case !!data?.['#private']:
132
- type = 'private';
133
- break;
134
- case !!data?.['#notice']:
135
- type = 'notice';
136
- break;
137
- case !!data?.['#rtc']:
138
- type = 'rtc';
139
- break;
140
- case !!data?.['#error']:
141
- type = 'error';
142
- break;
143
- }
144
- if (!type) {
145
- return;
146
- }
147
- let msg = {
148
- type,
149
- message: data?.['#rtc'] || data?.['#message'] || data?.['#private'] || data?.['#notice'] || data?.['#error'] || null,
150
- sender: data?.['#user_id'] || null,
151
- sender_cid: !!data?.['#scid'] ? "cid:" + data['#scid'] : null,
152
- sender_rid: data?.['#srid'] || null,
153
- code: data?.['#code'] || null
154
- };
155
- if (type === 'notice') {
156
- cb(msg);
157
- }
158
- else if (type === 'rtc') {
159
- if (msg.sender !== this.user.user_id) {
160
- let rtc = msg.message;
161
- if (rtc.hungup) {
162
- if (__caller_ringing[msg.sender_cid]) {
163
- __caller_ringing[msg.sender_cid](false);
164
- delete __caller_ringing[msg.sender_cid];
165
- }
166
- if (__receiver_ringing[msg.sender_cid]) {
167
- delete __receiver_ringing[msg.sender_cid];
168
- }
169
- if (__peerConnection?.[msg.sender_cid]) {
170
- closeRTC.bind(this)({ cid: msg.sender_cid });
171
- }
172
- msg.type = 'rtc:closed';
173
- cb(msg);
174
- return;
175
- }
176
- if (rtc.candidate) {
177
- receiveIceCandidate.bind(this)(rtc.candidate, msg.sender_cid);
178
- }
179
- if (rtc.sdpoffer) {
180
- answerSdpOffer.bind(this)(rtc.sdpoffer, msg.sender_cid);
181
- if (!__receiver_ringing[msg.sender_cid]) {
182
- __receiver_ringing[msg.sender_cid] = msg.sender_cid;
183
- delete msg.message;
184
- msg.connectRTC = respondRTC.bind(this)(msg);
185
- msg.type = 'rtc:incoming';
186
- msg.hangup = (() => {
187
- if (__peerConnection[msg.sender_cid]) {
188
- closeRTC.bind(this)({ cid: msg.sender_cid });
189
- }
190
- else if (__receiver_ringing[msg.sender_cid]) {
191
- delete __receiver_ringing[msg.sender_cid];
192
- socket.send(JSON.stringify({
193
- action: 'rtc',
194
- uid: msg.sender_cid,
195
- content: { hungup: this.user.user_id },
196
- token: this.session.accessToken.jwtToken
197
- }));
198
- }
199
- }).bind(this);
200
- cb(msg);
201
- }
202
- }
203
- if (rtc.pickup) {
204
- if (__caller_ringing[msg.sender_cid]) {
205
- __caller_ringing[msg.sender_cid](true);
206
- delete __caller_ringing[msg.sender_cid];
207
- }
208
- }
209
- if (rtc.sdpanswer) {
210
- if (__peerConnection[msg.sender_cid]) {
211
- if (__peerConnection[msg.sender_cid].signalingState === 'have-local-offer') {
212
- await __peerConnection[msg.sender_cid].setRemoteDescription(new RTCSessionDescription(rtc.sdpanswer));
213
- }
214
- else {
215
- throw new SkapiError(`Invalid signaling state.`, { code: 'INVALID_REQUEST' });
216
- }
217
- }
218
- }
219
- }
220
- }
221
- else {
222
- cb(msg);
223
- }
224
- };
225
- socket.onclose = () => {
226
- if (closedByIntention) {
227
- this.log('realtime onclose', 'WebSocket connection closed.');
228
- cb({ type: 'close', message: 'WebSocket connection closed.' });
229
- }
230
- else {
231
- this.log('realtime onclose', 'WebSocket unexpected close.');
232
- cb({ type: 'error', message: 'Skapi: WebSocket unexpected close.' });
233
- reconnectAttempts++;
234
- if (reconnectAttempts < 3) {
235
- this.log('realtime onclose', 'Reconnecting to WebSocket server...' + reconnectAttempts);
236
- cb({ type: 'reconnect', message: 'Reconnecting to WebSocket server...' + reconnectAttempts });
237
- connectRealtime.bind(this)(cb, 3000, 'reconnect');
238
- }
239
- else {
240
- this.log('realtime onclose', 'Max reconnection attempts reached.');
241
- cb({ type: 'error', message: 'Skapi: Max reconnection attempts reached.' });
242
- }
243
- }
244
- };
245
- socket.onerror = () => {
246
- this.log('realtime onerror', 'WebSocket connection error.');
247
- cb({ type: 'error', message: 'Skapi: WebSocket connection error.' });
248
- };
249
- }, delay);
250
- });
251
- }
252
- export async function postRealtime(message, recipient, notification) {
253
- if (typeof window === 'undefined' || window._runningInNodeJS) {
254
- throw new SkapiError('WebSocket is not supported in Node.js environment.', { code: 'NOT_SUPPORTED' });
255
- }
256
- let socket = this.__socket ? await this.__socket : this.__socket;
257
- if (!socket) {
258
- throw new SkapiError(`No realtime connection. Execute connectRealtime() before this method.`, { code: 'INVALID_REQUEST' });
259
- }
260
- if (!recipient) {
261
- throw new SkapiError(`No recipient.`, { code: 'INVALID_REQUEST' });
262
- }
263
- await getJwtToken.bind(this)();
264
- message = extractFormData(message).data;
265
- let notificationStr = '';
266
- if (notification) {
267
- notification = validator.Params(notification, {
268
- config: {
269
- always: 'boolean'
270
- },
271
- title: 'string',
272
- body: 'string'
273
- }, ['title', 'body']);
274
- notificationStr = JSON.stringify({ title: notification.title, body: notification.body });
275
- let notificationSize = new Blob([notificationStr]).size;
276
- if (notificationSize > 3072) {
277
- throw new SkapiError(`Notification size exceeds 3kb.`, { code: 'INVALID_PARAMETER' });
278
- }
279
- }
280
- if (socket.readyState === 1) {
281
- try {
282
- validator.UserId(recipient);
283
- socket.send(JSON.stringify({
284
- action: 'sendMessage',
285
- uid: recipient,
286
- content: message,
287
- notification: notificationStr,
288
- notificationConfig: notification?.config || {},
289
- token: `IdT:${this.service}:${this.owner}:` + (this.bearerToken || this.session?.idToken?.jwtToken || 'null')
290
- }));
291
- }
292
- catch (err) {
293
- this.log('postRealtime:err', { err });
294
- if (__current_socket_room !== recipient) {
295
- throw new SkapiError(`User has not joined to the recipient group. Run joinRealtime({ group: "${recipient}" })`, { code: 'INVALID_REQUEST' });
296
- }
297
- socket.send(JSON.stringify({
298
- action: 'broadcast',
299
- rid: recipient,
300
- content: message,
301
- notification: notificationStr,
302
- notificationConfig: notification?.config || {},
303
- token: `IdT:${this.service}:${this.owner}:` + (this.bearerToken || this.session?.idToken?.jwtToken || 'null')
304
- }));
305
- }
306
- return { type: 'success', message: 'Message sent.' };
307
- }
308
- throw new SkapiError('Realtime connection is not open. Try reconnecting with connectRealtime().', { code: 'INVALID_REQUEST' });
309
- }
310
- export async function joinRealtime(params) {
311
- if (typeof window === 'undefined' || window._runningInNodeJS) {
312
- throw new SkapiError('WebSocket is not supported in Node.js environment.', { code: 'NOT_SUPPORTED' });
313
- }
314
- let socket = this.__socket ? await this.__socket : this.__socket;
315
- if (!socket) {
316
- throw new SkapiError(`No realtime connection. Execute connectRealtime() before this method.`, { code: 'INVALID_REQUEST' });
317
- }
318
- await getJwtToken.bind(this)();
319
- params = extractFormData(params, { nullIfEmpty: true }).data;
320
- let { group = null } = params;
321
- if (!group && !__current_socket_room) {
322
- return { type: 'success', message: 'Left realtime message group.' };
323
- }
324
- if (group !== null && typeof group !== 'string') {
325
- throw new SkapiError(`"group" must be a string | null.`, { code: 'INVALID_PARAMETER' });
326
- }
327
- socket.send(JSON.stringify({
328
- action: 'joinRoom',
329
- rid: group,
330
- token: this.session.accessToken.jwtToken
331
- }));
332
- __current_socket_room = group;
333
- return { type: 'success', message: group ? `Joined realtime message group: "${group}".` : 'Left realtime message group.' };
334
- }
335
- export async function getRealtimeUsers(params, fetchOptions) {
336
- params = validator.Params(params, {
337
- user_id: (v) => validator.UserId(v, 'User ID in "user_id"'),
338
- group: ['string', () => {
339
- if (!__current_socket_room) {
340
- throw new SkapiError(`No group has been joined. Otherwise "group" is required.`, { code: 'INVALID_REQUEST' });
341
- }
342
- return __current_socket_room;
343
- }]
344
- });
345
- let res = await request.bind(this)('get-ws-group', params, {
346
- fetchOptions,
347
- auth: true,
348
- method: 'post'
349
- });
350
- res.list = res.list.map((v) => {
351
- let user_id = v.uid.split('#')[1];
352
- return {
353
- user_id,
354
- cid: "cid:" + v.cid
355
- };
356
- });
357
- return res;
358
- }
359
- export async function getRealtimeGroups(params, fetchOptions) {
360
- await this.__connection;
361
- if (!params) {
362
- params = { searchFor: 'group', value: ' ', condition: '>' };
363
- }
364
- params = validator.Params(params, {
365
- searchFor: ['group', 'number_of_users', () => 'group'],
366
- value: ['string', 'number', () => {
367
- if (params?.searchFor && params?.searchFor === 'number_of_users') {
368
- return 0;
369
- }
370
- return ' ';
371
- }],
372
- condition: ['>', '>=', '=', '<', '<=', '!=', 'gt', 'gte', 'eq', 'lt', 'lte', 'ne'],
373
- range: ['string', 'number']
374
- });
375
- if (!params.condition) {
376
- if (params.value === ' ' || !params.value) {
377
- params.condition = '>';
378
- }
379
- else {
380
- params.condition = '=';
381
- }
382
- }
383
- if (params.range && params.condition) {
384
- delete params.condition;
385
- }
386
- if (params.searchFor === 'number_of_users' && typeof params.value !== 'number') {
387
- throw new SkapiError(`"value" must be a number.`, { code: 'INVALID_PARAMETER' });
388
- }
389
- if (params.searchFor === 'group' && typeof params.value !== 'string') {
390
- throw new SkapiError(`"value" must be a string.`, { code: 'INVALID_PARAMETER' });
391
- }
392
- if (params.hasOwnProperty('range') && typeof params.range !== typeof params.value) {
393
- throw new SkapiError(`"range" must be a ${typeof params.value}.`, { code: 'INVALID_PARAMETER' });
394
- }
395
- let res = await request.bind(this)('get-ws-group', params, {
396
- fetchOptions,
397
- auth: true,
398
- method: 'post'
399
- });
400
- res.list = res.list.map((v) => {
401
- return {
402
- group: v.rid.split('#')[1],
403
- number_of_users: v.cnt
404
- };
405
- });
406
- return res;
407
- }
408
- //# sourceMappingURL=realtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/methods/realtime.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import { Form, ProgressCallback } from '../Types';
2
- export declare function clientSecretRequest(params: {
3
- url: string;
4
- clientSecretName: string;
5
- method: 'GET' | 'POST' | 'DELETE' | 'PUT';
6
- headers?: {
7
- [key: string]: string;
8
- };
9
- data?: {
10
- [key: string]: any;
11
- };
12
- params?: {
13
- [key: string]: string;
14
- };
15
- }): Promise<any>;
16
- export declare function sendInquiry(data: Form<{
17
- name: string;
18
- email: string;
19
- subject: string;
20
- message: string;
21
- }>): Promise<"SUCCESS: Inquiry has been sent.">;
22
- export declare function secureRequest<RequestParams = {
23
- url: string;
24
- data?: any;
25
- sync?: boolean;
26
- }, Response = {
27
- response: any;
28
- statusCode: number;
29
- url: string;
30
- }>(params: RequestParams[] | Form<RequestParams>, url?: string): Promise<Response | Response[]>;
31
- export declare function mock(data: Form<{
32
- [key: string]: any;
33
- } & {
34
- raise?: 'ERR_INVALID_REQUEST' | 'ERR_INVALID_PARAMETER' | 'SOMETHING_WENT_WRONG' | 'ERR_EXISTS' | 'ERR_NOT_EXISTS';
35
- }>, options?: {
36
- auth?: boolean;
37
- method?: string;
38
- responseType?: 'blob' | 'json' | 'text' | 'arrayBuffer' | 'formData' | 'document';
39
- contentType?: string;
40
- progress?: ProgressCallback;
41
- }): Promise<{
42
- [key: string]: any;
43
- }>;
@@ -1,132 +0,0 @@
1
- import SkapiError from '../main/error';
2
- import validator from '../utils/validator';
3
- import { request } from '../utils/network';
4
- import { extractFormData } from '../utils/utils';
5
- const hasFormData = typeof FormData !== 'undefined';
6
- const hasHTMLFormElement = typeof HTMLFormElement !== 'undefined';
7
- const hasSubmitEvent = typeof SubmitEvent !== 'undefined';
8
- export async function clientSecretRequest(params) {
9
- let hasSecret = false;
10
- let checkClientSecretPlaceholder = (v) => {
11
- for (let k in v) {
12
- if (typeof v[k] === 'string' && v[k].includes('$CLIENT_SECRET')) {
13
- hasSecret = true;
14
- break;
15
- }
16
- }
17
- };
18
- params = validator.Params(params, {
19
- url: (v) => {
20
- if (!v || typeof v !== 'string') {
21
- throw new SkapiError('"url" should be type: <string>.', { code: 'INVALID_PARAMETER' });
22
- }
23
- validator.Url(v);
24
- if (v.includes('$CLIENT_SECRET')) {
25
- hasSecret = true;
26
- }
27
- return v;
28
- },
29
- clientSecretName: 'string',
30
- method: (v) => {
31
- if (v && typeof v !== 'string') {
32
- throw new SkapiError('"method" should be either "GET" or "POST" or "DELETE" or "PUT".', { code: 'INVALID_PARAMETER' });
33
- }
34
- let lo = v.toLowerCase();
35
- if (lo !== 'get' && lo !== 'post' && lo !== 'delete' && lo !== 'put') {
36
- throw new SkapiError('"method" should be either "GET" or "POST" or "DELETE" or "PUT".', { code: 'INVALID_PARAMETER' });
37
- }
38
- return lo;
39
- },
40
- headers: (v) => {
41
- if (v && typeof v !== 'object') {
42
- throw new SkapiError('"headers" should be type: <object>.', { code: 'INVALID_PARAMETER' });
43
- }
44
- checkClientSecretPlaceholder(v);
45
- return v;
46
- },
47
- data: (v) => {
48
- if (v && typeof v !== 'object') {
49
- throw new SkapiError('"data" should be type: <object>.', { code: 'INVALID_PARAMETER' });
50
- }
51
- checkClientSecretPlaceholder(v);
52
- return v;
53
- },
54
- params: (v) => {
55
- if (v && typeof v !== 'object') {
56
- throw new SkapiError('"params" should be type: <object>.', { code: 'INVALID_PARAMETER' });
57
- }
58
- checkClientSecretPlaceholder(v);
59
- return v;
60
- }
61
- }, ['clientSecretName', 'method', 'url']);
62
- if (!hasSecret) {
63
- throw new SkapiError(`At least one parameter value should include "$CLIENT_SECRET" in ${params.method.toLowerCase() === 'post' ? '"data"' : '"params"'} or "headers".`, { code: 'INVALID_PARAMETER' });
64
- }
65
- await this.__connection;
66
- let auth = !!this.__user;
67
- return request.bind(this)("client-secret-request" + (!auth ? '' : '-public'), params, { auth });
68
- }
69
- export async function sendInquiry(data) {
70
- await this.__connection;
71
- let params = {
72
- name: 'string',
73
- email: v => {
74
- validator.Email(v);
75
- return v;
76
- },
77
- subject: 'string',
78
- message: 'string'
79
- };
80
- data = validator.Params(data, params, [
81
- 'name',
82
- 'email',
83
- 'subject',
84
- 'message'
85
- ]);
86
- await request.bind(this)('send-inquiry', data);
87
- return 'SUCCESS: Inquiry has been sent.';
88
- }
89
- export async function secureRequest(params, url) {
90
- await this.__connection;
91
- if ((hasFormData && params instanceof FormData) || (hasHTMLFormElement && params instanceof HTMLFormElement) || (hasSubmitEvent && params instanceof SubmitEvent)) {
92
- if (!url) {
93
- throw new SkapiError('Url string as a second argument is required when form is passed.', { code: 'INVALID_PARAMETER' });
94
- }
95
- let formData = extractFormData(params);
96
- params = {
97
- url,
98
- data: formData.data,
99
- sync: true
100
- };
101
- }
102
- let paramsStruct = {
103
- url: (v) => {
104
- return validator.Url(v);
105
- },
106
- data: v => v,
107
- sync: ['boolean', () => true]
108
- };
109
- if (Array.isArray(params)) {
110
- for (let r of params) {
111
- r = validator.Params(r, paramsStruct);
112
- }
113
- }
114
- else {
115
- params = validator.Params(params, paramsStruct);
116
- }
117
- return request.bind(this)('post-secure', params, { auth: true });
118
- }
119
- ;
120
- export async function mock(data, options) {
121
- await this.__connection;
122
- let { auth = false, method = 'POST', bypassAwaitConnection = false, responseType, contentType, progress } = options || {};
123
- options = Object.assign({ auth, method, bypassAwaitConnection, responseType, contentType }, {
124
- fetchOptions: { progress }
125
- });
126
- if (typeof data !== 'object' && (contentType === 'application/json' || contentType === undefined)) {
127
- throw new SkapiError('"data" should be type: <object>.', { code: 'INVALID_PARAMETER' });
128
- }
129
- return request.bind(this)('mock', data, options);
130
- }
131
- ;
132
- //# sourceMappingURL=request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/methods/request.ts"],"names":[],"mappings":"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"}