@li-nk.me/node-sdk 0.2.7 → 0.2.10

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 CHANGED
@@ -1,41 +1,82 @@
1
1
  # LinkMe Node SDK
2
2
 
3
- Official Node.js client for LinkMe — links admin and resolution API.
3
+ Official Node.js client for LinkMe — link management and webhook helpers.
4
4
 
5
5
  - **Main Site**: [li-nk.me](https://li-nk.me)
6
6
  - **Documentation**: [Node Setup](https://li-nk.me/docs/developer/setup/node)
7
- - **Package**: [npm](https://www.npmjs.com/package/@li-nk/node-sdk)
7
+ - **Package**: [npm](https://www.npmjs.com/package/@li-nk.me/node-sdk)
8
8
 
9
9
  ## Installation
10
10
 
11
11
  ```bash
12
- npm install @li-nk/node-sdk
12
+ npm install @li-nk.me/node-sdk
13
13
  ```
14
14
 
15
15
  ## Basic Usage
16
16
 
17
17
  ```ts
18
- import LinkMeClient from '@li-nk/node-sdk';
18
+ import LinkMeClient from '@li-nk.me/node-sdk';
19
19
 
20
20
  const client = new LinkMeClient({
21
- baseUrl: 'https://li-nk.me',
22
21
  apiKey: 'YOUR_API_KEY',
23
22
  });
24
23
 
25
24
  const created = await client.createLink({ appId: 'app_123', slug: 'welcome', deepLink: '/welcome' });
26
25
  ```
27
26
 
27
+ `createLink` supports `displayInPortal`:
28
+ - `false` hides the link from the Portal links list (still works as a universal link).
29
+ - `true` shows it in the Portal.
30
+ - In this SDK, if omitted, it defaults to `false`.
31
+
28
32
  ## CommonJS Usage
29
33
 
30
34
  ```js
31
- const LinkMeClient = require('@li-nk/node-sdk').default;
35
+ const LinkMeClient = require('@li-nk.me/node-sdk').default;
32
36
 
33
37
  const client = new LinkMeClient({
34
- baseUrl: 'https://li-nk.me',
35
38
  apiKey: 'YOUR_API_KEY',
36
39
  });
37
40
  ```
38
41
 
42
+ ## Methods
43
+
44
+ | Method | Description |
45
+ | --- | --- |
46
+ | `createLink(input)` | Create a short link. Returns `{ id, app_id, domain_id, slug, slugUrl }`. |
47
+ | `getLink(id)` | Fetch a link by slug or ID. |
48
+ | `listLinks(appId)` | List all links for an app with computed extras. |
49
+ | `updateLink(id, updates)` | Partial update using snake_case fields and `0 \| 1` flags. |
50
+ | `deleteLink(id)` | Permanently delete a link. |
51
+
52
+ ## Webhook Helpers
53
+
54
+ The SDK also exports helpers for common webhook receiver logic:
55
+
56
+ - verify `X-LinkMe-Signature`
57
+ - parse the LinkMe webhook envelope
58
+
59
+ ```ts
60
+ import {
61
+ parseLinkMeWebhookEnvelope,
62
+ verifyLinkMeWebhookSignature,
63
+ } from '@li-nk.me/node-sdk';
64
+
65
+ const rawBody = req.rawBody.toString('utf8');
66
+ const signature = req.get('X-LinkMe-Signature');
67
+
68
+ if (!verifyLinkMeWebhookSignature(rawBody, signature, process.env.LINKME_WEBHOOK_SIGNING_SECRET!)) {
69
+ res.status(401).send('Invalid signature');
70
+ return;
71
+ }
72
+
73
+ const envelope = parseLinkMeWebhookEnvelope(JSON.parse(rawBody));
74
+ ```
75
+
76
+ ## Zod Schemas
77
+
78
+ The SDK exports Zod schemas and inferred types for runtime validation: `LinkSchema`, `ExtendedLinkSchema`, `CreateLinkInputSchema`, `UpdateLinkInputSchema`, `CreateLinkResponseSchema`, `LinkMeWebhookEnvelopeSchema`.
79
+
39
80
  For full documentation, guides, and API reference, please visit our [Help Center](https://li-nk.me/docs/help).
40
81
 
41
82
  ## License
package/dist/http.js CHANGED
@@ -8,7 +8,7 @@ export class FetchHttpClient {
8
8
  this.apiKey = deps.apiKey;
9
9
  }
10
10
  async request(path, init) {
11
- const url = `${this.baseUrl}${path}`;
11
+ const url = `${this.baseUrl}${path.replace(/\/+/g, '/')}`;
12
12
  const headers = { 'Content-Type': 'application/json' };
13
13
  if (this.apiKey)
14
14
  headers['Authorization'] = `Bearer ${this.apiKey}`;
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,eAAe;IACP,OAAO,CAAS;IAChB,SAAS,CAAe;IACxB,MAAM,CAAU;IAEjC,YAAY,IAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAAsB;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAI,IAAI,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,IAAI,MAAM,GAAQ,SAAS,CAAC;YAC5B,IAAI,CAAC;gBAAC,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAQ,CAAC;YAC9D,GAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAChC,GAAW,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,MAAM,GAAG,CAAC;QACd,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,eAAe,IAAI,EAAE,CAAQ,CAAC;YACrE,GAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACjC,IAAI,CAAC;gBAAE,GAAW,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YACzD,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,eAAe;IACP,OAAO,CAAS;IAChB,SAAS,CAAe;IACxB,MAAM,CAAU;IAEjC,YAAY,IAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAAsB;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAI,IAAI,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,IAAI,MAAM,GAAQ,SAAS,CAAC;YAC5B,IAAI,CAAC;gBAAC,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAQ,CAAC;YAC9D,GAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAChC,GAAW,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,MAAM,GAAG,CAAC;QACd,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,eAAe,IAAI,EAAE,CAAQ,CAAC;YACrE,GAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACjC,IAAI,CAAC;gBAAE,GAAW,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YACzD,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;CACJ"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { default, LinkMeClient } from './client.js';
2
2
  export * from './models.js';
3
3
  export * from './schemas.js';
4
+ export * from './webhookHelpers.js';
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { default, LinkMeClient } from './client.js';
2
2
  export * from './models.js';
3
3
  export * from './schemas.js';
4
+ export * from './webhookHelpers.js';
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
@@ -7,13 +7,14 @@ export class LinkService {
7
7
  async createLink(input) {
8
8
  const validated = CreateLinkInputSchema.parse(input);
9
9
  const body = {
10
- id: validated.slug,
11
10
  slug: validated.slug,
12
11
  deepLink: validated.deepLink ?? undefined,
13
12
  redirects: validated.redirects,
14
13
  utm: validated.utm,
15
14
  utmPresetId: validated.utmPresetId,
16
15
  allowParamPassthrough: validated.allowParamPassthrough,
16
+ // New SDK default: hidden from portal unless explicitly opted in.
17
+ displayInPortal: validated.displayInPortal ?? false,
17
18
  customData: validated.customData,
18
19
  og_title: validated.og?.title,
19
20
  og_description: validated.og?.description,
@@ -30,6 +31,9 @@ export class LinkService {
30
31
  return LinkSchema.parse(res);
31
32
  }
32
33
  async listLinks(appId) {
34
+ if (appId == null || String(appId).trim() === '') {
35
+ throw new Error('appId is required');
36
+ }
33
37
  const res = await this.http.request(`/api/apps/${encodeURIComponent(appId)}/links`);
34
38
  return ExtendedLinkSchema.array().parse(res);
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"linkService.js","sourceRoot":"","sources":["../src/linkService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEnI,MAAM,OAAO,WAAW;IACH,IAAI,CAAa;IAElC,YAAY,IAAgB;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACnC,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,GAAQ;YACd,EAAE,EAAE,SAAS,CAAC,IAAI;YAClB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS;YACzC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK;YAC7B,cAAc,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW;YACzC,YAAY,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ;SACvC,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,aAAa,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC/F,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,OAAO,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,aAAa,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzF,OAAO,kBAAkB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAwB;QACjD,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7E,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;CACJ"}
1
+ {"version":3,"file":"linkService.js","sourceRoot":"","sources":["../src/linkService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEnI,MAAM,OAAO,WAAW;IACH,IAAI,CAAa;IAElC,YAAY,IAAgB;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACnC,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,GAAQ;YACd,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS;YACzC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,kEAAkE;YAClE,eAAe,EAAE,SAAS,CAAC,eAAe,IAAI,KAAK;YACnD,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK;YAC7B,cAAc,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW;YACzC,YAAY,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ;SACvC,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,aAAa,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC/F,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,OAAO,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QACzB,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,aAAa,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzF,OAAO,kBAAkB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAwB;QACjD,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7E,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;CACJ"}
@@ -3,12 +3,21 @@ import { mock, instance, verify, deepEqual, when } from 'ts-mockito';
3
3
  describe('LinkService', () => {
4
4
  it('createLink posts correct body and validates response', async () => {
5
5
  const httpMock = mock();
6
- when(httpMock.request('/api/apps/app_1/links', deepEqual({ method: 'POST', body: JSON.stringify({ id: 's', slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, utmPresetId: undefined, allowParamPassthrough: undefined, customData: undefined, og_title: 't', og_description: undefined, og_image_url: undefined }) }))).thenResolve({ id: 's', app_id: 'app_1', domain_id: null, slug: 's', slugUrl: 'https://h/s' });
6
+ when(httpMock.request('/api/apps/app_1/links', deepEqual({ method: 'POST', body: JSON.stringify({ slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, utmPresetId: undefined, allowParamPassthrough: undefined, displayInPortal: false, customData: undefined, og_title: 't', og_description: undefined, og_image_url: undefined }) }))).thenResolve({ id: 's', app_id: 'app_1', domain_id: null, slug: 's', slugUrl: 'https://h/s' });
7
7
  const http = instance(httpMock);
8
8
  const svc = new LinkService(http);
9
9
  const res = await svc.createLink({ appId: 'app_1', slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, og: { title: 't' } });
10
10
  expect(res.slug).toBe('s');
11
- verify(httpMock.request('/api/apps/app_1/links', deepEqual({ method: 'POST', body: JSON.stringify({ id: 's', slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, utmPresetId: undefined, allowParamPassthrough: undefined, customData: undefined, og_title: 't', og_description: undefined, og_image_url: undefined }) }))).once();
11
+ verify(httpMock.request('/api/apps/app_1/links', deepEqual({ method: 'POST', body: JSON.stringify({ slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, utmPresetId: undefined, allowParamPassthrough: undefined, displayInPortal: false, customData: undefined, og_title: 't', og_description: undefined, og_image_url: undefined }) }))).once();
12
+ });
13
+ it('createLink respects explicit displayInPortal override', async () => {
14
+ const httpMock = mock();
15
+ when(httpMock.request('/api/apps/app_1/links', deepEqual({ method: 'POST', body: JSON.stringify({ slug: 'visible', deepLink: undefined, redirects: undefined, utm: undefined, utmPresetId: undefined, allowParamPassthrough: undefined, displayInPortal: true, customData: undefined, og_title: undefined, og_description: undefined, og_image_url: undefined }) }))).thenResolve({ id: 'visible', app_id: 'app_1', domain_id: null, slug: 'visible', slugUrl: 'https://h/visible' });
16
+ const http = instance(httpMock);
17
+ const svc = new LinkService(http);
18
+ const res = await svc.createLink({ appId: 'app_1', slug: 'visible', displayInPortal: true });
19
+ expect(res.slug).toBe('visible');
20
+ verify(httpMock.request('/api/apps/app_1/links', deepEqual({ method: 'POST', body: JSON.stringify({ slug: 'visible', deepLink: undefined, redirects: undefined, utm: undefined, utmPresetId: undefined, allowParamPassthrough: undefined, displayInPortal: true, customData: undefined, og_title: undefined, og_description: undefined, og_image_url: undefined }) }))).once();
12
21
  });
13
22
  it('getLink validates response', async () => {
14
23
  const httpMock = mock();
@@ -1 +1 @@
1
- {"version":3,"file":"linkService.test.js","sourceRoot":"","sources":["../src/linkService.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linkService.test.js","sourceRoot":"","sources":["../src/linkService.test.ts"],"names":[],"mappings":"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"}
package/dist/models.d.ts CHANGED
@@ -16,6 +16,7 @@ export interface Link {
16
16
  og_image_url?: string | null;
17
17
  utm?: string | null;
18
18
  utm_override?: string | null;
19
+ internal?: 0 | 1;
19
20
  enabled: 0 | 1;
20
21
  click_count: number;
21
22
  last_click_at?: string | null;
@@ -40,6 +41,7 @@ export type CreateLinkInput = {
40
41
  utmPresetId?: string;
41
42
  utmOverrides?: Partial<Record<UTMField, boolean>>;
42
43
  allowParamPassthrough?: boolean;
44
+ displayInPortal?: boolean;
43
45
  customData?: Record<string, string | number | boolean | null | undefined>;
44
46
  og?: {
45
47
  title?: string;
package/dist/schemas.d.ts CHANGED
@@ -253,6 +253,7 @@ export declare const CreateLinkInputSchema: z.ZodObject<{
253
253
  tags?: boolean | undefined;
254
254
  }>>;
255
255
  allowParamPassthrough: z.ZodOptional<z.ZodBoolean>;
256
+ displayInPortal: z.ZodOptional<z.ZodBoolean>;
256
257
  customData: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodUndefined]>>>;
257
258
  og: z.ZodOptional<z.ZodObject<{
258
259
  title: z.ZodOptional<z.ZodString>;
@@ -303,6 +304,7 @@ export declare const CreateLinkInputSchema: z.ZodObject<{
303
304
  tags?: boolean | undefined;
304
305
  } | undefined;
305
306
  allowParamPassthrough?: boolean | undefined;
307
+ displayInPortal?: boolean | undefined;
306
308
  customData?: Record<string, string | number | boolean | null | undefined> | undefined;
307
309
  og?: {
308
310
  title?: string | undefined;
@@ -345,6 +347,7 @@ export declare const CreateLinkInputSchema: z.ZodObject<{
345
347
  tags?: boolean | undefined;
346
348
  } | undefined;
347
349
  allowParamPassthrough?: boolean | undefined;
350
+ displayInPortal?: boolean | undefined;
348
351
  customData?: Record<string, string | number | boolean | null | undefined> | undefined;
349
352
  og?: {
350
353
  title?: string | undefined;
@@ -417,8 +420,31 @@ export declare const CreateLinkResponseSchema: z.ZodObject<{
417
420
  slug: string;
418
421
  slugUrl: string;
419
422
  }>;
423
+ /**
424
+ * Standard webhook envelope sent by LinkMe.
425
+ */
426
+ export declare const LinkMeWebhookEnvelopeSchema: z.ZodObject<{
427
+ id: z.ZodString;
428
+ event: z.ZodString;
429
+ ts: z.ZodOptional<z.ZodString>;
430
+ app_id: z.ZodOptional<z.ZodString>;
431
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
432
+ }, "strip", z.ZodTypeAny, {
433
+ id: string;
434
+ event: string;
435
+ app_id?: string | undefined;
436
+ ts?: string | undefined;
437
+ data?: Record<string, unknown> | undefined;
438
+ }, {
439
+ id: string;
440
+ event: string;
441
+ app_id?: string | undefined;
442
+ ts?: string | undefined;
443
+ data?: Record<string, unknown> | undefined;
444
+ }>;
420
445
  export type LinkParsed = z.infer<typeof LinkSchema>;
421
446
  export type ExtendedLinkParsed = z.infer<typeof ExtendedLinkSchema>;
422
447
  export type CreateLinkInputParsed = z.infer<typeof CreateLinkInputSchema>;
423
448
  export type UpdateLinkInputParsed = z.infer<typeof UpdateLinkInputSchema>;
424
449
  export type CreateLinkResponseParsed = z.infer<typeof CreateLinkResponseSchema>;
450
+ export type LinkMeWebhookEnvelopeParsed = z.infer<typeof LinkMeWebhookEnvelopeSchema>;
package/dist/schemas.js CHANGED
@@ -49,7 +49,7 @@ export const ExtendedLinkSchema = LinkSchema.extend({
49
49
  * Client input for creating a Link via the Node SDK.
50
50
  */
51
51
  export const CreateLinkInputSchema = z.object({
52
- appId: z.string(),
52
+ appId: z.string().min(1, 'appId is required'),
53
53
  slug: z.string().optional(),
54
54
  deepLink: z.string().nullable().optional(),
55
55
  redirects: z.object({
@@ -84,6 +84,7 @@ export const CreateLinkInputSchema = z.object({
84
84
  tags: z.boolean().optional(),
85
85
  }).partial().optional(),
86
86
  allowParamPassthrough: z.boolean().optional(),
87
+ displayInPortal: z.boolean().optional(),
87
88
  customData: z.record(z.union([z.string(), z.number(), z.boolean(), z.null(), z.undefined()])).optional(),
88
89
  og: z.object({ title: z.string().optional(), description: z.string().optional(), imageUrl: z.string().optional() }).optional(),
89
90
  });
@@ -114,4 +115,14 @@ export const CreateLinkResponseSchema = z.object({
114
115
  slug: z.string(),
115
116
  slugUrl: z.string(),
116
117
  });
118
+ /**
119
+ * Standard webhook envelope sent by LinkMe.
120
+ */
121
+ export const LinkMeWebhookEnvelopeSchema = z.object({
122
+ id: z.string().min(1),
123
+ event: z.string().min(1),
124
+ ts: z.string().optional(),
125
+ app_id: z.string().optional(),
126
+ data: z.record(z.unknown()).optional(),
127
+ });
117
128
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type LinkMeWebhookEnvelopeParsed } from './schemas';
2
+ export type LinkMeWebhookEnvelope = LinkMeWebhookEnvelopeParsed;
3
+ export declare function parseLinkMeWebhookEnvelope(input: unknown): LinkMeWebhookEnvelope;
4
+ export declare function verifyLinkMeWebhookSignature(rawBody: string | Buffer, signatureHeader: string | undefined, secret: string): boolean;
@@ -0,0 +1,22 @@
1
+ import crypto from 'node:crypto';
2
+ import { LinkMeWebhookEnvelopeSchema } from './schemas';
3
+ export function parseLinkMeWebhookEnvelope(input) {
4
+ return LinkMeWebhookEnvelopeSchema.parse(input);
5
+ }
6
+ export function verifyLinkMeWebhookSignature(rawBody, signatureHeader, secret) {
7
+ if (!signatureHeader || !signatureHeader.startsWith('sha256=')) {
8
+ return false;
9
+ }
10
+ const receivedHex = signatureHeader.slice('sha256='.length);
11
+ const expectedHex = crypto
12
+ .createHmac('sha256', secret)
13
+ .update(rawBody)
14
+ .digest('hex');
15
+ const received = Buffer.from(receivedHex, 'hex');
16
+ const expected = Buffer.from(expectedHex, 'hex');
17
+ if (received.length === 0 || received.length !== expected.length) {
18
+ return false;
19
+ }
20
+ return crypto.timingSafeEqual(received, expected);
21
+ }
22
+ //# sourceMappingURL=webhookHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhookHelpers.js","sourceRoot":"","sources":["../src/webhookHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAoC,MAAM,WAAW,CAAC;AAI1F,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACrD,OAAO,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,4BAA4B,CACxC,OAAwB,EACxB,eAAmC,EACnC,MAAc;IAEd,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM;SACrB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import crypto from 'node:crypto';
2
+ import { parseLinkMeWebhookEnvelope, verifyLinkMeWebhookSignature, } from './webhookHelpers';
3
+ describe('webhookHelpers', () => {
4
+ const sampleEnvelope = {
5
+ id: 'evt_123',
6
+ event: 'link.click',
7
+ app_id: 'app_456',
8
+ data: {
9
+ link_id: 'lnk_1',
10
+ platform: 'ios',
11
+ nested: { ignored: true },
12
+ },
13
+ };
14
+ it('parses LinkMe webhook envelope', () => {
15
+ const parsed = parseLinkMeWebhookEnvelope(sampleEnvelope);
16
+ expect(parsed.id).toBe('evt_123');
17
+ });
18
+ it('verifies LinkMe webhook signature', () => {
19
+ const rawBody = JSON.stringify(sampleEnvelope);
20
+ const secret = 'test-secret';
21
+ const digest = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
22
+ expect(verifyLinkMeWebhookSignature(rawBody, `sha256=${digest}`, secret)).toBe(true);
23
+ expect(verifyLinkMeWebhookSignature(rawBody, 'sha256=bad', secret)).toBe(false);
24
+ });
25
+ });
26
+ //# sourceMappingURL=webhookHelpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhookHelpers.test.js","sourceRoot":"","sources":["../src/webhookHelpers.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACH,0BAA0B,EAC1B,4BAA4B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,MAAM,cAAc,GAAG;QACnB,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE;YACF,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC5B;KACJ,CAAC;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,aAAa,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,CAAC,4BAA4B,CAAC,OAAO,EAAE,UAAU,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,CAAC,4BAA4B,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/dist-cjs/http.js CHANGED
@@ -11,7 +11,7 @@ class FetchHttpClient {
11
11
  this.apiKey = deps.apiKey;
12
12
  }
13
13
  async request(path, init) {
14
- const url = `${this.baseUrl}${path}`;
14
+ const url = `${this.baseUrl}${path.replace(/\/+/g, '/')}`;
15
15
  const headers = { 'Content-Type': 'application/json' };
16
16
  if (this.apiKey)
17
17
  headers['Authorization'] = `Bearer ${this.apiKey}`;
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";;;AAaA,MAAa,eAAe;IACP,OAAO,CAAS;IAChB,SAAS,CAAe;IACxB,MAAM,CAAU;IAEjC,YAAY,IAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAAsB;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAI,IAAI,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,IAAI,MAAM,GAAQ,SAAS,CAAC;YAC5B,IAAI,CAAC;gBAAC,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAQ,CAAC;YAC9D,GAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAChC,GAAW,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,MAAM,GAAG,CAAC;QACd,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,eAAe,IAAI,EAAE,CAAQ,CAAC;YACrE,GAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACjC,IAAI,CAAC;gBAAE,GAAW,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YACzD,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;CACJ;AAvCD,0CAuCC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":";;;AAaA,MAAa,eAAe;IACP,OAAO,CAAS;IAChB,SAAS,CAAe;IACxB,MAAM,CAAU;IAEjC,YAAY,IAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAAsB;QACjD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAI,IAAI,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,IAAI,MAAM,GAAQ,SAAS,CAAC;YAC5B,IAAI,CAAC;gBAAC,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,QAAQ,IAAI,EAAE,CAAQ,CAAC;YAC9D,GAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAChC,GAAW,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,MAAM,GAAG,CAAC;QACd,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,eAAe,IAAI,EAAE,CAAQ,CAAC;YACrE,GAAW,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACjC,IAAI,CAAC;gBAAE,GAAW,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YACzD,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;CACJ;AAvCD,0CAuCC"}
package/dist-cjs/index.js CHANGED
@@ -23,4 +23,5 @@ Object.defineProperty(exports, "default", { enumerable: true, get: function () {
23
23
  Object.defineProperty(exports, "LinkMeClient", { enumerable: true, get: function () { return client_js_1.LinkMeClient; } });
24
24
  __exportStar(require("./models.js"), exports);
25
25
  __exportStar(require("./schemas.js"), exports);
26
+ __exportStar(require("./webhookHelpers.js"), exports);
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,yCAAoD;AAA3C,qHAAA,OAAO,OAAA;AAAE,yGAAA,YAAY,OAAA;AAC9B,8CAA4B;AAC5B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,yCAAoD;AAA3C,qHAAA,OAAO,OAAA;AAAE,yGAAA,YAAY,OAAA;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,sDAAoC"}
@@ -10,13 +10,14 @@ class LinkService {
10
10
  async createLink(input) {
11
11
  const validated = schemas_1.CreateLinkInputSchema.parse(input);
12
12
  const body = {
13
- id: validated.slug,
14
13
  slug: validated.slug,
15
14
  deepLink: validated.deepLink ?? undefined,
16
15
  redirects: validated.redirects,
17
16
  utm: validated.utm,
18
17
  utmPresetId: validated.utmPresetId,
19
18
  allowParamPassthrough: validated.allowParamPassthrough,
19
+ // New SDK default: hidden from portal unless explicitly opted in.
20
+ displayInPortal: validated.displayInPortal ?? false,
20
21
  customData: validated.customData,
21
22
  og_title: validated.og?.title,
22
23
  og_description: validated.og?.description,
@@ -33,6 +34,9 @@ class LinkService {
33
34
  return schemas_1.LinkSchema.parse(res);
34
35
  }
35
36
  async listLinks(appId) {
37
+ if (appId == null || String(appId).trim() === '') {
38
+ throw new Error('appId is required');
39
+ }
36
40
  const res = await this.http.request(`/api/apps/${encodeURIComponent(appId)}/links`);
37
41
  return schemas_1.ExtendedLinkSchema.array().parse(res);
38
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"linkService.js","sourceRoot":"","sources":["../src/linkService.ts"],"names":[],"mappings":";;;AAEA,uCAAmI;AAEnI,MAAa,WAAW;IACH,IAAI,CAAa;IAElC,YAAY,IAAgB;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACnC,MAAM,SAAS,GAAG,+BAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,GAAQ;YACd,EAAE,EAAE,SAAS,CAAC,IAAI;YAClB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS;YACzC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK;YAC7B,cAAc,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW;YACzC,YAAY,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ;SACvC,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,aAAa,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC/F,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,OAAO,kCAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,oBAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,aAAa,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzF,OAAO,4BAAkB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAwB;QACjD,MAAM,SAAS,GAAG,+BAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7E,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,oBAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;CACJ;AAnDD,kCAmDC"}
1
+ {"version":3,"file":"linkService.js","sourceRoot":"","sources":["../src/linkService.ts"],"names":[],"mappings":";;;AAEA,uCAAmI;AAEnI,MAAa,WAAW;IACH,IAAI,CAAa;IAElC,YAAY,IAAgB;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACnC,MAAM,SAAS,GAAG,+BAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,GAAQ;YACd,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS;YACzC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,kEAAkE;YAClE,eAAe,EAAE,SAAS,CAAC,eAAe,IAAI,KAAK;YACnD,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK;YAC7B,cAAc,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW;YACzC,YAAY,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ;SACvC,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,aAAa,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC/F,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QACH,OAAO,kCAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,oBAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QACzB,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,aAAa,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzF,OAAO,4BAAkB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAwB;QACjD,MAAM,SAAS,GAAG,+BAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAM,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7E,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,oBAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;CACJ;AAvDD,kCAuDC"}
@@ -5,12 +5,21 @@ const ts_mockito_1 = require("ts-mockito");
5
5
  describe('LinkService', () => {
6
6
  it('createLink posts correct body and validates response', async () => {
7
7
  const httpMock = (0, ts_mockito_1.mock)();
8
- (0, ts_mockito_1.when)(httpMock.request('/api/apps/app_1/links', (0, ts_mockito_1.deepEqual)({ method: 'POST', body: JSON.stringify({ id: 's', slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, utmPresetId: undefined, allowParamPassthrough: undefined, customData: undefined, og_title: 't', og_description: undefined, og_image_url: undefined }) }))).thenResolve({ id: 's', app_id: 'app_1', domain_id: null, slug: 's', slugUrl: 'https://h/s' });
8
+ (0, ts_mockito_1.when)(httpMock.request('/api/apps/app_1/links', (0, ts_mockito_1.deepEqual)({ method: 'POST', body: JSON.stringify({ slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, utmPresetId: undefined, allowParamPassthrough: undefined, displayInPortal: false, customData: undefined, og_title: 't', og_description: undefined, og_image_url: undefined }) }))).thenResolve({ id: 's', app_id: 'app_1', domain_id: null, slug: 's', slugUrl: 'https://h/s' });
9
9
  const http = (0, ts_mockito_1.instance)(httpMock);
10
10
  const svc = new linkService_1.LinkService(http);
11
11
  const res = await svc.createLink({ appId: 'app_1', slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, og: { title: 't' } });
12
12
  expect(res.slug).toBe('s');
13
- (0, ts_mockito_1.verify)(httpMock.request('/api/apps/app_1/links', (0, ts_mockito_1.deepEqual)({ method: 'POST', body: JSON.stringify({ id: 's', slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, utmPresetId: undefined, allowParamPassthrough: undefined, customData: undefined, og_title: 't', og_description: undefined, og_image_url: undefined }) }))).once();
13
+ (0, ts_mockito_1.verify)(httpMock.request('/api/apps/app_1/links', (0, ts_mockito_1.deepEqual)({ method: 'POST', body: JSON.stringify({ slug: 's', deepLink: '/d', redirects: { web: 'https://x' }, utm: { utm_source: 's' }, utmPresetId: undefined, allowParamPassthrough: undefined, displayInPortal: false, customData: undefined, og_title: 't', og_description: undefined, og_image_url: undefined }) }))).once();
14
+ });
15
+ it('createLink respects explicit displayInPortal override', async () => {
16
+ const httpMock = (0, ts_mockito_1.mock)();
17
+ (0, ts_mockito_1.when)(httpMock.request('/api/apps/app_1/links', (0, ts_mockito_1.deepEqual)({ method: 'POST', body: JSON.stringify({ slug: 'visible', deepLink: undefined, redirects: undefined, utm: undefined, utmPresetId: undefined, allowParamPassthrough: undefined, displayInPortal: true, customData: undefined, og_title: undefined, og_description: undefined, og_image_url: undefined }) }))).thenResolve({ id: 'visible', app_id: 'app_1', domain_id: null, slug: 'visible', slugUrl: 'https://h/visible' });
18
+ const http = (0, ts_mockito_1.instance)(httpMock);
19
+ const svc = new linkService_1.LinkService(http);
20
+ const res = await svc.createLink({ appId: 'app_1', slug: 'visible', displayInPortal: true });
21
+ expect(res.slug).toBe('visible');
22
+ (0, ts_mockito_1.verify)(httpMock.request('/api/apps/app_1/links', (0, ts_mockito_1.deepEqual)({ method: 'POST', body: JSON.stringify({ slug: 'visible', deepLink: undefined, redirects: undefined, utm: undefined, utmPresetId: undefined, allowParamPassthrough: undefined, displayInPortal: true, customData: undefined, og_title: undefined, og_description: undefined, og_image_url: undefined }) }))).once();
14
23
  });
15
24
  it('getLink validates response', async () => {
16
25
  const httpMock = (0, ts_mockito_1.mock)();
@@ -1 +1 @@
1
- {"version":3,"file":"linkService.test.js","sourceRoot":"","sources":["../src/linkService.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linkService.test.js","sourceRoot":"","sources":["../src/linkService.test.ts"],"names":[],"mappings":";;AAAA,+CAA4C;AAE5C,2CAAqE;AAErE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,QAAQ,GAAG,IAAA,iBAAI,GAAc,CAAC;QACpC,IAAA,iBAAI,EAAC,QAAQ,CAAC,OAAO,CAAM,uBAAuB,EAAE,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAS,CAAC,CAAC;QAC5d,MAAM,IAAI,GAAG,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAS,CAAC,CAAC;QACtK,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAA,mBAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/X,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,QAAQ,GAAG,IAAA,iBAAI,GAAc,CAAC;QACpC,IAAA,iBAAI,EAAC,QAAQ,CAAC,OAAO,CAAM,uBAAuB,EAAE,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAS,CAAC,CAAC;QACze,MAAM,IAAI,GAAG,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAS,CAAC,CAAC;QACpG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,IAAA,mBAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,EAAE,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1X,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,IAAA,iBAAI,GAAc,CAAC;QACpC,IAAA,iBAAI,EAAC,QAAQ,CAAC,OAAO,CAAM,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAS,CAAC,CAAC;QACvL,MAAM,IAAI,GAAG,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,QAAQ,GAAG,IAAA,iBAAI,GAAc,CAAC;QACpC,IAAA,iBAAI,EAAC,QAAQ,CAAC,OAAO,CAAM,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAQ,CAAC,CAAC;QACjM,MAAM,IAAI,GAAG,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAA,mBAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAA,iBAAI,GAAc,CAAC;QACpC,IAAA,iBAAI,EAAC,QAAQ,CAAC,OAAO,CAAM,eAAe,EAAE,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,EAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAS,CAAC,CAAC;QACvR,MAAM,IAAI,GAAG,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAA,mBAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,EAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,QAAQ,GAAG,IAAA,iBAAI,GAAc,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAA,mBAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CreateLinkResponseSchema = exports.UpdateLinkInputSchema = exports.CreateLinkInputSchema = exports.ExtendedLinkSchema = exports.LinkSchema = void 0;
3
+ exports.LinkMeWebhookEnvelopeSchema = exports.CreateLinkResponseSchema = exports.UpdateLinkInputSchema = exports.CreateLinkInputSchema = exports.ExtendedLinkSchema = exports.LinkSchema = void 0;
4
4
  /**
5
5
  * Zod schemas for Node SDK models and API contracts.
6
6
  *
@@ -52,7 +52,7 @@ exports.ExtendedLinkSchema = exports.LinkSchema.extend({
52
52
  * Client input for creating a Link via the Node SDK.
53
53
  */
54
54
  exports.CreateLinkInputSchema = zod_1.z.object({
55
- appId: zod_1.z.string(),
55
+ appId: zod_1.z.string().min(1, 'appId is required'),
56
56
  slug: zod_1.z.string().optional(),
57
57
  deepLink: zod_1.z.string().nullable().optional(),
58
58
  redirects: zod_1.z.object({
@@ -87,6 +87,7 @@ exports.CreateLinkInputSchema = zod_1.z.object({
87
87
  tags: zod_1.z.boolean().optional(),
88
88
  }).partial().optional(),
89
89
  allowParamPassthrough: zod_1.z.boolean().optional(),
90
+ displayInPortal: zod_1.z.boolean().optional(),
90
91
  customData: zod_1.z.record(zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean(), zod_1.z.null(), zod_1.z.undefined()])).optional(),
91
92
  og: zod_1.z.object({ title: zod_1.z.string().optional(), description: zod_1.z.string().optional(), imageUrl: zod_1.z.string().optional() }).optional(),
92
93
  });
@@ -117,4 +118,14 @@ exports.CreateLinkResponseSchema = zod_1.z.object({
117
118
  slug: zod_1.z.string(),
118
119
  slugUrl: zod_1.z.string(),
119
120
  });
121
+ /**
122
+ * Standard webhook envelope sent by LinkMe.
123
+ */
124
+ exports.LinkMeWebhookEnvelopeSchema = zod_1.z.object({
125
+ id: zod_1.z.string().min(1),
126
+ event: zod_1.z.string().min(1),
127
+ ts: zod_1.z.string().optional(),
128
+ app_id: zod_1.z.string().optional(),
129
+ data: zod_1.z.record(zod_1.z.unknown()).optional(),
130
+ });
120
131
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseLinkMeWebhookEnvelope = parseLinkMeWebhookEnvelope;
7
+ exports.verifyLinkMeWebhookSignature = verifyLinkMeWebhookSignature;
8
+ const node_crypto_1 = __importDefault(require("node:crypto"));
9
+ const schemas_1 = require("./schemas");
10
+ function parseLinkMeWebhookEnvelope(input) {
11
+ return schemas_1.LinkMeWebhookEnvelopeSchema.parse(input);
12
+ }
13
+ function verifyLinkMeWebhookSignature(rawBody, signatureHeader, secret) {
14
+ if (!signatureHeader || !signatureHeader.startsWith('sha256=')) {
15
+ return false;
16
+ }
17
+ const receivedHex = signatureHeader.slice('sha256='.length);
18
+ const expectedHex = node_crypto_1.default
19
+ .createHmac('sha256', secret)
20
+ .update(rawBody)
21
+ .digest('hex');
22
+ const received = Buffer.from(receivedHex, 'hex');
23
+ const expected = Buffer.from(expectedHex, 'hex');
24
+ if (received.length === 0 || received.length !== expected.length) {
25
+ return false;
26
+ }
27
+ return node_crypto_1.default.timingSafeEqual(received, expected);
28
+ }
29
+ //# sourceMappingURL=webhookHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhookHelpers.js","sourceRoot":"","sources":["../src/webhookHelpers.ts"],"names":[],"mappings":";;;;;AAKA,gEAEC;AAED,oEAuBC;AAhCD,8DAAiC;AACjC,uCAA0F;AAI1F,SAAgB,0BAA0B,CAAC,KAAc;IACrD,OAAO,qCAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,4BAA4B,CACxC,OAAwB,EACxB,eAAmC,EACnC,MAAc;IAEd,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,qBAAM;SACrB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAEjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,qBAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_crypto_1 = __importDefault(require("node:crypto"));
7
+ const webhookHelpers_1 = require("./webhookHelpers");
8
+ describe('webhookHelpers', () => {
9
+ const sampleEnvelope = {
10
+ id: 'evt_123',
11
+ event: 'link.click',
12
+ app_id: 'app_456',
13
+ data: {
14
+ link_id: 'lnk_1',
15
+ platform: 'ios',
16
+ nested: { ignored: true },
17
+ },
18
+ };
19
+ it('parses LinkMe webhook envelope', () => {
20
+ const parsed = (0, webhookHelpers_1.parseLinkMeWebhookEnvelope)(sampleEnvelope);
21
+ expect(parsed.id).toBe('evt_123');
22
+ });
23
+ it('verifies LinkMe webhook signature', () => {
24
+ const rawBody = JSON.stringify(sampleEnvelope);
25
+ const secret = 'test-secret';
26
+ const digest = node_crypto_1.default.createHmac('sha256', secret).update(rawBody).digest('hex');
27
+ expect((0, webhookHelpers_1.verifyLinkMeWebhookSignature)(rawBody, `sha256=${digest}`, secret)).toBe(true);
28
+ expect((0, webhookHelpers_1.verifyLinkMeWebhookSignature)(rawBody, 'sha256=bad', secret)).toBe(false);
29
+ });
30
+ });
31
+ //# sourceMappingURL=webhookHelpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhookHelpers.test.js","sourceRoot":"","sources":["../src/webhookHelpers.test.ts"],"names":[],"mappings":";;;;;AAAA,8DAAiC;AACjC,qDAG0B;AAE1B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,MAAM,cAAc,GAAG;QACnB,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE;YACF,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC5B;KACJ,CAAC;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,IAAA,2CAA0B,EAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,aAAa,CAAC;QAC7B,MAAM,MAAM,GAAG,qBAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,CAAC,IAAA,6CAA4B,EAAC,OAAO,EAAE,UAAU,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,CAAC,IAAA,6CAA4B,EAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@li-nk.me/node-sdk",
3
- "version": "0.2.7",
3
+ "version": "0.2.10",
4
4
  "type": "module",
5
5
  "description": "Official li-nk.me Node.js client for administering links via the Edge API.",
6
6
  "license": "Apache-2.0",