@isnap/sdk 1.1.0-next.84 → 1.2.0-next.86
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/CHANGELOG.md +11 -1
- package/README.md +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -0
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +15 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -1
- package/dist/generated/openapi.d.ts +2744 -8983
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/resources/lookup.d.ts +22 -3
- package/dist/resources/lookup.d.ts.map +1 -1
- package/dist/resources/lookup.js +22 -3
- package/dist/resources/lookup.js.map +1 -1
- package/dist/resources/messages.d.ts +8 -0
- package/dist/resources/messages.d.ts.map +1 -1
- package/dist/resources/messages.js.map +1 -1
- package/dist/retry.d.ts +26 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +39 -3
- package/dist/retry.js.map +1 -1
- package/dist/webhooks/types.d.ts +43 -4
- package/dist/webhooks/types.d.ts.map +1 -1
- package/dist/webhooks/types.js.map +1 -1
- package/package.json +4 -3
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export type { AreaCode, AreaCodes, Country, ListAreaCodesQuery } from './resourc
|
|
|
19
19
|
export type { Chat, ChatMarkRead, ChatTypingStart, ChatTypingStop, ListChatsQuery, MarkReadBody, ShareContactCardBody, ShareContactCardResult, TypingStartBody } from './resources/chats.js';
|
|
20
20
|
export type { ActivateLineBody, AssignLineBody, Line, LineConfigPatch, LineConfigResponseData, LineHealth, LineList, ListLinesQuery, ListQueueQuery, MyLines, PatchLineBody, QueueResponseData, QuotaSnapshot, TransferOwnershipBody } from './resources/lines.js';
|
|
21
21
|
export type { LookupRequest, LookupResult } from './resources/lookup.js';
|
|
22
|
-
export type { ListMessagesQuery, Message, Reaction, ReactionRemoval, SendMessageBody, SendReactionBody } from './resources/messages.js';
|
|
22
|
+
export type { ListMessagesQuery, Message, Reaction, ReactionRemoval, ReactionType, SendMessageBody, SendReactionBody } from './resources/messages.js';
|
|
23
23
|
export type { Attachment, CreateAttachmentBody, CreateAttachmentResponse, UploadInput, UploadMetadata, UploadOptions } from './resources/attachments.js';
|
|
24
24
|
export type { ByodPairBody, ByodPairResponse } from './resources/byod.js';
|
|
25
25
|
export type { CreatePreOrderBody, ListPreOrdersQuery, PreOrder, PreOrderListData, PreOrderStatus } from './resources/preorders.js';
|
|
@@ -29,5 +29,5 @@ export { parseWebhookEvent } from './webhooks/parse.js';
|
|
|
29
29
|
export { verifyWebhook } from './webhooks/verify.js';
|
|
30
30
|
export type { VerifyWebhookOptions } from './webhooks/verify.js';
|
|
31
31
|
export { isLineEvent, isMessageEvent, isPreOrderEvent, isReactionEvent, isTrialEvent, isTypingIndicatorEvent } from './webhooks/types.js';
|
|
32
|
-
export type { LineEvent, LineEventType, MessageEvent, MessageEventType, PreOrderEvent, PreOrderEventType, ReactionEvent, ReactionEventType, TrialEvent, TrialEventType, TypingIndicatorEvent, TypingIndicatorEventType, WebhookEvent, WebhookEventBase } from './webhooks/types.js';
|
|
32
|
+
export type { LineEvent, LineEventType, MessageEvent, MessageEventType, PreOrderEvent, PreOrderEventType, ReactionEvent, ReactionEventData, ReactionEventType, TrialEvent, TrialEventType, TypingIndicatorEvent, TypingIndicatorEventType, WebhookEvent, WebhookEventBase } from './webhooks/types.js';
|
|
33
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,aAAa,CAAA;AAKpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,aAAa,CAAA;AAKpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAiF1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,EACL,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,qBAAqB,CAAA"}
|
|
@@ -6,9 +6,28 @@ export type LookupResult = components['schemas']['Lookup'];
|
|
|
6
6
|
export declare class LookupResource extends BaseResource {
|
|
7
7
|
/**
|
|
8
8
|
* `POST /v1/lookup` — check whether a handle is reachable on iMessage.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
*
|
|
10
|
+
* Two outcomes. The client returns the envelope's `data` and does not
|
|
11
|
+
* surface the HTTP status, so branch on `pending` — the in-band signal:
|
|
12
|
+
*
|
|
13
|
+
* - **Terminal (`200`)** — `imessage: true | false | null`, and `pending`
|
|
14
|
+
* is absent. `null` means the iMessage status is unknown and the handle
|
|
15
|
+
* should be treated as SMS-safe (degrade to SMS instead of relying on
|
|
16
|
+
* iMessage delivery).
|
|
17
|
+
* - **Pending (`202`)** — a device probe was dispatched but had not
|
|
18
|
+
* answered within the wait budget. `pending: true`, `imessage: null`,
|
|
19
|
+
* plus `probe_id` and `retry_after` (seconds).
|
|
20
|
+
*
|
|
21
|
+
* Completion is poll-only — there is no `lookup.completed` webhook.
|
|
22
|
+
* Re-issue the same request after `retry_after`; the shared cache the
|
|
23
|
+
* probe warms answers `200`.
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* const result = await client.lookup.check({ handle })
|
|
27
|
+
* if (result.pending) {
|
|
28
|
+
* setTimeout(retry, (result.retry_after ?? 1) * 1000)
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
12
31
|
*/
|
|
13
32
|
check(params: LookupRequest, opts?: RequestOptions): Promise<LookupResult>;
|
|
14
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../src/resources/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAA;AAClE,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAA;AAE1D,qBAAa,cAAe,SAAQ,YAAY;IAC9C
|
|
1
|
+
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../src/resources/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAA;AAClE,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAA;AAE1D,qBAAa,cAAe,SAAQ,YAAY;IAC9C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC;CAG3E"}
|
package/dist/resources/lookup.js
CHANGED
|
@@ -2,9 +2,28 @@ import { BaseResource } from './base.js';
|
|
|
2
2
|
export class LookupResource extends BaseResource {
|
|
3
3
|
/**
|
|
4
4
|
* `POST /v1/lookup` — check whether a handle is reachable on iMessage.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Two outcomes. The client returns the envelope's `data` and does not
|
|
7
|
+
* surface the HTTP status, so branch on `pending` — the in-band signal:
|
|
8
|
+
*
|
|
9
|
+
* - **Terminal (`200`)** — `imessage: true | false | null`, and `pending`
|
|
10
|
+
* is absent. `null` means the iMessage status is unknown and the handle
|
|
11
|
+
* should be treated as SMS-safe (degrade to SMS instead of relying on
|
|
12
|
+
* iMessage delivery).
|
|
13
|
+
* - **Pending (`202`)** — a device probe was dispatched but had not
|
|
14
|
+
* answered within the wait budget. `pending: true`, `imessage: null`,
|
|
15
|
+
* plus `probe_id` and `retry_after` (seconds).
|
|
16
|
+
*
|
|
17
|
+
* Completion is poll-only — there is no `lookup.completed` webhook.
|
|
18
|
+
* Re-issue the same request after `retry_after`; the shared cache the
|
|
19
|
+
* probe warms answers `200`.
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* const result = await client.lookup.check({ handle })
|
|
23
|
+
* if (result.pending) {
|
|
24
|
+
* setTimeout(retry, (result.retry_after ?? 1) * 1000)
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
8
27
|
*/
|
|
9
28
|
check(params, opts) {
|
|
10
29
|
return this.client.request('POST', '/v1/lookup', params, opts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/resources/lookup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAKxC,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C
|
|
1
|
+
{"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/resources/lookup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAKxC,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,MAAqB,EAAE,IAAqB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAe,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC;CACF"}
|
|
@@ -8,6 +8,14 @@ export type ListMessagesQuery = NonNullable<paths['/v1/messages']['get']['parame
|
|
|
8
8
|
export type SendReactionBody = components['schemas']['SendReactionRequest'];
|
|
9
9
|
export type Reaction = components['schemas']['Reaction'];
|
|
10
10
|
export type ReactionRemoval = components['schemas']['ReactionRemoval'];
|
|
11
|
+
/**
|
|
12
|
+
* The tapback kind as it appears on a reaction the API *reports* — the 6
|
|
13
|
+
* classic tapbacks plus `custom` (WHA-2102), an arbitrary counterparty emoji.
|
|
14
|
+
* Strictly wider than `Reaction['type']` / `SendReactionBody['type']`, which
|
|
15
|
+
* cover only what a customer may *send*. Sourced from the generated
|
|
16
|
+
* `MessageReactionV1` so a regeneration cannot silently drop `custom`.
|
|
17
|
+
*/
|
|
18
|
+
export type ReactionType = components['schemas']['MessageReactionV1']['reaction_type'];
|
|
11
19
|
export declare class MessagesResource extends BaseResource {
|
|
12
20
|
/** `POST /v1/messages` — send a new outbound message (queued, returns `MessageV1`). */
|
|
13
21
|
send(body: SendMessageBody, opts?: RequestOptions): Promise<Message>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/resources/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAGhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,qFAAqF;AACrF,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAA;AACxD,MAAM,MAAM,eAAe,GAAG,WAAW,CACvC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAC7C,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAA;AAChC,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAChG,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAA;AAC3E,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAA;AACxD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/resources/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAGhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,qFAAqF;AACrF,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAA;AACxD,MAAM,MAAM,eAAe,GAAG,WAAW,CACvC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAC7C,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAA;AAChC,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAChG,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAA;AAC3E,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAA;AACxD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAA;AACtE;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAA;AAEtF,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,uFAAuF;IACvF,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAIpE,wEAAwE;IACxE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxD;;;;;;OAMG;IACH,IAAI,CACF,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAM,EAC/C,IAAI,CAAC,EAAE,cAAc,GACpB,aAAa,CAAC,OAAO,CAAC;IAWzB;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAShG;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IASlF;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;CAQ5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/resources/messages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/resources/messages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAoBxC,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,uFAAuF;IACvF,IAAI,CAAC,IAAqB,EAAE,IAAqB;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACzE,CAAC;IAED,wEAAwE;IACxE,GAAG,CAAC,EAAU,EAAE,IAAqB;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IACvG,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CACF,UAA6C,EAAE,EAC/C,IAAqB;QAErB,OAAO,QAAQ,CACb,CAAC,MAAM,EAAE,EAAE,CACT,IAAI,CAAC,MAAM,CAAC,OAAO,CAAsB,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE;YACzE,GAAG,IAAI;YACP,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE;SAC9B,CAAC,EACJ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CACzB,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,SAAiB,EAAE,IAAsB,EAAE,IAAqB;QAC1E,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,MAAM,EACN,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,YAAY,EACzD,IAAI,EACJ,IAAI,CACL,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,SAAiB,EAAE,IAAqB;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,QAAQ,EACR,gBAAgB,kBAAkB,CAAC,SAAS,CAAC,YAAY,EACzD,SAAS,EACT,IAAI,CACL,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,EAAU,EAAE,IAAqB;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,QAAQ,EACR,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACxC,SAAS,EACT,IAAI,CACL,CAAA;IACH,CAAC;CACF"}
|
package/dist/retry.d.ts
CHANGED
|
@@ -5,10 +5,35 @@ export interface RetryInfo {
|
|
|
5
5
|
}
|
|
6
6
|
export interface RetryConfig {
|
|
7
7
|
maxRetries: number;
|
|
8
|
+
maxRetryDelayMs?: number;
|
|
8
9
|
onRetry?: (info: RetryInfo) => void;
|
|
9
10
|
signal?: AbortSignal;
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Ceiling on how long a single retry may sleep, in milliseconds.
|
|
14
|
+
*
|
|
15
|
+
* A server-sent `retry_after` is honored verbatim, and the backend emits
|
|
16
|
+
* day-scale values on purpose — the trial rebind cap returns
|
|
17
|
+
* `retry_after ≈ 86400` (24h) as a *retryable* 429. Without a ceiling one
|
|
18
|
+
* `await client.trial.revoke(...)` would sit in an uninterruptible sleep for
|
|
19
|
+
* a day (three of them, at the default `maxRetries: 3`), which an integrator
|
|
20
|
+
* experiences as a hang rather than as a rate limit. 60s covers every
|
|
21
|
+
* limiter window the API actually uses; anything beyond it is something the
|
|
22
|
+
* caller should schedule itself, not something the SDK should sleep through.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_MAX_RETRY_DELAY_MS = 60000;
|
|
11
25
|
export declare function isRetryable(err: unknown): boolean;
|
|
12
|
-
|
|
26
|
+
/**
|
|
27
|
+
* How long the next attempt should wait, in milliseconds.
|
|
28
|
+
*
|
|
29
|
+
* A honored `retry_after` is returned **raw and unclamped** on purpose: the
|
|
30
|
+
* caller needs the true figure for the `onRetry` diagnostic and for the
|
|
31
|
+
* error path. Enforcing the ceiling is `withRetries`' job — it rethrows
|
|
32
|
+
* rather than sleeping when the raw value overshoots, so the two branches
|
|
33
|
+
* stay distinguishable (`> maxDelayMs` means "don't wait", not "wait
|
|
34
|
+
* `maxDelayMs`"). Only the exponential fallback is clamped here, since it
|
|
35
|
+
* grows unboundedly with `attempt` and has no caller-visible meaning.
|
|
36
|
+
*/
|
|
37
|
+
export declare function computeBackoff(attempt: number, err: unknown, maxDelayMs?: number): number;
|
|
13
38
|
export declare function withRetries<T>(fn: () => Promise<T>, config: RetryConfig): Promise<T>;
|
|
14
39
|
//# sourceMappingURL=retry.d.ts.map
|
package/dist/retry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAKD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAOjD;AAED,wBAAgB,cAAc,
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACnC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAKD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAEhD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAOjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,OAAO,EACZ,UAAU,GAAE,MAAmC,GAC9C,MAAM,CAKR;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CA+B1F"}
|
package/dist/retry.js
CHANGED
|
@@ -2,6 +2,19 @@ import { APIConnectionError, InternalServerError, QuotaExceededError, RateLimitE
|
|
|
2
2
|
import { sleep } from './internal/sleep.js';
|
|
3
3
|
const BASE_DELAY_MS = 250;
|
|
4
4
|
const JITTER_MS = 100;
|
|
5
|
+
/**
|
|
6
|
+
* Ceiling on how long a single retry may sleep, in milliseconds.
|
|
7
|
+
*
|
|
8
|
+
* A server-sent `retry_after` is honored verbatim, and the backend emits
|
|
9
|
+
* day-scale values on purpose — the trial rebind cap returns
|
|
10
|
+
* `retry_after ≈ 86400` (24h) as a *retryable* 429. Without a ceiling one
|
|
11
|
+
* `await client.trial.revoke(...)` would sit in an uninterruptible sleep for
|
|
12
|
+
* a day (three of them, at the default `maxRetries: 3`), which an integrator
|
|
13
|
+
* experiences as a hang rather than as a rate limit. 60s covers every
|
|
14
|
+
* limiter window the API actually uses; anything beyond it is something the
|
|
15
|
+
* caller should schedule itself, not something the SDK should sleep through.
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_MAX_RETRY_DELAY_MS = 60_000;
|
|
5
18
|
export function isRetryable(err) {
|
|
6
19
|
if (err instanceof QuotaExceededError)
|
|
7
20
|
return false;
|
|
@@ -15,13 +28,25 @@ export function isRetryable(err) {
|
|
|
15
28
|
return true;
|
|
16
29
|
return false;
|
|
17
30
|
}
|
|
18
|
-
|
|
31
|
+
/**
|
|
32
|
+
* How long the next attempt should wait, in milliseconds.
|
|
33
|
+
*
|
|
34
|
+
* A honored `retry_after` is returned **raw and unclamped** on purpose: the
|
|
35
|
+
* caller needs the true figure for the `onRetry` diagnostic and for the
|
|
36
|
+
* error path. Enforcing the ceiling is `withRetries`' job — it rethrows
|
|
37
|
+
* rather than sleeping when the raw value overshoots, so the two branches
|
|
38
|
+
* stay distinguishable (`> maxDelayMs` means "don't wait", not "wait
|
|
39
|
+
* `maxDelayMs`"). Only the exponential fallback is clamped here, since it
|
|
40
|
+
* grows unboundedly with `attempt` and has no caller-visible meaning.
|
|
41
|
+
*/
|
|
42
|
+
export function computeBackoff(attempt, err, maxDelayMs = DEFAULT_MAX_RETRY_DELAY_MS) {
|
|
19
43
|
if (err instanceof RateLimitError && typeof err.retryAfter === 'number' && err.retryAfter > 0) {
|
|
20
44
|
return err.retryAfter * 1000;
|
|
21
45
|
}
|
|
22
|
-
return BASE_DELAY_MS * Math.pow(2, attempt) + Math.random() * JITTER_MS;
|
|
46
|
+
return Math.min(BASE_DELAY_MS * Math.pow(2, attempt) + Math.random() * JITTER_MS, maxDelayMs);
|
|
23
47
|
}
|
|
24
48
|
export async function withRetries(fn, config) {
|
|
49
|
+
const maxDelayMs = config.maxRetryDelayMs ?? DEFAULT_MAX_RETRY_DELAY_MS;
|
|
25
50
|
let lastError;
|
|
26
51
|
for (let attempt = 0; attempt <= config.maxRetries; attempt++) {
|
|
27
52
|
if (config.signal?.aborted) {
|
|
@@ -37,7 +62,18 @@ export async function withRetries(fn, config) {
|
|
|
37
62
|
const isLast = attempt === config.maxRetries;
|
|
38
63
|
if (isLast || !isRetryable(err))
|
|
39
64
|
throw err;
|
|
40
|
-
const nextDelayMs = computeBackoff(attempt, err);
|
|
65
|
+
const nextDelayMs = computeBackoff(attempt, err, maxDelayMs);
|
|
66
|
+
// The single choke point for every retry sleep in the SDK, and the
|
|
67
|
+
// only place a server-controlled duration reaches a timer. Written
|
|
68
|
+
// fail-closed (`!(x <= cap)` rather than `x > cap`) so a `retry_after`
|
|
69
|
+
// that lands on `NaN` or overflows to `Infinity` through the seconds →
|
|
70
|
+
// ms conversion rethrows too, instead of slipping past a `>` test.
|
|
71
|
+
// Rethrowing the ORIGINAL error keeps `instanceof`, `status`, `code`,
|
|
72
|
+
// `retryAfter`, `traceId` and `requestId` intact so the caller can
|
|
73
|
+
// schedule the long wait itself. Ordered before `onRetry` — the hook
|
|
74
|
+
// must not announce a retry that never happens.
|
|
75
|
+
if (!(nextDelayMs <= maxDelayMs))
|
|
76
|
+
throw err;
|
|
41
77
|
config.onRetry?.({ attempt, nextDelayMs, error: err });
|
|
42
78
|
await sleep(nextDelayMs, config.signal, 'Request aborted during retry backoff');
|
|
43
79
|
}
|
package/dist/retry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAe3C,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,SAAS,GAAG,GAAG,CAAA;AAErB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAA;AAEhD,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,kBAAkB;QAAE,OAAO,KAAK,CAAA;IACnD,IAAI,GAAG,YAAY,kBAAkB;QAAE,OAAO,IAAI,CAAA;IAClD,IAAI,GAAG,YAAY,mBAAmB;QAAE,OAAO,IAAI,CAAA;IACnD,IAAI,GAAG,YAAY,uBAAuB;QAAE,OAAO,IAAI,CAAA;IACvD,IAAI,GAAG,YAAY,cAAc;QAAE,OAAO,IAAI,CAAA;IAC9C,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,GAAY,EACZ,aAAqB,0BAA0B;IAE/C,IAAI,GAAG,YAAY,cAAc,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QAC9F,OAAO,GAAG,CAAC,UAAU,GAAG,IAAI,CAAA;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,UAAU,CAAC,CAAA;AAC/F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAI,EAAoB,EAAE,MAAmB;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,IAAI,0BAA0B,CAAA;IACvE,IAAI,SAAkB,CAAA;IACtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,kBAAkB,CAAC,gCAAgC,EAAE;gBAC7D,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;aAC5B,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAA;YACf,MAAM,MAAM,GAAG,OAAO,KAAK,MAAM,CAAC,UAAU,CAAA;YAC5C,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAA;YAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;YAC5D,mEAAmE;YACnE,mEAAmE;YACnE,uEAAuE;YACvE,uEAAuE;YACvE,mEAAmE;YACnE,sEAAsE;YACtE,mEAAmE;YACnE,qEAAqE;YACrE,gDAAgD;YAChD,IAAI,CAAC,CAAC,WAAW,IAAI,UAAU,CAAC;gBAAE,MAAM,GAAG,CAAA;YAC3C,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YACtD,MAAM,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAA;AACjB,CAAC"}
|
package/dist/webhooks/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Message,
|
|
1
|
+
import type { Message, ReactionType } from '../resources/messages.js';
|
|
2
2
|
/**
|
|
3
3
|
* Common envelope for every webhook event. Per contract §4.1: every
|
|
4
4
|
* delivery body is shaped `{ api_version, event_id, event_type,
|
|
@@ -21,11 +21,49 @@ export interface MessageEvent extends WebhookEventBase {
|
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
export type ReactionEventType = 'reaction.added' | 'reaction.received' | 'reaction.removed';
|
|
24
|
+
/** Keys every `reaction.*` delivery carries, whatever its direction. */
|
|
25
|
+
type ReactionEventDataBase = {
|
|
26
|
+
parent_message_id: string;
|
|
27
|
+
reaction_id: string;
|
|
28
|
+
reaction_type: ReactionType;
|
|
29
|
+
reaction_emoji: string | null;
|
|
30
|
+
removed_at?: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* The `data` payload of a `reaction.*` delivery, per contract §4.3.2. It is
|
|
34
|
+
* FLAT — the fields sit directly on `data`, not under a `reaction` key (a
|
|
35
|
+
* nested `{ reaction }` shape was declared here until WHA-2193 and no
|
|
36
|
+
* producer ever emitted it).
|
|
37
|
+
*
|
|
38
|
+
* Discriminated on `direction`, because the handle key differs by family and
|
|
39
|
+
* that asymmetry is deliberate on the producer side: an inbound tapback names
|
|
40
|
+
* the counterparty who reacted to us (`from_handle`), an outbound one names
|
|
41
|
+
* the line that acted (`actor_handle`). Reading the wrong one is a compile
|
|
42
|
+
* error — narrow on `direction` first. `reaction.removed` is the only event
|
|
43
|
+
* that fires in both directions.
|
|
44
|
+
*
|
|
45
|
+
* Timestamps are optional because each delivery carries exactly one of them
|
|
46
|
+
* (`received_at` inbound-add, `added_at` outbound-add, `removed_at` either
|
|
47
|
+
* direction). Keeping them optional also lets a future `reaction.*` member
|
|
48
|
+
* with a new timestamp key narrow without an SDK release.
|
|
49
|
+
*
|
|
50
|
+
* `reaction_type` is the widened set that includes `custom` (WHA-2102): a
|
|
51
|
+
* counterparty may send an arbitrary emoji, and `reaction_emoji` then carries
|
|
52
|
+
* it verbatim — or `null` when the bridge supplied none. For the 6 classic
|
|
53
|
+
* tapbacks the emoji is always server-derived (WHA-2100).
|
|
54
|
+
*/
|
|
55
|
+
export type ReactionEventData = (ReactionEventDataBase & {
|
|
56
|
+
direction: 'inbound';
|
|
57
|
+
from_handle: string;
|
|
58
|
+
received_at?: string;
|
|
59
|
+
}) | (ReactionEventDataBase & {
|
|
60
|
+
direction: 'outbound';
|
|
61
|
+
actor_handle: string;
|
|
62
|
+
added_at?: string;
|
|
63
|
+
});
|
|
24
64
|
export interface ReactionEvent extends WebhookEventBase {
|
|
25
65
|
event_type: `reaction.${string}`;
|
|
26
|
-
data:
|
|
27
|
-
reaction: Reaction;
|
|
28
|
-
};
|
|
66
|
+
data: ReactionEventData;
|
|
29
67
|
}
|
|
30
68
|
export type LineEventType = 'line.connected' | 'line.disconnected' | 'line.offline' | 'line.degraded' | 'line.apple_id_flagged' | 'line.quota_warning' | 'line.quota_exceeded';
|
|
31
69
|
/**
|
|
@@ -90,4 +128,5 @@ export declare function isLineEvent(event: WebhookEventBase): event is LineEvent
|
|
|
90
128
|
export declare function isTypingIndicatorEvent(event: WebhookEventBase): event is TypingIndicatorEvent;
|
|
91
129
|
export declare function isTrialEvent(event: WebhookEventBase): event is TrialEvent;
|
|
92
130
|
export declare function isPreOrderEvent(event: WebhookEventBase): event is PreOrderEvent;
|
|
131
|
+
export {};
|
|
93
132
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"AA+MA,6EAA6E;AAE7E,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAuB;IAEvB,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAClD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isnap/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-next.86",
|
|
4
4
|
"description": "Official TypeScript SDK for the iSnap P2P telephony API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -40,12 +40,13 @@
|
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "tsc -p tsconfig.build.json && bun scripts/copy-generated.ts",
|
|
43
|
-
"lint": "eslint src/",
|
|
43
|
+
"lint": "eslint src/ examples/",
|
|
44
44
|
"typecheck": "tsc --noEmit",
|
|
45
45
|
"test": "vitest run",
|
|
46
46
|
"test:watch": "vitest",
|
|
47
47
|
"generate": "openapi-typescript ../backend/openapi.json -o src/generated/openapi.d.ts",
|
|
48
|
-
"
|
|
48
|
+
"verify:generated": "bun scripts/verify-generated.ts",
|
|
49
|
+
"prepublishOnly": "bun run verify:generated && bun run lint && bun run typecheck && bun run test && bun run build"
|
|
49
50
|
},
|
|
50
51
|
"engines": {
|
|
51
52
|
"node": ">=20"
|