nango 0.34.10 → 0.35.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.
@@ -0,0 +1,5 @@
1
+ import type { NangoSync, <%= interfaceNames.join(', ') %> } from './<%= interfaceFileName %>';
2
+
3
+ export default async function fetchData(nango: NangoSync): Promise<{<% for (let i = 0; i < mappings.length; i++) { %><%= mappings[i].name %>: <%= mappings[i].type %>[]<% if (i !== mappings.length - 1) { %>, <% } %><% } %>}> {
4
+ // Integration code goes here, be sure to follow the return signature type
5
+ }
@@ -0,0 +1,61 @@
1
+ import type { NangoSync, <%= interfaceNames.join(', ') %> } from './<%= interfaceFileName %>';
2
+
3
+ export default async function fetchData(nango: NangoSync): Promise<{<% for (let i = 0; i < mappings.length; i++) { %><%= mappings[i].name %>: <%= mappings[i].type %>[]<% if (i !== mappings.length - 1) { %>, <% } %><% } %>}> {
4
+
5
+ const repos = await paginate(nango, '/user/repos');
6
+
7
+ for (let repo of repos) {
8
+ let issues = await paginate(nango, `/repos/${repo.owner.login}/${repo.name}/issues`);
9
+
10
+ // Filter out pull requests
11
+ issues = issues.filter(issue => !('pull_request' in issue));
12
+
13
+ const mappedIssues: GithubIssue[] = issues.map(issue => ({
14
+ id: issue.id,
15
+ owner: repo.owner.login,
16
+ repo: repo.name,
17
+ issue_number: issue.number,
18
+ title: issue.title,
19
+ state: issue.state,
20
+ author: issue.user.login,
21
+ author_id: issue.user.id,
22
+ body: issue.body,
23
+ date_created: issue.created_at,
24
+ date_last_modified: issue.updated_at
25
+ }));
26
+
27
+ if (mappedIssues.length > 0) {
28
+ await nango.batchSave<GithubIssue>(mappedIssues, 'GithubIssue');
29
+ await nango.log(`Sent ${mappedIssues.length} issues from ${repo.owner.login}/${repo.name}`);
30
+ }
31
+ }
32
+
33
+ // Return empty array with the model key to indicate success
34
+ return { GithubIssue: [] };
35
+ }
36
+
37
+ async function paginate(nango: NangoSync, endpoint: string) {
38
+ const MAX_PAGE = 100;
39
+
40
+ let results: any[] = [];
41
+ let page = 1;
42
+ while (true) {
43
+ const resp = await nango.get({
44
+ endpoint: endpoint,
45
+ params: {
46
+ limit: `${MAX_PAGE}`,
47
+ page: `${page}`
48
+ }
49
+ });
50
+
51
+ results = results.concat(resp.data);
52
+
53
+ if (resp.data.length == MAX_PAGE) {
54
+ page += 1;
55
+ } else {
56
+ break;
57
+ }
58
+ }
59
+
60
+ return results;
61
+ }
@@ -15,7 +15,7 @@ services:
15
15
  - nango
16
16
 
17
17
  nango-server:
18
- image: nangohq/nango-server:0.34.10
18
+ image: nangohq/nango-server:0.35.0
19
19
  container_name: nango-server
20
20
  environment:
21
21
  - TEMPORAL_ADDRESS=temporal:7233
@@ -47,7 +47,7 @@ services:
47
47
  - nango
48
48
 
49
49
  nango-worker:
50
- image: nangohq/nango-worker:0.34.10
50
+ image: nangohq/nango-worker:0.35.0
51
51
  container_name: nango-worker
52
52
  restart: always
53
53
  ports:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nango",
3
- "version": "0.34.10",
3
+ "version": "0.35.0",
4
4
  "description": "Nango's CLI tool.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -23,7 +23,7 @@
23
23
  "dependencies": {
24
24
  "@babel/traverse": "^7.22.5",
25
25
  "@inquirer/prompts": "^2.3.0",
26
- "@nangohq/shared": "0.34.10",
26
+ "@nangohq/shared": "0.35.0",
27
27
  "@vercel/ncc": "^0.36.1",
28
28
  "axios": "^1.2.0",
29
29
  "byots": "^5.0.0-dev.20221103.1.34",