radar-sdk-js 4.2.1-beta.0 → 4.2.1-beta.2
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 +7 -7
- package/dist/api/verify.d.ts +2 -2
- package/dist/errors.d.ts +3 -3
- package/dist/http.d.ts +2 -1
- package/dist/index.d.ts +1 -2
- package/dist/radar.js +251 -74
- package/dist/radar.js.map +1 -1
- package/dist/types.d.ts +11 -3
- package/dist/util/jwt.d.ts +1 -0
- package/dist/util/net.d.ts +1 -0
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/api/search.ts +4 -0
- package/src/api/track.ts +116 -4
- package/src/api/verify.ts +15 -16
- package/src/errors.ts +9 -9
- package/src/http.ts +20 -10
- package/src/index.ts +0 -4
- package/src/navigator.ts +6 -11
- package/src/types.ts +11 -5
- package/src/ui/autocomplete.ts +2 -1
- package/src/util/jwt.ts +28 -0
- package/src/util/net.ts +54 -0
- package/src/version.ts +1 -1
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ Radar.initialize('prj_test_pk_...', { /* options */ });
|
|
|
56
56
|
|
|
57
57
|
Add the following script in your `html` file
|
|
58
58
|
```html
|
|
59
|
-
<script src="https://js.radar.com/v4.2.1-beta.
|
|
59
|
+
<script src="https://js.radar.com/v4.2.1-beta.2/radar.min.js"></script>
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
Then initialize the Radar SDK
|
|
@@ -73,8 +73,8 @@ To create a map, first initialize the Radar SDK with your publishable key. Then
|
|
|
73
73
|
```html
|
|
74
74
|
<html>
|
|
75
75
|
<head>
|
|
76
|
-
<link href="https://js.radar.com/v4.2.1-beta.
|
|
77
|
-
<script src="https://js.radar.com/v4.2.1-beta.
|
|
76
|
+
<link href="https://js.radar.com/v4.2.1-beta.2/radar.css" rel="stylesheet">
|
|
77
|
+
<script src="https://js.radar.com/v4.2.1-beta.2/radar.min.js"></script>
|
|
78
78
|
</head>
|
|
79
79
|
|
|
80
80
|
<body>
|
|
@@ -98,8 +98,8 @@ To create an autocomplete input, first initialize the Radar SDK with your publis
|
|
|
98
98
|
```html
|
|
99
99
|
<html>
|
|
100
100
|
<head>
|
|
101
|
-
<link href="https://js.radar.com/v4.2.1-beta.
|
|
102
|
-
<script src="https://js.radar.com/v4.2.1-beta.
|
|
101
|
+
<link href="https://js.radar.com/v4.2.1-beta.2/radar.css" rel="stylesheet">
|
|
102
|
+
<script src="https://js.radar.com/v4.2.1-beta.2/radar.min.js"></script>
|
|
103
103
|
</head>
|
|
104
104
|
|
|
105
105
|
<body>
|
|
@@ -130,8 +130,8 @@ To power [geofencing](https://radar.com/documentation/geofencing/overview) exper
|
|
|
130
130
|
```html
|
|
131
131
|
<html>
|
|
132
132
|
<head>
|
|
133
|
-
<link href="https://js.radar.com/v4.2.1-beta.
|
|
134
|
-
<script src="https://js.radar.com/v4.2.1-beta.
|
|
133
|
+
<link href="https://js.radar.com/v4.2.1-beta.2/radar.css" rel="stylesheet">
|
|
134
|
+
<script src="https://js.radar.com/v4.2.1-beta.2/radar.min.js"></script>
|
|
135
135
|
</head>
|
|
136
136
|
|
|
137
137
|
<body>
|
package/dist/api/verify.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { RadarTrackParams,
|
|
1
|
+
import type { RadarTrackParams, RadarTrackVerifiedResponse } from '../types';
|
|
2
2
|
declare class VerifyAPI {
|
|
3
|
-
static trackVerified(params: RadarTrackParams, encrypted?: Boolean): Promise<
|
|
3
|
+
static trackVerified(params: RadarTrackParams, encrypted?: Boolean): Promise<RadarTrackVerifiedResponse>;
|
|
4
4
|
}
|
|
5
5
|
export default VerifyAPI;
|
package/dist/errors.d.ts
CHANGED
|
@@ -8,10 +8,10 @@ export declare class RadarPublishableKeyError extends RadarError {
|
|
|
8
8
|
export declare class RadarLocationError extends RadarError {
|
|
9
9
|
constructor(message: string);
|
|
10
10
|
}
|
|
11
|
-
export declare class
|
|
11
|
+
export declare class RadarPermissionsError extends RadarError {
|
|
12
12
|
constructor(message: string);
|
|
13
13
|
}
|
|
14
|
-
export declare class
|
|
14
|
+
export declare class RadarVerifyAppError extends RadarError {
|
|
15
15
|
constructor();
|
|
16
16
|
}
|
|
17
17
|
export declare class RadarBadRequestError extends RadarError {
|
|
@@ -49,7 +49,7 @@ export declare class RadarServerError extends RadarError {
|
|
|
49
49
|
response?: any;
|
|
50
50
|
constructor(response?: any);
|
|
51
51
|
}
|
|
52
|
-
export declare class
|
|
52
|
+
export declare class RadarNetworkError extends RadarError {
|
|
53
53
|
constructor();
|
|
54
54
|
}
|
|
55
55
|
export declare class RadarUnknownError extends RadarError {
|
package/dist/http.d.ts
CHANGED
|
@@ -4,11 +4,12 @@ interface HttpResponse {
|
|
|
4
4
|
data: any;
|
|
5
5
|
}
|
|
6
6
|
declare class Http {
|
|
7
|
-
static request({ method, path, data, host, }: {
|
|
7
|
+
static request({ method, path, data, host, headers, }: {
|
|
8
8
|
method: HttpMethod;
|
|
9
9
|
path: string;
|
|
10
10
|
data?: any;
|
|
11
11
|
host?: string;
|
|
12
|
+
headers?: Record<string, string>;
|
|
12
13
|
}): Promise<HttpResponse>;
|
|
13
14
|
}
|
|
14
15
|
export default Http;
|
package/dist/index.d.ts
CHANGED
|
@@ -62,8 +62,7 @@ declare class Radar {
|
|
|
62
62
|
static setMetadata(metadata?: RadarMetadata): void;
|
|
63
63
|
static getLocation(): Promise<import("./types").NavigatorPosition>;
|
|
64
64
|
static trackOnce(params?: RadarTrackParams): Promise<import("./types").RadarTrackResponse>;
|
|
65
|
-
static trackVerified(params?: RadarTrackParams): Promise<import("./types").
|
|
66
|
-
static trackVerifiedToken(params?: RadarTrackParams): Promise<import("./types").RadarTrackResponse | import("./types").RadarTrackTokenResponse>;
|
|
65
|
+
static trackVerified(params?: RadarTrackParams): Promise<import("./types").RadarTrackVerifiedResponse>;
|
|
67
66
|
static getContext(params: Location): Promise<import("./types").RadarContextResponse>;
|
|
68
67
|
static setTripOptions(tripOptions?: RadarTripOptions): void;
|
|
69
68
|
static clearTripOptions(): void;
|
package/dist/radar.js
CHANGED
|
@@ -298,25 +298,25 @@ var RadarLocationError = /** @class */ (function (_super) {
|
|
|
298
298
|
}
|
|
299
299
|
return RadarLocationError;
|
|
300
300
|
}(RadarError));
|
|
301
|
-
var
|
|
302
|
-
__extends(
|
|
303
|
-
function
|
|
301
|
+
var RadarPermissionsError = /** @class */ (function (_super) {
|
|
302
|
+
__extends(RadarPermissionsError, _super);
|
|
303
|
+
function RadarPermissionsError(message) {
|
|
304
304
|
var _this = _super.call(this, message) || this;
|
|
305
|
-
_this.name = '
|
|
305
|
+
_this.name = 'RadarPermissionsError';
|
|
306
306
|
_this.status = 'ERROR_PERMISSIONS';
|
|
307
307
|
return _this;
|
|
308
308
|
}
|
|
309
|
-
return
|
|
309
|
+
return RadarPermissionsError;
|
|
310
310
|
}(RadarError));
|
|
311
|
-
var
|
|
312
|
-
__extends(
|
|
313
|
-
function
|
|
314
|
-
var _this = _super.call(this, '
|
|
315
|
-
_this.name = '
|
|
316
|
-
_this.status = '
|
|
311
|
+
var RadarVerifyAppError = /** @class */ (function (_super) {
|
|
312
|
+
__extends(RadarVerifyAppError, _super);
|
|
313
|
+
function RadarVerifyAppError() {
|
|
314
|
+
var _this = _super.call(this, 'Radar Verify app not running.') || this;
|
|
315
|
+
_this.name = 'RadarVerifyAppError';
|
|
316
|
+
_this.status = 'ERROR_VERIFY_APP';
|
|
317
317
|
return _this;
|
|
318
318
|
}
|
|
319
|
-
return
|
|
319
|
+
return RadarVerifyAppError;
|
|
320
320
|
}(RadarError));
|
|
321
321
|
// HTTP Errors
|
|
322
322
|
var RadarBadRequestError = /** @class */ (function (_super) {
|
|
@@ -417,15 +417,15 @@ var RadarServerError = /** @class */ (function (_super) {
|
|
|
417
417
|
}
|
|
418
418
|
return RadarServerError;
|
|
419
419
|
}(RadarError));
|
|
420
|
-
var
|
|
421
|
-
__extends(
|
|
422
|
-
function
|
|
420
|
+
var RadarNetworkError = /** @class */ (function (_super) {
|
|
421
|
+
__extends(RadarNetworkError, _super);
|
|
422
|
+
function RadarNetworkError() {
|
|
423
423
|
var _this = _super.call(this, 'Request timed out.') || this;
|
|
424
|
-
_this.name = '
|
|
425
|
-
_this.status = '
|
|
424
|
+
_this.name = 'RadarNetworkError';
|
|
425
|
+
_this.status = 'ERROR_NETWORK';
|
|
426
426
|
return _this;
|
|
427
427
|
}
|
|
428
|
-
return
|
|
428
|
+
return RadarNetworkError;
|
|
429
429
|
}(RadarError));
|
|
430
430
|
var RadarUnknownError = /** @class */ (function (_super) {
|
|
431
431
|
__extends(RadarUnknownError, _super);
|
|
@@ -451,12 +451,6 @@ var RadarAutocompleteContainerNotFound = /** @class */ (function (_super) {
|
|
|
451
451
|
return RadarAutocompleteContainerNotFound;
|
|
452
452
|
}(RadarError));
|
|
453
453
|
|
|
454
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPositionError
|
|
455
|
-
var PERMISSION_ERROR_MESSAGES = {
|
|
456
|
-
1: 'Permission denied.',
|
|
457
|
-
2: 'Position unavailable.',
|
|
458
|
-
3: 'Timeout.',
|
|
459
|
-
};
|
|
460
454
|
var DEFAULT_POSITION_OPTIONS = {
|
|
461
455
|
maximumAge: 0,
|
|
462
456
|
timeout: 1000 * 30,
|
|
@@ -526,9 +520,11 @@ var Navigator = /** @class */ (function () {
|
|
|
526
520
|
}
|
|
527
521
|
return resolve({ latitude: latitude, longitude: longitude, accuracy: accuracy });
|
|
528
522
|
}, function (err) {
|
|
529
|
-
if (err && err.code) {
|
|
530
|
-
|
|
531
|
-
|
|
523
|
+
if (err && err.code === 1) {
|
|
524
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPositionError
|
|
525
|
+
// code 1 means location permissions denied
|
|
526
|
+
// codes 2 and 3 mean location unavailable or timeout
|
|
527
|
+
return reject(new RadarPermissionsError('Location permissions denied.'));
|
|
532
528
|
}
|
|
533
529
|
return reject(new RadarLocationError('Could not determine location.'));
|
|
534
530
|
}, positionOptions);
|
|
@@ -565,13 +561,13 @@ var Navigator = /** @class */ (function () {
|
|
|
565
561
|
return Navigator;
|
|
566
562
|
}());
|
|
567
563
|
|
|
568
|
-
var SDK_VERSION = '4.2.1-beta.
|
|
564
|
+
var SDK_VERSION = '4.2.1-beta.2';
|
|
569
565
|
|
|
570
566
|
var Http = /** @class */ (function () {
|
|
571
567
|
function Http() {
|
|
572
568
|
}
|
|
573
569
|
Http.request = function (_a) {
|
|
574
|
-
var method = _a.method, path = _a.path, data = _a.data, host = _a.host;
|
|
570
|
+
var method = _a.method, path = _a.path, data = _a.data, host = _a.host, headers = _a.headers;
|
|
575
571
|
return __awaiter(this, void 0, void 0, function () {
|
|
576
572
|
return __generator(this, function (_b) {
|
|
577
573
|
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
@@ -605,12 +601,19 @@ var Http = /** @class */ (function () {
|
|
|
605
601
|
}
|
|
606
602
|
var xhr = new XMLHttpRequest();
|
|
607
603
|
xhr.open(method, url, true);
|
|
608
|
-
// set headers
|
|
604
|
+
// set standard headers
|
|
609
605
|
xhr.setRequestHeader('Authorization', publishableKey);
|
|
610
606
|
xhr.setRequestHeader('Content-Type', 'application/json');
|
|
611
607
|
xhr.setRequestHeader('X-Radar-Device-Type', 'Web');
|
|
612
608
|
xhr.setRequestHeader('X-Radar-SDK-Version', SDK_VERSION);
|
|
613
|
-
// set custom headers if present
|
|
609
|
+
// set passed custom headers if present
|
|
610
|
+
if (headers) {
|
|
611
|
+
Object.keys(headers).forEach(function (key) {
|
|
612
|
+
var val = headers[key];
|
|
613
|
+
xhr.setRequestHeader(key, val);
|
|
614
|
+
});
|
|
615
|
+
}
|
|
616
|
+
// set config custom headers if present
|
|
614
617
|
if (typeof options.getRequestHeaders === 'function') {
|
|
615
618
|
var headers_1 = options.getRequestHeaders();
|
|
616
619
|
Object.keys(headers_1 || {}).forEach(function (key) {
|
|
@@ -628,13 +631,13 @@ var Http = /** @class */ (function () {
|
|
|
628
631
|
}
|
|
629
632
|
var error = (_a = response === null || response === void 0 ? void 0 : response.meta) === null || _a === void 0 ? void 0 : _a.error;
|
|
630
633
|
if (error === 'ERROR_PERMISSIONS') {
|
|
631
|
-
return reject(new
|
|
634
|
+
return reject(new RadarPermissionsError('Location permissions not granted.'));
|
|
632
635
|
}
|
|
633
636
|
else if (error === 'ERROR_LOCATION') {
|
|
634
637
|
return reject(new RadarLocationError('Could not determine location.'));
|
|
635
638
|
}
|
|
636
639
|
else if (error === 'ERROR_NETWORK') {
|
|
637
|
-
return reject(new
|
|
640
|
+
return reject(new RadarNetworkError());
|
|
638
641
|
}
|
|
639
642
|
if (xhr.status == 200) {
|
|
640
643
|
return resolve(response);
|
|
@@ -669,15 +672,15 @@ var Http = /** @class */ (function () {
|
|
|
669
672
|
}
|
|
670
673
|
};
|
|
671
674
|
xhr.onerror = function () {
|
|
672
|
-
if (host && host === 'https://radar-verify.com:52516') {
|
|
673
|
-
reject(new
|
|
675
|
+
if (host && (host === 'http://localhost:52516' || host === 'https://radar-verify.com:52516')) {
|
|
676
|
+
reject(new RadarVerifyAppError());
|
|
674
677
|
}
|
|
675
678
|
else {
|
|
676
679
|
reject(new RadarServerError());
|
|
677
680
|
}
|
|
678
681
|
};
|
|
679
682
|
xhr.ontimeout = function () {
|
|
680
|
-
reject(new
|
|
683
|
+
reject(new RadarVerifyAppError());
|
|
681
684
|
};
|
|
682
685
|
xhr.send(JSON.stringify(body));
|
|
683
686
|
})];
|
|
@@ -1157,12 +1160,12 @@ var SearchAPI = /** @class */ (function () {
|
|
|
1157
1160
|
}
|
|
1158
1161
|
SearchAPI.autocomplete = function (params) {
|
|
1159
1162
|
return __awaiter(this, void 0, void 0, function () {
|
|
1160
|
-
var options, query, near, limit, layers, countryCode, expandUnits, response, autocompleteRes;
|
|
1163
|
+
var options, query, near, limit, layers, countryCode, expandUnits, mailable, response, autocompleteRes;
|
|
1161
1164
|
return __generator(this, function (_a) {
|
|
1162
1165
|
switch (_a.label) {
|
|
1163
1166
|
case 0:
|
|
1164
1167
|
options = Config.get();
|
|
1165
|
-
query = params.query, near = params.near, limit = params.limit, layers = params.layers, countryCode = params.countryCode, expandUnits = params.expandUnits;
|
|
1168
|
+
query = params.query, near = params.near, limit = params.limit, layers = params.layers, countryCode = params.countryCode, expandUnits = params.expandUnits, mailable = params.mailable;
|
|
1166
1169
|
// near can be provided as a string or Location object
|
|
1167
1170
|
// if "near" is not provided, request will fallback to IP based location
|
|
1168
1171
|
if (near && typeof near !== 'string') {
|
|
@@ -1180,6 +1183,7 @@ var SearchAPI = /** @class */ (function () {
|
|
|
1180
1183
|
layers: layers,
|
|
1181
1184
|
countryCode: countryCode,
|
|
1182
1185
|
expandUnits: expandUnits,
|
|
1186
|
+
mailable: mailable,
|
|
1183
1187
|
},
|
|
1184
1188
|
})];
|
|
1185
1189
|
case 1:
|
|
@@ -1197,12 +1201,12 @@ var SearchAPI = /** @class */ (function () {
|
|
|
1197
1201
|
};
|
|
1198
1202
|
SearchAPI.searchGeofences = function (params) {
|
|
1199
1203
|
return __awaiter(this, void 0, void 0, function () {
|
|
1200
|
-
var options, near, radius, tags, metadata, limit, _a, latitude, longitude, latitude, longitude, response, geofencesSearchRes;
|
|
1204
|
+
var options, near, radius, tags, metadata, limit, includeGeometry, _a, latitude, longitude, latitude, longitude, response, geofencesSearchRes;
|
|
1201
1205
|
return __generator(this, function (_b) {
|
|
1202
1206
|
switch (_b.label) {
|
|
1203
1207
|
case 0:
|
|
1204
1208
|
options = Config.get();
|
|
1205
|
-
near = params.near, radius = params.radius, tags = params.tags, metadata = params.metadata, limit = params.limit;
|
|
1209
|
+
near = params.near, radius = params.radius, tags = params.tags, metadata = params.metadata, limit = params.limit, includeGeometry = params.includeGeometry;
|
|
1206
1210
|
if (!!near) return [3 /*break*/, 2];
|
|
1207
1211
|
return [4 /*yield*/, Navigator.getCurrentPosition()];
|
|
1208
1212
|
case 1:
|
|
@@ -1229,6 +1233,7 @@ var SearchAPI = /** @class */ (function () {
|
|
|
1229
1233
|
tags: tags,
|
|
1230
1234
|
metadata: metadata,
|
|
1231
1235
|
limit: limit,
|
|
1236
|
+
includeGeometry: includeGeometry,
|
|
1232
1237
|
},
|
|
1233
1238
|
})];
|
|
1234
1239
|
case 4:
|
|
@@ -1469,33 +1474,107 @@ var TripsAPI = /** @class */ (function () {
|
|
|
1469
1474
|
return TripsAPI;
|
|
1470
1475
|
}());
|
|
1471
1476
|
|
|
1477
|
+
var base64Encode = function (str) {
|
|
1478
|
+
return btoa(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
1479
|
+
};
|
|
1480
|
+
var signJWT = function (payload, key) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1481
|
+
var encoder, encodedHeader, encodedPayload, keyData, messageData, cryptoKey, signatureArrayBuffer, signature;
|
|
1482
|
+
return __generator(this, function (_a) {
|
|
1483
|
+
switch (_a.label) {
|
|
1484
|
+
case 0:
|
|
1485
|
+
encoder = new TextEncoder();
|
|
1486
|
+
encodedHeader = base64Encode(JSON.stringify({
|
|
1487
|
+
alg: 'HS256',
|
|
1488
|
+
typ: 'JWT',
|
|
1489
|
+
}));
|
|
1490
|
+
encodedPayload = base64Encode(JSON.stringify(payload));
|
|
1491
|
+
keyData = encoder.encode(key);
|
|
1492
|
+
messageData = encoder.encode("".concat(encodedHeader, ".").concat(encodedPayload));
|
|
1493
|
+
return [4 /*yield*/, crypto.subtle.importKey('raw', keyData, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign'])];
|
|
1494
|
+
case 1:
|
|
1495
|
+
cryptoKey = _a.sent();
|
|
1496
|
+
return [4 /*yield*/, crypto.subtle.sign('HMAC', cryptoKey, messageData)];
|
|
1497
|
+
case 2:
|
|
1498
|
+
signatureArrayBuffer = _a.sent();
|
|
1499
|
+
signature = base64Encode(String.fromCharCode.apply(String, Array.from(new Uint8Array(signatureArrayBuffer))));
|
|
1500
|
+
return [2 /*return*/, "".concat(encodedHeader, ".").concat(encodedPayload, ".").concat(signature)];
|
|
1501
|
+
}
|
|
1502
|
+
});
|
|
1503
|
+
}); };
|
|
1504
|
+
|
|
1505
|
+
var ping = function (host) {
|
|
1506
|
+
return new Promise(function (resolve) {
|
|
1507
|
+
var socket = new WebSocket(host);
|
|
1508
|
+
var pings = 0;
|
|
1509
|
+
var latencies = [];
|
|
1510
|
+
var pingInterval;
|
|
1511
|
+
var timeoutInterval;
|
|
1512
|
+
var ping = function () {
|
|
1513
|
+
pings++;
|
|
1514
|
+
var start = Date.now();
|
|
1515
|
+
socket.send('ping');
|
|
1516
|
+
socket.onmessage = function (event) {
|
|
1517
|
+
if (event.data === 'pong') {
|
|
1518
|
+
var latency = Date.now() - start;
|
|
1519
|
+
latencies.push(latency);
|
|
1520
|
+
if (pings >= 3) {
|
|
1521
|
+
clearInterval(pingInterval);
|
|
1522
|
+
clearInterval(timeoutInterval);
|
|
1523
|
+
var median = latencies.sort(function (a, b) { return a - b; })[1];
|
|
1524
|
+
socket.close();
|
|
1525
|
+
resolve(median);
|
|
1526
|
+
}
|
|
1527
|
+
}
|
|
1528
|
+
};
|
|
1529
|
+
};
|
|
1530
|
+
var timeout = function () {
|
|
1531
|
+
Logger.warn('Socket timeout');
|
|
1532
|
+
clearInterval(pingInterval);
|
|
1533
|
+
clearInterval(timeoutInterval);
|
|
1534
|
+
socket.close();
|
|
1535
|
+
resolve(-1);
|
|
1536
|
+
};
|
|
1537
|
+
socket.onerror = function (err) {
|
|
1538
|
+
Logger.warn('Error opening socket');
|
|
1539
|
+
socket.close();
|
|
1540
|
+
resolve(-1);
|
|
1541
|
+
};
|
|
1542
|
+
socket.onopen = function () {
|
|
1543
|
+
ping();
|
|
1544
|
+
pingInterval = setInterval(ping, 1000);
|
|
1545
|
+
timeoutInterval = setInterval(timeout, 10000);
|
|
1546
|
+
};
|
|
1547
|
+
});
|
|
1548
|
+
};
|
|
1549
|
+
|
|
1472
1550
|
var TrackAPI = /** @class */ (function () {
|
|
1473
1551
|
function TrackAPI() {
|
|
1474
1552
|
}
|
|
1475
1553
|
TrackAPI.trackOnce = function (params) {
|
|
1554
|
+
var _a, _b, _c;
|
|
1476
1555
|
return __awaiter(this, void 0, void 0, function () {
|
|
1477
|
-
var options, latitude, longitude, accuracy, desiredAccuracy, deviceLocation, locationAuthorization, err_1, userId, deviceId, installId, sessionId, deviceType, description, metadata, tripOptions, body, response, user, events, location, trackRes;
|
|
1478
|
-
return __generator(this, function (
|
|
1479
|
-
switch (
|
|
1556
|
+
var options, latitude, longitude, accuracy, desiredAccuracy, fraud, deviceLocation, locationAuthorization, err_1, userId, deviceId, installId, sessionId, deviceType, description, timeZone, metadata, tripOptions, body, response, host, pingHost, lang, langs, dk, sclVal, cslVal, _d, sclRes, csl, scl, payload, reqToken, user_1, events_1, token, expiresAt, location_1, passed, expiresIn, trackRes_1, user, events, location, trackRes;
|
|
1557
|
+
return __generator(this, function (_e) {
|
|
1558
|
+
switch (_e.label) {
|
|
1480
1559
|
case 0:
|
|
1481
1560
|
options = Config.get();
|
|
1482
|
-
latitude = params.latitude, longitude = params.longitude, accuracy = params.accuracy, desiredAccuracy = params.desiredAccuracy;
|
|
1561
|
+
latitude = params.latitude, longitude = params.longitude, accuracy = params.accuracy, desiredAccuracy = params.desiredAccuracy, fraud = params.fraud;
|
|
1483
1562
|
if (!(!latitude || !longitude)) return [3 /*break*/, 2];
|
|
1484
1563
|
return [4 /*yield*/, Navigator.getCurrentPosition({ desiredAccuracy: desiredAccuracy })];
|
|
1485
1564
|
case 1:
|
|
1486
|
-
deviceLocation =
|
|
1565
|
+
deviceLocation = _e.sent();
|
|
1487
1566
|
latitude = deviceLocation.latitude;
|
|
1488
1567
|
longitude = deviceLocation.longitude;
|
|
1489
1568
|
accuracy = deviceLocation.accuracy;
|
|
1490
|
-
|
|
1569
|
+
_e.label = 2;
|
|
1491
1570
|
case 2:
|
|
1492
|
-
|
|
1571
|
+
_e.trys.push([2, 4, , 5]);
|
|
1493
1572
|
return [4 /*yield*/, Navigator.getPermissionStatus()];
|
|
1494
1573
|
case 3:
|
|
1495
|
-
locationAuthorization =
|
|
1574
|
+
locationAuthorization = _e.sent();
|
|
1496
1575
|
return [3 /*break*/, 5];
|
|
1497
1576
|
case 4:
|
|
1498
|
-
err_1 =
|
|
1577
|
+
err_1 = _e.sent();
|
|
1499
1578
|
Logger.warn("Location authorization error: ".concat(err_1.message));
|
|
1500
1579
|
return [3 /*break*/, 5];
|
|
1501
1580
|
case 5:
|
|
@@ -1505,6 +1584,12 @@ var TrackAPI = /** @class */ (function () {
|
|
|
1505
1584
|
sessionId = Session.getSessionId();
|
|
1506
1585
|
deviceType = params.deviceType || 'Web';
|
|
1507
1586
|
description = params.description || Storage.getItem(Storage.DESCRIPTION);
|
|
1587
|
+
try {
|
|
1588
|
+
timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
1589
|
+
}
|
|
1590
|
+
catch (err) {
|
|
1591
|
+
Logger.warn("Error getting time zone: ".concat(err.message));
|
|
1592
|
+
}
|
|
1508
1593
|
// save userId for trip tracking
|
|
1509
1594
|
if (!userId) {
|
|
1510
1595
|
Logger.warn('userId not provided for trackOnce.');
|
|
@@ -1517,14 +1602,108 @@ var TrackAPI = /** @class */ (function () {
|
|
|
1517
1602
|
if (tripOptions) {
|
|
1518
1603
|
tripOptions.version = '2';
|
|
1519
1604
|
}
|
|
1520
|
-
body = __assign(__assign({}, params), { locationAuthorization: locationAuthorization, accuracy: accuracy, description: description, deviceId: deviceId, deviceType: deviceType, foreground: true, installId: installId, sessionId: sessionId, latitude: latitude, longitude: longitude, metadata: metadata, sdkVersion: SDK_VERSION, stopped: true, userId: userId, tripOptions: tripOptions });
|
|
1605
|
+
body = __assign(__assign({}, params), { locationAuthorization: locationAuthorization, accuracy: accuracy, description: description, deviceId: deviceId, deviceType: deviceType, foreground: true, installId: installId, sessionId: sessionId, latitude: latitude, longitude: longitude, metadata: metadata, sdkVersion: SDK_VERSION, stopped: true, userId: userId, tripOptions: tripOptions, timeZone: timeZone });
|
|
1606
|
+
if (!fraud) return [3 /*break*/, 13];
|
|
1607
|
+
host = 'https://api-verified.radar.io';
|
|
1608
|
+
pingHost = 'ping.radar-verify.com';
|
|
1609
|
+
lang = navigator.language;
|
|
1610
|
+
langs = navigator.languages;
|
|
1521
1611
|
return [4 /*yield*/, Http.request({
|
|
1612
|
+
host: host,
|
|
1613
|
+
method: 'GET',
|
|
1614
|
+
path: 'config',
|
|
1615
|
+
data: {
|
|
1616
|
+
deviceId: deviceId,
|
|
1617
|
+
installId: installId,
|
|
1618
|
+
sessionId: sessionId,
|
|
1619
|
+
locationAuthorization: locationAuthorization,
|
|
1620
|
+
},
|
|
1621
|
+
headers: {
|
|
1622
|
+
'X-Radar-Desktop-Device-Type': 'Web',
|
|
1623
|
+
},
|
|
1624
|
+
})];
|
|
1625
|
+
case 6:
|
|
1626
|
+
dk = (_e.sent()).dk;
|
|
1627
|
+
sclVal = -1;
|
|
1628
|
+
cslVal = -1;
|
|
1629
|
+
_e.label = 7;
|
|
1630
|
+
case 7:
|
|
1631
|
+
_e.trys.push([7, 9, , 10]);
|
|
1632
|
+
return [4 /*yield*/, Promise.all([
|
|
1633
|
+
Http.request({
|
|
1634
|
+
host: "https://".concat(pingHost),
|
|
1635
|
+
method: 'GET',
|
|
1636
|
+
path: 'ping',
|
|
1637
|
+
}),
|
|
1638
|
+
ping("wss://".concat(pingHost)),
|
|
1639
|
+
])];
|
|
1640
|
+
case 8:
|
|
1641
|
+
_d = _e.sent(), sclRes = _d[0], csl = _d[1];
|
|
1642
|
+
scl = sclRes.scl;
|
|
1643
|
+
sclVal = scl;
|
|
1644
|
+
cslVal = csl;
|
|
1645
|
+
return [3 /*break*/, 10];
|
|
1646
|
+
case 9:
|
|
1647
|
+
_e.sent();
|
|
1648
|
+
return [3 /*break*/, 10];
|
|
1649
|
+
case 10:
|
|
1650
|
+
payload = {
|
|
1651
|
+
payload: JSON.stringify(__assign(__assign({}, body), { scl: sclVal, csl: cslVal, lang: lang, langs: langs })),
|
|
1652
|
+
};
|
|
1653
|
+
return [4 /*yield*/, signJWT(payload, dk)];
|
|
1654
|
+
case 11:
|
|
1655
|
+
reqToken = _e.sent();
|
|
1656
|
+
return [4 /*yield*/, Http.request({
|
|
1657
|
+
host: host,
|
|
1522
1658
|
method: 'POST',
|
|
1523
1659
|
path: 'track',
|
|
1524
|
-
data:
|
|
1660
|
+
data: {
|
|
1661
|
+
token: reqToken,
|
|
1662
|
+
},
|
|
1663
|
+
headers: {
|
|
1664
|
+
'X-Radar-Body-Is-Token': 'true',
|
|
1665
|
+
},
|
|
1525
1666
|
})];
|
|
1526
|
-
case
|
|
1527
|
-
response =
|
|
1667
|
+
case 12:
|
|
1668
|
+
response = _e.sent();
|
|
1669
|
+
if (options.debug && response && response.user) {
|
|
1670
|
+
if (!response.user.metadata) {
|
|
1671
|
+
response.user.metadata = {};
|
|
1672
|
+
}
|
|
1673
|
+
response.user.metadata['radar:debug'] = {
|
|
1674
|
+
sclVal: sclVal,
|
|
1675
|
+
cslVal: cslVal,
|
|
1676
|
+
};
|
|
1677
|
+
}
|
|
1678
|
+
user_1 = response.user, events_1 = response.events, token = response.token, expiresAt = response.expiresAt;
|
|
1679
|
+
location_1 = { latitude: latitude, longitude: longitude, accuracy: accuracy };
|
|
1680
|
+
passed = void 0;
|
|
1681
|
+
expiresIn = void 0;
|
|
1682
|
+
if (expiresAt) {
|
|
1683
|
+
expiresAt = new Date(expiresAt);
|
|
1684
|
+
passed = ((_a = user_1 === null || user_1 === void 0 ? void 0 : user_1.fraud) === null || _a === void 0 ? void 0 : _a.passed) && ((_b = user_1 === null || user_1 === void 0 ? void 0 : user_1.country) === null || _b === void 0 ? void 0 : _b.passed) && ((_c = user_1 === null || user_1 === void 0 ? void 0 : user_1.state) === null || _c === void 0 ? void 0 : _c.passed);
|
|
1685
|
+
expiresIn = (expiresAt.getTime() - Date.now()) / 1000;
|
|
1686
|
+
}
|
|
1687
|
+
trackRes_1 = {
|
|
1688
|
+
user: user_1,
|
|
1689
|
+
events: events_1,
|
|
1690
|
+
location: location_1,
|
|
1691
|
+
token: token,
|
|
1692
|
+
expiresAt: expiresAt,
|
|
1693
|
+
expiresIn: expiresIn,
|
|
1694
|
+
passed: passed,
|
|
1695
|
+
};
|
|
1696
|
+
if (options.debug) {
|
|
1697
|
+
trackRes_1.response = response;
|
|
1698
|
+
}
|
|
1699
|
+
return [2 /*return*/, trackRes_1];
|
|
1700
|
+
case 13: return [4 /*yield*/, Http.request({
|
|
1701
|
+
method: 'POST',
|
|
1702
|
+
path: 'track',
|
|
1703
|
+
data: body,
|
|
1704
|
+
})];
|
|
1705
|
+
case 14:
|
|
1706
|
+
response = _e.sent();
|
|
1528
1707
|
user = response.user, events = response.events;
|
|
1529
1708
|
location = { latitude: latitude, longitude: longitude, accuracy: accuracy };
|
|
1530
1709
|
trackRes = {
|
|
@@ -1547,11 +1726,12 @@ var VerifyAPI = /** @class */ (function () {
|
|
|
1547
1726
|
function VerifyAPI() {
|
|
1548
1727
|
}
|
|
1549
1728
|
VerifyAPI.trackVerified = function (params, encrypted) {
|
|
1729
|
+
var _a, _b, _c;
|
|
1550
1730
|
if (encrypted === void 0) { encrypted = false; }
|
|
1551
1731
|
return __awaiter(this, void 0, void 0, function () {
|
|
1552
|
-
var options, userId, deviceId, installId, sessionId, description, metadata, body, userAgent,
|
|
1553
|
-
return __generator(this, function (
|
|
1554
|
-
switch (
|
|
1732
|
+
var options, userId, deviceId, installId, sessionId, description, metadata, body, userAgent, apple, response, user, events, token, expiresAt, location, passed, expiresIn, trackRes;
|
|
1733
|
+
return __generator(this, function (_d) {
|
|
1734
|
+
switch (_d.label) {
|
|
1555
1735
|
case 0:
|
|
1556
1736
|
options = Config.get();
|
|
1557
1737
|
userId = params.userId || Storage.getItem(Storage.USER_ID);
|
|
@@ -1569,16 +1749,16 @@ var VerifyAPI = /** @class */ (function () {
|
|
|
1569
1749
|
metadata = params.metadata || Storage.getJSON(Storage.METADATA);
|
|
1570
1750
|
body = __assign(__assign({}, params), { description: description, deviceId: deviceId, foreground: true, installId: installId, sessionId: sessionId, metadata: metadata, sdkVersion: SDK_VERSION, stopped: true, userId: userId, encrypted: encrypted });
|
|
1571
1751
|
userAgent = navigator.userAgent;
|
|
1572
|
-
|
|
1752
|
+
apple = userAgent && (userAgent.toLowerCase().includes('mac') || userAgent.toLowerCase().includes('iphone') || userAgent.toLowerCase().includes('ipod') || userAgent.toLowerCase().includes('ipad'));
|
|
1573
1753
|
return [4 /*yield*/, Http.request({
|
|
1574
1754
|
method: 'GET',
|
|
1575
1755
|
path: 'verify',
|
|
1576
1756
|
data: body,
|
|
1577
|
-
host:
|
|
1757
|
+
host: apple ? 'https://radar-verify.com:52516' : 'http://localhost:52516',
|
|
1578
1758
|
})];
|
|
1579
1759
|
case 1:
|
|
1580
|
-
response =
|
|
1581
|
-
user = response.user, events = response.events, token = response.token;
|
|
1760
|
+
response = _d.sent();
|
|
1761
|
+
user = response.user, events = response.events, token = response.token, expiresAt = response.expiresAt;
|
|
1582
1762
|
if (user && user.location && user.location.coordinates && user.locationAccuracy) {
|
|
1583
1763
|
location = {
|
|
1584
1764
|
latitude: user.location.coordinates[1],
|
|
@@ -1586,19 +1766,19 @@ var VerifyAPI = /** @class */ (function () {
|
|
|
1586
1766
|
accuracy: user.locationAccuracy,
|
|
1587
1767
|
};
|
|
1588
1768
|
}
|
|
1589
|
-
if (
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
if (options.debug) {
|
|
1594
|
-
trackTokenRes.response = response;
|
|
1595
|
-
}
|
|
1596
|
-
return [2 /*return*/, trackTokenRes];
|
|
1769
|
+
if (expiresAt) {
|
|
1770
|
+
expiresAt = new Date(expiresAt);
|
|
1771
|
+
passed = ((_a = user === null || user === void 0 ? void 0 : user.fraud) === null || _a === void 0 ? void 0 : _a.passed) && ((_b = user === null || user === void 0 ? void 0 : user.country) === null || _b === void 0 ? void 0 : _b.passed) && ((_c = user === null || user === void 0 ? void 0 : user.state) === null || _c === void 0 ? void 0 : _c.passed);
|
|
1772
|
+
expiresIn = (expiresAt.getTime() - Date.now()) / 1000;
|
|
1597
1773
|
}
|
|
1598
1774
|
trackRes = {
|
|
1599
1775
|
user: user,
|
|
1600
1776
|
events: events,
|
|
1601
1777
|
location: location,
|
|
1778
|
+
token: token,
|
|
1779
|
+
expiresAt: expiresAt,
|
|
1780
|
+
expiresIn: expiresIn,
|
|
1781
|
+
passed: passed,
|
|
1602
1782
|
};
|
|
1603
1783
|
if (options.debug) {
|
|
1604
1784
|
trackRes.response = response;
|
|
@@ -1934,17 +2114,18 @@ var AutocompleteUI = /** @class */ (function () {
|
|
|
1934
2114
|
};
|
|
1935
2115
|
AutocompleteUI.prototype.fetchResults = function (query) {
|
|
1936
2116
|
return __awaiter(this, void 0, void 0, function () {
|
|
1937
|
-
var _a, limit, layers, countryCode, expandUnits, onRequest, params, addresses;
|
|
2117
|
+
var _a, limit, layers, countryCode, expandUnits, mailable, onRequest, params, addresses;
|
|
1938
2118
|
return __generator(this, function (_b) {
|
|
1939
2119
|
switch (_b.label) {
|
|
1940
2120
|
case 0:
|
|
1941
|
-
_a = this.config, limit = _a.limit, layers = _a.layers, countryCode = _a.countryCode, expandUnits = _a.expandUnits, onRequest = _a.onRequest;
|
|
2121
|
+
_a = this.config, limit = _a.limit, layers = _a.layers, countryCode = _a.countryCode, expandUnits = _a.expandUnits, mailable = _a.mailable, onRequest = _a.onRequest;
|
|
1942
2122
|
params = {
|
|
1943
2123
|
query: query,
|
|
1944
2124
|
limit: limit,
|
|
1945
2125
|
layers: layers,
|
|
1946
2126
|
countryCode: countryCode,
|
|
1947
2127
|
expandUnits: expandUnits,
|
|
2128
|
+
mailable: mailable,
|
|
1948
2129
|
};
|
|
1949
2130
|
if (this.near) {
|
|
1950
2131
|
params.near = this.near;
|
|
@@ -2321,10 +2502,6 @@ var Radar = /** @class */ (function () {
|
|
|
2321
2502
|
if (params === void 0) { params = {}; }
|
|
2322
2503
|
return VerifyAPI.trackVerified(params);
|
|
2323
2504
|
};
|
|
2324
|
-
Radar.trackVerifiedToken = function (params) {
|
|
2325
|
-
if (params === void 0) { params = {}; }
|
|
2326
|
-
return VerifyAPI.trackVerified(params, true);
|
|
2327
|
-
};
|
|
2328
2505
|
Radar.getContext = function (params) {
|
|
2329
2506
|
return ContextAPI.getContext(params);
|
|
2330
2507
|
};
|