@tabsircg/fb-sdk 1.2.2 → 2.0.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 +21 -0
- package/README.md +410 -53
- package/dist/client.d.ts +19 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -2
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -0
- package/dist/httpClient.d.ts +14 -4
- package/dist/httpClient.d.ts.map +1 -1
- package/dist/httpClient.js +112 -31
- package/dist/httpClient.js.map +1 -1
- package/dist/instagramClient.d.ts +174 -0
- package/dist/instagramClient.d.ts.map +1 -0
- package/dist/instagramClient.js +19 -0
- package/dist/instagramClient.js.map +1 -0
- package/dist/internal/batchable.d.ts +3 -2
- package/dist/internal/batchable.d.ts.map +1 -1
- package/dist/internal/batchable.js +17 -4
- package/dist/internal/batchable.js.map +1 -1
- package/dist/internal/error.d.ts +94 -1
- package/dist/internal/error.d.ts.map +1 -1
- package/dist/internal/error.js +219 -0
- package/dist/internal/error.js.map +1 -1
- package/dist/internal/fetchers.d.ts +2 -2
- package/dist/internal/fetchers.d.ts.map +1 -1
- package/dist/internal/fetchers.js +3 -0
- package/dist/internal/fetchers.js.map +1 -1
- package/dist/internal/poller.d.ts +8 -2
- package/dist/internal/poller.d.ts.map +1 -1
- package/dist/internal/poller.js +18 -0
- package/dist/internal/poller.js.map +1 -1
- package/dist/internal/utils.d.ts.map +1 -1
- package/dist/internal/utils.js.map +1 -1
- package/dist/lib/transformCase.d.ts.map +1 -1
- package/dist/lib/transformCase.js +5 -6
- package/dist/lib/transformCase.js.map +1 -1
- package/dist/resources/InsightResource.d.ts +2 -2
- package/dist/resources/InsightResource.d.ts.map +1 -1
- package/dist/resources/InsightResource.js +6 -2
- package/dist/resources/InsightResource.js.map +1 -1
- package/dist/resources/PageResource.d.ts +6 -6
- package/dist/resources/PageResource.d.ts.map +1 -1
- package/dist/resources/PageResource.js +11 -6
- package/dist/resources/PageResource.js.map +1 -1
- package/dist/resources/PostResource.d.ts +3 -3
- package/dist/resources/PostResource.d.ts.map +1 -1
- package/dist/resources/PostResource.js +5 -2
- package/dist/resources/PostResource.js.map +1 -1
- package/dist/resources/UserResource.d.ts +4 -4
- package/dist/resources/UserResource.d.ts.map +1 -1
- package/dist/resources/UserResource.js +4 -0
- package/dist/resources/UserResource.js.map +1 -1
- package/dist/resources/comment/CommentResource.d.ts +5 -8
- package/dist/resources/comment/CommentResource.d.ts.map +1 -1
- package/dist/resources/comment/CommentResource.js +5 -2
- package/dist/resources/comment/CommentResource.js.map +1 -1
- package/dist/resources/comment/PageCommentResource.d.ts +14 -0
- package/dist/resources/comment/PageCommentResource.d.ts.map +1 -0
- package/dist/resources/comment/PageCommentResource.js +73 -0
- package/dist/resources/comment/PageCommentResource.js.map +1 -0
- package/dist/resources/createBatchResource.d.ts +5 -1
- package/dist/resources/createBatchResource.d.ts.map +1 -1
- package/dist/resources/createBatchResource.js +30 -5
- package/dist/resources/createBatchResource.js.map +1 -1
- package/dist/resources/instagram/InstagramCommentResource.d.ts +20 -0
- package/dist/resources/instagram/InstagramCommentResource.d.ts.map +1 -0
- package/dist/resources/instagram/InstagramCommentResource.js +22 -0
- package/dist/resources/instagram/InstagramCommentResource.js.map +1 -0
- package/dist/resources/instagram/InstagramInsightResource.d.ts +136 -0
- package/dist/resources/instagram/InstagramInsightResource.d.ts.map +1 -0
- package/dist/resources/instagram/InstagramInsightResource.js +48 -0
- package/dist/resources/instagram/InstagramInsightResource.js.map +1 -0
- package/dist/resources/instagram/InstagramMediaNodeResource.d.ts +89 -0
- package/dist/resources/instagram/InstagramMediaNodeResource.d.ts.map +1 -0
- package/dist/resources/instagram/InstagramMediaNodeResource.js +18 -0
- package/dist/resources/instagram/InstagramMediaNodeResource.js.map +1 -0
- package/dist/resources/instagram/InstagramMediaResource.d.ts +18 -0
- package/dist/resources/instagram/InstagramMediaResource.d.ts.map +1 -0
- package/dist/resources/instagram/InstagramMediaResource.js +69 -0
- package/dist/resources/instagram/InstagramMediaResource.js.map +1 -0
- package/dist/resources/instagram/InstagramMentionsResource.d.ts +10 -0
- package/dist/resources/instagram/InstagramMentionsResource.d.ts.map +1 -0
- package/dist/resources/instagram/InstagramMentionsResource.js +19 -0
- package/dist/resources/instagram/InstagramMentionsResource.js.map +1 -0
- package/dist/resources/instagram/InstagramResource.d.ts +82 -0
- package/dist/resources/instagram/InstagramResource.d.ts.map +1 -0
- package/dist/resources/instagram/InstagramResource.js +26 -0
- package/dist/resources/instagram/InstagramResource.js.map +1 -0
- package/dist/store/memory.d.ts +1 -1
- package/dist/store/memory.d.ts.map +1 -1
- package/dist/store/memory.js +1 -0
- package/dist/store/memory.js.map +1 -1
- package/dist/store/redis.d.ts +1 -1
- package/dist/store/redis.d.ts.map +1 -1
- package/dist/store/redis.js +1 -1
- package/dist/store/redis.js.map +1 -1
- package/dist/store/types.d.ts.map +1 -1
- package/dist/types/facebookerror.d.ts +37 -0
- package/dist/types/facebookerror.d.ts.map +1 -0
- package/dist/types/facebookerror.js +2 -0
- package/dist/types/facebookerror.js.map +1 -0
- package/dist/types/facebookinsights.d.ts.map +1 -1
- package/dist/types/facebookmedia.d.ts +1 -1
- package/dist/types/facebookmedia.d.ts.map +1 -1
- package/dist/types/facebookmedia.js +1 -1
- package/dist/types/facebookmedia.js.map +1 -1
- package/dist/types/facebookpage.d.ts +1 -1
- package/dist/types/facebookpage.d.ts.map +1 -1
- package/dist/types/facebookpage.js +1 -1
- package/dist/types/facebookpage.js.map +1 -1
- package/dist/types/facebookpost.d.ts +1 -1
- package/dist/types/facebookpost.d.ts.map +1 -1
- package/dist/types/facebookpost.js +1 -1
- package/dist/types/facebookpost.js.map +1 -1
- package/dist/types/facebookuser.d.ts +1 -1
- package/dist/types/facebookuser.d.ts.map +1 -1
- package/dist/types/facebookuser.js +1 -1
- package/dist/types/facebookuser.js.map +1 -1
- package/dist/types/instagram.d.ts +146 -0
- package/dist/types/instagram.d.ts.map +1 -0
- package/dist/types/instagram.js +3 -0
- package/dist/types/instagram.js.map +1 -0
- package/dist/types/instagraminsights.d.ts +114 -0
- package/dist/types/instagraminsights.d.ts.map +1 -0
- package/dist/types/instagraminsights.js +2 -0
- package/dist/types/instagraminsights.js.map +1 -0
- package/dist/types/shared.d.ts +2 -1
- package/dist/types/shared.d.ts.map +1 -1
- package/dist/types/shared.js.map +1 -1
- package/dist/types/webhook.d.ts +119 -35
- package/dist/types/webhook.d.ts.map +1 -1
- package/dist/webhook/handler.d.ts +4 -2
- package/dist/webhook/handler.d.ts.map +1 -1
- package/dist/webhook/handler.js +30 -19
- package/dist/webhook/handler.js.map +1 -1
- package/dist/webhook/normalize.d.ts +3 -0
- package/dist/webhook/normalize.d.ts.map +1 -0
- package/dist/webhook/normalize.js +191 -0
- package/dist/webhook/normalize.js.map +1 -0
- package/package.json +39 -8
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAmCzE,MAAM,UAAU,WAAW,CAAC,SAAsB,EAAE;IAClD,OAAO,CAAC,WAAmB,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO;YAEL,IAAI,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAE1E,IAAI,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAE1E,OAAO,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAEtF,EAAE,EAAE,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAElD,IAAI;YAEJ,KAAK,EAAE,mBAAmB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;SAC9D,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { FacebookUploadError, FacebookErrorBase, FacebookGraphError, FacebookAuthError, FacebookPermissionError, FacebookPolicyBlockError, FacebookRateLimitError, FacebookInvalidParamError, FacebookTransientError, FacebookUnknownError, FacebookNetworkError, FacebookErrorCode, FacebookAuthSubcode, toFacebookError, } from "./internal/error.js";
|
|
2
|
+
export type { FacebookError, FacebookErrorHook, FacebookGraphErrorUnion, } from "./internal/error.js";
|
|
3
|
+
export type { FacebookErrorCategory, FacebookErrorContext, RawFacebookError, RateLimitUsage, AppUsage, BusinessUseCaseUsage, } from "./types/facebookerror.js";
|
|
4
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,oBAAoB,GACrB,MAAM,0BAA0B,CAAC"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { FacebookUploadError, FacebookErrorBase, FacebookGraphError, FacebookAuthError, FacebookPermissionError, FacebookPolicyBlockError, FacebookRateLimitError, FacebookInvalidParamError, FacebookTransientError, FacebookUnknownError, FacebookNetworkError, FacebookErrorCode, FacebookAuthSubcode, toFacebookError, } from "./internal/error.js";
|
|
2
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
|
package/dist/httpClient.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import { AxiosRequestConfig } from "axios";
|
|
1
|
+
import { type AxiosInstance, type AxiosRequestConfig } from "axios";
|
|
2
2
|
import FormData from "form-data";
|
|
3
|
-
import { BatchableRequest } from "./client.js";
|
|
4
|
-
|
|
3
|
+
import { type BatchableRequest } from "./client.js";
|
|
4
|
+
import { type FacebookErrorHook } from "./internal/error.js";
|
|
5
|
+
export declare const api: AxiosInstance;
|
|
6
|
+
export declare const GRAPH_HOSTS: {
|
|
7
|
+
readonly facebook: "https://graph.facebook.com/v25.0";
|
|
8
|
+
readonly instagram: "https://graph.instagram.com/v25.0";
|
|
9
|
+
};
|
|
10
|
+
export type GraphHost = keyof typeof GRAPH_HOSTS;
|
|
5
11
|
type Data = FormData | Record<string, unknown> | null;
|
|
6
12
|
export interface HttpClient {
|
|
7
13
|
get<T>(path: string, options?: AxiosRequestConfig): BatchableRequest<T>;
|
|
@@ -9,6 +15,10 @@ export interface HttpClient {
|
|
|
9
15
|
delete<T>(path: string, options?: AxiosRequestConfig): BatchableRequest<T>;
|
|
10
16
|
getToken(): string;
|
|
11
17
|
}
|
|
12
|
-
export
|
|
18
|
+
export interface CreateHttpClientOptions {
|
|
19
|
+
onError?: FacebookErrorHook | undefined;
|
|
20
|
+
host?: GraphHost | undefined;
|
|
21
|
+
}
|
|
22
|
+
export declare function createHttpClient(accessToken: string, options?: CreateHttpClientOptions): HttpClient;
|
|
13
23
|
export {};
|
|
14
24
|
//# sourceMappingURL=httpClient.d.ts.map
|
package/dist/httpClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAc,EAAgB,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAM7B,eAAO,MAAM,GAAG,eAA2D,CAAC;AAO5E,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAGX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC;AA2BjD,KAAK,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;AAGtD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC3E,QAAQ,IAAI,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,uBAAuB;IAEtC,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAExC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B;AAiCD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,uBAAuB,GAChC,UAAU,CAuEZ"}
|
package/dist/httpClient.js
CHANGED
|
@@ -1,39 +1,120 @@
|
|
|
1
|
-
import axios from "axios";
|
|
1
|
+
import axios, { isAxiosError } from "axios";
|
|
2
2
|
import { toCamel, toSnakeObj } from "./lib/transformCase.js";
|
|
3
3
|
import FormData from "form-data";
|
|
4
|
-
import { createBatchableRequest, buildRelativeUrl } from "./internal/batchable.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
4
|
+
import { createBatchableRequest, buildRelativeUrl, toUrlEncodedBody } from "./internal/batchable.js";
|
|
5
|
+
import {} from "./client.js";
|
|
6
|
+
import { toFacebookError, toNetworkError, invokeErrorHook, } from "./internal/error.js";
|
|
7
|
+
const DEFAULT_TIMEOUT_MS = 60_000;
|
|
8
|
+
export const api = axios.create({ family: 4, timeout: DEFAULT_TIMEOUT_MS });
|
|
9
|
+
export const GRAPH_HOSTS = {
|
|
10
|
+
facebook: "https://graph.facebook.com/v25.0",
|
|
11
|
+
instagram: "https://graph.instagram.com/v25.0",
|
|
12
|
+
};
|
|
13
|
+
const graphApiCache = new Map();
|
|
14
|
+
function getGraphApi(baseURL) {
|
|
15
|
+
const cached = graphApiCache.get(baseURL);
|
|
16
|
+
if (cached)
|
|
17
|
+
return cached;
|
|
18
|
+
const instance = axios.create({
|
|
19
|
+
baseURL,
|
|
20
|
+
family: 4,
|
|
21
|
+
timeout: DEFAULT_TIMEOUT_MS,
|
|
22
|
+
headers: { "Accept-Encoding": "gzip, deflate, br" },
|
|
23
|
+
transformResponse: (data) => {
|
|
24
|
+
if (typeof data !== "string" || data.length === 0)
|
|
25
|
+
return data;
|
|
26
|
+
try {
|
|
27
|
+
return toCamel(JSON.parse(data));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
20
32
|
},
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
});
|
|
34
|
+
graphApiCache.set(baseURL, instance);
|
|
35
|
+
return instance;
|
|
36
|
+
}
|
|
37
|
+
function reportThrownError(error, onError, method, relativeUrl, accessToken) {
|
|
38
|
+
const context = { method, relativeUrl, accessToken, source: "request" };
|
|
39
|
+
if (isAxiosError(error) && error.response) {
|
|
40
|
+
const fbError = toFacebookError(error.response.data, error.response.status, error.response.headers);
|
|
41
|
+
invokeErrorHook(onError, fbError ?? toNetworkError(error, error.response.status), context);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
invokeErrorHook(onError, toNetworkError(error), context);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function reportResponseError(data, status, onError, method, relativeUrl, accessToken) {
|
|
48
|
+
const fbError = toFacebookError(data, status);
|
|
49
|
+
if (fbError)
|
|
50
|
+
invokeErrorHook(onError, fbError, { method, relativeUrl, accessToken, source: "request" });
|
|
51
|
+
}
|
|
52
|
+
export function createHttpClient(accessToken, options) {
|
|
53
|
+
const onError = options?.onError;
|
|
54
|
+
const graphApi = getGraphApi(GRAPH_HOSTS[options?.host ?? "facebook"]);
|
|
55
|
+
return {
|
|
56
|
+
get: (path, reqOptions) => {
|
|
57
|
+
const params = reqOptions?.params ?? {};
|
|
58
|
+
const relativeUrl = buildRelativeUrl(path, params);
|
|
59
|
+
return createBatchableRequest("GET", relativeUrl, async () => {
|
|
60
|
+
try {
|
|
61
|
+
const res = await graphApi.get(path, {
|
|
62
|
+
...reqOptions,
|
|
63
|
+
params: { access_token: accessToken, ...params },
|
|
64
|
+
});
|
|
65
|
+
if (onError)
|
|
66
|
+
reportResponseError(res.data, res.status, onError, "GET", relativeUrl, accessToken);
|
|
67
|
+
return res.data;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
if (onError)
|
|
71
|
+
reportThrownError(error, onError, "GET", relativeUrl, accessToken);
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
29
74
|
});
|
|
30
75
|
},
|
|
31
|
-
|
|
32
|
-
const params =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
76
|
+
post: (path, data, reqOptions) => {
|
|
77
|
+
const params = reqOptions?.params ?? {};
|
|
78
|
+
const relativeUrl = buildRelativeUrl(path, params);
|
|
79
|
+
const isForm = data instanceof FormData;
|
|
80
|
+
const body = !isForm && data ? toUrlEncodedBody(toSnakeObj(data)) : undefined;
|
|
81
|
+
return createBatchableRequest("POST", relativeUrl, async () => {
|
|
82
|
+
try {
|
|
83
|
+
const res = await graphApi.post(path, isForm ? data : toSnakeObj(data), {
|
|
84
|
+
...reqOptions,
|
|
85
|
+
headers: { ...reqOptions?.headers, ...(isForm ? data.getHeaders() : {}) },
|
|
86
|
+
params: { access_token: accessToken, ...params },
|
|
87
|
+
});
|
|
88
|
+
if (onError)
|
|
89
|
+
reportResponseError(res.data, res.status, onError, "POST", relativeUrl, accessToken);
|
|
90
|
+
return res.data;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (onError)
|
|
94
|
+
reportThrownError(error, onError, "POST", relativeUrl, accessToken);
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}, undefined, body);
|
|
98
|
+
},
|
|
99
|
+
delete: (path, reqOptions) => {
|
|
100
|
+
const params = reqOptions?.params ?? {};
|
|
101
|
+
const relativeUrl = buildRelativeUrl(path, params);
|
|
102
|
+
return createBatchableRequest("DELETE", relativeUrl, async () => {
|
|
103
|
+
try {
|
|
104
|
+
const res = await graphApi.delete(path, {
|
|
105
|
+
...reqOptions,
|
|
106
|
+
params: { access_token: accessToken, ...params },
|
|
107
|
+
});
|
|
108
|
+
if (onError)
|
|
109
|
+
reportResponseError(res.data, res.status, onError, "DELETE", relativeUrl, accessToken);
|
|
110
|
+
return res.data;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
if (onError)
|
|
114
|
+
reportThrownError(error, onError, "DELETE", relativeUrl, accessToken);
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
37
118
|
},
|
|
38
119
|
getToken: () => accessToken,
|
|
39
120
|
};
|
package/dist/httpClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { type HttpClient } from "./httpClient.js";
|
|
2
|
+
import type { FacebookErrorHook } from "./internal/error.js";
|
|
3
|
+
export interface InstagramSdkConfig {
|
|
4
|
+
onError?: FacebookErrorHook;
|
|
5
|
+
}
|
|
6
|
+
export declare function createInstagramSdk(config?: InstagramSdkConfig): (accessToken: string) => {
|
|
7
|
+
account: (igUserId: string) => {
|
|
8
|
+
get: import("./resources/instagram/InstagramResource.js").GetInstagramAccount;
|
|
9
|
+
media: {
|
|
10
|
+
publishImage: import("./resources/instagram/InstagramMediaResource.js").PublishImage;
|
|
11
|
+
publishReel: import("./resources/instagram/InstagramMediaResource.js").PublishReel;
|
|
12
|
+
publishStory: import("./resources/instagram/InstagramMediaResource.js").PublishStory;
|
|
13
|
+
publishCarousel: import("./resources/instagram/InstagramMediaResource.js").PublishCarousel;
|
|
14
|
+
contentPublishingLimit: import("./resources/instagram/InstagramMediaResource.js").GetContentPublishingLimit;
|
|
15
|
+
list: import("./resources/instagram/InstagramMediaResource.js").ListInstagramMedia;
|
|
16
|
+
};
|
|
17
|
+
insights: {
|
|
18
|
+
list: <F extends import("./client.js").FbFieldSelector<{
|
|
19
|
+
reach: number;
|
|
20
|
+
views: number;
|
|
21
|
+
accountsEngaged: number;
|
|
22
|
+
totalInteractions: number;
|
|
23
|
+
likes: number;
|
|
24
|
+
comments: number;
|
|
25
|
+
saves: number;
|
|
26
|
+
shares: number;
|
|
27
|
+
replies: number;
|
|
28
|
+
reposts: number;
|
|
29
|
+
profileLinksTaps: number;
|
|
30
|
+
followsAndUnfollows: number;
|
|
31
|
+
engagedAudienceDemographics: number;
|
|
32
|
+
followerDemographics: number;
|
|
33
|
+
followerCount: number;
|
|
34
|
+
onlineFollowers: number;
|
|
35
|
+
impressions: number;
|
|
36
|
+
}, 10>>(query: import("./client.js").InstagramInsightQuery<{
|
|
37
|
+
reach: number;
|
|
38
|
+
views: number;
|
|
39
|
+
accountsEngaged: number;
|
|
40
|
+
totalInteractions: number;
|
|
41
|
+
likes: number;
|
|
42
|
+
comments: number;
|
|
43
|
+
saves: number;
|
|
44
|
+
shares: number;
|
|
45
|
+
replies: number;
|
|
46
|
+
reposts: number;
|
|
47
|
+
profileLinksTaps: number;
|
|
48
|
+
followsAndUnfollows: number;
|
|
49
|
+
engagedAudienceDemographics: number;
|
|
50
|
+
followerDemographics: number;
|
|
51
|
+
followerCount: number;
|
|
52
|
+
onlineFollowers: number;
|
|
53
|
+
impressions: number;
|
|
54
|
+
}, F, import("./client.js").InstagramAccountInsightOptions>) => import("./client.js").BatchableRequest<import("./client.js").InstagramInsightResponse<{
|
|
55
|
+
reach: number;
|
|
56
|
+
views: number;
|
|
57
|
+
accountsEngaged: number;
|
|
58
|
+
totalInteractions: number;
|
|
59
|
+
likes: number;
|
|
60
|
+
comments: number;
|
|
61
|
+
saves: number;
|
|
62
|
+
shares: number;
|
|
63
|
+
replies: number;
|
|
64
|
+
reposts: number;
|
|
65
|
+
profileLinksTaps: number;
|
|
66
|
+
followsAndUnfollows: number;
|
|
67
|
+
engagedAudienceDemographics: number;
|
|
68
|
+
followerDemographics: number;
|
|
69
|
+
followerCount: number;
|
|
70
|
+
onlineFollowers: number;
|
|
71
|
+
impressions: number;
|
|
72
|
+
}, F>>;
|
|
73
|
+
};
|
|
74
|
+
mentions: {
|
|
75
|
+
reply: import("./resources/instagram/InstagramMentionsResource.js").ReplyInstagramMention;
|
|
76
|
+
getComment: <F extends import("./client.js").FbFieldSelector<import("./client.js").InstagramComment>>(commentId: string, fields: import("./client.js").Fields<import("./client.js").InstagramComment, F>) => import("./client.js").BatchableRequest<import("./client.js").FbPickDeep<import("./client.js").InstagramComment, F>>;
|
|
77
|
+
getMedia: <F extends import("./client.js").FbFieldSelector<import("./client.js").InstagramMedia>>(mediaId: string, fields: import("./client.js").Fields<import("./client.js").InstagramMedia, F>) => import("./client.js").BatchableRequest<import("./client.js").FbPickDeep<import("./client.js").InstagramMedia, F>>;
|
|
78
|
+
};
|
|
79
|
+
stories: import("./resources/instagram/InstagramResource.js").ListInstagramStories;
|
|
80
|
+
tags: import("./resources/instagram/InstagramResource.js").ListInstagramTags;
|
|
81
|
+
};
|
|
82
|
+
media: (mediaId: string) => {
|
|
83
|
+
get: import("./resources/instagram/InstagramMediaNodeResource.js").GetInstagramMedia;
|
|
84
|
+
setCommentEnabled: import("./resources/instagram/InstagramMediaNodeResource.js").SetInstagramCommentEnabled;
|
|
85
|
+
comments: {
|
|
86
|
+
list: import("./resources/instagram/InstagramCommentResource.js").ListInstagramComments;
|
|
87
|
+
create: import("./resources/instagram/InstagramCommentResource.js").CreateInstagramComment;
|
|
88
|
+
};
|
|
89
|
+
insights: {
|
|
90
|
+
list: <F extends import("./client.js").FbFieldSelector<{
|
|
91
|
+
reach: number;
|
|
92
|
+
views: number;
|
|
93
|
+
likes: number;
|
|
94
|
+
comments: number;
|
|
95
|
+
saved: number;
|
|
96
|
+
shares: number;
|
|
97
|
+
totalInteractions: number;
|
|
98
|
+
follows: number;
|
|
99
|
+
profileVisits: number;
|
|
100
|
+
profileActivity: number;
|
|
101
|
+
navigation: number;
|
|
102
|
+
replies: number;
|
|
103
|
+
linkClicks: number;
|
|
104
|
+
reposts: number;
|
|
105
|
+
igReelsAvgWatchTime: number;
|
|
106
|
+
igReelsVideoViewTotalTime: number;
|
|
107
|
+
reelsSkipRate: number;
|
|
108
|
+
crosspostedViews: number;
|
|
109
|
+
facebookViews: number;
|
|
110
|
+
totalComments: number;
|
|
111
|
+
totalLikes: number;
|
|
112
|
+
totalViews: number;
|
|
113
|
+
impressions: number;
|
|
114
|
+
}, 10>>(query: import("./client.js").InstagramInsightQuery<{
|
|
115
|
+
reach: number;
|
|
116
|
+
views: number;
|
|
117
|
+
likes: number;
|
|
118
|
+
comments: number;
|
|
119
|
+
saved: number;
|
|
120
|
+
shares: number;
|
|
121
|
+
totalInteractions: number;
|
|
122
|
+
follows: number;
|
|
123
|
+
profileVisits: number;
|
|
124
|
+
profileActivity: number;
|
|
125
|
+
navigation: number;
|
|
126
|
+
replies: number;
|
|
127
|
+
linkClicks: number;
|
|
128
|
+
reposts: number;
|
|
129
|
+
igReelsAvgWatchTime: number;
|
|
130
|
+
igReelsVideoViewTotalTime: number;
|
|
131
|
+
reelsSkipRate: number;
|
|
132
|
+
crosspostedViews: number;
|
|
133
|
+
facebookViews: number;
|
|
134
|
+
totalComments: number;
|
|
135
|
+
totalLikes: number;
|
|
136
|
+
totalViews: number;
|
|
137
|
+
impressions: number;
|
|
138
|
+
}, F, import("./client.js").InstagramInsightOptions>) => import("./client.js").BatchableRequest<import("./client.js").InstagramInsightResponse<{
|
|
139
|
+
reach: number;
|
|
140
|
+
views: number;
|
|
141
|
+
likes: number;
|
|
142
|
+
comments: number;
|
|
143
|
+
saved: number;
|
|
144
|
+
shares: number;
|
|
145
|
+
totalInteractions: number;
|
|
146
|
+
follows: number;
|
|
147
|
+
profileVisits: number;
|
|
148
|
+
profileActivity: number;
|
|
149
|
+
navigation: number;
|
|
150
|
+
replies: number;
|
|
151
|
+
linkClicks: number;
|
|
152
|
+
reposts: number;
|
|
153
|
+
igReelsAvgWatchTime: number;
|
|
154
|
+
igReelsVideoViewTotalTime: number;
|
|
155
|
+
reelsSkipRate: number;
|
|
156
|
+
crosspostedViews: number;
|
|
157
|
+
facebookViews: number;
|
|
158
|
+
totalComments: number;
|
|
159
|
+
totalLikes: number;
|
|
160
|
+
totalViews: number;
|
|
161
|
+
impressions: number;
|
|
162
|
+
}, F>>;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
comment: (commentId: string) => {
|
|
166
|
+
get: import("./resources/instagram/InstagramCommentResource.js").GetInstagramComment;
|
|
167
|
+
reply: import("./resources/instagram/InstagramCommentResource.js").CreateInstagramComment;
|
|
168
|
+
replies: import("./resources/instagram/InstagramCommentResource.js").ListInstagramComments;
|
|
169
|
+
hide: import("./resources/instagram/InstagramCommentResource.js").HideInstagramComment;
|
|
170
|
+
delete: import("./resources/instagram/InstagramCommentResource.js").DeleteInstagramComment;
|
|
171
|
+
};
|
|
172
|
+
http: HttpClient;
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=instagramClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instagramClient.d.ts","sourceRoot":"","sources":["../src/instagramClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,MAAM,WAAW,kBAAkB;IAMjC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAcD,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,kBAAuB,IACxD,aAAa,MAAM;wBAOH,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAET,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAEF,MAAM;;;;;;;;EAKhC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createHttpClient } from "./httpClient.js";
|
|
2
|
+
import { createInstagramResource } from "./resources/instagram/InstagramResource.js";
|
|
3
|
+
import { createInstagramMediaNodeResource } from "./resources/instagram/InstagramMediaNodeResource.js";
|
|
4
|
+
import { createInstagramCommentResource } from "./resources/instagram/InstagramCommentResource.js";
|
|
5
|
+
export function createInstagramSdk(config = {}) {
|
|
6
|
+
return (accessToken) => {
|
|
7
|
+
const http = createHttpClient(accessToken, {
|
|
8
|
+
onError: config.onError,
|
|
9
|
+
host: "instagram",
|
|
10
|
+
});
|
|
11
|
+
return {
|
|
12
|
+
account: (igUserId) => createInstagramResource({ http, id: igUserId, config }),
|
|
13
|
+
media: (mediaId) => createInstagramMediaNodeResource({ http, id: mediaId, config }),
|
|
14
|
+
comment: (commentId) => createInstagramCommentResource({ http, id: commentId, config }),
|
|
15
|
+
http,
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=instagramClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instagramClient.js","sourceRoot":"","sources":["../src/instagramClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,gCAAgC,EAAE,MAAM,qDAAqD,CAAC;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AAyBnG,MAAM,UAAU,kBAAkB,CAAC,SAA6B,EAAE;IAChE,OAAO,CAAC,WAAmB,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAe,gBAAgB,CAAC,WAAW,EAAE;YACrD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,OAAO;YAEL,OAAO,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YAEtF,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,gCAAgC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAE3F,OAAO,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,8BAA8B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAE/F,IAAI;SACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BatchableRequest } from "../client.js";
|
|
2
|
-
export declare function createBatchableRequest<T>(method: string, relativeUrl: string, executor: () => Promise<T>, _transform?: (raw: any) => any): BatchableRequest<T>;
|
|
1
|
+
import type { BatchableRequest } from "../client.js";
|
|
2
|
+
export declare function createBatchableRequest<T>(method: string, relativeUrl: string, executor: () => Promise<T>, _transform?: (raw: any) => any, body?: string): BatchableRequest<T>;
|
|
3
3
|
export declare function buildRelativeUrl(path: string, params: Record<string, unknown>): string;
|
|
4
|
+
export declare function toUrlEncodedBody(obj: Record<string, unknown>): string;
|
|
4
5
|
//# sourceMappingURL=batchable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchable.d.ts","sourceRoot":"","sources":["../../src/internal/batchable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"batchable.d.ts","sourceRoot":"","sources":["../../src/internal/batchable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAOrD,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,EAC9B,IAAI,CAAC,EAAE,MAAM,GACZ,gBAAgB,CAAC,CAAC,CAAC,CA6BrB;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAUtF;AAOD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAOrE"}
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
import { toSnakeCase } from "../lib/transformCase.js";
|
|
2
|
-
export function createBatchableRequest(method, relativeUrl, executor, _transform) {
|
|
2
|
+
export function createBatchableRequest(method, relativeUrl, executor, _transform, body) {
|
|
3
|
+
let inflight;
|
|
4
|
+
const run = () => (inflight ??= executor());
|
|
3
5
|
const req = {
|
|
4
6
|
method,
|
|
5
7
|
relative_url: relativeUrl,
|
|
6
8
|
then(onFulfilled, onRejected) {
|
|
7
|
-
return
|
|
9
|
+
return run().then(onFulfilled, onRejected);
|
|
8
10
|
},
|
|
9
11
|
catch(onRejected) {
|
|
10
|
-
return
|
|
12
|
+
return run().then(undefined, onRejected);
|
|
11
13
|
},
|
|
12
14
|
transform(fn) {
|
|
13
15
|
const prev = _transform;
|
|
14
|
-
return createBatchableRequest(method, relativeUrl, () =>
|
|
16
|
+
return createBatchableRequest(method, relativeUrl, () => run().then(fn), (raw) => fn(prev ? prev(raw) : raw), body);
|
|
15
17
|
},
|
|
16
18
|
};
|
|
17
19
|
if (_transform)
|
|
18
20
|
req._transform = _transform;
|
|
21
|
+
if (body !== undefined)
|
|
22
|
+
req.body = body;
|
|
19
23
|
return req;
|
|
20
24
|
}
|
|
21
25
|
export function buildRelativeUrl(path, params) {
|
|
@@ -28,4 +32,13 @@ export function buildRelativeUrl(path, params) {
|
|
|
28
32
|
}
|
|
29
33
|
return parts.length > 0 ? `${stripped}?${parts.join("&")}` : stripped;
|
|
30
34
|
}
|
|
35
|
+
export function toUrlEncodedBody(obj) {
|
|
36
|
+
const params = new URLSearchParams();
|
|
37
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
38
|
+
if (value === undefined || value === null)
|
|
39
|
+
continue;
|
|
40
|
+
params.append(key, typeof value === "object" ? JSON.stringify(value) : String(value));
|
|
41
|
+
}
|
|
42
|
+
return params.toString();
|
|
43
|
+
}
|
|
31
44
|
//# sourceMappingURL=batchable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchable.js","sourceRoot":"","sources":["../../src/internal/batchable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"batchable.js","sourceRoot":"","sources":["../../src/internal/batchable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtD,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,WAAmB,EACnB,QAA0B,EAC1B,UAA8B,EAC9B,IAAa;IAEb,IAAI,QAAgC,CAAC;IACrC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;IAE5C,MAAM,GAAG,GAAQ;QACf,MAAM;QACN,YAAY,EAAE,WAAW;QACzB,IAAI,CAAC,WAAiB,EAAE,UAAgB;YACtC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,UAAgB;YACpB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,SAAS,CAAI,EAAiB;YAC5B,MAAM,IAAI,GAAG,UAAU,CAAC;YACxB,OAAO,sBAAsB,CAC3B,MAAM,EACN,WAAW,EACX,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EACpB,CAAC,GAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EACxC,IAAI,CACL,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,IAAI,UAAU;QAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;IAC5C,IAAI,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAExC,OAAO,GAAG,CAAC;AACb,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAA+B;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxE,CAAC;AAOD,MAAM,UAAU,gBAAgB,CAAC,GAA4B;IAC3D,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QACpD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC"}
|
package/dist/internal/error.d.ts
CHANGED
|
@@ -1,6 +1,99 @@
|
|
|
1
|
-
import { FacebookMedia } from "../types/facebookmedia.js";
|
|
1
|
+
import { type FacebookMedia } from "../types/facebookmedia.js";
|
|
2
|
+
import type { FacebookErrorCategory, FacebookErrorContext, RateLimitUsage, RawFacebookError } from "../types/facebookerror.js";
|
|
2
3
|
export declare class FacebookUploadError extends Error {
|
|
3
4
|
readonly status?: FacebookMedia["status"] | undefined;
|
|
4
5
|
constructor(message: string, status?: FacebookMedia["status"] | undefined);
|
|
5
6
|
}
|
|
7
|
+
export declare abstract class FacebookErrorBase extends Error {
|
|
8
|
+
abstract readonly category: FacebookErrorCategory;
|
|
9
|
+
abstract readonly raw: unknown;
|
|
10
|
+
readonly httpStatus: number;
|
|
11
|
+
readonly isTransient: boolean;
|
|
12
|
+
constructor(message: string, httpStatus: number, isTransient: boolean);
|
|
13
|
+
}
|
|
14
|
+
interface GraphErrorInit {
|
|
15
|
+
message: string;
|
|
16
|
+
type: string;
|
|
17
|
+
code: number;
|
|
18
|
+
subcode: number | undefined;
|
|
19
|
+
traceId: string | undefined;
|
|
20
|
+
userTitle: string | undefined;
|
|
21
|
+
userMessage: string | undefined;
|
|
22
|
+
isTransient: boolean;
|
|
23
|
+
httpStatus: number;
|
|
24
|
+
raw: RawFacebookError;
|
|
25
|
+
}
|
|
26
|
+
export declare abstract class FacebookGraphError extends FacebookErrorBase {
|
|
27
|
+
readonly raw: RawFacebookError;
|
|
28
|
+
readonly code: number;
|
|
29
|
+
readonly type: string;
|
|
30
|
+
readonly subcode?: number;
|
|
31
|
+
readonly traceId?: string;
|
|
32
|
+
readonly userTitle?: string;
|
|
33
|
+
readonly userMessage?: string;
|
|
34
|
+
constructor(init: GraphErrorInit);
|
|
35
|
+
}
|
|
36
|
+
export declare class FacebookAuthError extends FacebookGraphError {
|
|
37
|
+
readonly category: "auth";
|
|
38
|
+
}
|
|
39
|
+
export declare class FacebookPermissionError extends FacebookGraphError {
|
|
40
|
+
readonly category: "permission";
|
|
41
|
+
}
|
|
42
|
+
export declare class FacebookPolicyBlockError extends FacebookGraphError {
|
|
43
|
+
readonly category: "policy_block";
|
|
44
|
+
}
|
|
45
|
+
export declare class FacebookRateLimitError extends FacebookGraphError {
|
|
46
|
+
readonly category: "rate_limit";
|
|
47
|
+
readonly usage?: RateLimitUsage;
|
|
48
|
+
constructor(init: GraphErrorInit & {
|
|
49
|
+
usage: RateLimitUsage | undefined;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export declare class FacebookInvalidParamError extends FacebookGraphError {
|
|
53
|
+
readonly category: "invalid_param";
|
|
54
|
+
}
|
|
55
|
+
export declare class FacebookTransientError extends FacebookGraphError {
|
|
56
|
+
readonly category: "transient";
|
|
57
|
+
}
|
|
58
|
+
export declare class FacebookUnknownError extends FacebookGraphError {
|
|
59
|
+
readonly category: "unknown";
|
|
60
|
+
}
|
|
61
|
+
export declare class FacebookNetworkError extends FacebookErrorBase {
|
|
62
|
+
readonly category: "network";
|
|
63
|
+
readonly raw: unknown;
|
|
64
|
+
constructor(cause: unknown, httpStatus?: number);
|
|
65
|
+
}
|
|
66
|
+
export type FacebookGraphErrorUnion = FacebookAuthError | FacebookPermissionError | FacebookPolicyBlockError | FacebookRateLimitError | FacebookInvalidParamError | FacebookTransientError | FacebookUnknownError;
|
|
67
|
+
export type FacebookError = FacebookGraphErrorUnion | FacebookNetworkError;
|
|
68
|
+
export type FacebookErrorHook = (error: FacebookError, context: FacebookErrorContext) => void;
|
|
69
|
+
export declare const FacebookErrorCode: {
|
|
70
|
+
readonly UNKNOWN: 1;
|
|
71
|
+
readonly SERVICE: 2;
|
|
72
|
+
readonly METHOD: 3;
|
|
73
|
+
readonly TOO_MANY_CALLS: 4;
|
|
74
|
+
readonly PERMISSION_DENIED: 10;
|
|
75
|
+
readonly USER_TOO_MANY_CALLS: 17;
|
|
76
|
+
readonly PAGE_RATE_LIMIT: 32;
|
|
77
|
+
readonly INVALID_PARAM: 100;
|
|
78
|
+
readonly SESSION: 102;
|
|
79
|
+
readonly ACCESS_TOKEN: 190;
|
|
80
|
+
readonly APP_ACTION_LIMIT: 341;
|
|
81
|
+
readonly POLICY_BLOCK: 368;
|
|
82
|
+
readonly DUPLICATE_POST: 506;
|
|
83
|
+
readonly CUSTOM_RATE_LIMIT: 613;
|
|
84
|
+
readonly LINK_SCRAPE: 1609005;
|
|
85
|
+
};
|
|
86
|
+
export declare const FacebookAuthSubcode: {
|
|
87
|
+
readonly APP_NOT_INSTALLED: 458;
|
|
88
|
+
readonly USER_CHECKPOINTED: 459;
|
|
89
|
+
readonly PASSWORD_CHANGED: 460;
|
|
90
|
+
readonly EXPIRED: 463;
|
|
91
|
+
readonly UNCONFIRMED_USER: 464;
|
|
92
|
+
readonly INVALID_ACCESS_TOKEN: 467;
|
|
93
|
+
readonly INVALID_PAGE_ROLE: 492;
|
|
94
|
+
};
|
|
95
|
+
export declare function toFacebookError(payload: unknown, httpStatus: number, headers?: unknown): FacebookGraphErrorUnion | null;
|
|
96
|
+
export declare function toNetworkError(cause: unknown, httpStatus?: number): FacebookNetworkError;
|
|
97
|
+
export declare function invokeErrorHook(hook: FacebookErrorHook, error: FacebookError, context: FacebookErrorContext): void;
|
|
98
|
+
export {};
|
|
6
99
|
//# sourceMappingURL=error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/internal/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/internal/error.ts"],"names":[],"mappings":"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"}
|