@dugjason/front-node 0.1.0-beta.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{LICENSE.md → LICENSE} +2 -2
- package/README.md +41 -258
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +11907 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +11907 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +67 -38
- package/dist/client.d.ts +0 -53
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -230
- package/dist/client.js.map +0 -1
- package/dist/core/client.d.ts +0 -36
- package/dist/core/client.d.ts.map +0 -1
- package/dist/core/client.js +0 -89
- package/dist/core/client.js.map +0 -1
- package/dist/core/errors.d.ts +0 -55
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -124
- package/dist/core/errors.js.map +0 -1
- package/dist/core/paginator.d.ts +0 -88
- package/dist/core/paginator.d.ts.map +0 -1
- package/dist/core/paginator.js +0 -129
- package/dist/core/paginator.js.map +0 -1
- package/dist/core/resource.d.ts +0 -143
- package/dist/core/resource.d.ts.map +0 -1
- package/dist/core/resource.js +0 -132
- package/dist/core/resource.js.map +0 -1
- package/dist/endpoints/accounts.d.ts +0 -34
- package/dist/endpoints/accounts.d.ts.map +0 -1
- package/dist/endpoints/accounts.js +0 -85
- package/dist/endpoints/accounts.js.map +0 -1
- package/dist/endpoints/analytics.d.ts +0 -32
- package/dist/endpoints/analytics.d.ts.map +0 -1
- package/dist/endpoints/analytics.js +0 -48
- package/dist/endpoints/analytics.js.map +0 -1
- package/dist/endpoints/applications.d.ts +0 -15
- package/dist/endpoints/applications.d.ts.map +0 -1
- package/dist/endpoints/applications.js +0 -17
- package/dist/endpoints/applications.js.map +0 -1
- package/dist/endpoints/attachments.d.ts +0 -8
- package/dist/endpoints/attachments.d.ts.map +0 -1
- package/dist/endpoints/attachments.js +0 -10
- package/dist/endpoints/attachments.js.map +0 -1
- package/dist/endpoints/channels.d.ts +0 -41
- package/dist/endpoints/channels.d.ts.map +0 -1
- package/dist/endpoints/channels.js +0 -64
- package/dist/endpoints/channels.js.map +0 -1
- package/dist/endpoints/comments.d.ts +0 -30
- package/dist/endpoints/comments.d.ts.map +0 -1
- package/dist/endpoints/comments.js +0 -45
- package/dist/endpoints/comments.js.map +0 -1
- package/dist/endpoints/contacts.d.ts +0 -46
- package/dist/endpoints/contacts.d.ts.map +0 -1
- package/dist/endpoints/contacts.js +0 -99
- package/dist/endpoints/contacts.js.map +0 -1
- package/dist/endpoints/conversations.d.ts +0 -77
- package/dist/endpoints/conversations.d.ts.map +0 -1
- package/dist/endpoints/conversations.js +0 -221
- package/dist/endpoints/conversations.js.map +0 -1
- package/dist/endpoints/drafts.d.ts +0 -12
- package/dist/endpoints/drafts.d.ts.map +0 -1
- package/dist/endpoints/drafts.js +0 -26
- package/dist/endpoints/drafts.js.map +0 -1
- package/dist/endpoints/events.d.ts +0 -13
- package/dist/endpoints/events.d.ts.map +0 -1
- package/dist/endpoints/events.js +0 -21
- package/dist/endpoints/events.js.map +0 -1
- package/dist/endpoints/inboxes.d.ts +0 -42
- package/dist/endpoints/inboxes.d.ts.map +0 -1
- package/dist/endpoints/inboxes.js +0 -83
- package/dist/endpoints/inboxes.js.map +0 -1
- package/dist/endpoints/knowledge-base-articles.d.ts +0 -8
- package/dist/endpoints/knowledge-base-articles.d.ts.map +0 -1
- package/dist/endpoints/knowledge-base-articles.js +0 -10
- package/dist/endpoints/knowledge-base-articles.js.map +0 -1
- package/dist/endpoints/knowledge-bases.d.ts +0 -50
- package/dist/endpoints/knowledge-bases.d.ts.map +0 -1
- package/dist/endpoints/knowledge-bases.js +0 -131
- package/dist/endpoints/knowledge-bases.js.map +0 -1
- package/dist/endpoints/links.d.ts +0 -30
- package/dist/endpoints/links.d.ts.map +0 -1
- package/dist/endpoints/links.js +0 -67
- package/dist/endpoints/links.js.map +0 -1
- package/dist/endpoints/message-template-folders.d.ts +0 -38
- package/dist/endpoints/message-template-folders.d.ts.map +0 -1
- package/dist/endpoints/message-template-folders.js +0 -114
- package/dist/endpoints/message-template-folders.js.map +0 -1
- package/dist/endpoints/message-templates.d.ts +0 -30
- package/dist/endpoints/message-templates.d.ts.map +0 -1
- package/dist/endpoints/message-templates.js +0 -69
- package/dist/endpoints/message-templates.js.map +0 -1
- package/dist/endpoints/messages.d.ts +0 -21
- package/dist/endpoints/messages.d.ts.map +0 -1
- package/dist/endpoints/messages.js +0 -31
- package/dist/endpoints/messages.js.map +0 -1
- package/dist/endpoints/rules.d.ts +0 -16
- package/dist/endpoints/rules.d.ts.map +0 -1
- package/dist/endpoints/rules.js +0 -21
- package/dist/endpoints/rules.js.map +0 -1
- package/dist/endpoints/shifts.d.ts +0 -46
- package/dist/endpoints/shifts.d.ts.map +0 -1
- package/dist/endpoints/shifts.js +0 -70
- package/dist/endpoints/shifts.js.map +0 -1
- package/dist/endpoints/signatures.d.ts +0 -36
- package/dist/endpoints/signatures.d.ts.map +0 -1
- package/dist/endpoints/signatures.js +0 -52
- package/dist/endpoints/signatures.js.map +0 -1
- package/dist/endpoints/statuses.d.ts +0 -15
- package/dist/endpoints/statuses.d.ts.map +0 -1
- package/dist/endpoints/statuses.js +0 -22
- package/dist/endpoints/statuses.js.map +0 -1
- package/dist/endpoints/tags.d.ts +0 -30
- package/dist/endpoints/tags.d.ts.map +0 -1
- package/dist/endpoints/tags.js +0 -49
- package/dist/endpoints/tags.js.map +0 -1
- package/dist/endpoints/teammate-groups.d.ts +0 -47
- package/dist/endpoints/teammate-groups.d.ts.map +0 -1
- package/dist/endpoints/teammate-groups.js +0 -101
- package/dist/endpoints/teammate-groups.js.map +0 -1
- package/dist/endpoints/teammates.d.ts +0 -28
- package/dist/endpoints/teammates.d.ts.map +0 -1
- package/dist/endpoints/teammates.js +0 -59
- package/dist/endpoints/teammates.js.map +0 -1
- package/dist/endpoints/teams.d.ts +0 -37
- package/dist/endpoints/teams.d.ts.map +0 -1
- package/dist/endpoints/teams.js +0 -79
- package/dist/endpoints/teams.js.map +0 -1
- package/dist/front.d.ts +0 -103
- package/dist/front.d.ts.map +0 -1
- package/dist/front.js +0 -162
- package/dist/front.js.map +0 -1
- package/dist/generated/client/client.gen.d.ts +0 -3
- package/dist/generated/client/client.gen.d.ts.map +0 -1
- package/dist/generated/client/client.gen.js +0 -204
- package/dist/generated/client/client.gen.js.map +0 -1
- package/dist/generated/client/index.d.ts +0 -8
- package/dist/generated/client/index.d.ts.map +0 -1
- package/dist/generated/client/index.js +0 -6
- package/dist/generated/client/index.js.map +0 -1
- package/dist/generated/client/types.gen.d.ts +0 -125
- package/dist/generated/client/types.gen.d.ts.map +0 -1
- package/dist/generated/client/types.gen.js +0 -3
- package/dist/generated/client/types.gen.js.map +0 -1
- package/dist/generated/client/utils.gen.d.ts +0 -39
- package/dist/generated/client/utils.gen.d.ts.map +0 -1
- package/dist/generated/client/utils.gen.js +0 -230
- package/dist/generated/client/utils.gen.js.map +0 -1
- package/dist/generated/client.gen.d.ts +0 -13
- package/dist/generated/client.gen.d.ts.map +0 -1
- package/dist/generated/client.gen.js +0 -6
- package/dist/generated/client.gen.js.map +0 -1
- package/dist/generated/core/auth.gen.d.ts +0 -19
- package/dist/generated/core/auth.gen.d.ts.map +0 -1
- package/dist/generated/core/auth.gen.js +0 -15
- package/dist/generated/core/auth.gen.js.map +0 -1
- package/dist/generated/core/bodySerializer.gen.d.ts +0 -18
- package/dist/generated/core/bodySerializer.gen.d.ts.map +0 -1
- package/dist/generated/core/bodySerializer.gen.js +0 -58
- package/dist/generated/core/bodySerializer.gen.js.map +0 -1
- package/dist/generated/core/params.gen.d.ts +0 -34
- package/dist/generated/core/params.gen.d.ts.map +0 -1
- package/dist/generated/core/params.gen.js +0 -89
- package/dist/generated/core/params.gen.js.map +0 -1
- package/dist/generated/core/pathSerializer.gen.d.ts +0 -34
- package/dist/generated/core/pathSerializer.gen.d.ts.map +0 -1
- package/dist/generated/core/pathSerializer.gen.js +0 -115
- package/dist/generated/core/pathSerializer.gen.js.map +0 -1
- package/dist/generated/core/serverSentEvents.gen.d.ts +0 -72
- package/dist/generated/core/serverSentEvents.gen.d.ts.map +0 -1
- package/dist/generated/core/serverSentEvents.gen.js +0 -136
- package/dist/generated/core/serverSentEvents.gen.js.map +0 -1
- package/dist/generated/core/types.gen.d.ts +0 -79
- package/dist/generated/core/types.gen.d.ts.map +0 -1
- package/dist/generated/core/types.gen.js +0 -3
- package/dist/generated/core/types.gen.js.map +0 -1
- package/dist/generated/core/utils.gen.d.ts +0 -15
- package/dist/generated/core/utils.gen.d.ts.map +0 -1
- package/dist/generated/core/utils.gen.js +0 -70
- package/dist/generated/core/utils.gen.js.map +0 -1
- package/dist/generated/sdk.gen.d.ts +0 -1292
- package/dist/generated/sdk.gen.d.ts.map +0 -1
- package/dist/generated/sdk.gen.js +0 -4202
- package/dist/generated/sdk.gen.js.map +0 -1
- package/dist/generated/types.gen.d.ts +0 -8492
- package/dist/generated/types.gen.d.ts.map +0 -1
- package/dist/generated/types.gen.js +0 -149
- package/dist/generated/types.gen.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/oauth.d.ts +0 -28
- package/dist/oauth.d.ts.map +0 -1
- package/dist/oauth.js +0 -82
- package/dist/oauth.js.map +0 -1
- package/dist/resources/accounts.d.ts +0 -16
- package/dist/resources/accounts.d.ts.map +0 -1
- package/dist/resources/accounts.js +0 -37
- package/dist/resources/accounts.js.map +0 -1
- package/dist/resources/analytics.d.ts +0 -36
- package/dist/resources/analytics.d.ts.map +0 -1
- package/dist/resources/analytics.js +0 -82
- package/dist/resources/analytics.js.map +0 -1
- package/dist/resources/applications.d.ts +0 -9
- package/dist/resources/applications.d.ts.map +0 -1
- package/dist/resources/applications.js +0 -13
- package/dist/resources/applications.js.map +0 -1
- package/dist/resources/channels.d.ts +0 -18
- package/dist/resources/channels.d.ts.map +0 -1
- package/dist/resources/channels.js +0 -35
- package/dist/resources/channels.js.map +0 -1
- package/dist/resources/comments.d.ts +0 -18
- package/dist/resources/comments.d.ts.map +0 -1
- package/dist/resources/comments.js +0 -36
- package/dist/resources/comments.js.map +0 -1
- package/dist/resources/contacts.d.ts +0 -16
- package/dist/resources/contacts.d.ts.map +0 -1
- package/dist/resources/contacts.js +0 -37
- package/dist/resources/contacts.js.map +0 -1
- package/dist/resources/conversations.d.ts +0 -24
- package/dist/resources/conversations.d.ts.map +0 -1
- package/dist/resources/conversations.js +0 -55
- package/dist/resources/conversations.js.map +0 -1
- package/dist/resources/drafts.d.ts +0 -15
- package/dist/resources/drafts.d.ts.map +0 -1
- package/dist/resources/drafts.js +0 -34
- package/dist/resources/drafts.js.map +0 -1
- package/dist/resources/events.d.ts +0 -23
- package/dist/resources/events.d.ts.map +0 -1
- package/dist/resources/events.js +0 -28
- package/dist/resources/events.js.map +0 -1
- package/dist/resources/inboxes.d.ts +0 -12
- package/dist/resources/inboxes.d.ts.map +0 -1
- package/dist/resources/inboxes.js +0 -25
- package/dist/resources/inboxes.js.map +0 -1
- package/dist/resources/knowledge-base-articles.d.ts +0 -15
- package/dist/resources/knowledge-base-articles.d.ts.map +0 -1
- package/dist/resources/knowledge-base-articles.js +0 -34
- package/dist/resources/knowledge-base-articles.js.map +0 -1
- package/dist/resources/knowledge-base-categories.d.ts +0 -16
- package/dist/resources/knowledge-base-categories.d.ts.map +0 -1
- package/dist/resources/knowledge-base-categories.js +0 -37
- package/dist/resources/knowledge-base-categories.js.map +0 -1
- package/dist/resources/knowledge-bases.d.ts +0 -15
- package/dist/resources/knowledge-bases.d.ts.map +0 -1
- package/dist/resources/knowledge-bases.js +0 -35
- package/dist/resources/knowledge-bases.js.map +0 -1
- package/dist/resources/links.d.ts +0 -12
- package/dist/resources/links.d.ts.map +0 -1
- package/dist/resources/links.js +0 -25
- package/dist/resources/links.js.map +0 -1
- package/dist/resources/message-template-folders.d.ts +0 -13
- package/dist/resources/message-template-folders.d.ts.map +0 -1
- package/dist/resources/message-template-folders.js +0 -41
- package/dist/resources/message-template-folders.js.map +0 -1
- package/dist/resources/message-templates.d.ts +0 -16
- package/dist/resources/message-templates.d.ts.map +0 -1
- package/dist/resources/message-templates.js +0 -50
- package/dist/resources/message-templates.js.map +0 -1
- package/dist/resources/messages.d.ts +0 -36
- package/dist/resources/messages.d.ts.map +0 -1
- package/dist/resources/messages.js +0 -55
- package/dist/resources/messages.js.map +0 -1
- package/dist/resources/rules.d.ts +0 -11
- package/dist/resources/rules.d.ts.map +0 -1
- package/dist/resources/rules.js +0 -22
- package/dist/resources/rules.js.map +0 -1
- package/dist/resources/shifts.d.ts +0 -14
- package/dist/resources/shifts.d.ts.map +0 -1
- package/dist/resources/shifts.js +0 -31
- package/dist/resources/shifts.js.map +0 -1
- package/dist/resources/signatures.d.ts +0 -17
- package/dist/resources/signatures.d.ts.map +0 -1
- package/dist/resources/signatures.js +0 -51
- package/dist/resources/signatures.js.map +0 -1
- package/dist/resources/statuses.d.ts +0 -13
- package/dist/resources/statuses.d.ts.map +0 -1
- package/dist/resources/statuses.js +0 -28
- package/dist/resources/statuses.js.map +0 -1
- package/dist/resources/tags.d.ts +0 -17
- package/dist/resources/tags.d.ts.map +0 -1
- package/dist/resources/tags.js +0 -53
- package/dist/resources/tags.js.map +0 -1
- package/dist/resources/teammate-groups.d.ts +0 -17
- package/dist/resources/teammate-groups.d.ts.map +0 -1
- package/dist/resources/teammate-groups.js +0 -25
- package/dist/resources/teammate-groups.js.map +0 -1
- package/dist/resources/teammates.d.ts +0 -17
- package/dist/resources/teammates.d.ts.map +0 -1
- package/dist/resources/teammates.js +0 -40
- package/dist/resources/teammates.js.map +0 -1
- package/dist/resources/teams.d.ts +0 -11
- package/dist/resources/teams.d.ts.map +0 -1
- package/dist/resources/teams.js +0 -28
- package/dist/resources/teams.js.map +0 -1
- package/dist/types.d.ts +0 -46
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,49 +1,78 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dugjason/front-node",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Modern
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
|
-
"import": "./dist/index.js",
|
|
12
|
-
"default": "./dist/index.js"
|
|
13
|
-
}
|
|
14
|
-
},
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Modern Typescript SDK for the Front.com API",
|
|
15
5
|
"keywords": [
|
|
16
|
-
"front",
|
|
17
6
|
"api",
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
7
|
+
"customer-support",
|
|
8
|
+
"front",
|
|
9
|
+
"frontapp",
|
|
10
|
+
"sdk"
|
|
21
11
|
],
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
"@biomejs/biome": "2.2.2",
|
|
26
|
-
"@faker-js/faker": "10.0.0",
|
|
27
|
-
"@hey-api/openapi-ts": "0.82.3",
|
|
28
|
-
"@types/node": "^20.19.1",
|
|
29
|
-
"msw": "^2.11.1",
|
|
30
|
-
"msw-auto-mock": "0.31.0",
|
|
31
|
-
"typescript": "^5.9.2",
|
|
32
|
-
"vitest": "3.2.4"
|
|
12
|
+
"homepage": "https://github.com/dugjason/front-node#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/dugjason/front-node/issues"
|
|
33
15
|
},
|
|
34
|
-
"
|
|
35
|
-
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/dugjason/front-node.git"
|
|
36
20
|
},
|
|
37
21
|
"files": [
|
|
38
22
|
"dist"
|
|
39
23
|
],
|
|
24
|
+
"type": "module",
|
|
25
|
+
"main": "./dist/index.cjs",
|
|
26
|
+
"module": "./dist/index.mjs",
|
|
27
|
+
"types": "./dist/index.d.cts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"import": {
|
|
31
|
+
"types": "./dist/index.d.mts",
|
|
32
|
+
"default": "./dist/index.mjs"
|
|
33
|
+
},
|
|
34
|
+
"require": {
|
|
35
|
+
"types": "./dist/index.d.cts",
|
|
36
|
+
"default": "./dist/index.cjs"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"publishConfig": {
|
|
41
|
+
"access": "public"
|
|
42
|
+
},
|
|
40
43
|
"scripts": {
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
"test": "bun test",
|
|
45
|
+
"build": "tsdown",
|
|
46
|
+
"check": "bun x ultracite check . && bun x tsc --noEmit",
|
|
47
|
+
"changeset": "changeset",
|
|
48
|
+
"version-packages": "changeset version",
|
|
49
|
+
"release": "bun run build && changeset publish",
|
|
50
|
+
"prepack": "bun run build",
|
|
51
|
+
"generate": "bun ./scripts/build.ts && bun run build",
|
|
52
|
+
"lint": "bun x oxlint -c oxlint.config.ts .",
|
|
53
|
+
"fmt": "bun x oxfmt -c oxfmt.config.ts .",
|
|
54
|
+
"fmt:check": "bun x oxfmt --check -c oxfmt.config.ts .",
|
|
55
|
+
"fix": "bun x ultracite fix .",
|
|
56
|
+
"ultracite": "bun x ultracite check ."
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@arethetypeswrong/core": "0.18.5",
|
|
60
|
+
"@changesets/cli": "3.0.1",
|
|
61
|
+
"@types/bun": "1.4.0",
|
|
62
|
+
"@types/node": "26.4.1",
|
|
63
|
+
"lint-staged": "17.4.1",
|
|
64
|
+
"openapi-typescript": "7.13.0",
|
|
65
|
+
"oxfmt": "0.66.0",
|
|
66
|
+
"oxlint": "1.81.0",
|
|
67
|
+
"tsdown": "0.22.14",
|
|
68
|
+
"typescript": "7.0.2",
|
|
69
|
+
"ultracite": "7.10.7",
|
|
70
|
+
"unrun": "0.3.1"
|
|
71
|
+
},
|
|
72
|
+
"lint-staged": {
|
|
73
|
+
"*.{js,ts,json,jsonc,md,mdx}": [
|
|
74
|
+
"ultracite fix"
|
|
75
|
+
]
|
|
76
|
+
},
|
|
77
|
+
"packageManager": "bun@1.3.14"
|
|
78
|
+
}
|
package/dist/client.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { OAuthTokenManager } from "./oauth";
|
|
2
|
-
import type { FrontConfig } from "./types";
|
|
3
|
-
export declare class FrontClient {
|
|
4
|
-
private apiKey?;
|
|
5
|
-
private oauthManager?;
|
|
6
|
-
constructor(config: FrontConfig);
|
|
7
|
-
private setApiKey;
|
|
8
|
-
request<T>(options: {
|
|
9
|
-
method: string;
|
|
10
|
-
path: string;
|
|
11
|
-
body?: unknown;
|
|
12
|
-
params?: Record<string, unknown>;
|
|
13
|
-
}): Promise<T>;
|
|
14
|
-
private requestWithRetry;
|
|
15
|
-
/**
|
|
16
|
-
* Calculate retry delay based on retry-after header and exponential backoff
|
|
17
|
-
*/
|
|
18
|
-
private getRetryDelay;
|
|
19
|
-
/**
|
|
20
|
-
* Calculate exponential backoff delay with jitter
|
|
21
|
-
*/
|
|
22
|
-
private calculateExponentialBackoff;
|
|
23
|
-
/**
|
|
24
|
-
* Sleep for the specified number of milliseconds
|
|
25
|
-
*/
|
|
26
|
-
private sleep;
|
|
27
|
-
/**
|
|
28
|
-
* Get the appropriate auth token (OAuth access token or API key)
|
|
29
|
-
*/
|
|
30
|
-
private getAuthToken;
|
|
31
|
-
/**
|
|
32
|
-
* Handle the response from the API
|
|
33
|
-
*/
|
|
34
|
-
private handleResponse;
|
|
35
|
-
get<T>(path: string, params?: Record<string, unknown>): Promise<T>;
|
|
36
|
-
post<T>(path: string, body?: unknown): Promise<T>;
|
|
37
|
-
put<T>(path: string, body?: unknown): Promise<T>;
|
|
38
|
-
patch<T>(path: string, body?: unknown): Promise<T>;
|
|
39
|
-
delete<T>(path: string, body?: unknown): Promise<T>;
|
|
40
|
-
/**
|
|
41
|
-
* Get the OAuth token manager (if using OAuth)
|
|
42
|
-
*/
|
|
43
|
-
getOAuthManager(): OAuthTokenManager | undefined;
|
|
44
|
-
/**
|
|
45
|
-
* Check if the client is using OAuth authentication
|
|
46
|
-
*/
|
|
47
|
-
isUsingOAuth(): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Update OAuth configuration (useful for updating tokens)
|
|
50
|
-
*/
|
|
51
|
-
updateOAuthConfig(updates: Partial<import("./types").OAuthConfig>): void;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,SAAS,CAAA;AAUtD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAC,CAAmB;gBAE5B,MAAM,EAAE,WAAW;IAkB/B,OAAO,CAAC,SAAS;IASX,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE;QACxB,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACjC,GAAG,OAAO,CAAC,CAAC,CAAC;YAIA,gBAAgB;IAgG9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;YACW,cAAc;IAyBtB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,iBAAiB,GAAG,SAAS;IAIhD;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;CAMzE"}
|
package/dist/client.js
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import { client } from "./generated/client.gen";
|
|
2
|
-
import { OAuthTokenManager } from "./oauth";
|
|
3
|
-
// Rate limiting configuration
|
|
4
|
-
const RATE_LIMIT_CONFIG = {
|
|
5
|
-
maxRetries: 3,
|
|
6
|
-
baseDelay: 1_000, // 1 second
|
|
7
|
-
maxDelay: 30_000, // 30 seconds
|
|
8
|
-
jitterFactor: 0.2, // 20% jitter to avoid thundering herd problem
|
|
9
|
-
};
|
|
10
|
-
export class FrontClient {
|
|
11
|
-
apiKey;
|
|
12
|
-
oauthManager;
|
|
13
|
-
constructor(config) {
|
|
14
|
-
client.setConfig({
|
|
15
|
-
baseUrl: config.baseUrl || "https://api2.frontapp.com",
|
|
16
|
-
});
|
|
17
|
-
if (config.apiKey) {
|
|
18
|
-
this.setApiKey(config.apiKey);
|
|
19
|
-
}
|
|
20
|
-
if (config.oauth) {
|
|
21
|
-
// OAuth configuration provided
|
|
22
|
-
this.oauthManager = new OAuthTokenManager(config.oauth);
|
|
23
|
-
}
|
|
24
|
-
// Maybe exit here if no auth method is provided
|
|
25
|
-
if (!this.apiKey && !this.oauthManager) {
|
|
26
|
-
throw new Error("API key or OAuth configuration is required");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
setApiKey(apiKey) {
|
|
30
|
-
this.apiKey = apiKey;
|
|
31
|
-
client.setConfig({
|
|
32
|
-
headers: {
|
|
33
|
-
Authorization: `Bearer ${apiKey}`,
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
async request(options) {
|
|
38
|
-
return this.requestWithRetry(options, 0);
|
|
39
|
-
}
|
|
40
|
-
async requestWithRetry(options, retryCount) {
|
|
41
|
-
const { method, path, body, params } = options;
|
|
42
|
-
// Build URL with query parameters
|
|
43
|
-
const baseUrl = client.getConfig().baseUrl ??
|
|
44
|
-
"https://api2.frontapp.com";
|
|
45
|
-
const url = new URL(path, baseUrl);
|
|
46
|
-
if (params) {
|
|
47
|
-
Object.entries(params).forEach(([key, value]) => {
|
|
48
|
-
if (value !== undefined && value !== null) {
|
|
49
|
-
url.searchParams.append(key, String(value));
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
// Get the authorization token (OAuth or API key)
|
|
54
|
-
const authToken = this.getAuthToken();
|
|
55
|
-
// Prepare headers
|
|
56
|
-
const headers = {
|
|
57
|
-
Authorization: `Bearer ${authToken}`,
|
|
58
|
-
Accept: "application/json",
|
|
59
|
-
};
|
|
60
|
-
// Add content-type for requests with body
|
|
61
|
-
if (body) {
|
|
62
|
-
headers["Content-Type"] = "application/json";
|
|
63
|
-
}
|
|
64
|
-
// Prepare fetch options
|
|
65
|
-
const fetchOptions = {
|
|
66
|
-
method,
|
|
67
|
-
headers,
|
|
68
|
-
};
|
|
69
|
-
// Add body for non-GET requests
|
|
70
|
-
if (body) {
|
|
71
|
-
fetchOptions.body = JSON.stringify(body);
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
const response = await fetch(url, fetchOptions);
|
|
75
|
-
// Handle token expiration for OAuth
|
|
76
|
-
if (response.status === 401 && this.oauthManager) {
|
|
77
|
-
// Token might be expired, try to refresh and retry once
|
|
78
|
-
const refreshedToken = await this.oauthManager.refreshToken();
|
|
79
|
-
// Token was refreshed, retry the request
|
|
80
|
-
headers.Authorization = `Bearer ${refreshedToken}`;
|
|
81
|
-
const retryResponse = await fetch(url.toString(), {
|
|
82
|
-
...fetchOptions,
|
|
83
|
-
headers,
|
|
84
|
-
});
|
|
85
|
-
return this.handleResponse(retryResponse);
|
|
86
|
-
}
|
|
87
|
-
// Handle rate limiting (429 status)
|
|
88
|
-
if (response.status === 429) {
|
|
89
|
-
if (retryCount < RATE_LIMIT_CONFIG.maxRetries) {
|
|
90
|
-
const retryAfterMs = this.getRetryDelay(response, retryCount);
|
|
91
|
-
await this.sleep(retryAfterMs);
|
|
92
|
-
return this.requestWithRetry(options, retryCount + 1);
|
|
93
|
-
}
|
|
94
|
-
// Max retries exceeded, handle as normal error response
|
|
95
|
-
}
|
|
96
|
-
return this.handleResponse(response);
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
if (error instanceof Error && "status" in error) {
|
|
100
|
-
// Re-throw Front API errors
|
|
101
|
-
throw error;
|
|
102
|
-
}
|
|
103
|
-
// Handle network or other errors - retry if we haven't exceeded max retries
|
|
104
|
-
if (retryCount < RATE_LIMIT_CONFIG.maxRetries) {
|
|
105
|
-
const retryAfterMs = this.calculateExponentialBackoff(retryCount);
|
|
106
|
-
await this.sleep(retryAfterMs);
|
|
107
|
-
return this.requestWithRetry(options, retryCount + 1);
|
|
108
|
-
}
|
|
109
|
-
// Max retries exceeded for network errors
|
|
110
|
-
throw new Error(`Request failed after ${RATE_LIMIT_CONFIG.maxRetries} retries: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Calculate retry delay based on retry-after header and exponential backoff
|
|
115
|
-
*/
|
|
116
|
-
getRetryDelay(response, retryCount) {
|
|
117
|
-
const retryAfterHeader = response.headers.get("retry-after");
|
|
118
|
-
let retryAfterMs = 0;
|
|
119
|
-
if (retryAfterHeader) {
|
|
120
|
-
// retry-after can be in seconds (integer) or HTTP date
|
|
121
|
-
const retryAfterSeconds = Number.parseInt(retryAfterHeader, 10);
|
|
122
|
-
if (!Number.isNaN(retryAfterSeconds)) {
|
|
123
|
-
retryAfterMs = retryAfterSeconds * 1000;
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
// Try parsing as HTTP date
|
|
127
|
-
const retryAfterDate = new Date(retryAfterHeader);
|
|
128
|
-
if (!Number.isNaN(retryAfterDate.getTime())) {
|
|
129
|
-
retryAfterMs = Math.max(0, retryAfterDate.getTime() - Date.now());
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
// Calculate exponential backoff delay
|
|
134
|
-
const exponentialBackoffMs = this.calculateExponentialBackoff(retryCount);
|
|
135
|
-
// Use the maximum of retry-after and exponential backoff to ensure we wait AT LEAST retry-after time
|
|
136
|
-
return Math.max(retryAfterMs, exponentialBackoffMs);
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Calculate exponential backoff delay with jitter
|
|
140
|
-
*/
|
|
141
|
-
calculateExponentialBackoff(retryCount) {
|
|
142
|
-
const { baseDelay, maxDelay, jitterFactor } = RATE_LIMIT_CONFIG;
|
|
143
|
-
// Calculate exponential delay: baseDelay * (2 ^ retryCount)
|
|
144
|
-
const exponentialDelay = baseDelay * 2 ** retryCount;
|
|
145
|
-
// Apply maximum delay cap
|
|
146
|
-
const cappedDelay = Math.min(exponentialDelay, maxDelay);
|
|
147
|
-
// Add jitter to avoid thundering herd problem
|
|
148
|
-
// Jitter is a random value between +-jitterFactor of the delay
|
|
149
|
-
const jitter = cappedDelay * jitterFactor * (Math.random() * 2 - 1);
|
|
150
|
-
return Math.max(0, cappedDelay + jitter);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Sleep for the specified number of milliseconds
|
|
154
|
-
*/
|
|
155
|
-
sleep(ms) {
|
|
156
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Get the appropriate auth token (OAuth access token or API key)
|
|
160
|
-
*/
|
|
161
|
-
getAuthToken() {
|
|
162
|
-
if (this.oauthManager) {
|
|
163
|
-
return this.oauthManager.getAccessToken();
|
|
164
|
-
}
|
|
165
|
-
if (!this.apiKey) {
|
|
166
|
-
throw new Error("No authentication method available. This should not happen with proper configuration.");
|
|
167
|
-
}
|
|
168
|
-
return this.apiKey;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Handle the response from the API
|
|
172
|
-
*/
|
|
173
|
-
async handleResponse(response) {
|
|
174
|
-
// Handle non-JSON responses (like 204 No Content)
|
|
175
|
-
if (response.status === 204) {
|
|
176
|
-
return {};
|
|
177
|
-
}
|
|
178
|
-
const responseData = await response.json();
|
|
179
|
-
if (!response.ok) {
|
|
180
|
-
// Type guard for error response structure
|
|
181
|
-
const errorData = responseData;
|
|
182
|
-
const error = {
|
|
183
|
-
message: (typeof errorData.message === "string"
|
|
184
|
-
? errorData.message
|
|
185
|
-
: undefined) || `HTTP ${response.status}: ${response.statusText}`,
|
|
186
|
-
status: response.status,
|
|
187
|
-
code: typeof errorData.code === "string" ? errorData.code : undefined,
|
|
188
|
-
};
|
|
189
|
-
throw error;
|
|
190
|
-
}
|
|
191
|
-
return responseData;
|
|
192
|
-
}
|
|
193
|
-
async get(path, params) {
|
|
194
|
-
return this.request({ method: "GET", path, params });
|
|
195
|
-
}
|
|
196
|
-
async post(path, body) {
|
|
197
|
-
return this.request({ method: "POST", path, body });
|
|
198
|
-
}
|
|
199
|
-
async put(path, body) {
|
|
200
|
-
return this.request({ method: "PUT", path, body });
|
|
201
|
-
}
|
|
202
|
-
async patch(path, body) {
|
|
203
|
-
return this.request({ method: "PATCH", path, body });
|
|
204
|
-
}
|
|
205
|
-
async delete(path, body) {
|
|
206
|
-
return this.request({ method: "DELETE", path, body });
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Get the OAuth token manager (if using OAuth)
|
|
210
|
-
*/
|
|
211
|
-
getOAuthManager() {
|
|
212
|
-
return this.oauthManager;
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Check if the client is using OAuth authentication
|
|
216
|
-
*/
|
|
217
|
-
isUsingOAuth() {
|
|
218
|
-
return !!this.oauthManager;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Update OAuth configuration (useful for updating tokens)
|
|
222
|
-
*/
|
|
223
|
-
updateOAuthConfig(updates) {
|
|
224
|
-
if (!this.oauthManager) {
|
|
225
|
-
throw new Error("OAuth is not configured for this client");
|
|
226
|
-
}
|
|
227
|
-
this.oauthManager.updateConfig(updates);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/client.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { Client as GeneratedClient } from "../generated/client/types.gen";
|
|
2
|
-
import type { FrontConfig } from "../types";
|
|
3
|
-
/**
|
|
4
|
-
* Core HTTP client used by the SDK's handwritten resources.
|
|
5
|
-
*
|
|
6
|
-
* Responsibilities:
|
|
7
|
-
* - Configure and expose the generated HTTP client
|
|
8
|
-
* - Inject authentication (API key or OAuth) into every request
|
|
9
|
-
* - Refresh OAuth tokens on 401 responses and retry once
|
|
10
|
-
* - Normalize thrown errors into `FrontError` subclasses
|
|
11
|
-
*/
|
|
12
|
-
export declare class APIClient {
|
|
13
|
-
private readonly gen;
|
|
14
|
-
private apiKey?;
|
|
15
|
-
private oauthManager?;
|
|
16
|
-
private readonly maxRetries;
|
|
17
|
-
/**
|
|
18
|
-
* Create a new API client.
|
|
19
|
-
*
|
|
20
|
-
* @param config - Front configuration including API key or OAuth settings and optional overrides
|
|
21
|
-
*/
|
|
22
|
-
constructor(config?: FrontConfig & {
|
|
23
|
-
maxRetries?: number;
|
|
24
|
-
});
|
|
25
|
-
/**
|
|
26
|
-
* Access the configured generated client for low-level operations.
|
|
27
|
-
*/
|
|
28
|
-
getGenClient(): GeneratedClient;
|
|
29
|
-
/**
|
|
30
|
-
* Resolve the current auth token used for requests.
|
|
31
|
-
*
|
|
32
|
-
* @throws FrontError when credentials are missing
|
|
33
|
-
*/
|
|
34
|
-
private getAuthToken;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAG9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAK3C;;;;;;;;GAQG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;IACrC,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAoD1D;;OAEG;IACH,YAAY,IAAI,eAAe;IAI/B;;;;OAIG;YACW,YAAY;CAK3B"}
|
package/dist/core/client.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { client as generatedClient } from "../generated/client.gen";
|
|
2
|
-
import { OAuthTokenManager } from "../oauth";
|
|
3
|
-
import { FrontError, mapToFrontError } from "./errors";
|
|
4
|
-
const DEFAULT_MAX_RETRIES = 3;
|
|
5
|
-
/**
|
|
6
|
-
* Core HTTP client used by the SDK's handwritten resources.
|
|
7
|
-
*
|
|
8
|
-
* Responsibilities:
|
|
9
|
-
* - Configure and expose the generated HTTP client
|
|
10
|
-
* - Inject authentication (API key or OAuth) into every request
|
|
11
|
-
* - Refresh OAuth tokens on 401 responses and retry once
|
|
12
|
-
* - Normalize thrown errors into `FrontError` subclasses
|
|
13
|
-
*/
|
|
14
|
-
export class APIClient {
|
|
15
|
-
gen;
|
|
16
|
-
apiKey;
|
|
17
|
-
oauthManager;
|
|
18
|
-
maxRetries;
|
|
19
|
-
/**
|
|
20
|
-
* Create a new API client.
|
|
21
|
-
*
|
|
22
|
-
* @param config - Front configuration including API key or OAuth settings and optional overrides
|
|
23
|
-
*/
|
|
24
|
-
constructor(config) {
|
|
25
|
-
this.gen = generatedClient;
|
|
26
|
-
this.maxRetries = config?.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
27
|
-
// Set Auth credentials
|
|
28
|
-
if (config?.oauth) {
|
|
29
|
-
this.oauthManager = new OAuthTokenManager(config.oauth);
|
|
30
|
-
}
|
|
31
|
-
if (config?.apiKey || process.env.FRONT_API_KEY) {
|
|
32
|
-
this.apiKey = config?.apiKey ?? process.env.FRONT_API_KEY;
|
|
33
|
-
}
|
|
34
|
-
if (!this.apiKey && !this.oauthManager) {
|
|
35
|
-
throw new Error("API key or OAuth configuration is required");
|
|
36
|
-
}
|
|
37
|
-
this.gen.setConfig({
|
|
38
|
-
baseUrl: config?.baseUrl ?? "https://api2.frontapp.com",
|
|
39
|
-
throwOnError: true,
|
|
40
|
-
responseStyle: "fields",
|
|
41
|
-
// Use the generated client's `auth` hook to inject the token per request
|
|
42
|
-
auth: async (auth) => {
|
|
43
|
-
const token = await this.getAuthToken();
|
|
44
|
-
if (!token)
|
|
45
|
-
return undefined;
|
|
46
|
-
if (auth.scheme === "bearer")
|
|
47
|
-
return token;
|
|
48
|
-
return token;
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
// Install a response interceptor to handle 401 with OAuth and retry logic
|
|
52
|
-
this.gen.interceptors.response.use(async (response, request) => {
|
|
53
|
-
if (response.status !== 401 || !this.oauthManager)
|
|
54
|
-
return response;
|
|
55
|
-
// Attempt only a single refresh + retry to avoid loops
|
|
56
|
-
const refreshed = await this.oauthManager.refreshToken();
|
|
57
|
-
// Clone request with new Authorization token
|
|
58
|
-
const headers = new Headers(request.headers);
|
|
59
|
-
headers.set("Authorization", `Bearer ${refreshed}`);
|
|
60
|
-
const retryReq = new Request(request, { headers });
|
|
61
|
-
const cfg = this.gen.getConfig();
|
|
62
|
-
const fetchImpl = cfg.fetch ?? globalThis.fetch;
|
|
63
|
-
return fetchImpl(retryReq);
|
|
64
|
-
});
|
|
65
|
-
// Normalize thrown errors
|
|
66
|
-
this.gen.interceptors.error.use(async (err, response) => {
|
|
67
|
-
throw mapToFrontError(err, response);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Access the configured generated client for low-level operations.
|
|
72
|
-
*/
|
|
73
|
-
getGenClient() {
|
|
74
|
-
return this.gen;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Resolve the current auth token used for requests.
|
|
78
|
-
*
|
|
79
|
-
* @throws FrontError when credentials are missing
|
|
80
|
-
*/
|
|
81
|
-
async getAuthToken() {
|
|
82
|
-
if (this.apiKey)
|
|
83
|
-
return this.apiKey;
|
|
84
|
-
if (this.oauthManager)
|
|
85
|
-
return this.oauthManager.getAccessToken();
|
|
86
|
-
throw new FrontError("Missing credentials", 401, "auth_error");
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=client.js.map
|
package/dist/core/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/errors.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base Front SDK error. All SDK errors extend this class.
|
|
3
|
-
*/
|
|
4
|
-
export declare class FrontError extends Error {
|
|
5
|
-
readonly status?: number | undefined;
|
|
6
|
-
readonly code?: string | undefined;
|
|
7
|
-
readonly details?: unknown | undefined;
|
|
8
|
-
readonly headers?: Headers | undefined;
|
|
9
|
-
constructor(message: string, status?: number | undefined, code?: string | undefined, details?: unknown | undefined, headers?: Headers | undefined);
|
|
10
|
-
}
|
|
11
|
-
/** 400 Bad Request */
|
|
12
|
-
export declare class FrontBadRequestError extends FrontError {
|
|
13
|
-
constructor(...args: ConstructorParameters<typeof FrontError>);
|
|
14
|
-
}
|
|
15
|
-
/** 401 Unauthorized */
|
|
16
|
-
export declare class FrontUnauthorizedError extends FrontError {
|
|
17
|
-
constructor(...args: ConstructorParameters<typeof FrontError>);
|
|
18
|
-
}
|
|
19
|
-
/** 403 Forbidden */
|
|
20
|
-
export declare class FrontForbiddenError extends FrontError {
|
|
21
|
-
constructor(...args: ConstructorParameters<typeof FrontError>);
|
|
22
|
-
}
|
|
23
|
-
/** 404 Not Found */
|
|
24
|
-
export declare class FrontNotFoundError extends FrontError {
|
|
25
|
-
constructor(...args: ConstructorParameters<typeof FrontError>);
|
|
26
|
-
}
|
|
27
|
-
/** 409 Conflict */
|
|
28
|
-
export declare class FrontConflictError extends FrontError {
|
|
29
|
-
constructor(...args: ConstructorParameters<typeof FrontError>);
|
|
30
|
-
}
|
|
31
|
-
/** 422 Unprocessable Entity */
|
|
32
|
-
export declare class FrontUnprocessableEntityError extends FrontError {
|
|
33
|
-
constructor(...args: ConstructorParameters<typeof FrontError>);
|
|
34
|
-
}
|
|
35
|
-
/** 429 Too Many Requests */
|
|
36
|
-
export declare class FrontRateLimitError extends FrontError {
|
|
37
|
-
constructor(...args: ConstructorParameters<typeof FrontError>);
|
|
38
|
-
}
|
|
39
|
-
/** 5xx Server Error */
|
|
40
|
-
export declare class FrontServerError extends FrontError {
|
|
41
|
-
constructor(...args: ConstructorParameters<typeof FrontError>);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Normalize unknown errors (thrown by fetch/generated client) into FrontError subclasses.
|
|
45
|
-
*
|
|
46
|
-
* - Preserves HTTP status and headers when available
|
|
47
|
-
* - Attempts to read `message` and `code` from the thrown payload
|
|
48
|
-
* - Maps common HTTP status codes to specific subclasses for easier matching
|
|
49
|
-
*
|
|
50
|
-
* @param error - The unknown error payload (string/object/Error)
|
|
51
|
-
* @param response - The corresponding `Response`, if available
|
|
52
|
-
* @returns A typed `FrontError` subclass
|
|
53
|
-
*/
|
|
54
|
-
export declare function mapToFrontError(error: unknown, response?: Response): FrontError;
|
|
55
|
-
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGjB,MAAM,CAAC,EAAE,MAAM;aACf,IAAI,CAAC,EAAE,MAAM;aACb,OAAO,CAAC,EAAE,OAAO;aACjB,OAAO,CAAC,EAAE,OAAO;gBAJjC,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,OAAO,YAAA,EACjB,OAAO,CAAC,EAAE,OAAO,YAAA;CAKpC;AAED,sBAAsB;AACtB,qBAAa,oBAAqB,SAAQ,UAAU;gBACtC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC;CAI9D;AACD,uBAAuB;AACvB,qBAAa,sBAAuB,SAAQ,UAAU;gBACxC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC;CAI9D;AACD,oBAAoB;AACpB,qBAAa,mBAAoB,SAAQ,UAAU;gBACrC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC;CAI9D;AACD,oBAAoB;AACpB,qBAAa,kBAAmB,SAAQ,UAAU;gBACpC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC;CAI9D;AACD,mBAAmB;AACnB,qBAAa,kBAAmB,SAAQ,UAAU;gBACpC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC;CAI9D;AACD,+BAA+B;AAC/B,qBAAa,6BAA8B,SAAQ,UAAU;gBAC/C,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC;CAI9D;AACD,4BAA4B;AAC5B,qBAAa,mBAAoB,SAAQ,UAAU;gBACrC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC;CAI9D;AACD,uBAAuB;AACvB,qBAAa,gBAAiB,SAAQ,UAAU;gBAClC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,UAAU,CAAC;CAI9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,QAAQ,GAClB,UAAU,CA6CZ"}
|