vesant-sdk 1.7.0 → 1.7.1-dev.301c6df
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/{client-DtH2RLuy.d.ts → client-B3DCAHlg.d.ts} +2 -2
- package/dist/{client-DrjgZoH_.d.mts → client-BwXMQA2a.d.mts} +64 -42
- package/dist/{client-B0qhE2kr.d.mts → client-D23KhWeh.d.mts} +2 -2
- package/dist/{client-DF7hlMEz.d.ts → client-fy3trF2K.d.ts} +64 -42
- package/dist/{client-BolQlL5e.d.mts → client-q9fN8Hhf.d.mts} +103 -1
- package/dist/{client-BolQlL5e.d.ts → client-q9fN8Hhf.d.ts} +103 -1
- package/dist/compliance/index.d.mts +3 -3
- package/dist/compliance/index.d.ts +3 -3
- package/dist/compliance/index.js +181 -91
- package/dist/compliance/index.js.map +1 -1
- package/dist/compliance/index.mjs +181 -91
- package/dist/compliance/index.mjs.map +1 -1
- package/dist/decisions/index.d.mts +1 -1
- package/dist/decisions/index.d.ts +1 -1
- package/dist/decisions/index.js +69 -8
- package/dist/decisions/index.js.map +1 -1
- package/dist/decisions/index.mjs +69 -8
- package/dist/decisions/index.mjs.map +1 -1
- package/dist/geolocation/index.d.mts +68 -7
- package/dist/geolocation/index.d.ts +68 -7
- package/dist/geolocation/index.js +186 -91
- package/dist/geolocation/index.js.map +1 -1
- package/dist/geolocation/index.mjs +183 -92
- package/dist/geolocation/index.mjs.map +1 -1
- package/dist/index-C3zUKydT.d.mts +264 -0
- package/dist/index-DSDgS09k.d.ts +264 -0
- package/dist/index.d.mts +26 -9
- package/dist/index.d.ts +26 -9
- package/dist/index.js +354 -120
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +346 -121
- package/dist/index.mjs.map +1 -1
- package/dist/kyc/core.d.mts +1 -1
- package/dist/kyc/core.d.ts +1 -1
- package/dist/kyc/core.js +75 -14
- package/dist/kyc/core.js.map +1 -1
- package/dist/kyc/core.mjs +75 -14
- package/dist/kyc/core.mjs.map +1 -1
- package/dist/kyc/index.d.mts +4 -4
- package/dist/kyc/index.d.ts +4 -4
- package/dist/kyc/index.js +75 -14
- package/dist/kyc/index.js.map +1 -1
- package/dist/kyc/index.mjs +75 -14
- package/dist/kyc/index.mjs.map +1 -1
- package/dist/react.d.mts +7 -3
- package/dist/react.d.ts +7 -3
- package/dist/react.js +70 -33
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +70 -33
- package/dist/react.mjs.map +1 -1
- package/dist/risk-profile/index.d.mts +1 -1
- package/dist/risk-profile/index.d.ts +1 -1
- package/dist/risk-profile/index.js +69 -8
- package/dist/risk-profile/index.js.map +1 -1
- package/dist/risk-profile/index.mjs +69 -8
- package/dist/risk-profile/index.mjs.map +1 -1
- package/dist/scores/index.d.mts +1 -1
- package/dist/scores/index.d.ts +1 -1
- package/dist/scores/index.js +69 -8
- package/dist/scores/index.js.map +1 -1
- package/dist/scores/index.mjs +69 -8
- package/dist/scores/index.mjs.map +1 -1
- package/dist/tax/index.d.mts +2 -2
- package/dist/tax/index.d.ts +2 -2
- package/dist/tax/index.js +74 -10
- package/dist/tax/index.js.map +1 -1
- package/dist/tax/index.mjs +74 -10
- package/dist/tax/index.mjs.map +1 -1
- package/dist/webhooks/index.d.mts +2 -189
- package/dist/webhooks/index.d.ts +2 -189
- package/dist/webhooks/index.js +85 -21
- package/dist/webhooks/index.js.map +1 -1
- package/dist/webhooks/index.mjs +85 -22
- package/dist/webhooks/index.mjs.map +1 -1
- package/package.json +4 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { D as DeviceFingerprintRequest, L as LocationVerification, V as ValidateCipherTextResponse, a as LocationRequest, G as GeolocationClient, b as LocationRequestFilters, c as LocationRequestListResponse } from './client-
|
|
1
|
+
import { D as DeviceFingerprintRequest, L as LocationVerification, V as ValidateCipherTextResponse, a as LocationRequest, G as GeolocationClient, b as LocationRequestFilters, c as LocationRequestListResponse } from './client-fy3trF2K.js';
|
|
2
2
|
import { RiskProfileClient } from './risk-profile/index.js';
|
|
3
|
-
import { V as VesantConfig, R as RequestOptions } from './client-
|
|
3
|
+
import { V as VesantConfig, R as RequestOptions } from './client-q9fN8Hhf.js';
|
|
4
4
|
import { C as CustomerProfile } from './types-UGyDl1fd.js';
|
|
5
5
|
import { E as EntityType, B as BlockReason, P as PaginationParams } from './types-CBQRNL-l.js';
|
|
6
6
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as Logger, B as BaseClient, R as RequestOptions } from './client-
|
|
1
|
+
import { L as Logger, B as BaseClient, R as RequestOptions } from './client-q9fN8Hhf.mjs';
|
|
2
2
|
import { B as BlockReason, P as PaginationParams } from './types-CBQRNL-l.mjs';
|
|
3
3
|
|
|
4
4
|
interface DeviceFingerprintRequest {
|
|
@@ -47,6 +47,8 @@ interface CipherTextPayload {
|
|
|
47
47
|
heading?: number;
|
|
48
48
|
speed?: number;
|
|
49
49
|
timestamp: number;
|
|
50
|
+
/** Advisory client-side GPS integrity flags; the server weighs these as risk factors. */
|
|
51
|
+
integrity_flags?: string[];
|
|
50
52
|
};
|
|
51
53
|
/** Network information */
|
|
52
54
|
network?: {
|
|
@@ -74,9 +76,12 @@ type CipherTextReason = 'registration' | 'login' | 'transaction' | 'interval_che
|
|
|
74
76
|
interface CipherTextOptions {
|
|
75
77
|
/** Reason for collection (required) */
|
|
76
78
|
reason: CipherTextReason;
|
|
77
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* @deprecated No longer used and ignored; envelope validation is handled by the
|
|
81
|
+
* server. This field will be removed in a future release.
|
|
82
|
+
*/
|
|
78
83
|
signingKey?: string;
|
|
79
|
-
/** @deprecated
|
|
84
|
+
/** @deprecated No longer used and ignored; see signingKey. */
|
|
80
85
|
apiKey?: string;
|
|
81
86
|
/** Request GPS location (default: false) */
|
|
82
87
|
requestLocation?: boolean;
|
|
@@ -106,6 +111,11 @@ interface CipherTextResult {
|
|
|
106
111
|
/** Expiry time for the cipherText */
|
|
107
112
|
expiresAt: string;
|
|
108
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Honest name for CipherTextResult: a base64 JSON device-signals envelope
|
|
116
|
+
* (not encryption). Prefer this name; `CipherTextResult` remains as an alias.
|
|
117
|
+
*/
|
|
118
|
+
type DeviceSignalsEnvelope = CipherTextResult;
|
|
109
119
|
/**
|
|
110
120
|
* Decrypted cipherText data (returned by server after validation)
|
|
111
121
|
*/
|
|
@@ -164,6 +174,21 @@ interface ValidateCipherTextRequest {
|
|
|
164
174
|
* has complete customer information (name, email, etc.)
|
|
165
175
|
*/
|
|
166
176
|
customer_data?: CipherTextCustomerData;
|
|
177
|
+
/**
|
|
178
|
+
* Single-use device-signals nonce from {@link SignalsNonce}. Bound to the
|
|
179
|
+
* tenant, user, and event; consumed server-side so the submission can't be
|
|
180
|
+
* replayed. Attached automatically by the client.
|
|
181
|
+
*/
|
|
182
|
+
nonce?: string;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* A short-lived, single-use device-signals nonce minted by the server. Bind a
|
|
186
|
+
* device-signals submission to a specific tenant, user, and event type so a
|
|
187
|
+
* captured envelope can't be replayed. Integrity is enforced server-side.
|
|
188
|
+
*/
|
|
189
|
+
interface SignalsNonce {
|
|
190
|
+
nonce: string;
|
|
191
|
+
expires_at: string;
|
|
167
192
|
}
|
|
168
193
|
/**
|
|
169
194
|
* Response from cipherText validation
|
|
@@ -227,7 +252,11 @@ interface ValidateCipherTextResponse {
|
|
|
227
252
|
};
|
|
228
253
|
}
|
|
229
254
|
interface VerifyIPRequest {
|
|
230
|
-
|
|
255
|
+
/**
|
|
256
|
+
* Optional. Omit to let the server derive the connecting IP — the SDK never
|
|
257
|
+
* asserts the client IP (spoofable, and the server extracts it authoritatively).
|
|
258
|
+
*/
|
|
259
|
+
ip_address?: string;
|
|
231
260
|
user_id: string;
|
|
232
261
|
event_type: string;
|
|
233
262
|
device_fingerprint?: DeviceFingerprintRequest;
|
|
@@ -483,7 +512,9 @@ interface GeolocationConfigResponse {
|
|
|
483
512
|
};
|
|
484
513
|
/** When true, GPS-verified location overrides anonymizer-based blocking */
|
|
485
514
|
trust_gps_over_anonymizer: boolean;
|
|
486
|
-
/**
|
|
515
|
+
/**
|
|
516
|
+
* @deprecated No longer used by the SDK and ignored if present.
|
|
517
|
+
*/
|
|
487
518
|
signing_key?: string;
|
|
488
519
|
}
|
|
489
520
|
interface GeolocationClientConfig {
|
|
@@ -624,16 +655,6 @@ interface ResendLocationRequestRequest {
|
|
|
624
655
|
email?: string;
|
|
625
656
|
phone?: string;
|
|
626
657
|
}
|
|
627
|
-
interface WiFiNetwork {
|
|
628
|
-
/** MAC address (BSSID) */
|
|
629
|
-
macAddress: string;
|
|
630
|
-
/** Signal strength in dBm (negative number) */
|
|
631
|
-
signalStrength?: number;
|
|
632
|
-
/** WiFi channel */
|
|
633
|
-
channel?: number;
|
|
634
|
-
/** Network name (optional) */
|
|
635
|
-
ssid?: string;
|
|
636
|
-
}
|
|
637
658
|
interface LocationCaptureRequest {
|
|
638
659
|
/** GPS latitude (if available) */
|
|
639
660
|
latitude?: number;
|
|
@@ -641,8 +662,8 @@ interface LocationCaptureRequest {
|
|
|
641
662
|
longitude?: number;
|
|
642
663
|
/** GPS accuracy in meters */
|
|
643
664
|
accuracy?: number;
|
|
644
|
-
/**
|
|
645
|
-
|
|
665
|
+
/** Advisory client-side GPS integrity flags; the server weighs these as risk factors. */
|
|
666
|
+
integrity_flags?: string[];
|
|
646
667
|
/** User agent string */
|
|
647
668
|
user_agent?: string;
|
|
648
669
|
/** Device metadata */
|
|
@@ -662,6 +683,10 @@ interface LocationShareInfo {
|
|
|
662
683
|
status: string;
|
|
663
684
|
is_expired: boolean;
|
|
664
685
|
is_completed: boolean;
|
|
686
|
+
/**
|
|
687
|
+
* Server-only hint. The web SDK cannot enumerate WiFi networks (no browser API
|
|
688
|
+
* for BSSIDs); this flag is informational and never satisfied client-side.
|
|
689
|
+
*/
|
|
665
690
|
requires_wifi: boolean;
|
|
666
691
|
}
|
|
667
692
|
interface LocationCaptureResponse {
|
|
@@ -730,8 +755,6 @@ interface UseLocationCaptureOptions {
|
|
|
730
755
|
autoFetch?: boolean;
|
|
731
756
|
/** Auto-request GPS permission on mount */
|
|
732
757
|
autoRequestGPS?: boolean;
|
|
733
|
-
/** Collect WiFi data as fallback (requires explicit permission) */
|
|
734
|
-
collectWiFi?: boolean;
|
|
735
758
|
}
|
|
736
759
|
interface UseLocationCaptureResult {
|
|
737
760
|
/** Location share info */
|
|
@@ -774,7 +797,6 @@ interface UseLocationCaptureResult {
|
|
|
774
797
|
* transient failures gracefully.
|
|
775
798
|
*/
|
|
776
799
|
declare class GeolocationClient extends BaseClient {
|
|
777
|
-
private cachedSigningKey?;
|
|
778
800
|
constructor(config: GeolocationClientConfig);
|
|
779
801
|
/**
|
|
780
802
|
* Verify an IP address and check compliance
|
|
@@ -836,14 +858,24 @@ declare class GeolocationClient extends BaseClient {
|
|
|
836
858
|
*/
|
|
837
859
|
getGPSConfig(requestOptions?: RequestOptions): Promise<GeolocationConfigResponse>;
|
|
838
860
|
/**
|
|
839
|
-
*
|
|
861
|
+
* Mint a short-lived, single-use device-signals nonce.
|
|
840
862
|
*
|
|
841
|
-
*
|
|
842
|
-
*
|
|
863
|
+
* The nonce is bound to the tenant, user, and event type and is consumed
|
|
864
|
+
* server-side during validation, so a captured device-signals envelope cannot
|
|
865
|
+
* be replayed. `validateCipherText` mints and attaches one automatically; call
|
|
866
|
+
* this directly only if you manage the nonce yourself.
|
|
843
867
|
*
|
|
844
|
-
* @
|
|
868
|
+
* @param userId - User ID the nonce is bound to
|
|
869
|
+
* @param eventType - Event type the nonce is bound to (login, registration, ...)
|
|
870
|
+
* @returns The nonce and its expiry
|
|
845
871
|
*/
|
|
846
|
-
|
|
872
|
+
fetchSignalsNonce(userId: string, eventType: CipherTextReason, requestOptions?: RequestOptions): Promise<SignalsNonce>;
|
|
873
|
+
/**
|
|
874
|
+
* Best-effort nonce mint for validation. Returns undefined if minting fails —
|
|
875
|
+
* the server is the sole authority and blocks when a nonce is required, so this
|
|
876
|
+
* never downgrades security on the client's say-so.
|
|
877
|
+
*/
|
|
878
|
+
private resolveSignalsNonce;
|
|
847
879
|
/**
|
|
848
880
|
* Validate a cipherText generated by the frontend SDK
|
|
849
881
|
*
|
|
@@ -995,40 +1027,30 @@ declare class GeolocationClient extends BaseClient {
|
|
|
995
1027
|
*
|
|
996
1028
|
* @example
|
|
997
1029
|
* ```typescript
|
|
998
|
-
* //
|
|
1030
|
+
* // GPS (the web SDK is GPS + IP only; the server handles the IP fallback)
|
|
999
1031
|
* const result = await client.captureLocation(token, {
|
|
1000
1032
|
* latitude: 37.7749,
|
|
1001
1033
|
* longitude: -122.4194,
|
|
1002
1034
|
* accuracy: 10
|
|
1003
1035
|
* });
|
|
1004
|
-
*
|
|
1005
|
-
* // Using WiFi positioning (fallback)
|
|
1006
|
-
* const result = await client.captureLocation(token, {
|
|
1007
|
-
* wifi_networks: [
|
|
1008
|
-
* { macAddress: "00:11:22:33:44:55", signalStrength: -50 },
|
|
1009
|
-
* { macAddress: "AA:BB:CC:DD:EE:FF", signalStrength: -70 }
|
|
1010
|
-
* ]
|
|
1011
|
-
* });
|
|
1012
1036
|
* ```
|
|
1013
1037
|
*/
|
|
1014
1038
|
captureLocation(token: string, capture: LocationCaptureRequest, requestOptions?: RequestOptions): Promise<LocationCaptureResponse>;
|
|
1015
1039
|
/**
|
|
1016
|
-
* Generate a
|
|
1017
|
-
*
|
|
1018
|
-
* Automatically passes the client's API key for HMAC signing (v02 format).
|
|
1019
|
-
* If no API key is configured, falls back to unsigned v01 format.
|
|
1040
|
+
* Generate a device-signals envelope containing device and location data,
|
|
1041
|
+
* validated by the server.
|
|
1020
1042
|
*
|
|
1021
|
-
* @param options - Options for
|
|
1043
|
+
* @param options - Options for envelope generation
|
|
1022
1044
|
* @param gpsConfig - Optional GPS config (from getGPSConfig)
|
|
1023
|
-
* @returns
|
|
1045
|
+
* @returns The device-signals envelope result
|
|
1024
1046
|
*
|
|
1025
1047
|
* @example
|
|
1026
1048
|
* ```typescript
|
|
1027
1049
|
* const result = await client.generateCipherText({ reason: 'login' });
|
|
1028
|
-
* console.log(result.cipherText); //
|
|
1050
|
+
* console.log(result.cipherText); // device-signals envelope
|
|
1029
1051
|
* ```
|
|
1030
1052
|
*/
|
|
1031
1053
|
generateCipherText(options: Omit<CipherTextOptions, 'apiKey' | 'signingKey'>, gpsConfig?: GeolocationConfigResponse): Promise<CipherTextResult>;
|
|
1032
1054
|
}
|
|
1033
1055
|
|
|
1034
|
-
export { type
|
|
1056
|
+
export { type UseLocationCaptureResult as $, type APIError as A, type GeolocationAlert as B, type CipherTextCustomerData as C, type DeviceFingerprintRequest as D, type GeolocationClientConfig as E, type GeolocationConfigResponse as F, GeolocationClient as G, type GeolocationRecord as H, type LocationCaptureRequest as I, type JurisdictionConfig as J, type LocationCaptureResponse as K, type LocationVerification as L, type LocationRequestChannel as M, type LocationRequestResult as N, type LocationRequestStatus as O, type LocationShareInfo as P, type UpdateGeofenceRuleRequest as Q, type ResendLocationRequestRequest as R, type SignalsNonce as S, type UpdateJurisdictionRequest as T, type UpdateDeviceTrustRequest as U, type ValidateCipherTextResponse as V, type UseAlertsOptions as W, type UseAlertsResult as X, type UseGeolocationOptions as Y, type UseGeolocationResult as Z, type UseLocationCaptureOptions as _, type LocationRequest as a, type UseLocationRequestsOptions as a0, type UseLocationRequestsResult as a1, type ValidateCipherTextRequest as a2, type VerifyIPRequest as a3, type LocationRequestFilters as b, type LocationRequestListResponse as c, type AlertFilters as d, type AlertListResponse as e, type AlertSeverity as f, type AlertStatus as g, type AlertType as h, type CipherTextOptions as i, type CipherTextPayload as j, type CipherTextReason as k, type CipherTextResult as l, type ComplianceCheckResponse as m, type CreateGeofenceRuleRequest as n, type CreateJurisdictionRequest as o, type CreateLocationRequestRequest as p, type DashboardMetrics as q, type DecryptedCipherText as r, type DeviceFingerprint as s, type DeviceSignalsEnvelope as t, type DeviceTrustResult as u, type GeoIPResult as v, type GeofenceAction as w, type GeofenceEvaluation as x, type GeofenceRule as y, type GeofenceRuleType as z };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { D as DeviceFingerprintRequest, L as LocationVerification, V as ValidateCipherTextResponse, a as LocationRequest, G as GeolocationClient, b as LocationRequestFilters, c as LocationRequestListResponse } from './client-
|
|
1
|
+
import { D as DeviceFingerprintRequest, L as LocationVerification, V as ValidateCipherTextResponse, a as LocationRequest, G as GeolocationClient, b as LocationRequestFilters, c as LocationRequestListResponse } from './client-BwXMQA2a.mjs';
|
|
2
2
|
import { RiskProfileClient } from './risk-profile/index.mjs';
|
|
3
|
-
import { V as VesantConfig, R as RequestOptions } from './client-
|
|
3
|
+
import { V as VesantConfig, R as RequestOptions } from './client-q9fN8Hhf.mjs';
|
|
4
4
|
import { C as CustomerProfile } from './types-BOFaMQxI.mjs';
|
|
5
5
|
import { E as EntityType, B as BlockReason, P as PaginationParams } from './types-CBQRNL-l.mjs';
|
|
6
6
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as Logger, B as BaseClient, R as RequestOptions } from './client-
|
|
1
|
+
import { L as Logger, B as BaseClient, R as RequestOptions } from './client-q9fN8Hhf.js';
|
|
2
2
|
import { B as BlockReason, P as PaginationParams } from './types-CBQRNL-l.js';
|
|
3
3
|
|
|
4
4
|
interface DeviceFingerprintRequest {
|
|
@@ -47,6 +47,8 @@ interface CipherTextPayload {
|
|
|
47
47
|
heading?: number;
|
|
48
48
|
speed?: number;
|
|
49
49
|
timestamp: number;
|
|
50
|
+
/** Advisory client-side GPS integrity flags; the server weighs these as risk factors. */
|
|
51
|
+
integrity_flags?: string[];
|
|
50
52
|
};
|
|
51
53
|
/** Network information */
|
|
52
54
|
network?: {
|
|
@@ -74,9 +76,12 @@ type CipherTextReason = 'registration' | 'login' | 'transaction' | 'interval_che
|
|
|
74
76
|
interface CipherTextOptions {
|
|
75
77
|
/** Reason for collection (required) */
|
|
76
78
|
reason: CipherTextReason;
|
|
77
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* @deprecated No longer used and ignored; envelope validation is handled by the
|
|
81
|
+
* server. This field will be removed in a future release.
|
|
82
|
+
*/
|
|
78
83
|
signingKey?: string;
|
|
79
|
-
/** @deprecated
|
|
84
|
+
/** @deprecated No longer used and ignored; see signingKey. */
|
|
80
85
|
apiKey?: string;
|
|
81
86
|
/** Request GPS location (default: false) */
|
|
82
87
|
requestLocation?: boolean;
|
|
@@ -106,6 +111,11 @@ interface CipherTextResult {
|
|
|
106
111
|
/** Expiry time for the cipherText */
|
|
107
112
|
expiresAt: string;
|
|
108
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Honest name for CipherTextResult: a base64 JSON device-signals envelope
|
|
116
|
+
* (not encryption). Prefer this name; `CipherTextResult` remains as an alias.
|
|
117
|
+
*/
|
|
118
|
+
type DeviceSignalsEnvelope = CipherTextResult;
|
|
109
119
|
/**
|
|
110
120
|
* Decrypted cipherText data (returned by server after validation)
|
|
111
121
|
*/
|
|
@@ -164,6 +174,21 @@ interface ValidateCipherTextRequest {
|
|
|
164
174
|
* has complete customer information (name, email, etc.)
|
|
165
175
|
*/
|
|
166
176
|
customer_data?: CipherTextCustomerData;
|
|
177
|
+
/**
|
|
178
|
+
* Single-use device-signals nonce from {@link SignalsNonce}. Bound to the
|
|
179
|
+
* tenant, user, and event; consumed server-side so the submission can't be
|
|
180
|
+
* replayed. Attached automatically by the client.
|
|
181
|
+
*/
|
|
182
|
+
nonce?: string;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* A short-lived, single-use device-signals nonce minted by the server. Bind a
|
|
186
|
+
* device-signals submission to a specific tenant, user, and event type so a
|
|
187
|
+
* captured envelope can't be replayed. Integrity is enforced server-side.
|
|
188
|
+
*/
|
|
189
|
+
interface SignalsNonce {
|
|
190
|
+
nonce: string;
|
|
191
|
+
expires_at: string;
|
|
167
192
|
}
|
|
168
193
|
/**
|
|
169
194
|
* Response from cipherText validation
|
|
@@ -227,7 +252,11 @@ interface ValidateCipherTextResponse {
|
|
|
227
252
|
};
|
|
228
253
|
}
|
|
229
254
|
interface VerifyIPRequest {
|
|
230
|
-
|
|
255
|
+
/**
|
|
256
|
+
* Optional. Omit to let the server derive the connecting IP — the SDK never
|
|
257
|
+
* asserts the client IP (spoofable, and the server extracts it authoritatively).
|
|
258
|
+
*/
|
|
259
|
+
ip_address?: string;
|
|
231
260
|
user_id: string;
|
|
232
261
|
event_type: string;
|
|
233
262
|
device_fingerprint?: DeviceFingerprintRequest;
|
|
@@ -483,7 +512,9 @@ interface GeolocationConfigResponse {
|
|
|
483
512
|
};
|
|
484
513
|
/** When true, GPS-verified location overrides anonymizer-based blocking */
|
|
485
514
|
trust_gps_over_anonymizer: boolean;
|
|
486
|
-
/**
|
|
515
|
+
/**
|
|
516
|
+
* @deprecated No longer used by the SDK and ignored if present.
|
|
517
|
+
*/
|
|
487
518
|
signing_key?: string;
|
|
488
519
|
}
|
|
489
520
|
interface GeolocationClientConfig {
|
|
@@ -624,16 +655,6 @@ interface ResendLocationRequestRequest {
|
|
|
624
655
|
email?: string;
|
|
625
656
|
phone?: string;
|
|
626
657
|
}
|
|
627
|
-
interface WiFiNetwork {
|
|
628
|
-
/** MAC address (BSSID) */
|
|
629
|
-
macAddress: string;
|
|
630
|
-
/** Signal strength in dBm (negative number) */
|
|
631
|
-
signalStrength?: number;
|
|
632
|
-
/** WiFi channel */
|
|
633
|
-
channel?: number;
|
|
634
|
-
/** Network name (optional) */
|
|
635
|
-
ssid?: string;
|
|
636
|
-
}
|
|
637
658
|
interface LocationCaptureRequest {
|
|
638
659
|
/** GPS latitude (if available) */
|
|
639
660
|
latitude?: number;
|
|
@@ -641,8 +662,8 @@ interface LocationCaptureRequest {
|
|
|
641
662
|
longitude?: number;
|
|
642
663
|
/** GPS accuracy in meters */
|
|
643
664
|
accuracy?: number;
|
|
644
|
-
/**
|
|
645
|
-
|
|
665
|
+
/** Advisory client-side GPS integrity flags; the server weighs these as risk factors. */
|
|
666
|
+
integrity_flags?: string[];
|
|
646
667
|
/** User agent string */
|
|
647
668
|
user_agent?: string;
|
|
648
669
|
/** Device metadata */
|
|
@@ -662,6 +683,10 @@ interface LocationShareInfo {
|
|
|
662
683
|
status: string;
|
|
663
684
|
is_expired: boolean;
|
|
664
685
|
is_completed: boolean;
|
|
686
|
+
/**
|
|
687
|
+
* Server-only hint. The web SDK cannot enumerate WiFi networks (no browser API
|
|
688
|
+
* for BSSIDs); this flag is informational and never satisfied client-side.
|
|
689
|
+
*/
|
|
665
690
|
requires_wifi: boolean;
|
|
666
691
|
}
|
|
667
692
|
interface LocationCaptureResponse {
|
|
@@ -730,8 +755,6 @@ interface UseLocationCaptureOptions {
|
|
|
730
755
|
autoFetch?: boolean;
|
|
731
756
|
/** Auto-request GPS permission on mount */
|
|
732
757
|
autoRequestGPS?: boolean;
|
|
733
|
-
/** Collect WiFi data as fallback (requires explicit permission) */
|
|
734
|
-
collectWiFi?: boolean;
|
|
735
758
|
}
|
|
736
759
|
interface UseLocationCaptureResult {
|
|
737
760
|
/** Location share info */
|
|
@@ -774,7 +797,6 @@ interface UseLocationCaptureResult {
|
|
|
774
797
|
* transient failures gracefully.
|
|
775
798
|
*/
|
|
776
799
|
declare class GeolocationClient extends BaseClient {
|
|
777
|
-
private cachedSigningKey?;
|
|
778
800
|
constructor(config: GeolocationClientConfig);
|
|
779
801
|
/**
|
|
780
802
|
* Verify an IP address and check compliance
|
|
@@ -836,14 +858,24 @@ declare class GeolocationClient extends BaseClient {
|
|
|
836
858
|
*/
|
|
837
859
|
getGPSConfig(requestOptions?: RequestOptions): Promise<GeolocationConfigResponse>;
|
|
838
860
|
/**
|
|
839
|
-
*
|
|
861
|
+
* Mint a short-lived, single-use device-signals nonce.
|
|
840
862
|
*
|
|
841
|
-
*
|
|
842
|
-
*
|
|
863
|
+
* The nonce is bound to the tenant, user, and event type and is consumed
|
|
864
|
+
* server-side during validation, so a captured device-signals envelope cannot
|
|
865
|
+
* be replayed. `validateCipherText` mints and attaches one automatically; call
|
|
866
|
+
* this directly only if you manage the nonce yourself.
|
|
843
867
|
*
|
|
844
|
-
* @
|
|
868
|
+
* @param userId - User ID the nonce is bound to
|
|
869
|
+
* @param eventType - Event type the nonce is bound to (login, registration, ...)
|
|
870
|
+
* @returns The nonce and its expiry
|
|
845
871
|
*/
|
|
846
|
-
|
|
872
|
+
fetchSignalsNonce(userId: string, eventType: CipherTextReason, requestOptions?: RequestOptions): Promise<SignalsNonce>;
|
|
873
|
+
/**
|
|
874
|
+
* Best-effort nonce mint for validation. Returns undefined if minting fails —
|
|
875
|
+
* the server is the sole authority and blocks when a nonce is required, so this
|
|
876
|
+
* never downgrades security on the client's say-so.
|
|
877
|
+
*/
|
|
878
|
+
private resolveSignalsNonce;
|
|
847
879
|
/**
|
|
848
880
|
* Validate a cipherText generated by the frontend SDK
|
|
849
881
|
*
|
|
@@ -995,40 +1027,30 @@ declare class GeolocationClient extends BaseClient {
|
|
|
995
1027
|
*
|
|
996
1028
|
* @example
|
|
997
1029
|
* ```typescript
|
|
998
|
-
* //
|
|
1030
|
+
* // GPS (the web SDK is GPS + IP only; the server handles the IP fallback)
|
|
999
1031
|
* const result = await client.captureLocation(token, {
|
|
1000
1032
|
* latitude: 37.7749,
|
|
1001
1033
|
* longitude: -122.4194,
|
|
1002
1034
|
* accuracy: 10
|
|
1003
1035
|
* });
|
|
1004
|
-
*
|
|
1005
|
-
* // Using WiFi positioning (fallback)
|
|
1006
|
-
* const result = await client.captureLocation(token, {
|
|
1007
|
-
* wifi_networks: [
|
|
1008
|
-
* { macAddress: "00:11:22:33:44:55", signalStrength: -50 },
|
|
1009
|
-
* { macAddress: "AA:BB:CC:DD:EE:FF", signalStrength: -70 }
|
|
1010
|
-
* ]
|
|
1011
|
-
* });
|
|
1012
1036
|
* ```
|
|
1013
1037
|
*/
|
|
1014
1038
|
captureLocation(token: string, capture: LocationCaptureRequest, requestOptions?: RequestOptions): Promise<LocationCaptureResponse>;
|
|
1015
1039
|
/**
|
|
1016
|
-
* Generate a
|
|
1017
|
-
*
|
|
1018
|
-
* Automatically passes the client's API key for HMAC signing (v02 format).
|
|
1019
|
-
* If no API key is configured, falls back to unsigned v01 format.
|
|
1040
|
+
* Generate a device-signals envelope containing device and location data,
|
|
1041
|
+
* validated by the server.
|
|
1020
1042
|
*
|
|
1021
|
-
* @param options - Options for
|
|
1043
|
+
* @param options - Options for envelope generation
|
|
1022
1044
|
* @param gpsConfig - Optional GPS config (from getGPSConfig)
|
|
1023
|
-
* @returns
|
|
1045
|
+
* @returns The device-signals envelope result
|
|
1024
1046
|
*
|
|
1025
1047
|
* @example
|
|
1026
1048
|
* ```typescript
|
|
1027
1049
|
* const result = await client.generateCipherText({ reason: 'login' });
|
|
1028
|
-
* console.log(result.cipherText); //
|
|
1050
|
+
* console.log(result.cipherText); // device-signals envelope
|
|
1029
1051
|
* ```
|
|
1030
1052
|
*/
|
|
1031
1053
|
generateCipherText(options: Omit<CipherTextOptions, 'apiKey' | 'signingKey'>, gpsConfig?: GeolocationConfigResponse): Promise<CipherTextResult>;
|
|
1032
1054
|
}
|
|
1033
1055
|
|
|
1034
|
-
export { type
|
|
1056
|
+
export { type UseLocationCaptureResult as $, type APIError as A, type GeolocationAlert as B, type CipherTextCustomerData as C, type DeviceFingerprintRequest as D, type GeolocationClientConfig as E, type GeolocationConfigResponse as F, GeolocationClient as G, type GeolocationRecord as H, type LocationCaptureRequest as I, type JurisdictionConfig as J, type LocationCaptureResponse as K, type LocationVerification as L, type LocationRequestChannel as M, type LocationRequestResult as N, type LocationRequestStatus as O, type LocationShareInfo as P, type UpdateGeofenceRuleRequest as Q, type ResendLocationRequestRequest as R, type SignalsNonce as S, type UpdateJurisdictionRequest as T, type UpdateDeviceTrustRequest as U, type ValidateCipherTextResponse as V, type UseAlertsOptions as W, type UseAlertsResult as X, type UseGeolocationOptions as Y, type UseGeolocationResult as Z, type UseLocationCaptureOptions as _, type LocationRequest as a, type UseLocationRequestsOptions as a0, type UseLocationRequestsResult as a1, type ValidateCipherTextRequest as a2, type VerifyIPRequest as a3, type LocationRequestFilters as b, type LocationRequestListResponse as c, type AlertFilters as d, type AlertListResponse as e, type AlertSeverity as f, type AlertStatus as g, type AlertType as h, type CipherTextOptions as i, type CipherTextPayload as j, type CipherTextReason as k, type CipherTextResult as l, type ComplianceCheckResponse as m, type CreateGeofenceRuleRequest as n, type CreateJurisdictionRequest as o, type CreateLocationRequestRequest as p, type DashboardMetrics as q, type DecryptedCipherText as r, type DeviceFingerprint as s, type DeviceSignalsEnvelope as t, type DeviceTrustResult as u, type GeoIPResult as v, type GeofenceAction as w, type GeofenceEvaluation as x, type GeofenceRule as y, type GeofenceRuleType as z };
|
|
@@ -50,6 +50,80 @@ declare class CircuitBreaker {
|
|
|
50
50
|
reset(): void;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Pluggable authentication for BaseClient.
|
|
55
|
+
*
|
|
56
|
+
* A TokenProvider supplies the credential used for the Authorization header on
|
|
57
|
+
* every request, resolved per-request (async) so callers can source short-lived
|
|
58
|
+
* or rotating credentials (OAuth2 client-credentials, STS, Vault / Secrets
|
|
59
|
+
* Manager) instead of a single static API key. The default StaticApiKeyProvider
|
|
60
|
+
* preserves the original `apiKey` behavior with zero change for existing callers.
|
|
61
|
+
*/
|
|
62
|
+
interface AuthCredential {
|
|
63
|
+
/** Authorization scheme (e.g. 'Bearer'); defaults to 'Bearer' when omitted. */
|
|
64
|
+
scheme?: string;
|
|
65
|
+
/** The credential value (bearer token / API key). */
|
|
66
|
+
token: string;
|
|
67
|
+
}
|
|
68
|
+
interface TokenProviderContext {
|
|
69
|
+
tenantId: string;
|
|
70
|
+
requestId: string;
|
|
71
|
+
/** When true, bypass any cache and obtain a fresh credential (e.g. after a 401). */
|
|
72
|
+
forceRefresh?: boolean;
|
|
73
|
+
}
|
|
74
|
+
interface TokenProvider {
|
|
75
|
+
/** Resolve the credential for a request, or null to send no Authorization header. */
|
|
76
|
+
getCredential(ctx: TokenProviderContext): Promise<AuthCredential | null>;
|
|
77
|
+
/** Whether this provider can obtain a fresh credential on demand (drives 401 retry). */
|
|
78
|
+
canRefresh?(): boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Default provider: wraps a static API key. Returns null when the key is empty
|
|
82
|
+
* so the client sends no Authorization header, matching the pre-provider behavior.
|
|
83
|
+
*/
|
|
84
|
+
declare class StaticApiKeyProvider implements TokenProvider {
|
|
85
|
+
private readonly apiKey;
|
|
86
|
+
constructor(apiKey: string);
|
|
87
|
+
getCredential(): Promise<AuthCredential | null>;
|
|
88
|
+
canRefresh(): boolean;
|
|
89
|
+
}
|
|
90
|
+
interface CachedToken {
|
|
91
|
+
token: string;
|
|
92
|
+
expiresAt?: number;
|
|
93
|
+
}
|
|
94
|
+
interface RefreshingTokenProviderOptions {
|
|
95
|
+
/** Fetches a fresh token. `expiresAt` is epoch milliseconds (optional). */
|
|
96
|
+
fetchToken: () => Promise<CachedToken>;
|
|
97
|
+
/** Refresh this many ms before expiry (default: 30_000). */
|
|
98
|
+
skewMs?: number;
|
|
99
|
+
/** Authorization scheme to emit (default: 'Bearer'). */
|
|
100
|
+
scheme?: string;
|
|
101
|
+
/** Observe each successful (re)fetch — for logging / metrics. */
|
|
102
|
+
onRotate?: (meta: {
|
|
103
|
+
expiresAt?: number;
|
|
104
|
+
}) => void;
|
|
105
|
+
/** Injectable clock (default: Date.now). */
|
|
106
|
+
now?: () => number;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Caches a fetched token and refreshes it when it is within the skew window of
|
|
110
|
+
* expiry or when `forceRefresh` is requested. Concurrent refreshes are de-duped
|
|
111
|
+
* into a single in-flight fetch.
|
|
112
|
+
*/
|
|
113
|
+
declare class RefreshingTokenProvider implements TokenProvider {
|
|
114
|
+
private readonly opts;
|
|
115
|
+
private cached;
|
|
116
|
+
private inFlight;
|
|
117
|
+
private readonly skewMs;
|
|
118
|
+
private readonly scheme;
|
|
119
|
+
private readonly now;
|
|
120
|
+
constructor(opts: RefreshingTokenProviderOptions);
|
|
121
|
+
canRefresh(): boolean;
|
|
122
|
+
getCredential(ctx?: TokenProviderContext): Promise<AuthCredential | null>;
|
|
123
|
+
private isExpiring;
|
|
124
|
+
private refresh;
|
|
125
|
+
}
|
|
126
|
+
|
|
53
127
|
/**
|
|
54
128
|
* Configuration types for Vesant SDK clients
|
|
55
129
|
*/
|
|
@@ -82,6 +156,16 @@ interface BaseClientConfig {
|
|
|
82
156
|
tenantId: string;
|
|
83
157
|
/** Optional API key for authentication */
|
|
84
158
|
apiKey?: string;
|
|
159
|
+
/**
|
|
160
|
+
* Pluggable auth token provider. When set, it supplies the Authorization
|
|
161
|
+
* credential per-request (overriding `apiKey`), enabling OAuth2 / STS / rotating
|
|
162
|
+
* secrets and single-shot 401 re-auth. Defaults to a static-apiKey provider.
|
|
163
|
+
*/
|
|
164
|
+
authProvider?: TokenProvider;
|
|
165
|
+
/** Observe credential rotation triggered by a 401 re-auth (logging / metrics). */
|
|
166
|
+
onCredentialRotated?: (meta: {
|
|
167
|
+
reason: string;
|
|
168
|
+
}) => void;
|
|
85
169
|
/** Custom headers to include in all requests */
|
|
86
170
|
headers?: Record<string, string>;
|
|
87
171
|
/** Request timeout in milliseconds (default: 10000) */
|
|
@@ -108,6 +192,16 @@ interface VesantConfig {
|
|
|
108
192
|
tenantId: string;
|
|
109
193
|
/** Optional API key for authentication */
|
|
110
194
|
apiKey?: string;
|
|
195
|
+
/**
|
|
196
|
+
* Pluggable auth token provider. When set, it supplies the Authorization
|
|
197
|
+
* credential per-request (overriding `apiKey`), enabling OAuth2 / STS / rotating
|
|
198
|
+
* secrets and single-shot 401 re-auth. Defaults to a static-apiKey provider.
|
|
199
|
+
*/
|
|
200
|
+
authProvider?: TokenProvider;
|
|
201
|
+
/** Observe credential rotation triggered by a 401 re-auth (logging / metrics). */
|
|
202
|
+
onCredentialRotated?: (meta: {
|
|
203
|
+
reason: string;
|
|
204
|
+
}) => void;
|
|
111
205
|
/** Custom headers to include in all requests */
|
|
112
206
|
headers?: Record<string, string>;
|
|
113
207
|
/** Request timeout in milliseconds (default: 10000) */
|
|
@@ -195,7 +289,15 @@ declare abstract class BaseClient {
|
|
|
195
289
|
private interceptors;
|
|
196
290
|
private circuitBreaker;
|
|
197
291
|
private rateLimitTracker;
|
|
292
|
+
private authProvider;
|
|
198
293
|
constructor(config: BaseClientConfig);
|
|
294
|
+
/**
|
|
295
|
+
* Resolve the Idempotency-Key for a request. Mutating methods (POST/PUT/PATCH)
|
|
296
|
+
* get the caller-supplied key or a freshly minted UUID; non-mutating methods get
|
|
297
|
+
* none. requestWithRetry resolves this once and injects it so every retry reuses
|
|
298
|
+
* one key (letting the server dedup replays); a direct request() resolves per call.
|
|
299
|
+
*/
|
|
300
|
+
private resolveIdempotencyKey;
|
|
199
301
|
/**
|
|
200
302
|
* Make an HTTP request with timeout and error handling
|
|
201
303
|
*/
|
|
@@ -237,4 +339,4 @@ declare abstract class BaseClient {
|
|
|
237
339
|
}>;
|
|
238
340
|
}
|
|
239
341
|
|
|
240
|
-
export { BaseClient as B, type CGSConfig as C, type Logger as L, type RequestOptions as R, type VesantConfig as V, type BaseClientConfig as a, CircuitBreaker as b, type CircuitBreakerConfig as c, type CircuitBreakerState as d, type CircuitBreakerStatus as e, type RateLimitStatus as f, RateLimitTracker as g, type RequestInterceptor as
|
|
342
|
+
export { type AuthCredential as A, BaseClient as B, type CGSConfig as C, type Logger as L, type RequestOptions as R, StaticApiKeyProvider as S, type TokenProvider as T, type VesantConfig as V, type BaseClientConfig as a, CircuitBreaker as b, type CircuitBreakerConfig as c, type CircuitBreakerState as d, type CircuitBreakerStatus as e, type RateLimitStatus as f, RateLimitTracker as g, RefreshingTokenProvider as h, type RefreshingTokenProviderOptions as i, type RequestInterceptor as j, type RequiredBaseClientConfig as k, type RequiredCGSConfig as l, type RequiredVesantConfig as m, type TokenProviderContext as n };
|