operand-meta-sdk 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.eslintrc.js +25 -0
  2. package/.prettierrc +4 -0
  3. package/README.md +435 -0
  4. package/dist/jest.config.d.ts +3 -0
  5. package/dist/jest.config.js +14 -0
  6. package/dist/jest.config.js.map +1 -0
  7. package/dist/src/__test__/mocks/index.d.ts +2 -0
  8. package/dist/src/__test__/mocks/index.js +6 -0
  9. package/dist/src/__test__/mocks/index.js.map +1 -0
  10. package/dist/src/error/operand-error.d.ts +8 -0
  11. package/dist/src/error/operand-error.js +196 -0
  12. package/dist/src/error/operand-error.js.map +1 -0
  13. package/dist/src/index.d.ts +10 -0
  14. package/dist/src/index.js +22 -0
  15. package/dist/src/index.js.map +1 -0
  16. package/dist/src/interfaces/ing-publish.d.ts +53 -0
  17. package/dist/src/interfaces/ing-publish.js +3 -0
  18. package/dist/src/interfaces/ing-publish.js.map +1 -0
  19. package/dist/src/interfaces/meta-auth.d.ts +14 -0
  20. package/dist/src/interfaces/meta-auth.js +3 -0
  21. package/dist/src/interfaces/meta-auth.js.map +1 -0
  22. package/dist/src/interfaces/meta-mkt.d.ts +4 -0
  23. package/dist/src/interfaces/meta-mkt.js +3 -0
  24. package/dist/src/interfaces/meta-mkt.js.map +1 -0
  25. package/dist/src/interfaces/meta-response.d.ts +285 -0
  26. package/dist/src/interfaces/meta-response.js +3 -0
  27. package/dist/src/interfaces/meta-response.js.map +1 -0
  28. package/dist/src/interfaces/meta.d.ts +6 -0
  29. package/dist/src/interfaces/meta.js +3 -0
  30. package/dist/src/interfaces/meta.js.map +1 -0
  31. package/dist/src/interfaces/page-publish.d.ts +66 -0
  32. package/dist/src/interfaces/page-publish.js +3 -0
  33. package/dist/src/interfaces/page-publish.js.map +1 -0
  34. package/dist/src/modules/auth/meta-auth.d.ts +35 -0
  35. package/dist/src/modules/auth/meta-auth.js +131 -0
  36. package/dist/src/modules/auth/meta-auth.js.map +1 -0
  37. package/dist/src/modules/auth/meta-auth.spec.d.ts +1 -0
  38. package/dist/src/modules/auth/meta-auth.spec.js +76 -0
  39. package/dist/src/modules/auth/meta-auth.spec.js.map +1 -0
  40. package/dist/src/modules/comments/ing-comments.d.ts +7 -0
  41. package/dist/src/modules/comments/ing-comments.js +27 -0
  42. package/dist/src/modules/comments/ing-comments.js.map +1 -0
  43. package/dist/src/modules/comments/page-comments.d.ts +6 -0
  44. package/dist/src/modules/comments/page-comments.js +18 -0
  45. package/dist/src/modules/comments/page-comments.js.map +1 -0
  46. package/dist/src/modules/insights/ing-insights.d.ts +42 -0
  47. package/dist/src/modules/insights/ing-insights.js +150 -0
  48. package/dist/src/modules/insights/ing-insights.js.map +1 -0
  49. package/dist/src/modules/insights/mkt-insights.d.ts +10 -0
  50. package/dist/src/modules/insights/mkt-insights.js +46 -0
  51. package/dist/src/modules/insights/mkt-insights.js.map +1 -0
  52. package/dist/src/modules/insights/page-insights.d.ts +34 -0
  53. package/dist/src/modules/insights/page-insights.js +146 -0
  54. package/dist/src/modules/insights/page-insights.js.map +1 -0
  55. package/dist/src/modules/meta-ing.d.ts +5 -0
  56. package/dist/src/modules/meta-ing.js +11 -0
  57. package/dist/src/modules/meta-ing.js.map +1 -0
  58. package/dist/src/modules/meta-mkt.d.ts +5 -0
  59. package/dist/src/modules/meta-mkt.js +11 -0
  60. package/dist/src/modules/meta-mkt.js.map +1 -0
  61. package/dist/src/modules/meta-page.d.ts +5 -0
  62. package/dist/src/modules/meta-page.js +11 -0
  63. package/dist/src/modules/meta-page.js.map +1 -0
  64. package/dist/src/modules/meta.d.ts +10 -0
  65. package/dist/src/modules/meta.js +23 -0
  66. package/dist/src/modules/meta.js.map +1 -0
  67. package/dist/src/modules/publish/ing-publish.d.ts +39 -0
  68. package/dist/src/modules/publish/ing-publish.js +464 -0
  69. package/dist/src/modules/publish/ing-publish.js.map +1 -0
  70. package/dist/src/modules/publish/page-publish.d.ts +51 -0
  71. package/dist/src/modules/publish/page-publish.js +560 -0
  72. package/dist/src/modules/publish/page-publish.js.map +1 -0
  73. package/dist/src/modules/publish/page-publish.spec.d.ts +1 -0
  74. package/dist/src/modules/publish/page-publish.spec.js +280 -0
  75. package/dist/src/modules/publish/page-publish.spec.js.map +1 -0
  76. package/dist/src/modules/utils/meta-utils.d.ts +8 -0
  77. package/dist/src/modules/utils/meta-utils.js +28 -0
  78. package/dist/src/modules/utils/meta-utils.js.map +1 -0
  79. package/dist/src/utils/api.d.ts +8 -0
  80. package/dist/src/utils/api.js +36 -0
  81. package/dist/src/utils/api.js.map +1 -0
  82. package/dist/tsconfig.tsbuildinfo +1 -0
  83. package/jest.config.ts +198 -0
  84. package/package.json +39 -0
  85. package/src/__test__/mocks/image.jpeg +0 -0
  86. package/src/__test__/mocks/index.ts +5 -0
  87. package/src/__test__/mocks/video-to-post.mp4 +0 -0
  88. package/src/__test__/mocks/video-to-stories.mp4 +0 -0
  89. package/src/error/operand-error.ts +217 -0
  90. package/src/index.ts +21 -0
  91. package/src/interfaces/ing-publish.ts +58 -0
  92. package/src/interfaces/meta-auth.ts +52 -0
  93. package/src/interfaces/meta-mkt.ts +5 -0
  94. package/src/interfaces/meta-response.ts +319 -0
  95. package/src/interfaces/meta.ts +7 -0
  96. package/src/interfaces/page-publish.ts +72 -0
  97. package/src/modules/auth/meta-auth.spec.ts +93 -0
  98. package/src/modules/auth/meta-auth.ts +227 -0
  99. package/src/modules/comments/ing-comments.ts +38 -0
  100. package/src/modules/comments/page-comments.ts +20 -0
  101. package/src/modules/insights/ing-insights.ts +275 -0
  102. package/src/modules/insights/mkt-insights.ts +68 -0
  103. package/src/modules/insights/page-insights.ts +267 -0
  104. package/src/modules/meta-ing.ts +8 -0
  105. package/src/modules/meta-mkt.ts +8 -0
  106. package/src/modules/meta-page.ts +8 -0
  107. package/src/modules/meta.ts +31 -0
  108. package/src/modules/publish/ing-publish.ts +754 -0
  109. package/src/modules/publish/page-publish.spec.ts +386 -0
  110. package/src/modules/publish/page-publish.ts +881 -0
  111. package/src/modules/utils/meta-utils.ts +37 -0
  112. package/src/utils/api.ts +45 -0
  113. package/tsconfig.json +22 -0
