nango 0.35.2 → 0.35.4
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.
|
@@ -15,7 +15,7 @@ services:
|
|
|
15
15
|
- nango
|
|
16
16
|
|
|
17
17
|
nango-server:
|
|
18
|
-
image: nangohq/nango-server:0.35.
|
|
18
|
+
image: nangohq/nango-server:0.35.4
|
|
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.35.
|
|
50
|
+
image: nangohq/nango-worker:0.35.4
|
|
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.35.
|
|
3
|
+
"version": "0.35.4",
|
|
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.35.
|
|
26
|
+
"@nangohq/shared": "0.35.4",
|
|
27
27
|
"@vercel/ncc": "^0.36.1",
|
|
28
28
|
"axios": "^1.2.0",
|
|
29
29
|
"byots": "^5.0.0-dev.20221103.1.34",
|
package/dist/integration.ejs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { IntegrationServiceInterface, NangoIntegrationData, NangoSync } from '@nangohq/shared';
|
|
2
|
-
declare class IntegrationService implements IntegrationServiceInterface {
|
|
3
|
-
runScript(syncName: string, _activityLogId: number | undefined, nango: NangoSync, _integrationData: NangoIntegrationData, _environmentId: number, _writeToDb: boolean, isAction: boolean, optionalLoadLocation?: string, input?: object): Promise<any>;
|
|
4
|
-
}
|
|
5
|
-
declare const _default: IntegrationService;
|
|
6
|
-
export default _default;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { localFileService } from '@nangohq/shared';
|
|
2
|
-
class IntegrationService {
|
|
3
|
-
async runScript(syncName, _activityLogId, nango, _integrationData, _environmentId, _writeToDb, isAction, optionalLoadLocation, input) {
|
|
4
|
-
try {
|
|
5
|
-
const script = localFileService.getIntegrationFile(syncName, optionalLoadLocation);
|
|
6
|
-
if (!script) {
|
|
7
|
-
const content = `Unable to find integration file for ${syncName}`;
|
|
8
|
-
console.error(content);
|
|
9
|
-
}
|
|
10
|
-
try {
|
|
11
|
-
let scriptExports;
|
|
12
|
-
eval(`scriptExports = ${script}`);
|
|
13
|
-
if (scriptExports && typeof scriptExports.default === 'function') {
|
|
14
|
-
const results = isAction ? await scriptExports.default(nango, input) : await scriptExports.default(nango);
|
|
15
|
-
return results;
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
const content = `There is no default export that is a function for ${syncName}`;
|
|
19
|
-
console.error(content);
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
catch (err) {
|
|
24
|
-
console.error(err);
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (err) {
|
|
29
|
-
const errorMessage = JSON.stringify(err, ['message', 'name', 'stack'], 2);
|
|
30
|
-
const content = `The script failed to load for ${syncName} with the following error: ${errorMessage}`;
|
|
31
|
-
console.error(content);
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export default new IntegrationService();
|
|
37
|
-
//# sourceMappingURL=integration.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integration.service.js","sourceRoot":"","sources":["../lib/integration.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEjH,MAAM,kBAAkB;IACpB,KAAK,CAAC,SAAS,CACX,QAAgB,EAChB,cAAkC,EAClC,KAAgB,EAChB,gBAAsC,EACtC,cAAsB,EACtB,UAAmB,EACnB,QAAiB,EACjB,oBAA6B,EAC7B,KAAc;QAEd,IAAI;YACA,MAAM,MAAM,GAAkB,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAElG,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,OAAO,GAAG,uCAAuC,QAAQ,EAAE,CAAC;gBAElE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;YAED,IAAI;gBACA,IAAI,aAAkB,CAAC;gBAEvB,IAAI,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;gBAClC,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,UAAU,EAAE;oBAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC1G,OAAO,OAAO,CAAC;iBAClB;qBAAM;oBACH,MAAM,OAAO,GAAG,qDAAqD,QAAQ,EAAE,CAAC;oBAChF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAEvB,OAAO,IAAI,CAAC;iBACf;aACJ;YAAC,OAAO,GAAQ,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnB,OAAO,IAAI,CAAC;aACf;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,iCAAiC,QAAQ,8BAA8B,YAAY,EAAE,CAAC;YAEtG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEvB,OAAO,IAAI,CAAC;SACf;IACL,CAAC;CACJ;AAED,eAAe,IAAI,kBAAkB,EAAE,CAAC"}
|