@li-nk.me/web-sdk 0.1.0 → 0.2.1
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 +13 -309
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/controller.d.ts +1 -0
- package/dist/controller.js +55 -5
- package/dist/controller.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -1,332 +1,36 @@
|
|
|
1
|
-
# LinkMe Web SDK
|
|
1
|
+
# LinkMe Web SDK
|
|
2
2
|
|
|
3
|
-
Zero-dependency
|
|
3
|
+
Zero-dependency browser SDK for LinkMe deep and deferred links.
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
5
|
+
- **Main Site**: [li-nk.me](https://li-nk.me)
|
|
6
|
+
- **Documentation**: [Web Setup](https://li-nk.me/docs/developer/setup/web)
|
|
7
|
+
- **Package**: [npm](https://www.npmjs.com/package/@li-nk/web-sdk)
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npm install @li-nk
|
|
13
|
-
# or
|
|
14
|
-
pnpm add @li-nk.me/web-sdk
|
|
15
|
-
yarn add @li-nk.me/web-sdk
|
|
12
|
+
npm install @li-nk/web-sdk
|
|
16
13
|
```
|
|
17
14
|
|
|
18
|
-
##
|
|
15
|
+
## Basic Usage
|
|
19
16
|
|
|
20
17
|
```ts
|
|
21
|
-
import { configure, resolveFromUrl
|
|
18
|
+
import { configure, resolveFromUrl } from '@li-nk/web-sdk';
|
|
22
19
|
|
|
23
20
|
await configure({
|
|
24
21
|
appId: 'app_123',
|
|
25
|
-
// Use a read-only app key if your Edge instance enforces app credentials.
|
|
26
22
|
appKey: 'lk_live_read_only_key',
|
|
23
|
+
debug: process.env.NODE_ENV !== 'production',
|
|
27
24
|
});
|
|
28
25
|
|
|
29
|
-
// Initial page load (auto-run if you keep autoResolve = true)
|
|
30
26
|
const initial = await resolveFromUrl();
|
|
31
27
|
if (initial?.path) {
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Subscribe to future changes (history navigation, router pushes, manual handleLink)
|
|
36
|
-
const subscription = onLink((payload) => {
|
|
37
|
-
routeUser(payload);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// Optional: deferred link fallback (probabilistic)
|
|
41
|
-
const deferred = await claimDeferredIfAvailable();
|
|
42
|
-
if (deferred?.path) {
|
|
43
|
-
routeUser(deferred);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Later, when appropriate
|
|
47
|
-
subscription.remove();
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Configuration options
|
|
51
|
-
|
|
52
|
-
| Option | Type | Default | Description |
|
|
53
|
-
| --- | --- | --- | --- |
|
|
54
|
-
| `appId` | `string` | `undefined` | Optional app identifier. Sent via `x-app-id` header. |
|
|
55
|
-
| `appKey` | `string` | `undefined` | Optional app key. Use a read-only key when enforced. |
|
|
56
|
-
| `fetch` | `typeof fetch` | `globalThis.fetch` | Provide your own fetch for environments that need a polyfill. |
|
|
57
|
-
| `autoResolve` | `boolean` | `true` in the browser | Resolve `window.location.href` immediately after `configure`. |
|
|
58
|
-
| `autoListen` | `boolean` | `true` in the browser | Subscribe to `popstate`/`hashchange` to pick up navigation changes. |
|
|
59
|
-
| `stripCid` | `boolean` | `true` | Removes `cid` from the address bar after it has been resolved. |
|
|
60
|
-
| `sendDeviceInfo` | `boolean` | `true` | Sends basic locale/UA/screen metadata when resolving links. |
|
|
61
|
-
| `resolveUniversalLinks` | `boolean` | `true` | POSTs to `/api/deeplink/resolve-url` when no `cid` is present but the URL matches your domain. |
|
|
62
|
-
|
|
63
|
-
### Runtime API
|
|
64
|
-
|
|
65
|
-
- `configure(config)` – call once on the client.
|
|
66
|
-
- `resolveFromUrl(url?)` – parse a URL (or current location) for `cid`/universal links.
|
|
67
|
-
- `handleLink(url)` – manually resolve an arbitrary URL string.
|
|
68
|
-
- `claimDeferredIfAvailable()` – probabilistic fallback for first launch after install.
|
|
69
|
-
- `onLink(listener)` – subscribe to resolved payloads; returns `{ remove }`.
|
|
70
|
-
- `getLastPayload()` – retrieve the most recent resolved payload (if any).
|
|
71
|
-
- `setUserId(id)` – associate analytics events with a user.
|
|
72
|
-
- `track(event, props?)` – emit custom events to `/api/app-events`.
|
|
73
|
-
- `LinkMeController` / `LinkMeWebClient` – class-shaped API for dependency injection and unit testing.
|
|
74
|
-
|
|
75
|
-
`LinkMePayload` includes `linkId`, `path`, `params`, `utm`, `custom`, `cid`, and `duplicate`.
|
|
76
|
-
|
|
77
|
-
### Advanced (DI & testing)
|
|
78
|
-
|
|
79
|
-
The SDK exposes the `LinkMeController` class, plus a pluggable `LinkMeEnvironment` and `HttpClient` factory. You can inject mocks for deterministic browser-free testing:
|
|
80
|
-
|
|
81
|
-
```ts
|
|
82
|
-
import { LinkMeController } from '@li-nk.me/web-sdk';
|
|
83
|
-
|
|
84
|
-
const controller = new LinkMeController({
|
|
85
|
-
environment: myMockEnvironment,
|
|
86
|
-
httpClientFactory: () => myMockHttpClient,
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
await controller.configure({ appId: 'app_123', appKey: 'key_123', fetch: unusedFetch });
|
|
90
|
-
const payload = await controller.resolveFromUrl('https://links.example?cid=abc');
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Run the included unit tests with `npm -w sdks/web-sdk run test`.
|
|
94
|
-
|
|
95
|
-
## Framework recipes
|
|
96
|
-
|
|
97
|
-
Below are minimal client-side examples. Guard all `configure` calls so they only run in the browser (e.g., inside lifecycle hooks).
|
|
98
|
-
|
|
99
|
-
### Next.js (App Router)
|
|
100
|
-
|
|
101
|
-
```tsx
|
|
102
|
-
'use client';
|
|
103
|
-
|
|
104
|
-
import { useEffect } from 'react';
|
|
105
|
-
import { useRouter, usePathname, useSearchParams } from 'next/navigation';
|
|
106
|
-
import { configure, onLink, resolveFromUrl } from '@li-nk.me/web-sdk';
|
|
107
|
-
|
|
108
|
-
export function LinkMeProvider({ children }: { children: React.ReactNode }) {
|
|
109
|
-
const router = useRouter();
|
|
110
|
-
const pathname = usePathname();
|
|
111
|
-
const search = useSearchParams();
|
|
112
|
-
|
|
113
|
-
useEffect(() => {
|
|
114
|
-
let mounted = true;
|
|
115
|
-
const bootstrap = async () => {
|
|
116
|
-
await configure({
|
|
117
|
-
appId: process.env.NEXT_PUBLIC_LINKME_APP_ID,
|
|
118
|
-
appKey: process.env.NEXT_PUBLIC_LINKME_APP_READ_KEY,
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
const initial = await resolveFromUrl();
|
|
122
|
-
if (mounted && initial?.path) {
|
|
123
|
-
router.replace(initial.path.startsWith('/') ? initial.path : `/${initial.path}`);
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
bootstrap();
|
|
128
|
-
const subscription = onLink((payload) => {
|
|
129
|
-
if (!payload?.path) return;
|
|
130
|
-
router.push(payload.path.startsWith('/') ? payload.path : `/${payload.path}`);
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
return () => {
|
|
134
|
-
mounted = false;
|
|
135
|
-
subscription.remove();
|
|
136
|
-
};
|
|
137
|
-
}, [router]);
|
|
138
|
-
|
|
139
|
-
// Force re-check whenever the visible URL changes.
|
|
140
|
-
useEffect(() => {
|
|
141
|
-
void resolveFromUrl(`${pathname}?${search.toString()}`);
|
|
142
|
-
}, [pathname, search]);
|
|
143
|
-
|
|
144
|
-
return <>{children}</>;
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Mount `<LinkMeProvider>` at the root of your client layout (`app/layout.tsx`).
|
|
149
|
-
|
|
150
|
-
### Next.js (Pages Router)
|
|
151
|
-
|
|
152
|
-
```tsx
|
|
153
|
-
import { useEffect } from 'react';
|
|
154
|
-
import { useRouter } from 'next/router';
|
|
155
|
-
import { configure, onLink, resolveFromUrl } from '@li-nk.me/web-sdk';
|
|
156
|
-
|
|
157
|
-
export default function LinkMeGate({ children }) {
|
|
158
|
-
const router = useRouter();
|
|
159
|
-
|
|
160
|
-
useEffect(() => {
|
|
161
|
-
let active = true;
|
|
162
|
-
const init = async () => {
|
|
163
|
-
await configure({
|
|
164
|
-
appId: process.env.NEXT_PUBLIC_LINKME_APP_ID,
|
|
165
|
-
appKey: process.env.NEXT_PUBLIC_LINKME_APP_READ_KEY,
|
|
166
|
-
});
|
|
167
|
-
const initial = await resolveFromUrl();
|
|
168
|
-
if (active && initial?.path) {
|
|
169
|
-
router.replace(initial.path);
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
init();
|
|
173
|
-
|
|
174
|
-
const sub = onLink((payload) => {
|
|
175
|
-
if (payload?.path) router.push(payload.path);
|
|
176
|
-
});
|
|
177
|
-
return () => {
|
|
178
|
-
active = false;
|
|
179
|
-
sub.remove();
|
|
180
|
-
};
|
|
181
|
-
}, [router]);
|
|
182
|
-
|
|
183
|
-
return children;
|
|
184
|
-
}
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
Wrap your custom `_app.tsx` with `<LinkMeGate>`.
|
|
188
|
-
|
|
189
|
-
### React (Vite / CRA)
|
|
190
|
-
|
|
191
|
-
```tsx
|
|
192
|
-
import { useEffect } from 'react';
|
|
193
|
-
import { configure, onLink, resolveFromUrl } from '@li-nk.me/web-sdk';
|
|
194
|
-
|
|
195
|
-
export function useLinkMe(onPayload: (payload: any) => void) {
|
|
196
|
-
useEffect(() => {
|
|
197
|
-
let mounted = true;
|
|
198
|
-
const start = async () => {
|
|
199
|
-
await configure({
|
|
200
|
-
appId: import.meta.env.VITE_LINKME_APP_ID,
|
|
201
|
-
appKey: import.meta.env.VITE_LINKME_APP_READ_KEY,
|
|
202
|
-
});
|
|
203
|
-
const initial = await resolveFromUrl();
|
|
204
|
-
if (mounted && initial) onPayload(initial);
|
|
205
|
-
};
|
|
206
|
-
start();
|
|
207
|
-
const subscription = onLink((payload) => onPayload(payload));
|
|
208
|
-
return () => {
|
|
209
|
-
mounted = false;
|
|
210
|
-
subscription.remove();
|
|
211
|
-
};
|
|
212
|
-
}, [onPayload]);
|
|
213
|
-
}
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
Call `useLinkMe` inside your root component, and handle payloads however you like (router pushes, analytics, etc.).
|
|
217
|
-
|
|
218
|
-
### Vue 3 (Composition API)
|
|
219
|
-
|
|
220
|
-
```ts
|
|
221
|
-
import { onMounted, onBeforeUnmount } from 'vue';
|
|
222
|
-
import { configure, onLink, resolveFromUrl } from '@li-nk.me/web-sdk';
|
|
223
|
-
import { useRouter } from 'vue-router';
|
|
224
|
-
|
|
225
|
-
export function useLinkMe() {
|
|
226
|
-
const router = useRouter();
|
|
227
|
-
let unsubscribe: (() => void) | null = null;
|
|
228
|
-
|
|
229
|
-
onMounted(async () => {
|
|
230
|
-
await configure({
|
|
231
|
-
appId: import.meta.env.VITE_LINKME_APP_ID,
|
|
232
|
-
appKey: import.meta.env.VITE_LINKME_APP_READ_KEY,
|
|
233
|
-
});
|
|
234
|
-
const initial = await resolveFromUrl();
|
|
235
|
-
if (initial?.path) {
|
|
236
|
-
router.replace(initial.path);
|
|
237
|
-
}
|
|
238
|
-
unsubscribe = onLink((payload) => {
|
|
239
|
-
if (payload?.path) router.push(payload.path);
|
|
240
|
-
}).remove;
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
onBeforeUnmount(() => {
|
|
244
|
-
unsubscribe?.();
|
|
245
|
-
});
|
|
28
|
+
// Route user
|
|
246
29
|
}
|
|
247
30
|
```
|
|
248
31
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
```ts
|
|
252
|
-
import { onMount } from 'svelte';
|
|
253
|
-
import { goto } from '$app/navigation';
|
|
254
|
-
import { configure, resolveFromUrl, onLink } from '@li-nk.me/web-sdk';
|
|
255
|
-
|
|
256
|
-
onMount(() => {
|
|
257
|
-
let active = true;
|
|
258
|
-
(async () => {
|
|
259
|
-
await configure({
|
|
260
|
-
appId: import.meta.env.VITE_LINKME_APP_ID,
|
|
261
|
-
appKey: import.meta.env.VITE_LINKME_APP_READ_KEY,
|
|
262
|
-
});
|
|
263
|
-
const initial = await resolveFromUrl();
|
|
264
|
-
if (active && initial?.path) goto(initial.path, { replaceState: true });
|
|
265
|
-
})();
|
|
266
|
-
const { remove } = onLink((payload) => {
|
|
267
|
-
if (payload?.path) goto(payload.path);
|
|
268
|
-
});
|
|
269
|
-
return () => {
|
|
270
|
-
active = false;
|
|
271
|
-
remove();
|
|
272
|
-
};
|
|
273
|
-
});
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### Angular
|
|
277
|
-
|
|
278
|
-
```ts
|
|
279
|
-
import { Injectable, OnDestroy } from '@angular/core';
|
|
280
|
-
import { Router } from '@angular/router';
|
|
281
|
-
import { configure, onLink, resolveFromUrl } from '@li-nk.me/web-sdk';
|
|
282
|
-
|
|
283
|
-
@Injectable({ providedIn: 'root' })
|
|
284
|
-
export class LinkMeService implements OnDestroy {
|
|
285
|
-
private teardown?: () => void;
|
|
286
|
-
|
|
287
|
-
constructor(private readonly router: Router) {
|
|
288
|
-
this.bootstrap();
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
private async bootstrap() {
|
|
292
|
-
await configure({
|
|
293
|
-
appId: environment.linkMeAppId,
|
|
294
|
-
appKey: environment.linkMeAppReadKey,
|
|
295
|
-
});
|
|
296
|
-
const initial = await resolveFromUrl();
|
|
297
|
-
if (initial?.path) {
|
|
298
|
-
void this.router.navigateByUrl(initial.path);
|
|
299
|
-
}
|
|
300
|
-
this.teardown = onLink((payload) => {
|
|
301
|
-
if (payload?.path) void this.router.navigateByUrl(payload.path);
|
|
302
|
-
}).remove;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
ngOnDestroy() {
|
|
306
|
-
this.teardown?.();
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
Inject `LinkMeService` in your root component (e.g. `AppComponent`) to activate the SDK.
|
|
312
|
-
|
|
313
|
-
## Deferred links & analytics
|
|
314
|
-
|
|
315
|
-
- `claimDeferredIfAvailable()` should be called once on startup (after `configure`). It performs a probabilistic match when no `cid` is available and returns a payload if a deferred click is found.
|
|
316
|
-
- Use `setUserId()` right after your own authentication succeeds to attribute analytics events to a stable identifier.
|
|
317
|
-
- `track('open')` or `track('purchase', { plan: 'starter' })` can be invoked anywhere you need lightweight event logging.
|
|
318
|
-
|
|
319
|
-
## Security notes
|
|
320
|
-
|
|
321
|
-
- When keys are required, issue a *read-only* key for browser usage. The SDK only calls read endpoints (`GET /api/deeplink`, `POST /api/deeplink/resolve-url`, `POST /api/deferred/claim`, `POST /api/app-events`).
|
|
322
|
-
- Consider rate limiting public usage if you expose the SDK on public marketing pages.
|
|
323
|
-
- The SDK strips `cid` parameters from the address bar after they are resolved to avoid leaking tokens via referrers.
|
|
324
|
-
|
|
325
|
-
## Troubleshooting
|
|
326
|
-
|
|
327
|
-
- Verify `cid` query parameters make it through your router. If the parameter is removed before `configure`, pass the full URL into `resolveFromUrl(urlString)`.
|
|
328
|
-
- Use the browser devtools network tab to inspect calls to `/api/deeplink` and `/api/deferred/claim`.
|
|
32
|
+
For full documentation, guides, and API reference, please visit our [Help Center](https://li-nk.me/docs/help).
|
|
329
33
|
|
|
330
|
-
|
|
34
|
+
## License
|
|
331
35
|
|
|
332
|
-
|
|
36
|
+
Apache-2.0
|
package/dist/config.js
CHANGED
|
@@ -10,6 +10,7 @@ export function normalizeConfig(config, env) {
|
|
|
10
10
|
origin,
|
|
11
11
|
appId: config.appId,
|
|
12
12
|
appKey: config.appKey,
|
|
13
|
+
debug: config.debug ?? false,
|
|
13
14
|
autoResolve: config.autoResolve ?? isBrowser,
|
|
14
15
|
autoListen: config.autoListen ?? isBrowser,
|
|
15
16
|
stripCid: config.stripCid ?? true,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,GAAsB;IAC3E,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,kBAAkB,CAAC;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAClC,OAAO;QACH,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,GAAG,OAAO,MAAM;QAC5B,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;QAC5C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;QAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;QAC7C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,IAAI,IAAI;KAC9D,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,GAAsB;IAC3E,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,kBAAkB,CAAC;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAClC,OAAO;QACH,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,GAAG,OAAO,MAAM;QAC5B,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;QAC5B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;QAC5C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;QAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;QAC7C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,IAAI,IAAI;KAC9D,CAAC;AACN,CAAC"}
|
package/dist/controller.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare class LinkMeController {
|
|
|
19
19
|
private readonly seenCids;
|
|
20
20
|
private unsubscribeNavigation;
|
|
21
21
|
constructor(deps?: LinkMeControllerDeps);
|
|
22
|
+
private debugLog;
|
|
22
23
|
configure(config: LinkMeWebConfig): Promise<void>;
|
|
23
24
|
resolveFromUrl(url?: string, opts?: ProcessUrlOptions): Promise<LinkMePayload | null>;
|
|
24
25
|
handleLink(url: string): Promise<LinkMePayload | null>;
|
package/dist/controller.js
CHANGED
|
@@ -12,6 +12,19 @@ export class LinkMeController {
|
|
|
12
12
|
this.environment = deps?.environment ?? new BrowserEnvironment();
|
|
13
13
|
this.httpClientFactory = deps?.httpClientFactory ?? ((fetchImpl) => new FetchHttpClient(fetchImpl));
|
|
14
14
|
}
|
|
15
|
+
debugLog(message, data) {
|
|
16
|
+
if (!this.config?.debug) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (typeof console !== 'undefined' && typeof console.log === 'function') {
|
|
20
|
+
if (data) {
|
|
21
|
+
console.log('[LinkMe]', message, data);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
console.log('[LinkMe]', message);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
15
28
|
async configure(config) {
|
|
16
29
|
const normalized = normalizeConfig(config, this.environment);
|
|
17
30
|
const fetchImpl = config.fetch ?? this.environment.getFetch();
|
|
@@ -20,13 +33,21 @@ export class LinkMeController {
|
|
|
20
33
|
}
|
|
21
34
|
this.config = normalized;
|
|
22
35
|
this.httpClient = this.httpClientFactory(fetchImpl);
|
|
36
|
+
this.debugLog('configured', {
|
|
37
|
+
baseUrl: normalized.baseUrl,
|
|
38
|
+
appId: normalized.appId ?? null,
|
|
39
|
+
autoResolve: normalized.autoResolve,
|
|
40
|
+
autoListen: normalized.autoListen,
|
|
41
|
+
});
|
|
23
42
|
this.detachNavigation();
|
|
24
43
|
if (normalized.autoListen) {
|
|
44
|
+
this.debugLog('navigation.listen');
|
|
25
45
|
this.unsubscribeNavigation = this.environment.subscribeToNavigation(() => {
|
|
26
46
|
void this.resolveFromUrl();
|
|
27
47
|
});
|
|
28
48
|
}
|
|
29
49
|
if (normalized.autoResolve) {
|
|
50
|
+
this.debugLog('autoResolve.start');
|
|
30
51
|
await this.resolveFromUrl(undefined, { stripLocation: true });
|
|
31
52
|
}
|
|
32
53
|
}
|
|
@@ -46,6 +67,7 @@ export class LinkMeController {
|
|
|
46
67
|
if (!cfg || !this.httpClient) {
|
|
47
68
|
return null;
|
|
48
69
|
}
|
|
70
|
+
this.debugLog('deferred.claim.start');
|
|
49
71
|
try {
|
|
50
72
|
const body = { platform: 'web' };
|
|
51
73
|
const device = this.environment.buildDevicePayload(cfg.sendDeviceInfo);
|
|
@@ -59,15 +81,21 @@ export class LinkMeController {
|
|
|
59
81
|
body: JSON.stringify(body),
|
|
60
82
|
});
|
|
61
83
|
if (!res.ok || !res.data) {
|
|
84
|
+
this.debugLog('deferred.claim.http_error', { status: res.status });
|
|
62
85
|
return null;
|
|
63
86
|
}
|
|
64
87
|
const payload = normalizePayload(res.data);
|
|
65
88
|
if (payload) {
|
|
66
89
|
this.emit(payload);
|
|
90
|
+
this.debugLog('deferred.claim.success', { cid: payload.cid ?? null, duplicate: payload.duplicate ?? false });
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.debugLog('deferred.claim.empty');
|
|
67
94
|
}
|
|
68
95
|
return payload;
|
|
69
96
|
}
|
|
70
|
-
catch {
|
|
97
|
+
catch (err) {
|
|
98
|
+
this.debugLog('deferred.claim.error', { error: err instanceof Error ? err.message : String(err) });
|
|
71
99
|
return null;
|
|
72
100
|
}
|
|
73
101
|
}
|
|
@@ -117,12 +145,15 @@ export class LinkMeController {
|
|
|
117
145
|
if (!cfg || !this.httpClient || !rawUrl) {
|
|
118
146
|
return null;
|
|
119
147
|
}
|
|
148
|
+
this.debugLog('processUrl.start', { url: rawUrl });
|
|
120
149
|
const parsed = parseUrl(rawUrl, cfg.origin);
|
|
121
150
|
if (!parsed) {
|
|
151
|
+
this.debugLog('processUrl.parse_failed', { url: rawUrl });
|
|
122
152
|
return null;
|
|
123
153
|
}
|
|
124
154
|
const extraction = extractCid(parsed);
|
|
125
155
|
if (extraction.cid) {
|
|
156
|
+
this.debugLog('processUrl.cid_detected', { cid: extraction.cid });
|
|
126
157
|
if (this.seenCids.has(extraction.cid)) {
|
|
127
158
|
const cached = this.lastPayload;
|
|
128
159
|
if (cached && cached.cid === extraction.cid) {
|
|
@@ -137,15 +168,24 @@ export class LinkMeController {
|
|
|
137
168
|
this.environment.replaceUrl(extraction.sanitizedHref);
|
|
138
169
|
}
|
|
139
170
|
this.emit(payload);
|
|
171
|
+
this.debugLog('processUrl.cid_success', { cid: extraction.cid });
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.debugLog('processUrl.cid_miss', { cid: extraction.cid });
|
|
140
175
|
}
|
|
141
176
|
return payload;
|
|
142
177
|
}
|
|
143
178
|
if (cfg.resolveUniversalLinks && isSameOrigin(parsed.origin, cfg.origin)) {
|
|
179
|
+
this.debugLog('processUrl.universal', { url: parsed.href });
|
|
144
180
|
const payload = await this.resolveUniversalLink(parsed.href);
|
|
145
181
|
if (payload) {
|
|
146
182
|
this.emit(payload);
|
|
183
|
+
this.debugLog('processUrl.universal_success', { url: parsed.href });
|
|
147
184
|
return payload;
|
|
148
185
|
}
|
|
186
|
+
else {
|
|
187
|
+
this.debugLog('processUrl.universal_miss', { url: parsed.href });
|
|
188
|
+
}
|
|
149
189
|
}
|
|
150
190
|
return null;
|
|
151
191
|
}
|
|
@@ -154,6 +194,7 @@ export class LinkMeController {
|
|
|
154
194
|
if (!cfg || !this.httpClient) {
|
|
155
195
|
return null;
|
|
156
196
|
}
|
|
197
|
+
this.debugLog('resolveCid.request', { cid });
|
|
157
198
|
try {
|
|
158
199
|
const headers = this.buildHeaders(false);
|
|
159
200
|
const device = this.environment.buildDevicePayload(cfg.sendDeviceInfo);
|
|
@@ -165,11 +206,15 @@ export class LinkMeController {
|
|
|
165
206
|
headers,
|
|
166
207
|
});
|
|
167
208
|
if (!res.ok || !res.data) {
|
|
209
|
+
this.debugLog('resolveCid.http_error', { cid, status: res.status });
|
|
168
210
|
return null;
|
|
169
211
|
}
|
|
170
|
-
|
|
212
|
+
const payload = normalizePayload(res.data, cid);
|
|
213
|
+
this.debugLog('resolveCid.success', { cid, resolved: payload != null });
|
|
214
|
+
return payload;
|
|
171
215
|
}
|
|
172
|
-
catch {
|
|
216
|
+
catch (err) {
|
|
217
|
+
this.debugLog('resolveCid.error', { cid, error: err instanceof Error ? err.message : String(err) });
|
|
173
218
|
return null;
|
|
174
219
|
}
|
|
175
220
|
}
|
|
@@ -178,6 +223,7 @@ export class LinkMeController {
|
|
|
178
223
|
if (!cfg || !this.httpClient) {
|
|
179
224
|
return null;
|
|
180
225
|
}
|
|
226
|
+
this.debugLog('resolveUniversal.request', { url });
|
|
181
227
|
try {
|
|
182
228
|
const body = { url };
|
|
183
229
|
const device = this.environment.buildDevicePayload(cfg.sendDeviceInfo);
|
|
@@ -190,11 +236,15 @@ export class LinkMeController {
|
|
|
190
236
|
body: JSON.stringify(body),
|
|
191
237
|
});
|
|
192
238
|
if (!res.ok || !res.data) {
|
|
239
|
+
this.debugLog('resolveUniversal.http_error', { url, status: res.status });
|
|
193
240
|
return null;
|
|
194
241
|
}
|
|
195
|
-
|
|
242
|
+
const payload = normalizePayload(res.data);
|
|
243
|
+
this.debugLog('resolveUniversal.success', { url, resolved: payload != null });
|
|
244
|
+
return payload;
|
|
196
245
|
}
|
|
197
|
-
catch {
|
|
246
|
+
catch (err) {
|
|
247
|
+
this.debugLog('resolveUniversal.error', { url, error: err instanceof Error ? err.message : String(err) });
|
|
198
248
|
return null;
|
|
199
249
|
}
|
|
200
250
|
}
|
package/dist/controller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type LinkMeWebConfig = {
|
|
|
14
14
|
appId?: string;
|
|
15
15
|
appKey?: string;
|
|
16
16
|
fetch?: FetchLike;
|
|
17
|
+
debug?: boolean;
|
|
17
18
|
autoResolve?: boolean;
|
|
18
19
|
autoListen?: boolean;
|
|
19
20
|
stripCid?: boolean;
|
|
@@ -26,6 +27,7 @@ export type NormalizedConfig = {
|
|
|
26
27
|
origin: string;
|
|
27
28
|
appId?: string;
|
|
28
29
|
appKey?: string;
|
|
30
|
+
debug: boolean;
|
|
29
31
|
autoResolve: boolean;
|
|
30
32
|
autoListen: boolean;
|
|
31
33
|
stripCid: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@li-nk.me/web-sdk",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Zero-dependency browser SDK for LinkMe deep and deferred links.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
"sdk"
|
|
33
33
|
],
|
|
34
34
|
"license": "Apache-2.0",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/r-dev-limited/li-nk.me-web-sdk"
|
|
38
|
+
},
|
|
35
39
|
"publishConfig": {
|
|
36
40
|
"access": "public"
|
|
37
41
|
},
|
|
@@ -40,4 +44,4 @@
|
|
|
40
44
|
"typescript": "^5.5.4",
|
|
41
45
|
"vitest": "^1.6.0"
|
|
42
46
|
}
|
|
43
|
-
}
|
|
47
|
+
}
|