@vkid/captcha 1.0.6-JETiT.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CODE_OF_CONDUCT.md +0 -0
  2. package/CODE_STYLE.md +188 -0
  3. package/LICENSE +4 -0
  4. package/README.md +7 -0
  5. package/dist/esm/constants.js +19 -0
  6. package/dist/esm/core/bridge/bridge.js +153 -0
  7. package/dist/esm/core/bridge/types.js +7 -0
  8. package/dist/esm/core/config/config.js +84 -0
  9. package/dist/esm/core/dispatcher/dispatcher.js +59 -0
  10. package/dist/esm/core/widget/constants.js +19 -0
  11. package/dist/esm/core/widget/events.js +22 -0
  12. package/dist/esm/core/widget/template.js +7 -0
  13. package/dist/esm/core/widget/types.js +26 -0
  14. package/dist/esm/core/widget/widget.js +406 -0
  15. package/dist/esm/index.js +10 -0
  16. package/dist/esm/lib/.pnpm/mitt@1.2.0/lib/mitt/dist/mitt.es.js +63 -0
  17. package/dist/esm/lib/.pnpm/nanoid@3.3.11/lib/nanoid/non-secure/index.js +12 -0
  18. package/dist/esm/types.js +7 -0
  19. package/dist/esm/utils/checkCaptchaError/checkCaptchaError.js +134 -0
  20. package/dist/esm/utils/checkCaptchaError/types.js +10 -0
  21. package/dist/esm/utils/checkCaptchaError/utils.js +11 -0
  22. package/dist/esm/utils/uuid.js +5 -0
  23. package/dist/types/constants.d.ts +17 -0
  24. package/dist/types/core/bridge/bridge.d.ts +10 -0
  25. package/dist/types/core/bridge/index.d.ts +3 -0
  26. package/dist/types/core/bridge/types.d.ts +15 -0
  27. package/dist/types/core/config/config.d.ts +8 -0
  28. package/dist/types/core/config/index.d.ts +2 -0
  29. package/dist/types/core/config/types.d.ts +6 -0
  30. package/dist/types/core/dispatcher/dispatcher.d.ts +6 -0
  31. package/dist/types/core/dispatcher/index.d.ts +1 -0
  32. package/dist/types/core/widget/constants.d.ts +2 -0
  33. package/dist/types/core/widget/events.d.ts +18 -0
  34. package/dist/types/core/widget/index.d.ts +3 -0
  35. package/dist/types/core/widget/template.d.ts +2 -0
  36. package/dist/types/core/widget/types.d.ts +97 -0
  37. package/dist/types/core/widget/widget.d.ts +86 -0
  38. package/dist/types/envConstants.d.ts +3 -0
  39. package/dist/types/index.d.ts +8 -0
  40. package/dist/types/loader.d.ts +1 -0
  41. package/dist/types/types.d.ts +8 -0
  42. package/dist/types/utils/action.d.ts +7 -0
  43. package/dist/types/utils/checkCaptchaError/checkCaptchaError.d.ts +2 -0
  44. package/dist/types/utils/checkCaptchaError/index.d.ts +2 -0
  45. package/dist/types/utils/checkCaptchaError/types.d.ts +59 -0
  46. package/dist/types/utils/checkCaptchaError/utils.d.ts +1 -0
  47. package/dist/types/utils/uuid.d.ts +1 -0
  48. package/dist/umd/index.js +1 -0
  49. package/package.json +95 -0
