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,280 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const axios_1 = require("axios");
4
+ const meta_page_1 = require("../meta-page");
5
+ const path = require("node:path");
6
+ const mocks_1 = require("../../__test__/mocks");
7
+ jest.mock("axios");
8
+ const mockedAxios = axios_1.default;
9
+ mockedAxios.create.mockReturnValue(mockedAxios);
10
+ describe("MetaPage", () => {
11
+ let metaPage;
12
+ const pageAccessToken = "dummyAccessToken";
13
+ const pageId = "dummyPageId";
14
+ const apiVersion = "v21.0";
15
+ beforeAll(() => {
16
+ metaPage = new meta_page_1.MetaPage({ pageAccessToken, pageId, apiVersion });
17
+ });
18
+ describe("createPost", () => {
19
+ it("should create a text post without mediaType and without schedule", async () => {
20
+ const post = {
21
+ message: "Test message",
22
+ publishNow: true,
23
+ };
24
+ const mockData = { data: { id: "12345" } };
25
+ mockedAxios.post.mockResolvedValueOnce(mockData);
26
+ const result = await metaPage.createPost(post);
27
+ expect(result).toBe("12345");
28
+ expect(mockedAxios.post).toHaveBeenCalledWith(`/dummyPageId/feed`, {
29
+ access_token: "dummyAccessToken",
30
+ message: "Test message",
31
+ });
32
+ });
33
+ it("should create a text post without mediaType and with schedule", async () => {
34
+ const datePublish = new Date(new Date().setDate(new Date().getDate() + 1));
35
+ const post = {
36
+ message: "Test message",
37
+ publishNow: false,
38
+ datePublish,
39
+ };
40
+ const mockData = { data: { id: "12345" } };
41
+ mockedAxios.post.mockResolvedValueOnce(mockData);
42
+ const result = await metaPage.createPost(post);
43
+ expect(result).toBe("12345");
44
+ expect(mockedAxios.post).toHaveBeenCalledWith(`/dummyPageId/feed`, {
45
+ access_token: "dummyAccessToken",
46
+ message: "Test message",
47
+ published: false,
48
+ scheduled_publish_time: Math.floor(datePublish.getTime() / 1000),
49
+ });
50
+ }, 10000);
51
+ it("should create a photo url post without schedule", async () => {
52
+ const post = {
53
+ message: "Test message",
54
+ publishNow: true,
55
+ mediaType: "photo",
56
+ photos: [
57
+ {
58
+ source: "url",
59
+ value: mocks_1.PHOTO_URL_MOCK,
60
+ },
61
+ ],
62
+ };
63
+ const mockData = { data: { id: "12345" } };
64
+ mockedAxios.post
65
+ .mockResolvedValueOnce(mockData)
66
+ .mockResolvedValueOnce(mockData);
67
+ const result = await metaPage.createPost(post);
68
+ expect(result).toBe("12345");
69
+ expect(mockedAxios.post).toHaveBeenLastCalledWith(`/dummyPageId/feed`, {
70
+ access_token: "dummyAccessToken",
71
+ message: "Test message",
72
+ attached_media: [{ media_fbid: "12345" }],
73
+ });
74
+ }, 10000);
75
+ it("should create a photo url post with schedule", async () => {
76
+ const datePublish = new Date(new Date().setDate(new Date().getDate() + 1));
77
+ const post = {
78
+ message: "Test message",
79
+ publishNow: false,
80
+ datePublish,
81
+ mediaType: "photo",
82
+ photos: [
83
+ {
84
+ source: "url",
85
+ value: mocks_1.PHOTO_URL_MOCK,
86
+ },
87
+ ],
88
+ };
89
+ const mockData = { data: { id: "12345" } };
90
+ mockedAxios.post
91
+ .mockResolvedValueOnce(mockData)
92
+ .mockResolvedValueOnce(mockData);
93
+ const result = await metaPage.createPost(post);
94
+ expect(result).toBe("12345");
95
+ expect(mockedAxios.post).toHaveBeenLastCalledWith(`/dummyPageId/feed`, {
96
+ access_token: "dummyAccessToken",
97
+ message: "Test message",
98
+ attached_media: [{ media_fbid: "12345" }],
99
+ published: false,
100
+ scheduled_publish_time: Math.floor(datePublish.getTime() / 1000),
101
+ });
102
+ }, 10000);
103
+ it("should create a photo path post without schedule", async () => {
104
+ const post = {
105
+ message: "Test message",
106
+ publishNow: true,
107
+ photos: [
108
+ {
109
+ source: "path",
110
+ value: path.resolve(__dirname, "..", "__test__", "mocks", "image.jpeg"),
111
+ },
112
+ ],
113
+ };
114
+ const mockData = { data: { id: "12345" } };
115
+ mockedAxios.post.mockResolvedValueOnce(mockData);
116
+ const result = await metaPage.createPost(post);
117
+ expect(result).toBe("12345");
118
+ });
119
+ it("should create a photo path post with schedule", async () => {
120
+ const datePublish = new Date(new Date().setDate(new Date().getDate() + 1));
121
+ const post = {
122
+ message: "Test message",
123
+ publishNow: false,
124
+ datePublish,
125
+ photos: [
126
+ {
127
+ source: "path",
128
+ value: path.resolve(__dirname, "..", "__test__", "mocks", "image.jpeg"),
129
+ },
130
+ ],
131
+ };
132
+ const mockData = { data: { id: "12345" } };
133
+ mockedAxios.post.mockResolvedValueOnce(mockData);
134
+ const result = await metaPage.createPost(post);
135
+ expect(result).toBe("12345");
136
+ expect(mockedAxios.post).toHaveBeenCalledWith(`/dummyPageId/feed`, {
137
+ access_token: "dummyAccessToken",
138
+ message: "Test message",
139
+ published: false,
140
+ scheduled_publish_time: Math.floor(datePublish.getTime() / 1000),
141
+ });
142
+ });
143
+ it("should create a video url post without schedule", async () => {
144
+ const post = {
145
+ message: "Test message",
146
+ publishNow: true,
147
+ mediaType: "video",
148
+ video: {
149
+ source: "url",
150
+ value: mocks_1.VIDEO_URL_MOCK,
151
+ },
152
+ };
153
+ const mockData = { data: { id: "12345" } };
154
+ mockedAxios.post.mockResolvedValueOnce(mockData);
155
+ const result = await metaPage.createPost(post);
156
+ expect(result).toBe("12345");
157
+ }, 10000);
158
+ it("should create a video url post with schedule", async () => {
159
+ const datePublish = new Date(new Date().setDate(new Date().getDate() + 1));
160
+ const post = {
161
+ message: "Test message",
162
+ publishNow: false,
163
+ datePublish,
164
+ mediaType: "video",
165
+ video: {
166
+ source: "url",
167
+ value: mocks_1.VIDEO_URL_MOCK,
168
+ },
169
+ };
170
+ const mockData = { data: { id: "12345" } };
171
+ mockedAxios.post.mockResolvedValueOnce(mockData);
172
+ const result = await metaPage.createPost(post);
173
+ expect(result).toBe("12345");
174
+ }, 10000);
175
+ it("should error if publishNow is false and datePublish not provided", async () => {
176
+ const post = {
177
+ message: "Test message",
178
+ publishNow: false,
179
+ };
180
+ await expect(metaPage.createPost(post)).rejects.toThrowError("You must provide the datePublish if you don't want to publish now.");
181
+ });
182
+ it("should error if publishNow is false and datePublish is bellow the current date", async () => {
183
+ const post = {
184
+ message: "Test message",
185
+ publishNow: false,
186
+ datePublish: new Date(new Date().setDate(new Date().getDate() - 1)),
187
+ };
188
+ await expect(metaPage.createPost(post)).rejects.toThrowError("The datePublish must be between 10 minutes from now and 6 months from now.");
189
+ });
190
+ });
191
+ describe("deletePost", () => {
192
+ it("should delete a post", async () => {
193
+ const postId = "12345";
194
+ const mockData = { data: { success: true } };
195
+ mockedAxios.delete.mockResolvedValueOnce(mockData);
196
+ const result = await metaPage.deletePost(postId);
197
+ expect(result).toBe(true);
198
+ expect(mockedAxios.delete).toHaveBeenCalledWith(`/12345`, {
199
+ params: {
200
+ access_token: "dummyAccessToken",
201
+ },
202
+ });
203
+ });
204
+ });
205
+ describe("getAllPosts", () => {
206
+ it("should get all posts", async () => {
207
+ const mockData = { data: { data: [{ id: "12345" }] } };
208
+ mockedAxios.get.mockResolvedValueOnce(mockData);
209
+ const result = await metaPage.getAllPosts();
210
+ expect(result).toStrictEqual([{ id: "12345" }]);
211
+ expect(mockedAxios.get).toHaveBeenCalledWith(`/dummyPageId/feed`, {
212
+ params: {
213
+ access_token: "dummyAccessToken",
214
+ },
215
+ });
216
+ });
217
+ });
218
+ describe("createStories", () => {
219
+ it("should create a story with image", async () => {
220
+ const stories = {
221
+ source: "url",
222
+ mediaType: "photo",
223
+ url: mocks_1.PHOTO_URL_MOCK,
224
+ };
225
+ const mockData = { data: { id: "12345" } };
226
+ const mockData2 = { data: { post_id: "12345" } };
227
+ mockedAxios.post
228
+ .mockResolvedValueOnce(mockData)
229
+ .mockResolvedValueOnce(mockData2);
230
+ const result = await metaPage.createStories(stories);
231
+ expect(result).toBe("12345");
232
+ expect(mockedAxios.post).toHaveBeenLastCalledWith(`/dummyPageId/photo_stories`, {
233
+ access_token: "dummyAccessToken",
234
+ photo_id: "12345",
235
+ });
236
+ }, 10000);
237
+ it.skip("should create a story with video", async () => {
238
+ const stories = {
239
+ source: "url",
240
+ mediaType: "video",
241
+ url: mocks_1.VIDEO_URL_MOCK,
242
+ };
243
+ const mockDataUpload = {
244
+ data: { video_id: "12345", upload_url: "www.example.com" },
245
+ };
246
+ const mockData = { data: { post_id: "12345" } };
247
+ const mockedFetch = jest.spyOn(global, "fetch");
248
+ mockedFetch
249
+ .mockResolvedValueOnce(null);
250
+ mockedAxios.post
251
+ .mockResolvedValueOnce(mockDataUpload)
252
+ .mockResolvedValueOnce(mockData);
253
+ const result = await metaPage.createStories(stories);
254
+ expect(result).toBe("12345");
255
+ expect(mockedAxios.post).toHaveBeenLastCalledWith(`/dummyPageId/video_stories`, {
256
+ access_token: "dummyAccessToken",
257
+ video_id: "12345",
258
+ });
259
+ }, 10000);
260
+ it("should create a story with image from path", async () => {
261
+ const stories = {
262
+ source: "path",
263
+ mediaType: "photo",
264
+ path: path.resolve(__dirname, "..", "__test__", "mocks", "image.jpeg"),
265
+ };
266
+ const mockDataUpload = {
267
+ data: {
268
+ id: "12345",
269
+ },
270
+ };
271
+ const mockData = { data: { post_id: "12345" } };
272
+ mockedAxios.post
273
+ .mockResolvedValueOnce(mockDataUpload)
274
+ .mockResolvedValueOnce(mockData);
275
+ const result = await metaPage.createStories(stories);
276
+ expect(result).toBe("12345");
277
+ });
278
+ });
279
+ });
280
+ //# sourceMappingURL=page-publish.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-publish.spec.js","sourceRoot":"","sources":["../../../../src/modules/publish/page-publish.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Meta } from "../meta";
2
+ import { ConstructorMain } from "../../interfaces/meta";
3
+ import { GetInstagramDiscoveryResponse } from "../../interfaces/meta-response";
4
+ export declare class MetaUtils extends Meta {
5
+ constructor(data: ConstructorMain);
6
+ getTimePageTokenExpires(): Promise<import("axios").AxiosResponse<any, any>>;
7
+ static getInstagramProfileByUsername(username: string, userId: string, token: string): Promise<GetInstagramDiscoveryResponse>;
8
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetaUtils = void 0;
4
+ const meta_1 = require("../meta");
5
+ const axios_1 = require("axios");
6
+ class MetaUtils extends meta_1.Meta {
7
+ constructor(data) {
8
+ super(data);
9
+ }
10
+ async getTimePageTokenExpires() {
11
+ return this.api.get("debug_token", {
12
+ params: {
13
+ input_token: this.pageAccessToken,
14
+ access_token: this.pageAccessToken,
15
+ },
16
+ });
17
+ }
18
+ static async getInstagramProfileByUsername(username, userId, token) {
19
+ return (await axios_1.default.get(`https://graph.facebook.com/${userId}`, {
20
+ params: {
21
+ fields: `business_discovery.username(${username}){followers_count,media_count,profile_picture_url.as(picture)}`,
22
+ access_token: token,
23
+ },
24
+ })).data;
25
+ }
26
+ }
27
+ exports.MetaUtils = MetaUtils;
28
+ //# sourceMappingURL=meta-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-utils.js","sourceRoot":"","sources":["../../../../src/modules/utils/meta-utils.ts"],"names":[],"mappings":";;;AAAA,kCAA+B;AAE/B,iCAA0B;AAG1B,MAAa,SAAU,SAAQ,WAAI;IACjC,YAAY,IAAqB;QAC/B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,uBAAuB;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE;YACjC,MAAM,EAAE;gBACN,WAAW,EAAE,IAAI,CAAC,eAAe;gBACjC,YAAY,EAAE,IAAI,CAAC,eAAe;aACnC;SACF,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAC/C,QAAgB,EAChB,MAAc,EACd,KAAa;QAEb,OAAO,CACL,MAAM,eAAK,CAAC,GAAG,CACb,8BAA8B,MAAM,EAAE,EACtC;YACE,MAAM,EAAE;gBACN,MAAM,EAAE,+BAA+B,QAAQ,gEAAgE;gBAC/G,YAAY,EAAE,KAAK;aACpB;SACF,CACF,CACF,CAAC,IAAI,CAAC;IACT,CAAC;CACF;AA/BD,8BA+BC"}
@@ -0,0 +1,8 @@
1
+ import { ApiVersion } from "@/interfaces/meta-auth";
2
+ export interface IGenerateAxiosInstance {
3
+ apiVersion: ApiVersion;
4
+ isVideoApi?: boolean;
5
+ isInstagramApi?: boolean;
6
+ isInstagramAccessToken?: boolean;
7
+ }
8
+ export declare const generateAxiosInstance: ({ apiVersion, isInstagramAccessToken, isInstagramApi, isVideoApi, }: IGenerateAxiosInstance) => import("axios").AxiosInstance;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateAxiosInstance = void 0;
4
+ const axios_1 = require("axios");
5
+ const http = require("node:http");
6
+ const generateAxiosInstance = ({ apiVersion, isInstagramAccessToken, isInstagramApi, isVideoApi, }) => {
7
+ const timeout = 60000;
8
+ if (isVideoApi) {
9
+ return axios_1.default.create({
10
+ baseURL: `https://graph-video.facebook.com/${apiVersion}`,
11
+ timeout,
12
+ httpAgent: new http.Agent({ keepAlive: true }),
13
+ });
14
+ }
15
+ else if (isInstagramAccessToken) {
16
+ return axios_1.default.create({
17
+ baseURL: `https://api.instagram.com`,
18
+ timeout,
19
+ httpAgent: new http.Agent({ keepAlive: true }),
20
+ });
21
+ }
22
+ else if (isInstagramApi) {
23
+ return axios_1.default.create({
24
+ baseURL: `https://graph.instagram.com/${apiVersion}`,
25
+ timeout,
26
+ httpAgent: new http.Agent({ keepAlive: true }),
27
+ });
28
+ }
29
+ return axios_1.default.create({
30
+ baseURL: `https://graph.facebook.com/${apiVersion}`,
31
+ timeout,
32
+ httpAgent: new http.Agent({ keepAlive: true }),
33
+ });
34
+ };
35
+ exports.generateAxiosInstance = generateAxiosInstance;
36
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/utils/api.ts"],"names":[],"mappings":";;;AACA,iCAA0B;AAC1B,kCAAkC;AAS3B,MAAM,qBAAqB,GAAG,CAAC,EACpC,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,UAAU,GACa,EAAE,EAAE;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC;IAEtB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,eAAK,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,oCAAoC,UAAU,EAAE;YACzD,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,sBAAsB,EAAE,CAAC;QAClC,OAAO,eAAK,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,2BAA2B;YACpC,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,OAAO,eAAK,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,+BAA+B,UAAU,EAAE;YACpD,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,eAAK,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,8BAA8B,UAAU,EAAE;QACnD,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC,CAAC;AAjCW,QAAA,qBAAqB,yBAiChC"}