@@ -0,0 +1,66 @@
1
+ import { ConstructorMain } from "./meta";
2
+ import { PagePost } from "./meta-response";
3
+ export type PhotoMediaItem = {
4
+ source: "url" | "path";
5
+ value: string;
6
+ };
7
+ export type VideoMediaItem = {
8
+ source: "url" | "path";
9
+ value: string;
10
+ };
11
+ export type CreatePost = {
12
+ mediaType?: "photo" | "video";
13
+ message?: string;
14
+ publishNow: boolean;
15
+ datePublish?: Date;
16
+ photos?: PhotoMediaItem[];
17
+ video?: VideoMediaItem;
18
+ };
19
+ type CreateStoriesPath = {
20
+ source: "path";
21
+ mediaType: "photo" | "video";
22
+ path: string;
23
+ };
24
+ type CreateStoriesUrl = {
25
+ source: "url";
26
+ mediaType: "photo" | "video";
27
+ url: string;
28
+ };
29
+ export type CreateStories = CreateStoriesPath | CreateStoriesUrl;
30
+ type CreateReelsPath = {
31
+ source: "path";
32
+ path: string;
33
+ title?: string;
34
+ description?: string;
35
+ };
36
+ type CreateReelsUrl = {
37
+ source: "url";
38
+ url: string;
39
+ title?: string;
40
+ description?: string;
41
+ };
42
+ export type CreateReels = CreateReelsPath | CreateReelsUrl;
43
+ export type SetThumbnailToReels = {
44
+ source: "url" | "path";
45
+ value: string;
46
+ videoId: string;
47
+ };
48
+ export interface ConstructorPage extends ConstructorMain {
49
+ pageId: string;
50
+ }
51
+ export interface IPagePublish {
52
+ getAllPosts(): Promise<PagePost[]>;
53
+ getPostUrlById(postId: string): string;
54
+ createPost(data: CreatePost): Promise<string>;
55
+ updatePost(postId: string, message: string): Promise<boolean>;
56
+ deletePost(postId: string): Promise<boolean>;
57
+ createStories(data: CreateStories): Promise<string>;
58
+ createReels(data: CreateReels): Promise<{
59
+ postId: string;
60
+ videoId: string;
61
+ }>;
62
+ setThumbnailToReels(data: SetThumbnailToReels): Promise<{
63
+ success: boolean;
64
+ }>;
65
+ }
66
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=page-publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-publish.js","sourceRoot":"","sources":["../../../src/interfaces/page-publish.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import { ApiVersion, CreateMetaAuth, FieldsPage, GetAccounts } from "../../interfaces/meta-auth";
2
+ import { FacebookPage, InstagramAccount } from "../../interfaces/meta-response";
3
+ export declare class MetaAuth {
4
+ static createAccessTokenIg({ client_id, client_secret, redirect_uri, apiVersion, code, }: CreateMetaAuth): Promise<{
5
+ accessToken: string;
6
+ getAccounts: ({ fields }: {
7
+ fields: FieldsPage;
8
+ }) => Promise<InstagramAccount>;
9
+ }>;
10
+ static createAccessTokenFb({ client_id, client_secret, redirect_uri, apiVersion, code, }: CreateMetaAuth): Promise<{
11
+ accessToken: string;
12
+ getAccounts: ({ fields }: {
13
+ fields: FieldsPage;
14
+ }) => Promise<FacebookPage[]>;
15
+ getAdAccounts: () => Promise<FacebookPage[]>;
16
+ }>;
17
+ static extendUserAccessToken({ client_id, client_secret, accessToken, apiVersion, }: {
18
+ client_id: string;
19
+ client_secret: string;
20
+ accessToken: string;
21
+ apiVersion: ApiVersion;
22
+ }): Promise<string>;
23
+ static getAccountsWithFbToken({ fields, accessToken, apiVersion, }: GetAccounts): Promise<FacebookPage[]>;
24
+ static getAccountsWithIgToken({ fields, accessToken, apiVersion, }: GetAccounts): Promise<InstagramAccount>;
25
+ static getAdAccounts({ accessToken, apiVersion, }: Omit<GetAccounts, "fields">): Promise<FacebookPage[]>;
26
+ static generateIgLongToken({ accessToken, apiVersion, clientSecret, }: {
27
+ accessToken: string;
28
+ apiVersion: ApiVersion;
29
+ clientSecret: string;
30
+ }): Promise<string>;
31
+ static generateIgRefreshToken({ accessToken, apiVersion, }: {
32
+ accessToken: string;
33
+ apiVersion: ApiVersion;
34
+ }): Promise<string>;
35
+ }
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetaAuth = void 0;
4
+ const api_1 = require("../../utils/api");
5
+ class MetaAuth {
6
+ static async createAccessTokenIg({ client_id, client_secret, redirect_uri, apiVersion, code, }) {
7
+ const api = (0, api_1.generateAxiosInstance)({
8
+ apiVersion: "v21.0",
9
+ isInstagramAccessToken: true,
10
+ });
11
+ const data = new URLSearchParams();
12
+ data.append("client_id", client_id);
13
+ data.append("client_secret", client_secret);
14
+ data.append("grant_type", "authorization_code");
15
+ data.append("redirect_uri", redirect_uri);
16
+ data.append("code", code);
17
+ const accessToken = (await api.post(`/oauth/access_token`, data)).data;
18
+ return {
19
+ accessToken: accessToken.access_token,
20
+ getAccounts: ({ fields }) => {
21
+ return MetaAuth.getAccountsWithIgToken({
22
+ fields,
23
+ accessToken: accessToken.access_token,
24
+ apiVersion,
25
+ });
26
+ },
27
+ };
28
+ }
29
+ static async createAccessTokenFb({ client_id, client_secret, redirect_uri, apiVersion, code, }) {
30
+ const api = (0, api_1.generateAxiosInstance)({ apiVersion });
31
+ const shortAccessToken = (await api.post(`/oauth/access_token`, {
32
+ client_id,
33
+ client_secret,
34
+ code,
35
+ redirect_uri,
36
+ })).data.access_token;
37
+ const longAccessToken = await this.extendUserAccessToken({
38
+ client_id,
39
+ client_secret,
40
+ accessToken: shortAccessToken,
41
+ apiVersion,
42
+ });
43
+ return {
44
+ accessToken: longAccessToken,
45
+ getAccounts: ({ fields }) => {
46
+ return MetaAuth.getAccountsWithFbToken({
47
+ fields,
48
+ accessToken: longAccessToken,
49
+ apiVersion,
50
+ });
51
+ },
52
+ getAdAccounts: () => {
53
+ return MetaAuth.getAdAccounts({
54
+ accessToken: longAccessToken,
55
+ apiVersion,
56
+ });
57
+ },
58
+ };
59
+ }
60
+ static async extendUserAccessToken({ client_id, client_secret, accessToken, apiVersion, }) {
61
+ const api = (0, api_1.generateAxiosInstance)({ apiVersion });
62
+ const response = await api.get("/oauth/access_token", {
63
+ params: {
64
+ grant_type: "fb_exchange_token",
65
+ client_id,
66
+ client_secret,
67
+ fb_exchange_token: accessToken,
68
+ },
69
+ });
70
+ return response.data.access_token;
71
+ }
72
+ static async getAccountsWithFbToken({ fields, accessToken, apiVersion, }) {
73
+ var _a;
74
+ const api = (0, api_1.generateAxiosInstance)({ apiVersion });
75
+ const allAccounts = [];
76
+ let afterCursor = undefined;
77
+ let hasNextPage = true;
78
+ while (hasNextPage) {
79
+ const response = await api.get(`/me/accounts`, {
80
+ params: {
81
+ access_token: accessToken,
82
+ fields: fields.join(","),
83
+ after: afterCursor,
84
+ },
85
+ });
86
+ const { data, paging } = response.data;
87
+ allAccounts.push(...data);
88
+ afterCursor = (_a = paging === null || paging === void 0 ? void 0 : paging.cursors) === null || _a === void 0 ? void 0 : _a.after;
89
+ hasNextPage = Boolean(afterCursor);
90
+ }
91
+ return allAccounts;
92
+ }
93
+ static async getAccountsWithIgToken({ fields, accessToken, apiVersion, }) {
94
+ const api = (0, api_1.generateAxiosInstance)({ apiVersion, isInstagramApi: true });
95
+ return (await api.get(`/me`, {
96
+ params: {
97
+ access_token: accessToken,
98
+ fields: fields.join(","),
99
+ },
100
+ })).data;
101
+ }
102
+ static async getAdAccounts({ accessToken, apiVersion, }) {
103
+ const api = (0, api_1.generateAxiosInstance)({ apiVersion });
104
+ return (await api.get(`/me/adaccounts`, {
105
+ params: {
106
+ access_token: accessToken,
107
+ },
108
+ })).data.data;
109
+ }
110
+ static async generateIgLongToken({ accessToken, apiVersion, clientSecret, }) {
111
+ const api = (0, api_1.generateAxiosInstance)({ apiVersion, isInstagramApi: true });
112
+ return (await api.get("/access_token", {
113
+ params: {
114
+ client_secret: clientSecret,
115
+ access_token: accessToken,
116
+ grant_type: "ig_exchange_token",
117
+ },
118
+ })).data.access_token;
119
+ }
120
+ static async generateIgRefreshToken({ accessToken, apiVersion, }) {
121
+ const api = (0, api_1.generateAxiosInstance)({ apiVersion, isInstagramApi: true });
122
+ return (await api.get("/refresh_access_token", {
123
+ params: {
124
+ access_token: accessToken,
125
+ grant_type: "ig_refresh_token",
126
+ },
127
+ })).data.access_token;
128
+ }
129
+ }
130
+ exports.MetaAuth = MetaAuth;
131
+ //# sourceMappingURL=meta-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-auth.js","sourceRoot":"","sources":["../../../../src/modules/auth/meta-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const axios_1 = require("axios");
4
+ const meta_auth_1 = require("./meta-auth");
5
+ jest.mock("axios");
6
+ const mockedAxios = axios_1.default;
7
+ describe("Module MetaAuth", () => {
8
+ describe("createAccessToken", () => {
9
+ it("should make a request to /oauth/access_token and return the access token", async () => {
10
+ const requestData = {
11
+ client_id: "test-client-id",
12
+ client_secret: "test-client-secret",
13
+ redirect_uri: "https://example.com/callback",
14
+ apiVersion: "v21.0",
15
+ code: "test-code",
16
+ };
17
+ const mockAccessTokenResponse = {
18
+ data: {
19
+ access_token: "mocked-access-token",
20
+ },
21
+ };
22
+ mockedAxios.create.mockReturnValue(mockedAxios);
23
+ const mockPost = mockedAxios.post.mockResolvedValue(mockAccessTokenResponse);
24
+ const accessToken = await meta_auth_1.MetaAuth.createAccessTokenFb(requestData);
25
+ expect(accessToken).toEqual({
26
+ accessToken: "mocked-access-token",
27
+ getAccounts: expect.any(Function),
28
+ });
29
+ expect(mockedAxios.post).toHaveBeenCalledWith("/oauth/access_token", {
30
+ client_id: requestData.client_id,
31
+ client_secret: requestData.client_secret,
32
+ code: requestData.code,
33
+ redirect_uri: requestData.redirect_uri,
34
+ });
35
+ expect(mockPost).toHaveBeenCalled();
36
+ expect(mockPost).toHaveBeenCalledTimes(1);
37
+ });
38
+ });
39
+ describe("getAccounts", () => {
40
+ it("should make a request to /me/accounts and return the accounts", async () => {
41
+ const requestData = {
42
+ fields: ["id", "name"],
43
+ accessToken: "test-access-token",
44
+ apiVersion: "v21.0",
45
+ };
46
+ const mockGetPageAccountsResponse = {
47
+ data: {
48
+ data: [
49
+ {
50
+ id: "test-page-id",
51
+ name: "Test Page",
52
+ },
53
+ ],
54
+ },
55
+ };
56
+ mockedAxios.create.mockReturnValue(mockedAxios);
57
+ const mockGet = mockedAxios.get.mockResolvedValue(mockGetPageAccountsResponse);
58
+ const accounts = await meta_auth_1.MetaAuth.getAccountsWithFbToken(requestData);
59
+ expect(accounts).toEqual([
60
+ {
61
+ id: "test-page-id",
62
+ name: "Test Page",
63
+ },
64
+ ]);
65
+ expect(mockedAxios.get).toHaveBeenCalledWith("/me/accounts", {
66
+ params: {
67
+ access_token: requestData.accessToken,
68
+ fields: requestData.fields.join(","),
69
+ },
70
+ });
71
+ expect(mockGet).toHaveBeenCalled();
72
+ expect(mockGet).toHaveBeenCalledTimes(1);
73
+ });
74
+ });
75
+ });
76
+ //# sourceMappingURL=meta-auth.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-auth.spec.js","sourceRoot":"","sources":["../../../../src/modules/auth/meta-auth.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ConstructorIng } from "../../interfaces/ing-publish";
2
+ import { IngPublish } from "../publish/ing-publish";
3
+ export declare class IngComments extends IngPublish {
4
+ constructor(constructorIng: ConstructorIng);
5
+ createComment(postId: string, message: string): Promise<string>;
6
+ updateCommentStatus(postId: string, enabled: boolean): Promise<boolean>;
7
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IngComments = void 0;
4
+ const ing_publish_1 = require("../publish/ing-publish");
5
+ class IngComments extends ing_publish_1.IngPublish {
6
+ constructor(constructorIng) {
7
+ super(Object.assign(Object.assign({}, constructorIng), { isInstagramApi: true }));
8
+ }
9
+ async createComment(postId, message) {
10
+ const response = await this.api.post(`/${postId}/comments`, {
11
+ message,
12
+ access_token: this.pageAccessToken,
13
+ });
14
+ return response.data.id;
15
+ }
16
+ async updateCommentStatus(postId, enabled) {
17
+ await this.api.post(`/${postId}`, {}, {
18
+ params: {
19
+ comment_enabled: enabled,
20
+ access_token: this.pageAccessToken,
21
+ },
22
+ });
23
+ return true;
24
+ }
25
+ }
26
+ exports.IngComments = IngComments;
27
+ //# sourceMappingURL=ing-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ing-comments.js","sourceRoot":"","sources":["../../../../src/modules/comments/ing-comments.ts"],"names":[],"mappings":";;;AACA,wDAAoD;AAEpD,MAAa,WAAY,SAAQ,wBAAU;IACzC,YAAY,cAA8B;QACxC,KAAK,iCAAM,cAAc,KAAE,cAAc,EAAE,IAAI,IAAG,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,OAAe;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClC,IAAI,MAAM,WAAW,EACrB;YACE,OAAO;YACP,YAAY,EAAE,IAAI,CAAC,eAAe;SACnC,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC9B,MAAc,EACd,OAAgB;QAEhB,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CACjB,IAAI,MAAM,EAAE,EACZ,EAAE,EACF;YACE,MAAM,EAAE;gBACN,eAAe,EAAE,OAAO;gBACxB,YAAY,EAAE,IAAI,CAAC,eAAe;aACnC;SACF,CACF,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlCD,kCAkCC"}
@@ -0,0 +1,6 @@
1
+ import { ConstructorPage } from "../../interfaces/page-publish";
2
+ import { PagePublish } from "../publish/page-publish";
3
+ export declare class PageComments extends PagePublish {
4
+ constructor(constructorPage: ConstructorPage);
5
+ createComment(postId: string, message: string): Promise<string>;
6
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PageComments = void 0;
4
+ const page_publish_1 = require("../publish/page-publish");
5
+ class PageComments extends page_publish_1.PagePublish {
6
+ constructor(constructorPage) {
7
+ super(constructorPage);
8
+ }
9
+ async createComment(postId, message) {
10
+ const response = await this.api.post(`/${postId}/comments`, {
11
+ message,
12
+ access_token: this.pageAccessToken,
13
+ });
14
+ return response.data.id;
15
+ }
16
+ }
17
+ exports.PageComments = PageComments;
18
+ //# sourceMappingURL=page-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-comments.js","sourceRoot":"","sources":["../../../../src/modules/comments/page-comments.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAEtD,MAAa,YAAa,SAAQ,0BAAW;IAC3C,YAAY,eAAgC;QAC1C,KAAK,CAAC,eAAe,CAAC,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,OAAe;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClC,IAAI,MAAM,WAAW,EACrB;YACE,OAAO;YACP,YAAY,EAAE,IAAI,CAAC,eAAe;SACnC,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B,CAAC;CACF;AAhBD,oCAgBC"}
@@ -0,0 +1,42 @@
1
+ import { ConstructorIng } from "../../interfaces/ing-publish";
2
+ import { IngComments } from "../comments/ing-comments";
3
+ export declare class IngInsights extends IngComments {
4
+ constructor(constructorIng: ConstructorIng);
5
+ private generateSinceAndUntil;
6
+ private generateWhileLoopToGetLikesAndCommentsAndShares;
7
+ getFollowersCountCurrent(): Promise<number>;
8
+ getDayFollowersByDateInterval(startDate: Date, endDate: Date): Promise<{
9
+ [x: string]: number;
10
+ }[]>;
11
+ getDayUnFollowersByDateInterval(startDate: Date, endDate: Date): Promise<{
12
+ [x: string]: {
13
+ follows: 100;
14
+ unfollows: 50;
15
+ };
16
+ }[]>;
17
+ getDayAllViews(startDate: Date, endDate: Date): Promise<{
18
+ [a: string]: number;
19
+ }[]>;
20
+ getDayAllReaches(startDate: Date, endDate: Date): Promise<{
21
+ [x: string]: number;
22
+ }[]>;
23
+ getDayAllLikesInAllPosts(startDate: Date, endDate: Date): Promise<{
24
+ value: number;
25
+ end_time?: string;
26
+ }[]>;
27
+ getDayAllCommentsInAllPosts(startDate: Date, endDate: Date): Promise<{
28
+ value: number;
29
+ end_time?: string;
30
+ }[]>;
31
+ getDayAllSharesInAllPosts(startDate: Date, endDate: Date): Promise<{
32
+ value: number;
33
+ end_time?: string;
34
+ }[]>;
35
+ getTotalLikesInAllPosts(startDate: Date, endDate: Date): Promise<number>;
36
+ getTotalCommentsInAllPosts(startDate: Date, endDate: Date): Promise<number>;
37
+ getTotalSharesInAllPosts(startDate: Date, endDate: Date): Promise<number>;
38
+ getTotalInteractionsInAllPosts(startDate: Date, endDate: Date): Promise<number>;
39
+ getDayEngagementInAllPosts(startDate: Date, endDate: Date): Promise<{
40
+ [a: string]: number;
41
+ }[]>;
42
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IngInsights = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const ing_comments_1 = require("../comments/ing-comments");
6
+ const date_fns_tz_1 = require("date-fns-tz");
7
+ const axios_1 = require("axios");
8
+ class IngInsights extends ing_comments_1.IngComments {
9
+ constructor(constructorIng) {
10
+ super(Object.assign(Object.assign({}, constructorIng), { isInstagramApi: constructorIng.typeToken === "ig" }));
11
+ }
12
+ generateSinceAndUntil(startDate, endDate) {
13
+ const nextDay = (0, date_fns_1.addDays)(endDate, 1);
14
+ return {
15
+ since: (0, date_fns_tz_1.formatInTimeZone)(startDate, "UTC", "yyyy-MM-dd"),
16
+ until: (0, date_fns_tz_1.formatInTimeZone)(nextDay, "UTC", "yyyy-MM-dd"),
17
+ };
18
+ }
19
+ async generateWhileLoopToGetLikesAndCommentsAndShares(startDate, endDate, metric) {
20
+ var _a, _b, _c, _d, _e;
21
+ const results = [];
22
+ let currentDate = startDate;
23
+ while (currentDate <= endDate) {
24
+ const response = await this.api.get(`/${this.ingId}/insights`, {
25
+ params: Object.assign(Object.assign({ metric, period: "day", metric_type: "total_value" }, this.generateSinceAndUntil(currentDate, currentDate)), { access_token: this.pageAccessToken }),
26
+ });
27
+ const value = ((_b = (_a = response.data.data[0]) === null || _a === void 0 ? void 0 : _a.total_value) === null || _b === void 0 ? void 0 : _b.value) || 0;
28
+ const endTime = (_e = (_d = (_c = response.data.data[0]) === null || _c === void 0 ? void 0 : _c.values) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.end_time;
29
+ results.push({ value, end_time: endTime });
30
+ currentDate = (0, date_fns_1.addDays)(currentDate, 1);
31
+ await new Promise((resolve) => setTimeout(resolve, 100));
32
+ }
33
+ return results;
34
+ }
35
+ async getFollowersCountCurrent() {
36
+ return (await this.api.get(`/${this.ingId}`, {
37
+ params: {
38
+ fields: "followers_count",
39
+ access_token: this.pageAccessToken,
40
+ },
41
+ })).data.followers_count;
42
+ }
43
+ async getDayFollowersByDateInterval(startDate, endDate) {
44
+ var _a, _b, _c;
45
+ const response = await this.api.get(`/${this.ingId}/insights`, {
46
+ params: Object.assign(Object.assign({ metric: "follower_count", period: "day" }, this.generateSinceAndUntil(startDate, endDate)), { access_token: this.pageAccessToken }),
47
+ });
48
+ return (_c = (_b = (_a = response.data.data) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.values) === null || _c === void 0 ? void 0 : _c.map((value, index) => ({
49
+ [(0, date_fns_tz_1.formatInTimeZone)((0, date_fns_1.addDays)(startDate, index), "UTC", "yyyy-MM-dd")]: value.value,
50
+ }));
51
+ }
52
+ async getDayUnFollowersByDateInterval(startDate, endDate) {
53
+ var _a, _b, _c;
54
+ const response = await this.api.get(`/${this.ingId}/insights`, {
55
+ params: Object.assign(Object.assign({ metric: "follows_and_unfollows", metric_type: "total_value", period: "day" }, this.generateSinceAndUntil(startDate, endDate)), { access_token: this.pageAccessToken }),
56
+ });
57
+ return (_c = (_b = (_a = response.data.data) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.values) === null || _c === void 0 ? void 0 : _c.map((value, index) => ({
58
+ [(0, date_fns_tz_1.formatInTimeZone)((0, date_fns_1.addDays)(startDate, index), "UTC", "yyyy-MM-dd")]: value.value,
59
+ }));
60
+ }
61
+ async getDayAllViews(startDate, endDate) {
62
+ var _a, _b;
63
+ const days = (0, date_fns_1.differenceInDays)(endDate, startDate);
64
+ const viewsArray = [];
65
+ let next = undefined;
66
+ for (let index = 0; index <= days; index++) {
67
+ const response = next
68
+ ? await axios_1.default.get(next)
69
+ : await this.api.get(`/${this.ingId}/insights`, {
70
+ params: {
71
+ metric: "views",
72
+ metric_type: "total_value",
73
+ period: "day",
74
+ since: (0, date_fns_tz_1.formatInTimeZone)(startDate, "UTC", "yyyy-MM-dd"),
75
+ until: (0, date_fns_tz_1.formatInTimeZone)((0, date_fns_1.addDays)(startDate, 1), "UTC", "yyyy-MM-dd"),
76
+ access_token: this.pageAccessToken,
77
+ },
78
+ });
79
+ const { data, paging } = response.data;
80
+ viewsArray.push({
81
+ [(0, date_fns_tz_1.formatInTimeZone)((0, date_fns_1.addDays)(startDate, index), "UTC", "yyyy-MM-dd")]: Number(((_b = (_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.total_value) === null || _b === void 0 ? void 0 : _b.value) || 0),
82
+ });
83
+ next = paging === null || paging === void 0 ? void 0 : paging.next;
84
+ }
85
+ return viewsArray;
86
+ }
87
+ async getDayAllReaches(startDate, endDate) {
88
+ const response = await this.api.get(`/${this.ingId}/insights`, {
89
+ params: Object.assign(Object.assign({ metric: "reach", period: "day" }, this.generateSinceAndUntil(startDate, endDate)), { access_token: this.pageAccessToken }),
90
+ });
91
+ return response.data.data[0].values.map((value, index) => ({
92
+ [(0, date_fns_tz_1.formatInTimeZone)((0, date_fns_1.addDays)(startDate, index), "UTC", "yyyy-MM-dd")]: value.value,
93
+ }));
94
+ }
95
+ async getDayAllLikesInAllPosts(startDate, endDate) {
96
+ return this.generateWhileLoopToGetLikesAndCommentsAndShares(startDate, endDate, "likes");
97
+ }
98
+ async getDayAllCommentsInAllPosts(startDate, endDate) {
99
+ return this.generateWhileLoopToGetLikesAndCommentsAndShares(startDate, endDate, "comments");
100
+ }
101
+ async getDayAllSharesInAllPosts(startDate, endDate) {
102
+ return this.generateWhileLoopToGetLikesAndCommentsAndShares(startDate, endDate, "shares");
103
+ }
104
+ async getTotalLikesInAllPosts(startDate, endDate) {
105
+ const values = await this.generateWhileLoopToGetLikesAndCommentsAndShares(startDate, endDate, "likes");
106
+ return values.reduce((acc, curr) => acc + curr.value, 0);
107
+ }
108
+ async getTotalCommentsInAllPosts(startDate, endDate) {
109
+ const values = await this.generateWhileLoopToGetLikesAndCommentsAndShares(startDate, endDate, "comments");
110
+ return values.reduce((acc, curr) => acc + curr.value, 0);
111
+ }
112
+ async getTotalSharesInAllPosts(startDate, endDate) {
113
+ const values = await this.generateWhileLoopToGetLikesAndCommentsAndShares(startDate, endDate, "shares");
114
+ return values.reduce((acc, curr) => acc + curr.value, 0);
115
+ }
116
+ async getTotalInteractionsInAllPosts(startDate, endDate) {
117
+ const likes = await this.getTotalLikesInAllPosts(startDate, endDate);
118
+ const comments = await this.getTotalCommentsInAllPosts(startDate, endDate);
119
+ const shares = await this.getTotalSharesInAllPosts(startDate, endDate);
120
+ return likes + comments + shares;
121
+ }
122
+ async getDayEngagementInAllPosts(startDate, endDate) {
123
+ var _a, _b;
124
+ const days = (0, date_fns_1.differenceInDays)(endDate, startDate);
125
+ const engagementArray = [];
126
+ let next = undefined;
127
+ for (let index = 0; index <= days; index++) {
128
+ const response = next
129
+ ? await axios_1.default.get(next)
130
+ : await this.api.get(`/${this.ingId}/insights`, {
131
+ params: {
132
+ metric: "accounts_engaged",
133
+ metric_type: "total_value",
134
+ period: "day",
135
+ since: (0, date_fns_tz_1.formatInTimeZone)(startDate, "UTC", "yyyy-MM-dd"),
136
+ until: (0, date_fns_tz_1.formatInTimeZone)((0, date_fns_1.addDays)(startDate, 1), "UTC", "yyyy-MM-dd"),
137
+ access_token: this.pageAccessToken,
138
+ },
139
+ });
140
+ const { data, paging } = response.data;
141
+ engagementArray.push({
142
+ [(0, date_fns_tz_1.formatInTimeZone)((0, date_fns_1.addDays)(startDate, index), "UTC", "yyyy-MM-dd")]: Number(((_b = (_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.total_value) === null || _b === void 0 ? void 0 : _b.value) || 0),
143
+ });
144
+ next = paging === null || paging === void 0 ? void 0 : paging.next;
145
+ }
146
+ return engagementArray;
147
+ }
148
+ }
149
+ exports.IngInsights = IngInsights;
150
+ //# sourceMappingURL=ing-insights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ing-insights.js","sourceRoot":"","sources":["../../../../src/modules/insights/ing-insights.ts"],"names":[],"mappings":";;;AAOA,uCAAqD;AACrD,2DAAuD;AACvD,6CAA+C;AAC/C,iCAA0B;AAE1B,MAAa,WAAY,SAAQ,0BAAW;IAC1C,YAAY,cAA8B;QACxC,KAAK,iCACA,cAAc,KACjB,cAAc,EAAE,cAAc,CAAC,SAAS,KAAK,IAAI,IACjD,CAAC;IACL,CAAC;IAEO,qBAAqB,CAAC,SAAe,EAAE,OAAa;QAC1D,MAAM,OAAO,GAAG,IAAA,kBAAO,EAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEpC,OAAO;YACL,KAAK,EAAE,IAAA,8BAAgB,EAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;YACvD,KAAK,EAAE,IAAA,8BAAgB,EAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC;SACtD,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,+CAA+C,CAC3D,SAAe,EACf,OAAa,EACb,MAAuC;;QAEvC,MAAM,OAAO,GAA2C,EAAE,CAAC;QAE3D,IAAI,WAAW,GAAG,SAAS,CAAC;QAE5B,OAAO,WAAW,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CACjC,IAAI,IAAI,CAAC,KAAK,WAAW,EACzB;gBACE,MAAM,gCACJ,MAAM,EACN,MAAM,EAAE,KAAK,EACb,WAAW,EAAE,aAAa,IACvB,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,WAAW,CAAC,KACvD,YAAY,EAAE,IAAI,CAAC,eAAe,GACnC;aACF,CACF,CAAC;YAEF,MAAM,KAAK,GAAG,CAAA,MAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,WAAW,0CAAE,KAAK,KAAI,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAA,MAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,MAAM,0CAAG,CAAC,CAAC,0CAAE,QAAQ,CAAC;YAE7D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAE3C,WAAW,GAAG,IAAA,kBAAO,EAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAEtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,wBAAwB;QACnC,OAAO,CACL,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAmC,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;YACrE,MAAM,EAAE;gBACN,MAAM,EAAE,iBAAiB;gBACzB,YAAY,EAAE,IAAI,CAAC,eAAe;aACnC;SACF,CAAC,CACH,CAAC,IAAI,CAAC,eAAe,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,6BAA6B,CAAC,SAAe,EAAE,OAAa;;QACvE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CACjC,IAAI,IAAI,CAAC,KAAK,WAAW,EACzB;YACE,MAAM,gCACJ,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,KAAK,IACV,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,KACjD,YAAY,EAAE,IAAI,CAAC,eAAe,GACnC;SACF,CACF,CAAC;QAEF,OAAO,MAAA,MAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,0CAAG,CAAC,CAAC,0CAAE,MAAM,0CAAE,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7D,CAAC,IAAA,8BAAgB,EAAC,IAAA,kBAAO,EAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,EAChE,KAAK,CAAC,KAAK;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,+BAA+B,CAAC,SAAe,EAAE,OAAa;;QACzE,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,IAAI,CAAC,KAAK,WAAW,EACzB;YACE,MAAM,gCACJ,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,KAAK,IACV,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,KACjD,YAAY,EAAE,IAAI,CAAC,eAAe,GACnC;SACF,CACF,CAAC;QAEJ,OAAO,MAAA,MAAA,MAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,0CAAG,CAAC,CAAC,0CAAE,MAAM,0CAAE,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7D,CAAC,IAAA,8BAAgB,EAAC,IAAA,kBAAO,EAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,EAChE,KAAK,CAAC,KAAK;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,SAAe,EAAE,OAAa;;QACxD,MAAM,IAAI,GAAG,IAAA,2BAAgB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,UAAU,GAA8B,EAAE,CAAC;QACjD,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI;gBACnB,CAAC,CAAC,MAAM,eAAK,CAAC,GAAG,CAAqC,IAAI,CAAC;gBAC3D,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,IAAI,CAAC,KAAK,WAAW,EACzB;oBACE,MAAM,EAAE;wBACN,MAAM,EAAE,OAAO;wBACf,WAAW,EAAE,aAAa;wBAC1B,MAAM,EAAE,KAAK;wBACb,KAAK,EAAE,IAAA,8BAAgB,EAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;wBACvD,KAAK,EAAE,IAAA,8BAAgB,EACrB,IAAA,kBAAO,EAAC,SAAS,EAAE,CAAC,CAAC,EACrB,KAAK,EACL,YAAY,CACb;wBACD,YAAY,EAAE,IAAI,CAAC,eAAe;qBACnC;iBACF,CACF,CAAC;YAEN,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;YAEvC,UAAU,CAAC,IAAI,CAAC;gBACd,CAAC,IAAA,8BAAgB,EAAC,IAAA,kBAAO,EAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,EAChE,MAAM,CAAC,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,WAAW,0CAAE,KAAK,KAAI,CAAC,CAAC;aAC7C,CAAC,CAAC;YAEH,IAAI,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC;QACtB,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,SAAe,EAAE,OAAa;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CACjC,IAAI,IAAI,CAAC,KAAK,WAAW,EACzB;YACE,MAAM,gCACJ,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,KAAK,IACV,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,KACjD,YAAY,EAAE,IAAI,CAAC,eAAe,GACnC;SACF,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACzD,CAAC,IAAA,8BAAgB,EAAC,IAAA,kBAAO,EAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,EAChE,KAAK,CAAC,KAAK;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,SAAe,EAAE,OAAa;QAClE,OAAO,IAAI,CAAC,+CAA+C,CACzD,SAAS,EACT,OAAO,EACP,OAAO,CACR,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,2BAA2B,CAAC,SAAe,EAAE,OAAa;QACrE,OAAO,IAAI,CAAC,+CAA+C,CACzD,SAAS,EACT,OAAO,EACP,UAAU,CACX,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,SAAe,EAAE,OAAa;QACnE,OAAO,IAAI,CAAC,+CAA+C,CACzD,SAAS,EACT,OAAO,EACP,QAAQ,CACT,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,SAAe,EAAE,OAAa;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+CAA+C,CACvE,SAAS,EACT,OAAO,EACP,OAAO,CACR,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,0BAA0B,CAAC,SAAe,EAAE,OAAa;QACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+CAA+C,CACvE,SAAS,EACT,OAAO,EACP,UAAU,CACX,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,SAAe,EAAE,OAAa;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+CAA+C,CACvE,SAAS,EACT,OAAO,EACP,QAAQ,CACT,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,8BAA8B,CAAC,SAAe,EAAE,OAAa;QACxE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEvE,OAAO,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,0BAA0B,CAAC,SAAe,EAAE,OAAa;;QACpE,MAAM,IAAI,GAAG,IAAA,2BAAgB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,eAAe,GAA8B,EAAE,CAAC;QACtD,IAAI,IAAI,GAAuB,SAAS,CAAC;QAEzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI;gBACnB,CAAC,CAAC,MAAM,eAAK,CAAC,GAAG,CAAqC,IAAI,CAAC;gBAC3D,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAChB,IAAI,IAAI,CAAC,KAAK,WAAW,EACzB;oBACE,MAAM,EAAE;wBACN,MAAM,EAAE,kBAAkB;wBAC1B,WAAW,EAAE,aAAa;wBAC1B,MAAM,EAAE,KAAK;wBACb,KAAK,EAAE,IAAA,8BAAgB,EAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC;wBACvD,KAAK,EAAE,IAAA,8BAAgB,EACrB,IAAA,kBAAO,EAAC,SAAS,EAAE,CAAC,CAAC,EACrB,KAAK,EACL,YAAY,CACb;wBACD,YAAY,EAAE,IAAI,CAAC,eAAe;qBACnC;iBACF,CACF,CAAC;YAEN,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;YAEvC,eAAe,CAAC,IAAI,CAAC;gBACnB,CAAC,IAAA,8BAAgB,EAAC,IAAA,kBAAO,EAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,EAChE,MAAM,CAAC,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,WAAW,0CAAE,KAAK,KAAI,CAAC,CAAC;aAC7C,CAAC,CAAC;YAEH,IAAI,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC;QACtB,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAtQD,kCAsQC"}
@@ -0,0 +1,10 @@
1
+ import { Meta } from "../meta";
2
+ import { ConstructorMkt } from "../../interfaces/meta-mkt";
3
+ export declare class MktInsights extends Meta {
4
+ protected readonly adAAccountId: string;
5
+ constructor(constructorMkt: ConstructorMkt);
6
+ private generateSinceAndUntil;
7
+ getDayPaidReaches(startDate: Date, endDate: Date, platform: string): Promise<{
8
+ [x: string]: number;
9
+ }[]>;
10
+ }