@@ -0,0 +1,406 @@
1
+ import { CAPTCHA_TYPE_2, VIEW_MODE_POPUP, LANGUAGE_ID_BY_CODE } from '../../constants.js';
2
+ import { Bridge } from '../bridge/bridge.js';
3
+ import { BridgeEvents } from '../bridge/types.js';
4
+ import { Config } from '../config/config.js';
5
+ import { Dispatcher } from '../dispatcher/dispatcher.js';
6
+ import { WebBridgeSensor } from '../../types.js';
7
+ import { uuid } from '../../utils/uuid.js';
8
+ import { WIDGET_ERROR_TEXT } from './constants.js';
9
+ import { WidgetEvents, CaptchaEvents } from './events.js';
10
+ import { getWidgetTemplate } from './template.js';
11
+ import { WidgetState, SensorsDataEventTypes, WidgetErrorCode } from './types.js';
12
+
13
+ function _assert_this_initialized(self) {
14
+ if (self === void 0) {
15
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
16
+ }
17
+ return self;
18
+ }
19
+ function _call_super(_this, derived, args) {
20
+ derived = _get_prototype_of(derived);
21
+ return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
22
+ }
23
+ function _class_call_check(instance, Constructor) {
24
+ if (!(instance instanceof Constructor)) {
25
+ throw new TypeError("Cannot call a class as a function");
26
+ }
27
+ }
28
+ function _defineProperties(target, props) {
29
+ for(var i = 0; i < props.length; i++){
30
+ var descriptor = props[i];
31
+ descriptor.enumerable = descriptor.enumerable || false;
32
+ descriptor.configurable = true;
33
+ if ("value" in descriptor) descriptor.writable = true;
34
+ Object.defineProperty(target, descriptor.key, descriptor);
35
+ }
36
+ }
37
+ function _create_class(Constructor, protoProps, staticProps) {
38
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
39
+ if (staticProps) _defineProperties(Constructor, staticProps);
40
+ return Constructor;
41
+ }
42
+ function _define_property(obj, key, value) {
43
+ if (key in obj) {
44
+ Object.defineProperty(obj, key, {
45
+ value: value,
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true
49
+ });
50
+ } else {
51
+ obj[key] = value;
52
+ }
53
+ return obj;
54
+ }
55
+ function _get_prototype_of(o) {
56
+ _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
57
+ return o.__proto__ || Object.getPrototypeOf(o);
58
+ };
59
+ return _get_prototype_of(o);
60
+ }
61
+ function _inherits(subClass, superClass) {
62
+ if (typeof superClass !== "function" && superClass !== null) {
63
+ throw new TypeError("Super expression must either be null or a function");
64
+ }
65
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
66
+ constructor: {
67
+ value: subClass,
68
+ writable: true,
69
+ configurable: true
70
+ }
71
+ });
72
+ if (superClass) _set_prototype_of(subClass, superClass);
73
+ }
74
+ function _possible_constructor_return(self, call) {
75
+ if (call && (_type_of(call) === "object" || typeof call === "function")) {
76
+ return call;
77
+ }
78
+ return _assert_this_initialized(self);
79
+ }
80
+ function _set_prototype_of(o, p) {
81
+ _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
82
+ o.__proto__ = p;
83
+ return o;
84
+ };
85
+ return _set_prototype_of(o, p);
86
+ }
87
+ function _type_of(obj) {
88
+ "@swc/helpers - typeof";
89
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
90
+ }
91
+ function _is_native_reflect_construct() {
92
+ try {
93
+ var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
94
+ } catch (_) {}
95
+ return (_is_native_reflect_construct = function() {
96
+ return !!result;
97
+ })();
98
+ }
99
+ // const MODULE_LOAD_TIMEOUT = 5000;
100
+ var MODULE_CHANGE_STATE_TIMEOUT = 300;
101
+ var Widget = /*#__PURE__*/ function(Dispatcher) {
102
+ _inherits(Widget, Dispatcher);
103
+ function Widget() {
104
+ var config = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
105
+ _class_call_check(this, Widget);
106
+ var _this;
107
+ _this = _call_super(this, Widget), /**
108
+ * @ignore
109
+ */ _define_property(_this, "id", uuid()), _define_property(_this, "scheme", void 0), _define_property(_this, "langId", void 0), _define_property(_this, "config", void 0), _define_property(_this, "timeoutTimer", void 0), _define_property(_this, "bridge", void 0), _define_property(_this, "container", void 0), _define_property(_this, "iframeSrc", void 0), _define_property(_this, "captchaType", void 0), _define_property(_this, "autofocus", void 0), _define_property(_this, "view", void 0), _define_property(_this, "onClose", void 0), _define_property(_this, "templateRenderer", getWidgetTemplate), _define_property(_this, "promise", void 0), _define_property(_this, "promiseResolve", void 0), _define_property(_this, "promiseReject", void 0), _define_property(_this, "elements", void 0), /**
110
+ * Получение координат айфрейма
111
+ */ _define_property(_this, "getIframeCoords", function() {
112
+ var _this_elements_iframe_getBoundingClientRect = _this.elements.iframe.getBoundingClientRect(), left = _this_elements_iframe_getBoundingClientRect.left, top = _this_elements_iframe_getBoundingClientRect.top;
113
+ var scrollX = window.scrollX, scrollY = window.scrollY;
114
+ return {
115
+ left: left + scrollX,
116
+ top: top + scrollY
117
+ };
118
+ }), /**
119
+ * Метод отправки данных движения мыши/событий касания через бридж
120
+ */ _define_property(_this, "sendSensorsData", function(param) {
121
+ var eventType = param.eventType, data = param.data;
122
+ _this.bridge.sendMessage({
123
+ handler: CaptchaEvents.SEND_WEB_SENSORS,
124
+ params: {
125
+ eventType: eventType,
126
+ data: data,
127
+ coords: _this.getIframeCoords()
128
+ }
129
+ });
130
+ }), /**
131
+ * Обработчик движения мыши
132
+ */ _define_property(_this, "handleMouseMove", function(event) {
133
+ var pageX = event.pageX, pageY = event.pageY;
134
+ _this.sendSensorsData({
135
+ eventType: SensorsDataEventTypes.MOUSE_CHANGE,
136
+ data: {
137
+ pageX: pageX,
138
+ pageY: pageY
139
+ }
140
+ });
141
+ }), /**
142
+ * Обработчик событий касания
143
+ */ _define_property(_this, "handleTouchMove", function(event) {
144
+ var touch = event.touches[0];
145
+ if (touch) {
146
+ var pageX = touch.pageX, pageY = touch.pageY;
147
+ _this.sendSensorsData({
148
+ eventType: SensorsDataEventTypes.TOUCH_CHANGE,
149
+ data: {
150
+ pageX: pageX,
151
+ pageY: pageY
152
+ }
153
+ });
154
+ }
155
+ });
156
+ _this.config = new Config().init(config);
157
+ return _this;
158
+ }
159
+ _create_class(Widget, [
160
+ {
161
+ key: "update",
162
+ value: function update(config) {
163
+ return this.config.update(config);
164
+ }
165
+ },
166
+ {
167
+ key: "show",
168
+ value: function show(params) {
169
+ var _this = this;
170
+ var container = params.container, iframeSrc = params.iframeSrc, captchaType = params.captchaType, view = params.view, autofocus = params.autofocus, scheme = params.scheme, lang = params.lang, onClose = params.onClose;
171
+ this.promise = new Promise(function(res, rej) {
172
+ _this.promiseResolve = res;
173
+ _this.promiseReject = rej;
174
+ });
175
+ this.container = container;
176
+ this.iframeSrc = iframeSrc;
177
+ this.view = captchaType === CAPTCHA_TYPE_2 ? VIEW_MODE_POPUP : view;
178
+ this.iframeSrc = iframeSrc;
179
+ this.captchaType = captchaType;
180
+ this.autofocus = autofocus !== null && autofocus !== void 0 ? autofocus : true;
181
+ this.scheme = scheme;
182
+ this.langId = lang ? LANGUAGE_ID_BY_CODE[lang] : undefined;
183
+ this.onClose = onClose;
184
+ this.renderTemplate();
185
+ this.registerElements();
186
+ this.loadWidgetFrame();
187
+ return this.promise;
188
+ }
189
+ },
190
+ {
191
+ key: "close",
192
+ value: function close() {
193
+ var _this_elements_root, _this_elements, _this_bridge, _this_promiseReject, _this, _this_onClose, _this1;
194
+ clearTimeout(this.timeoutTimer);
195
+ this.removeAnalyticsMouseListeners();
196
+ this.removeAnalyticsTouchListeners();
197
+ (_this_elements = this.elements) === null || _this_elements === void 0 ? void 0 : (_this_elements_root = _this_elements.root) === null || _this_elements_root === void 0 ? void 0 : _this_elements_root.remove();
198
+ (_this_bridge = this.bridge) === null || _this_bridge === void 0 ? void 0 : _this_bridge.destroy();
199
+ this.events.emit(WidgetEvents.CLOSE);
200
+ (_this_promiseReject = (_this = this).promiseReject) === null || _this_promiseReject === void 0 ? void 0 : _this_promiseReject.call(_this, 'close');
201
+ (_this_onClose = (_this1 = this).onClose) === null || _this_onClose === void 0 ? void 0 : _this_onClose.call(_this1);
202
+ }
203
+ },
204
+ {
205
+ key: "addAnalyticsMouseListeners",
206
+ value: /**
207
+ * Метод вызывается для регистрации обработчиков движения мыши
208
+ */ function addAnalyticsMouseListeners() {
209
+ document.addEventListener('mouseenter', this.handleMouseMove);
210
+ document.addEventListener('mouseleave', this.handleMouseMove);
211
+ document.addEventListener('mousemove', this.handleMouseMove);
212
+ }
213
+ },
214
+ {
215
+ key: "removeAnalyticsMouseListeners",
216
+ value: /**
217
+ * Метод вызывается для удаления обработчиков движения мыши
218
+ */ function removeAnalyticsMouseListeners() {
219
+ document.removeEventListener('mouseenter', this.handleMouseMove);
220
+ document.removeEventListener('mouseleave', this.handleMouseMove);
221
+ document.removeEventListener('mousemove', this.handleMouseMove);
222
+ }
223
+ },
224
+ {
225
+ key: "addAnalyticsTouchListeners",
226
+ value: /**
227
+ * Метод вызывается для регистрации обработчиков событий касания
228
+ */ function addAnalyticsTouchListeners() {
229
+ document.addEventListener('touchstart', this.handleTouchMove);
230
+ document.addEventListener('touchend', this.handleTouchMove);
231
+ document.addEventListener('touchmove', this.handleTouchMove);
232
+ }
233
+ },
234
+ {
235
+ key: "removeAnalyticsTouchListeners",
236
+ value: /**
237
+ * Метод вызывается для удаления обработчиков событий касания
238
+ */ function removeAnalyticsTouchListeners() {
239
+ document.removeEventListener('touchstart', this.handleTouchMove);
240
+ document.removeEventListener('touchend', this.handleTouchMove);
241
+ document.removeEventListener('touchmove', this.handleTouchMove);
242
+ }
243
+ },
244
+ {
245
+ key: "onLoadHandler",
246
+ value: /**
247
+ * Метод вызывается перед началом загрузки iframe с VK ID приложением
248
+ */ // protected onStartLoadHandler() {
249
+ // this.setState(WidgetState.LOADING);
250
+ // this.timeoutTimer = setTimeout(() => {
251
+ // this.onErrorHandler({
252
+ // code: WidgetErrorCode.TimeoutExceeded,
253
+ // text: WIDGET_ERROR_TEXT[WidgetErrorCode.TimeoutExceeded],
254
+ // });
255
+ // }, MODULE_LOAD_TIMEOUT);
256
+ // this.events.emit(WidgetEvents.START_LOAD);
257
+ // }
258
+ /**
259
+ * Метод вызывается после того, как полностью загружен iframe с VK ID приложением
260
+ */ function onLoadHandler() {
261
+ var _this = this;
262
+ clearTimeout(this.timeoutTimer);
263
+ setTimeout(function() {
264
+ // Задержка избавляет от моргания замены шаблона на iframe
265
+ _this.setState(WidgetState.LOADED);
266
+ }, MODULE_CHANGE_STATE_TIMEOUT);
267
+ this.events.emit(WidgetEvents.LOAD);
268
+ }
269
+ },
270
+ {
271
+ key: "onErrorHandler",
272
+ value: /**
273
+ * Метод вызывается, когда во время работы/загрузки VK ID приложения произошла ошибка
274
+ */ function onErrorHandler(error) {
275
+ var _this_elements_iframe, _this_elements, _this_promiseReject, _this;
276
+ clearTimeout(this.timeoutTimer);
277
+ this.setState(WidgetState.NOT_LOADED);
278
+ this.events.emit(WidgetEvents.ERROR, error);
279
+ (_this_elements = this.elements) === null || _this_elements === void 0 ? void 0 : (_this_elements_iframe = _this_elements.iframe) === null || _this_elements_iframe === void 0 ? void 0 : _this_elements_iframe.remove();
280
+ (_this_promiseReject = (_this = this).promiseReject) === null || _this_promiseReject === void 0 ? void 0 : _this_promiseReject.call(_this, error.text);
281
+ }
282
+ },
283
+ {
284
+ key: "onBridgeMessageHandler",
285
+ value: /**
286
+ * Метод вызывается при сообщениях от VK ID приложения
287
+ */ function onBridgeMessageHandler(event) {
288
+ switch(event.handler){
289
+ case WidgetEvents.LOAD:
290
+ {
291
+ this.onLoadHandler();
292
+ break;
293
+ }
294
+ case CaptchaEvents.CLOSE:
295
+ case WidgetEvents.CLOSE:
296
+ {
297
+ this.close();
298
+ break;
299
+ }
300
+ case WidgetEvents.ERROR:
301
+ {
302
+ this.onErrorHandler({
303
+ code: WidgetErrorCode.InternalError,
304
+ text: WIDGET_ERROR_TEXT[WidgetErrorCode.InternalError],
305
+ details: event.params
306
+ });
307
+ break;
308
+ }
309
+ case WidgetEvents.RESIZE:
310
+ {
311
+ this.elements.root.style.height = "".concat(event.params.height, "px");
312
+ break;
313
+ }
314
+ case CaptchaEvents.GET_RESULT:
315
+ {
316
+ var successToken = event.params.token;
317
+ this.promiseResolve(successToken);
318
+ break;
319
+ }
320
+ case CaptchaEvents.SENSORS_START:
321
+ {
322
+ var _event_params = event.params, sensorsList = _event_params.bridge_sensors_list;
323
+ var isCursorSensorRequired = sensorsList.includes(WebBridgeSensor.CURSOR);
324
+ var isTapsSensorRequired = sensorsList.includes(WebBridgeSensor.TAPS);
325
+ if (isCursorSensorRequired || isTapsSensorRequired) {
326
+ this.sendSensorsData({
327
+ eventType: SensorsDataEventTypes.INIT
328
+ });
329
+ }
330
+ if (isCursorSensorRequired) {
331
+ this.addAnalyticsMouseListeners();
332
+ }
333
+ if (isTapsSensorRequired) {
334
+ this.addAnalyticsTouchListeners();
335
+ }
336
+ break;
337
+ }
338
+ case CaptchaEvents.SENSORS_STOP:
339
+ {
340
+ this.removeAnalyticsMouseListeners();
341
+ this.removeAnalyticsTouchListeners();
342
+ break;
343
+ }
344
+ }
345
+ }
346
+ },
347
+ {
348
+ key: "renderTemplate",
349
+ value: // <Дополнительные хелперы>
350
+ function renderTemplate() {
351
+ this.container.insertAdjacentHTML('beforeend', this.templateRenderer(this.id, this.view));
352
+ }
353
+ },
354
+ {
355
+ key: "loadWidgetFrame",
356
+ value: function loadWidgetFrame() {
357
+ var _this = this;
358
+ // this.onStartLoadHandler();
359
+ var iframeSrc = new URL(this.iframeSrc);
360
+ this.bridge = new Bridge({
361
+ iframe: this.elements.iframe,
362
+ origin: iframeSrc.origin
363
+ });
364
+ this.bridge.on(BridgeEvents.MESSAGE, function(event) {
365
+ return _this.onBridgeMessageHandler(event);
366
+ });
367
+ var iframeSearchParams = new URLSearchParams(iframeSrc.search);
368
+ switch(true){
369
+ case !!this.scheme:
370
+ iframeSearchParams.set('scheme', this.scheme);
371
+ case !!this.langId:
372
+ iframeSearchParams.set('lang_id', this.langId);
373
+ default:
374
+ iframeSearchParams.set('autofocus', this.autofocus ? '1' : '0');
375
+ var origin = location.protocol + '//' + location.hostname;
376
+ iframeSearchParams.set('origin', origin);
377
+ if (this.captchaType !== CAPTCHA_TYPE_2) {
378
+ iframeSearchParams.set('variant', this.view);
379
+ }
380
+ break;
381
+ }
382
+ iframeSrc = new URL("".concat(iframeSrc.origin).concat(iframeSrc.pathname, "?").concat(iframeSearchParams));
383
+ this.elements.iframe.src = iframeSrc.href;
384
+ }
385
+ },
386
+ {
387
+ key: "setState",
388
+ value: function setState(state) {
389
+ this.elements.root.setAttribute('data-state', state);
390
+ }
391
+ },
392
+ {
393
+ key: "registerElements",
394
+ value: function registerElements() {
395
+ var root = document.getElementById(this.id);
396
+ this.elements = {
397
+ root: root,
398
+ iframe: root.querySelector('iframe')
399
+ };
400
+ }
401
+ }
402
+ ]);
403
+ return Widget;
404
+ }(Dispatcher);
405
+
406
+ export { Widget };
@@ -0,0 +1,10 @@
1
+ import { Widget } from './core/widget/widget.js';
2
+ import { checkCaptchaError } from './utils/checkCaptchaError/checkCaptchaError.js';
3
+ export { CheckCaptchaType } from './utils/checkCaptchaError/types.js';
4
+
5
+ if (typeof window !== 'undefined') {
6
+ window._vkidCaptchaWidget = Widget;
7
+ window._vkidCaptchaCheckError = checkCaptchaError;
8
+ }
9
+
10
+ export { Widget as CaptchaWidget, checkCaptchaError };
@@ -0,0 +1,63 @@
1
+ //
2
+ // An event handler can take an optional event argument
3
+ // and should not return a value
4
+
5
+
6
+
7
+ // An array of all currently registered event handlers for a type
8
+
9
+
10
+ // A map of event types and their corresponding event handlers.
11
+
12
+
13
+
14
+
15
+
16
+ /** Mitt: Tiny (~200b) functional event emitter / pubsub.
17
+ * @name mitt
18
+ * @returns {Mitt}
19
+ */
20
+ function mitt(all ) {
21
+ all = all || Object.create(null);
22
+
23
+ return {
24
+ /**
25
+ * Register an event handler for the given type.
26
+ *
27
+ * @param {String} type Type of event to listen for, or `"*"` for all events
28
+ * @param {Function} handler Function to call in response to given event
29
+ * @memberOf mitt
30
+ */
31
+ on: function on(type , handler ) {
32
+ (all[type] || (all[type] = [])).push(handler);
33
+ },
34
+
35
+ /**
36
+ * Remove an event handler for the given type.
37
+ *
38
+ * @param {String} type Type of event to unregister `handler` from, or `"*"`
39
+ * @param {Function} handler Handler function to remove
40
+ * @memberOf mitt
41
+ */
42
+ off: function off(type , handler ) {
43
+ if (all[type]) {
44
+ all[type].splice(all[type].indexOf(handler) >>> 0, 1);
45
+ }
46
+ },
47
+
48
+ /**
49
+ * Invoke all handlers for the given type.
50
+ * If present, `"*"` handlers are invoked after type-matched handlers.
51
+ *
52
+ * @param {String} type The event type to invoke
53
+ * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler
54
+ * @memberOf mitt
55
+ */
56
+ emit: function emit(type , evt ) {
57
+ (all[type] || []).slice().map(function (handler) { handler(evt); });
58
+ (all['*'] || []).slice().map(function (handler) { handler(type, evt); });
59
+ }
60
+ };
61
+ }
62
+
63
+ export { mitt as default };
@@ -0,0 +1,12 @@
1
+ let customAlphabet = (alphabet, defaultSize = 21) => {
2
+ return (size = defaultSize) => {
3
+ let id = '';
4
+ let i = size | 0;
5
+ while (i--) {
6
+ id += alphabet[(Math.random() * alphabet.length) | 0];
7
+ }
8
+ return id
9
+ }
10
+ };
11
+
12
+ export { customAlphabet };
@@ -0,0 +1,7 @@
1
+ var WebBridgeSensor = /*#__PURE__*/ function(WebBridgeSensor) {
2
+ WebBridgeSensor["CURSOR"] = "cursor";
3
+ WebBridgeSensor["TAPS"] = "taps";
4
+ return WebBridgeSensor;
5
+ }({});
6
+
7
+ export { WebBridgeSensor };
@@ -0,0 +1,134 @@
1
+ import { Widget } from '../../core/widget/widget.js';
2
+ import { CheckCaptchaType } from './types.js';
3
+ import { getChallengeUrlDomain } from './utils.js';
4
+
5
+ function _define_property(obj, key, value) {
6
+ if (key in obj) {
7
+ Object.defineProperty(obj, key, {
8
+ value: value,
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true
12
+ });
13
+ } else {
14
+ obj[key] = value;
15
+ }
16
+ return obj;
17
+ }
18
+ function _object_spread(target) {
19
+ for(var i = 1; i < arguments.length; i++){
20
+ var source = arguments[i] != null ? arguments[i] : {};
21
+ var ownKeys = Object.keys(source);
22
+ if (typeof Object.getOwnPropertySymbols === "function") {
23
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
24
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
25
+ }));
26
+ }
27
+ ownKeys.forEach(function(key) {
28
+ _define_property(target, key, source[key]);
29
+ });
30
+ }
31
+ return target;
32
+ }
33
+ function ownKeys(object, enumerableOnly) {
34
+ var keys = Object.keys(object);
35
+ if (Object.getOwnPropertySymbols) {
36
+ var symbols = Object.getOwnPropertySymbols(object);
37
+ if (enumerableOnly) {
38
+ symbols = symbols.filter(function(sym) {
39
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
40
+ });
41
+ }
42
+ keys.push.apply(keys, symbols);
43
+ }
44
+ return keys;
45
+ }
46
+ function _object_spread_props(target, source) {
47
+ source = source != null ? source : {};
48
+ if (Object.getOwnPropertyDescriptors) {
49
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
50
+ } else {
51
+ ownKeys(Object(source)).forEach(function(key) {
52
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
53
+ });
54
+ }
55
+ return target;
56
+ }
57
+ var ERROR_CODE_CAPTCHA = 14;
58
+ var ERROR_TYPE_CAPTCHA = 'captcha';
59
+ var checkCaptchaError = function(param) {
60
+ var responseHeaders = param.responseHeaders, url = param.url, responseError = param.responseError, withWidget = param.withWidget, widgetConfig = param.widgetConfig;
61
+ var isChallengeRequired = responseHeaders.get('X-Challenge') === 'required';
62
+ var challengeUrl = responseHeaders.get('X-Challenge-Url');
63
+ var isCaptchaType2 = isChallengeRequired && !!challengeUrl;
64
+ var isApiCaptchaError = responseError && 'error_code' in responseError && responseError.error_code === ERROR_CODE_CAPTCHA;
65
+ var isLoginCaptchaError = responseError && 'type' in responseError && responseError.type === ERROR_TYPE_CAPTCHA;
66
+ var isCaptchaType1 = (isApiCaptchaError || isLoginCaptchaError) && !!responseError.redirect_uri;
67
+ var isUnknownCaptcha = (isApiCaptchaError || isLoginCaptchaError) && !responseError.redirect_uri;
68
+ if (isCaptchaType2) {
69
+ var iframeSrc = "https://".concat(getChallengeUrlDomain(url)).concat(challengeUrl);
70
+ if (!withWidget) {
71
+ return {
72
+ captchaType: CheckCaptchaType.TYPE_2,
73
+ captchaUrl: iframeSrc
74
+ };
75
+ }
76
+ var widget = new Widget(widgetConfig);
77
+ return {
78
+ captchaType: CheckCaptchaType.TYPE_2,
79
+ captchaUrl: iframeSrc,
80
+ captchaWidget: {
81
+ show: function(params) {
82
+ return widget.show(_object_spread_props(_object_spread({}, params), {
83
+ iframeSrc: iframeSrc,
84
+ captchaType: CheckCaptchaType.TYPE_2
85
+ }));
86
+ },
87
+ close: function() {
88
+ return widget.close();
89
+ },
90
+ update: function(config) {
91
+ return widget.update(config);
92
+ }
93
+ }
94
+ };
95
+ }
96
+ if (isCaptchaType1) {
97
+ var iframeSrc1 = responseError.redirect_uri || '';
98
+ if (!withWidget) {
99
+ return {
100
+ captchaType: CheckCaptchaType.TYPE_1,
101
+ captchaUrl: iframeSrc1
102
+ };
103
+ }
104
+ var widget1 = new Widget(widgetConfig);
105
+ return {
106
+ captchaType: CheckCaptchaType.TYPE_1,
107
+ captchaUrl: iframeSrc1,
108
+ captchaWidget: {
109
+ show: function(params) {
110
+ return widget1.show(_object_spread_props(_object_spread({}, params), {
111
+ iframeSrc: iframeSrc1,
112
+ captchaType: CheckCaptchaType.TYPE_1
113
+ }));
114
+ },
115
+ close: function() {
116
+ return widget1.close();
117
+ },
118
+ update: function(config) {
119
+ return widget1.update(config);
120
+ }
121
+ }
122
+ };
123
+ }
124
+ if (isUnknownCaptcha) {
125
+ return {
126
+ captchaType: CheckCaptchaType.UNKNOWN
127
+ };
128
+ }
129
+ return {
130
+ captchaType: null
131
+ };
132
+ };
133
+
134
+ export { checkCaptchaError };
@@ -0,0 +1,10 @@
1
+ import { CAPTCHA_TYPE_1, CAPTCHA_TYPE_2 } from '../../constants.js';
2
+
3
+ var CheckCaptchaType = /*#__PURE__*/ function(CheckCaptchaType) {
4
+ CheckCaptchaType[CheckCaptchaType["TYPE_1"] = CAPTCHA_TYPE_1] = "TYPE_1";
5
+ CheckCaptchaType[CheckCaptchaType["TYPE_2"] = CAPTCHA_TYPE_2] = "TYPE_2";
6
+ CheckCaptchaType["UNKNOWN"] = "unknown";
7
+ return CheckCaptchaType;
8
+ }({});
9
+
10
+ export { CheckCaptchaType };
@@ -0,0 +1,11 @@
1
+ var getChallengeUrlDomain = function(url) {
2
+ var hostname = new URL(url).hostname;
3
+ var hostnameSplitted = hostname.split('.');
4
+ if (hostnameSplitted.length > 2) {
5
+ hostnameSplitted.shift();
6
+ return hostnameSplitted.join('.');
7
+ }
8
+ return hostname;
9
+ };
10
+
11
+ export { getChallengeUrlDomain };
@@ -0,0 +1,5 @@
1
+ import { customAlphabet } from './../lib/.pnpm/nanoid@3.3.11/lib/nanoid/non-secure/index.js';
2
+
3
+ var uuid = customAlphabet('qazwsxedcrfvtgbyhnujmikol', 6);
4
+
5
+ export { uuid };