@proveanything/smartlinks 1.7.10 → 1.8.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.
- package/README.md +3 -0
- package/dist/api/analytics.d.ts +57 -0
- package/dist/api/analytics.js +542 -0
- package/dist/api/auth.d.ts +23 -35
- package/dist/api/auth.js +104 -0
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.js +1 -0
- package/dist/docs/API_SUMMARY.md +575 -40
- package/dist/docs/analytics-metadata-conventions.md +80 -0
- package/dist/docs/analytics.md +690 -0
- package/dist/docs/interactions.md +2 -0
- package/dist/docs/overview.md +2 -1
- package/dist/index.d.ts +1 -1
- package/dist/openapi.yaml +856 -128
- package/dist/types/analytics.d.ts +307 -0
- package/dist/types/analytics.js +7 -1
- package/dist/types/auth.d.ts +67 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -0
- package/docs/API_SUMMARY.md +575 -40
- package/docs/analytics-metadata-conventions.md +80 -0
- package/docs/analytics.md +690 -0
- package/docs/interactions.md +2 -0
- package/docs/overview.md +2 -1
- package/openapi.yaml +856 -128
- package/package.json +1 -1
package/dist/api/auth.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { UserAccountRegistrationRequest } from "../types/auth";
|
|
1
|
+
import type { UserAccountRegistrationRequest, AccountInfoResponse, AuthLocation, AuthLocationCacheOptions } from "../types/auth";
|
|
2
|
+
export type { AccountInfoResponse, AuthLocation, AuthLocationCacheOptions } from "../types/auth";
|
|
2
3
|
export type LoginResponse = {
|
|
3
4
|
id: string;
|
|
4
5
|
name: string;
|
|
@@ -13,40 +14,6 @@ export type VerifyTokenResponse = {
|
|
|
13
14
|
email?: string;
|
|
14
15
|
account?: Record<string, any>;
|
|
15
16
|
};
|
|
16
|
-
export type AccountInfoResponse = {
|
|
17
|
-
accessType: string;
|
|
18
|
-
analyticsCode: string;
|
|
19
|
-
analyticsId: string;
|
|
20
|
-
auth_time: number;
|
|
21
|
-
baseCollectionId: string;
|
|
22
|
-
clientType: string;
|
|
23
|
-
email: string;
|
|
24
|
-
email_verified: boolean;
|
|
25
|
-
features: {
|
|
26
|
-
actionLogger: boolean;
|
|
27
|
-
adminCollections: boolean;
|
|
28
|
-
adminApps: boolean;
|
|
29
|
-
apiKeys: boolean;
|
|
30
|
-
adminUsers: boolean;
|
|
31
|
-
[key: string]: boolean;
|
|
32
|
-
};
|
|
33
|
-
iat: number;
|
|
34
|
-
id: string;
|
|
35
|
-
iss: string;
|
|
36
|
-
location: string | null;
|
|
37
|
-
name: string;
|
|
38
|
-
picture: string;
|
|
39
|
-
sites: {
|
|
40
|
-
[siteName: string]: boolean;
|
|
41
|
-
};
|
|
42
|
-
sub: string;
|
|
43
|
-
uid: string;
|
|
44
|
-
userId: string;
|
|
45
|
-
contactId: string;
|
|
46
|
-
whitelabel: {
|
|
47
|
-
[key: string]: any;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
17
|
export declare namespace auth {
|
|
51
18
|
/**
|
|
52
19
|
* Login with email and password.
|
|
@@ -89,10 +56,31 @@ export declare namespace auth {
|
|
|
89
56
|
}): Promise<{
|
|
90
57
|
bearerToken: string;
|
|
91
58
|
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Gets a best-effort coarse location for the current anonymous caller.
|
|
61
|
+
*
|
|
62
|
+
* This endpoint is typically IP-derived and is useful when the user is not
|
|
63
|
+
* logged in but you still want country/location context for content rules,
|
|
64
|
+
* analytics enrichment, or regional defaults.
|
|
65
|
+
*
|
|
66
|
+
* Returns fields such as `country`, `latitude`, `longitude`, and `area`
|
|
67
|
+
* when available.
|
|
68
|
+
*
|
|
69
|
+
* By default the result is cached in session storage for 30 minutes so apps
|
|
70
|
+
* can reuse coarse location context without repeatedly hitting the endpoint.
|
|
71
|
+
*/
|
|
72
|
+
function getLocation(options?: AuthLocationCacheOptions): Promise<AuthLocation>;
|
|
73
|
+
/**
|
|
74
|
+
* Clears the cached anonymous auth location, if present.
|
|
75
|
+
*/
|
|
76
|
+
function clearCachedLocation(storageKey?: string): void;
|
|
92
77
|
/**
|
|
93
78
|
* Gets current account information for the logged in user.
|
|
94
79
|
* Returns user, owner, account, and location objects.
|
|
95
80
|
*
|
|
81
|
+
* When the caller is authenticated, prefer `account.location` from this
|
|
82
|
+
* response. For anonymous callers, use `auth.getLocation()` instead.
|
|
83
|
+
*
|
|
96
84
|
* Short-circuits immediately (no network request) when the SDK has no
|
|
97
85
|
* bearer token or API key set — the server would return 401 anyway.
|
|
98
86
|
* Throws a `SmartlinksApiError` with `statusCode 401` and
|
package/dist/api/auth.js
CHANGED
|
@@ -1,5 +1,69 @@
|
|
|
1
1
|
import { post, request, setBearerToken, getApiHeaders, hasAuthCredentials, isProxyEnabled } from "../http";
|
|
2
2
|
import { SmartlinksApiError } from "../types/error";
|
|
3
|
+
const DEFAULT_AUTH_LOCATION_CACHE_KEY = 'smartlinks.auth.location';
|
|
4
|
+
const DEFAULT_AUTH_LOCATION_TTL_MS = 30 * 60 * 1000;
|
|
5
|
+
let inMemoryAuthLocationCache = null;
|
|
6
|
+
function getSessionStorage() {
|
|
7
|
+
try {
|
|
8
|
+
if (typeof sessionStorage !== 'undefined')
|
|
9
|
+
return sessionStorage;
|
|
10
|
+
}
|
|
11
|
+
catch (_a) {
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
function readCachedLocation(storageKey) {
|
|
16
|
+
const now = Date.now();
|
|
17
|
+
if (inMemoryAuthLocationCache && inMemoryAuthLocationCache.expiresAt > now) {
|
|
18
|
+
return inMemoryAuthLocationCache.value;
|
|
19
|
+
}
|
|
20
|
+
const storage = getSessionStorage();
|
|
21
|
+
if (!storage)
|
|
22
|
+
return null;
|
|
23
|
+
try {
|
|
24
|
+
const raw = storage.getItem(storageKey);
|
|
25
|
+
if (!raw)
|
|
26
|
+
return null;
|
|
27
|
+
const cached = JSON.parse(raw);
|
|
28
|
+
if (!(cached === null || cached === void 0 ? void 0 : cached.value) || typeof cached.expiresAt !== 'number') {
|
|
29
|
+
storage.removeItem(storageKey);
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (cached.expiresAt <= now) {
|
|
33
|
+
storage.removeItem(storageKey);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
inMemoryAuthLocationCache = cached;
|
|
37
|
+
return cached.value;
|
|
38
|
+
}
|
|
39
|
+
catch (_a) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function writeCachedLocation(storageKey, value, ttlMs) {
|
|
44
|
+
const cached = {
|
|
45
|
+
value,
|
|
46
|
+
expiresAt: Date.now() + ttlMs,
|
|
47
|
+
};
|
|
48
|
+
inMemoryAuthLocationCache = cached;
|
|
49
|
+
const storage = getSessionStorage();
|
|
50
|
+
if (!storage)
|
|
51
|
+
return;
|
|
52
|
+
try {
|
|
53
|
+
storage.setItem(storageKey, JSON.stringify(cached));
|
|
54
|
+
}
|
|
55
|
+
catch (_a) {
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function clearCachedLocationInternal(storageKey) {
|
|
59
|
+
inMemoryAuthLocationCache = null;
|
|
60
|
+
const storage = getSessionStorage();
|
|
61
|
+
try {
|
|
62
|
+
storage === null || storage === void 0 ? void 0 : storage.removeItem(storageKey);
|
|
63
|
+
}
|
|
64
|
+
catch (_a) {
|
|
65
|
+
}
|
|
66
|
+
}
|
|
3
67
|
/*
|
|
4
68
|
user: Record<string, any>
|
|
5
69
|
owner: Record<string, any>
|
|
@@ -82,10 +146,50 @@ export var auth;
|
|
|
82
146
|
return post("/admin/auth/getUserToken", body);
|
|
83
147
|
}
|
|
84
148
|
auth.getUserToken = getUserToken;
|
|
149
|
+
/**
|
|
150
|
+
* Gets a best-effort coarse location for the current anonymous caller.
|
|
151
|
+
*
|
|
152
|
+
* This endpoint is typically IP-derived and is useful when the user is not
|
|
153
|
+
* logged in but you still want country/location context for content rules,
|
|
154
|
+
* analytics enrichment, or regional defaults.
|
|
155
|
+
*
|
|
156
|
+
* Returns fields such as `country`, `latitude`, `longitude`, and `area`
|
|
157
|
+
* when available.
|
|
158
|
+
*
|
|
159
|
+
* By default the result is cached in session storage for 30 minutes so apps
|
|
160
|
+
* can reuse coarse location context without repeatedly hitting the endpoint.
|
|
161
|
+
*/
|
|
162
|
+
async function getLocation(options = {}) {
|
|
163
|
+
var _a, _b, _c;
|
|
164
|
+
const cache = (_a = options.cache) !== null && _a !== void 0 ? _a : 'session';
|
|
165
|
+
const ttlMs = (_b = options.ttlMs) !== null && _b !== void 0 ? _b : DEFAULT_AUTH_LOCATION_TTL_MS;
|
|
166
|
+
const storageKey = (_c = options.storageKey) !== null && _c !== void 0 ? _c : DEFAULT_AUTH_LOCATION_CACHE_KEY;
|
|
167
|
+
if (cache === 'session' && !options.forceRefresh) {
|
|
168
|
+
const cached = readCachedLocation(storageKey);
|
|
169
|
+
if (cached)
|
|
170
|
+
return cached;
|
|
171
|
+
}
|
|
172
|
+
const location = await request("/public/auth/location");
|
|
173
|
+
if (cache === 'session') {
|
|
174
|
+
writeCachedLocation(storageKey, location, ttlMs);
|
|
175
|
+
}
|
|
176
|
+
return location;
|
|
177
|
+
}
|
|
178
|
+
auth.getLocation = getLocation;
|
|
179
|
+
/**
|
|
180
|
+
* Clears the cached anonymous auth location, if present.
|
|
181
|
+
*/
|
|
182
|
+
function clearCachedLocation(storageKey = DEFAULT_AUTH_LOCATION_CACHE_KEY) {
|
|
183
|
+
clearCachedLocationInternal(storageKey);
|
|
184
|
+
}
|
|
185
|
+
auth.clearCachedLocation = clearCachedLocation;
|
|
85
186
|
/**
|
|
86
187
|
* Gets current account information for the logged in user.
|
|
87
188
|
* Returns user, owner, account, and location objects.
|
|
88
189
|
*
|
|
190
|
+
* When the caller is authenticated, prefer `account.location` from this
|
|
191
|
+
* response. For anonymous callers, use `auth.getLocation()` instead.
|
|
192
|
+
*
|
|
89
193
|
* Short-circuits immediately (no network request) when the SDK has no
|
|
90
194
|
* bearer token or API key set — the server would return 401 anyway.
|
|
91
195
|
* Throws a `SmartlinksApiError` with `statusCode 401` and
|
package/dist/api/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export { journeysAnalytics } from "./journeysAnalytics";
|
|
|
24
24
|
export { qr } from "./qr";
|
|
25
25
|
export { template } from "./template";
|
|
26
26
|
export { interactions } from "./interactions";
|
|
27
|
+
export { analytics } from "./analytics";
|
|
27
28
|
export { location } from "./location";
|
|
28
29
|
export * as realtime from "./realtime";
|
|
29
30
|
export { tags } from "./tags";
|
package/dist/api/index.js
CHANGED
|
@@ -26,6 +26,7 @@ export { journeysAnalytics } from "./journeysAnalytics";
|
|
|
26
26
|
export { qr } from "./qr";
|
|
27
27
|
export { template } from "./template";
|
|
28
28
|
export { interactions } from "./interactions";
|
|
29
|
+
export { analytics } from "./analytics";
|
|
29
30
|
export { location } from "./location";
|
|
30
31
|
import * as realtime_1 from "./realtime";
|
|
31
32
|
export { realtime_1 as realtime };
|