nango 0.16.0 → 0.16.2-beta
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/dist/entry.js +89 -0
- package/dist/index.js +214 -55
- package/dist/index.js.map +1 -1
- package/dist/integration.ejs +11 -0
- package/dist/migration.ejs +35 -0
- package/dist/sync.d.ts +12 -0
- package/dist/sync.js +198 -0
- package/dist/sync.js.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.js +130 -0
- package/dist/utils.js.map +1 -0
- package/package.json +27 -3
package/dist/entry.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
var node_1 = require("@nangohq/node");
|
|
55
|
+
// TODO this will be a local interface created by the config yaml file
|
|
56
|
+
//import { ticket } from '@nangohq/models';
|
|
57
|
+
var GithubTicketSync = /** @class */ (function (_super) {
|
|
58
|
+
__extends(GithubTicketSync, _super);
|
|
59
|
+
function GithubTicketSync() {
|
|
60
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
61
|
+
}
|
|
62
|
+
//async fetchData(nango: NangoHelper): { [ticket.name]: [ticket.type] } {
|
|
63
|
+
GithubTicketSync.prototype.fetchData = function (nango) {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
65
|
+
var issues, tickets;
|
|
66
|
+
return __generator(this, function (_a) {
|
|
67
|
+
switch (_a.label) {
|
|
68
|
+
case 0: return [4 /*yield*/, nango.get({
|
|
69
|
+
endpoint: 'repos/NangoHQ/nango/issues'
|
|
70
|
+
})];
|
|
71
|
+
case 1:
|
|
72
|
+
issues = _a.sent();
|
|
73
|
+
tickets = issues.map(function (issue) { return ({
|
|
74
|
+
id: issue.id,
|
|
75
|
+
title: issue.title,
|
|
76
|
+
description: issue.body,
|
|
77
|
+
status: issue.state,
|
|
78
|
+
author: {
|
|
79
|
+
avatar_url: issue.user.avatar_url
|
|
80
|
+
}
|
|
81
|
+
}); });
|
|
82
|
+
return [2 /*return*/, tickets];
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
return GithubTicketSync;
|
|
88
|
+
}(node_1.NangoSync));
|
|
89
|
+
exports.default = GithubSync;
|
package/dist/index.js
CHANGED
|
@@ -4,24 +4,40 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Command } from 'commander';
|
|
6
6
|
import axios from 'axios';
|
|
7
|
-
import
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import figlet from 'figlet';
|
|
9
|
+
import fs from 'fs';
|
|
10
|
+
import path, { dirname } from 'path';
|
|
11
|
+
import { fileURLToPath } from 'url';
|
|
12
|
+
import yaml from 'js-yaml';
|
|
13
|
+
import ejs from 'ejs';
|
|
14
|
+
import glob from 'glob';
|
|
15
|
+
import byots from 'byots';
|
|
16
|
+
import { build } from 'esbuild';
|
|
17
|
+
import { spawn } from 'child_process';
|
|
18
|
+
import * as dotenv from 'dotenv';
|
|
19
|
+
import { loadSimplifiedConfig } from '@nangohq/shared';
|
|
20
|
+
import { init, run, tscWatch, configWatch } from './sync.js';
|
|
21
|
+
import { checkEnvVars, enrichHeaders, httpsAgent, getConnection, configFile, NANGO_INTEGRATIONS_LOCATION, buildInterfaces } from './utils.js';
|
|
8
22
|
const program = new Command();
|
|
9
23
|
let hostport = process.env['NANGO_HOSTPORT'] || 'http://localhost:3003';
|
|
10
|
-
|
|
11
|
-
|
|
24
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
25
|
+
const __dirname = dirname(__filename);
|
|
12
26
|
if (hostport.slice(-1) === '/') {
|
|
13
27
|
hostport = hostport.slice(0, -1);
|
|
14
28
|
}
|
|
29
|
+
dotenv.config();
|
|
15
30
|
// Test from the package root (/packages/cli) with 'node dist/index.js'
|
|
16
31
|
program
|
|
17
32
|
.name('nango')
|
|
18
33
|
.description(`A CLI tool to configure Nango:\n- By defaults, the CLI assumes that you are running Nango on localhost:3003\n- For Nango Cloud: Set the NANGO_HOSTPORT & NANGO_SECRET_KEY env variables\n- For Self-Hosting: set the NANGO_HOSTPORT env variable`);
|
|
34
|
+
program.addHelpText('before', chalk.green(figlet.textSync('Nango CLI')));
|
|
19
35
|
program
|
|
20
36
|
.command('config:list')
|
|
21
37
|
.description('List all provider configurations.')
|
|
22
38
|
.action(async function () {
|
|
23
39
|
checkEnvVars();
|
|
24
|
-
|
|
40
|
+
const url = hostport + '/config';
|
|
25
41
|
await axios
|
|
26
42
|
.get(url, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
27
43
|
.then((res) => {
|
|
@@ -39,7 +55,7 @@ program
|
|
|
39
55
|
.argument('<provider_config_key>', 'The unique key of the provider configuration (chosen by you upon creating this provider configuration).')
|
|
40
56
|
.action(async function () {
|
|
41
57
|
checkEnvVars();
|
|
42
|
-
|
|
58
|
+
const url = hostport + `/config/${this.args[0]}`;
|
|
43
59
|
await axios
|
|
44
60
|
.get(url, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
45
61
|
.then((res) => {
|
|
@@ -59,14 +75,14 @@ program
|
|
|
59
75
|
.argument('<oauth_scopes>', 'The OAuth Scopes obtained from the API provider (comma-separated).')
|
|
60
76
|
.action(async function () {
|
|
61
77
|
checkEnvVars();
|
|
62
|
-
|
|
78
|
+
const body = {
|
|
63
79
|
provider_config_key: this.args[0],
|
|
64
80
|
provider: this.args[1],
|
|
65
81
|
oauth_client_id: this.args[2],
|
|
66
82
|
oauth_client_secret: this.args[3],
|
|
67
83
|
oauth_scopes: this.args[4]
|
|
68
84
|
};
|
|
69
|
-
|
|
85
|
+
const url = hostport + `/config`;
|
|
70
86
|
await axios
|
|
71
87
|
.post(url, body, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
72
88
|
.then((_) => {
|
|
@@ -86,14 +102,14 @@ program
|
|
|
86
102
|
.argument('<oauth_scopes>', 'The OAuth Scopes obtained from the API provider (comma-separated).')
|
|
87
103
|
.action(async function () {
|
|
88
104
|
checkEnvVars();
|
|
89
|
-
|
|
105
|
+
const body = {
|
|
90
106
|
provider_config_key: this.args[0],
|
|
91
107
|
provider: this.args[1],
|
|
92
108
|
oauth_client_id: this.args[2],
|
|
93
109
|
oauth_client_secret: this.args[3],
|
|
94
110
|
oauth_scopes: this.args[4]
|
|
95
111
|
};
|
|
96
|
-
|
|
112
|
+
const url = hostport + `/config`;
|
|
97
113
|
await axios
|
|
98
114
|
.put(url, body, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
99
115
|
.then((_) => {
|
|
@@ -109,7 +125,7 @@ program
|
|
|
109
125
|
.argument('<provider_config_key>', 'The unique key of the provider configuration (chosen by you upon creating this provider configuration).')
|
|
110
126
|
.action(async function () {
|
|
111
127
|
checkEnvVars();
|
|
112
|
-
|
|
128
|
+
const url = hostport + `/config/${this.args[0]}`;
|
|
113
129
|
await axios
|
|
114
130
|
.delete(url, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
115
131
|
.then((_) => {
|
|
@@ -126,15 +142,15 @@ program
|
|
|
126
142
|
.argument('<connection_id>', 'The ID of the Connection.')
|
|
127
143
|
.action(async function () {
|
|
128
144
|
checkEnvVars();
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
.
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
145
|
+
const [providerConfigKey, connectionId] = this.args;
|
|
146
|
+
if (!providerConfigKey) {
|
|
147
|
+
console.log(chalk.red('Please provide a provider config key.'));
|
|
148
|
+
}
|
|
149
|
+
if (!connectionId) {
|
|
150
|
+
console.log(chalk.red('Please provide a connection ID.'));
|
|
151
|
+
}
|
|
152
|
+
const connection = await getConnection(providerConfigKey, connectionId);
|
|
153
|
+
console.log(connection);
|
|
138
154
|
});
|
|
139
155
|
program
|
|
140
156
|
.command('token:get')
|
|
@@ -143,7 +159,7 @@ program
|
|
|
143
159
|
.argument('<connection_id>', 'The ID of the Connection.')
|
|
144
160
|
.action(async function () {
|
|
145
161
|
checkEnvVars();
|
|
146
|
-
|
|
162
|
+
const url = hostport + `/connection/${this.args[1]}`;
|
|
147
163
|
await axios
|
|
148
164
|
.get(url, { params: { provider_config_key: this.args[0] }, headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
149
165
|
.then((response) => {
|
|
@@ -167,7 +183,7 @@ program
|
|
|
167
183
|
.description('List connections without credentials.')
|
|
168
184
|
.action(async function () {
|
|
169
185
|
checkEnvVars();
|
|
170
|
-
|
|
186
|
+
const url = hostport + `/connection`;
|
|
171
187
|
await axios
|
|
172
188
|
.get(url, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
173
189
|
.then((res) => {
|
|
@@ -184,7 +200,7 @@ program
|
|
|
184
200
|
.argument('<connection_id>', 'The ID of the Connection.')
|
|
185
201
|
.action(async function () {
|
|
186
202
|
checkEnvVars();
|
|
187
|
-
|
|
203
|
+
const url = hostport + `/connection/${this.args[1]}`;
|
|
188
204
|
await axios
|
|
189
205
|
.delete(url, { params: { provider_config_key: this.args[0] }, headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
190
206
|
.then((_) => {
|
|
@@ -194,41 +210,184 @@ program
|
|
|
194
210
|
console.log(`❌ ${err.response?.data.error || JSON.stringify(err)}`);
|
|
195
211
|
});
|
|
196
212
|
});
|
|
197
|
-
program
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
213
|
+
program
|
|
214
|
+
.command('init')
|
|
215
|
+
.alias('i')
|
|
216
|
+
.description('Initialize a new Nango project')
|
|
217
|
+
.action(() => {
|
|
218
|
+
init();
|
|
219
|
+
});
|
|
220
|
+
program
|
|
221
|
+
.command('generate')
|
|
222
|
+
.alias('g')
|
|
223
|
+
.description('Generate a new Nango integration')
|
|
224
|
+
.action(() => {
|
|
225
|
+
const templateContents = fs.readFileSync(path.resolve(__dirname, './integration.ejs'), 'utf8');
|
|
226
|
+
const cwd = process.cwd();
|
|
227
|
+
const configContents = fs.readFileSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${configFile}`), 'utf8');
|
|
228
|
+
const configData = yaml.load(configContents);
|
|
229
|
+
const { integrations } = configData;
|
|
230
|
+
const { models } = configData;
|
|
231
|
+
const interfaceDefinitions = buildInterfaces(models);
|
|
232
|
+
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`, interfaceDefinitions.join('\n'));
|
|
233
|
+
for (let i = 0; i < Object.keys(integrations).length; i++) {
|
|
234
|
+
const providerConfigKey = Object.keys(integrations)[i];
|
|
235
|
+
const syncObject = integrations[providerConfigKey];
|
|
236
|
+
const syncNames = Object.keys(syncObject);
|
|
237
|
+
for (let k = 0; k < syncNames.length; k++) {
|
|
238
|
+
const syncName = syncNames[k];
|
|
239
|
+
const syncData = syncObject[syncName];
|
|
240
|
+
const { returns: models } = syncData;
|
|
241
|
+
const syncNameCamel = syncName
|
|
242
|
+
.split('-')
|
|
243
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
244
|
+
.join('');
|
|
245
|
+
const rendered = ejs.render(templateContents, {
|
|
246
|
+
syncName: syncNameCamel,
|
|
247
|
+
interfaceNames: models.map((model) => {
|
|
248
|
+
const singularModel = model?.charAt(model.length - 1) === 's' ? model.slice(0, -1) : model;
|
|
249
|
+
return `${singularModel.charAt(0).toUpperCase()}${singularModel.slice(1)}`;
|
|
250
|
+
}),
|
|
251
|
+
mappings: models.map((model) => {
|
|
252
|
+
const singularModel = model.charAt(model.length - 1) === 's' ? model.slice(0, -1) : model;
|
|
253
|
+
return {
|
|
254
|
+
name: model,
|
|
255
|
+
type: `${singularModel.charAt(0).toUpperCase()}${singularModel.slice(1)}`
|
|
256
|
+
};
|
|
257
|
+
})
|
|
258
|
+
});
|
|
259
|
+
if (!fs.existsSync(`${NANGO_INTEGRATIONS_LOCATION}/${syncName}.ts`)) {
|
|
260
|
+
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/${syncName}.ts`, rendered);
|
|
261
|
+
}
|
|
225
262
|
}
|
|
226
|
-
|
|
227
|
-
|
|
263
|
+
}
|
|
264
|
+
console.log(chalk.green(`Integration files have been created`));
|
|
265
|
+
});
|
|
266
|
+
program
|
|
267
|
+
.command('tsc')
|
|
268
|
+
.description('Work locally to add integration code')
|
|
269
|
+
.action(() => {
|
|
270
|
+
const cwd = process.cwd();
|
|
271
|
+
const integrationFiles = glob.sync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/*.ts`));
|
|
272
|
+
for (const file of integrationFiles) {
|
|
273
|
+
const tsFileContent = fs.readFileSync(file, 'utf-8');
|
|
274
|
+
const compilerOptions = {
|
|
275
|
+
target: byots.ScriptTarget.ES2022,
|
|
276
|
+
module: byots.ModuleKind.ES2022
|
|
277
|
+
};
|
|
278
|
+
const result = byots.transpileModule(tsFileContent, {
|
|
279
|
+
compilerOptions,
|
|
280
|
+
fileName: file
|
|
281
|
+
});
|
|
282
|
+
const fileNameWithExt = path.basename(file);
|
|
283
|
+
const integrationName = path.parse(fileNameWithExt).name;
|
|
284
|
+
const jsFileContent = result.outputText;
|
|
285
|
+
const distDir = path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist`);
|
|
286
|
+
if (!fs.existsSync(distDir)) {
|
|
287
|
+
fs.mkdirSync(distDir);
|
|
228
288
|
}
|
|
289
|
+
fs.writeFileSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${integrationName}.js`), jsFileContent);
|
|
229
290
|
}
|
|
230
|
-
|
|
231
|
-
|
|
291
|
+
});
|
|
292
|
+
program
|
|
293
|
+
.command('tsc:watch')
|
|
294
|
+
.description('Watch tsc files while developing. Set --no-compile-interfaces to disable watching the config file')
|
|
295
|
+
.option('--no-compile-interfaces', `Watch the ${configFile} and recompile the interfaces on change`, true)
|
|
296
|
+
.action(async function () {
|
|
297
|
+
const { compileInterfaces } = this.opts();
|
|
298
|
+
tscWatch();
|
|
299
|
+
if (compileInterfaces) {
|
|
300
|
+
configWatch();
|
|
232
301
|
}
|
|
233
|
-
}
|
|
302
|
+
});
|
|
303
|
+
program
|
|
304
|
+
.command('dev')
|
|
305
|
+
.alias('develop')
|
|
306
|
+
.alias('watch')
|
|
307
|
+
.description('Work locally to add integration code')
|
|
308
|
+
.action(() => {
|
|
309
|
+
const cwd = process.cwd();
|
|
310
|
+
tscWatch();
|
|
311
|
+
configWatch();
|
|
312
|
+
// look into
|
|
313
|
+
// https://www.npmjs.com/package/docker-compose
|
|
314
|
+
spawn('docker', ['compose', '-f', 'node_modules/nango/docker/docker-compose.yaml', '--project-directory', '.', 'up', '--build'], {
|
|
315
|
+
cwd,
|
|
316
|
+
detached: false,
|
|
317
|
+
stdio: 'inherit'
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
program
|
|
321
|
+
.command('deploy')
|
|
322
|
+
.alias('d')
|
|
323
|
+
.description('Deploy a Nango integration')
|
|
324
|
+
.action(async () => {
|
|
325
|
+
const cwd = process.cwd();
|
|
326
|
+
const integrationFiles = glob.sync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/*.ts`));
|
|
327
|
+
for (const file of integrationFiles) {
|
|
328
|
+
const tsFileContent = fs.readFileSync(file, 'utf-8');
|
|
329
|
+
const compilerOptions = {
|
|
330
|
+
target: byots.ScriptTarget.ES2022,
|
|
331
|
+
module: byots.ModuleKind.ES2022
|
|
332
|
+
};
|
|
333
|
+
const result = byots.transpileModule(tsFileContent, {
|
|
334
|
+
compilerOptions,
|
|
335
|
+
fileName: file
|
|
336
|
+
});
|
|
337
|
+
const jsFileContent = result.outputText;
|
|
338
|
+
// not needed
|
|
339
|
+
const minifiedResult = await build({
|
|
340
|
+
stdin: {
|
|
341
|
+
contents: jsFileContent,
|
|
342
|
+
resolveDir: __dirname,
|
|
343
|
+
sourcefile: file.replace(/\.ts$/, '.js'),
|
|
344
|
+
loader: 'js'
|
|
345
|
+
},
|
|
346
|
+
write: false,
|
|
347
|
+
allowOverwrite: true,
|
|
348
|
+
minify: true
|
|
349
|
+
});
|
|
350
|
+
const snippet = minifiedResult?.outputFiles[0]?.text;
|
|
351
|
+
const fileNameWithExt = path.basename(file);
|
|
352
|
+
const integrationName = path.parse(fileNameWithExt).name;
|
|
353
|
+
// write the file to the integration folder
|
|
354
|
+
fs.writeFileSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${integrationName}.js`), jsFileContent);
|
|
355
|
+
const body = {
|
|
356
|
+
integrationName,
|
|
357
|
+
snippet,
|
|
358
|
+
provider: 'github' // TODO, grab this from the yaml config
|
|
359
|
+
};
|
|
360
|
+
const url = hostport + `/sync-config`;
|
|
361
|
+
await axios
|
|
362
|
+
.post(url, body, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
363
|
+
.then((_) => {
|
|
364
|
+
console.log('\n\n✅ Successfully created a new sync configuration!\n\n');
|
|
365
|
+
})
|
|
366
|
+
.catch((err) => {
|
|
367
|
+
console.log(`❌ ${err.response?.data.error || JSON.stringify(err)}`);
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
program
|
|
372
|
+
.command('sync:config.check')
|
|
373
|
+
.alias('scc')
|
|
374
|
+
.description('Verify the parsed sync config and output the object for verification')
|
|
375
|
+
.action(async () => {
|
|
376
|
+
const cwd = process.cwd();
|
|
377
|
+
const config = loadSimplifiedConfig(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${configFile}`));
|
|
378
|
+
console.log(chalk.green(JSON.stringify(config, null, 2)));
|
|
379
|
+
});
|
|
380
|
+
program
|
|
381
|
+
.command('sync:run')
|
|
382
|
+
.alias('sr')
|
|
383
|
+
.description('Run the sync process to help with debugging')
|
|
384
|
+
.option('-s, --sync <syncName>', 'The name of the sync (e.g. account-sync).')
|
|
385
|
+
.option('-p, --provider <provider_config_key>', 'The unique key of the provider configuration (chosen by you upon creating this provider configuration).')
|
|
386
|
+
.option('-c, --connection <connection_id>', 'The ID of the Connection.')
|
|
387
|
+
.option('-l, --lastSyncDate [lastSyncDate]', 'Optional: last sync date to retrieve records greater than this date')
|
|
388
|
+
.action(async function () {
|
|
389
|
+
checkEnvVars();
|
|
390
|
+
run(this.args, this.opts());
|
|
391
|
+
});
|
|
392
|
+
program.parse();
|
|
234
393
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NangoSync, NangoHelper } from '@nangohq/node';
|
|
2
|
+
import { <%= interfaceNames.join(', ') %> } from './models';
|
|
3
|
+
|
|
4
|
+
class <%= syncName %> extends NangoSync {
|
|
5
|
+
override async fetchData(nango: NangoHelper): Promise<{<% for (let i = 0; i < mappings.length; i++) { %><%= mappings[i].name %>: <%= mappings[i].type %>[]<% if (i !== mappings.length - 1) { %>, <% } %><% } %>}> {
|
|
6
|
+
const providerConfigKey = '<%= providerConfigKey %>';
|
|
7
|
+
// Rest of the integration code goes here.
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default <%= syncName %>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const tableName = '<%= tableName %>'';
|
|
2
|
+
|
|
3
|
+
exports.up = function (knex, _) {
|
|
4
|
+
return knex.schema.withSchema('nango').createTable(tableName, function (table) {
|
|
5
|
+
return knex.schema.withSchema('nango').createTable(tableName, function (table) {
|
|
6
|
+
table.increments('id').primary();
|
|
7
|
+
<% data.forEach(function(model) { %>
|
|
8
|
+
<% Object.keys(model).forEach(function(prop) { %>
|
|
9
|
+
<% if (prop === 'id') { return; } %>
|
|
10
|
+
<% const type = model[prop]; %>
|
|
11
|
+
<% switch (type) { %>
|
|
12
|
+
<% case 'integer': %>
|
|
13
|
+
table.integer('<%= prop %>');
|
|
14
|
+
<% break; %>
|
|
15
|
+
<% case 'char': %>
|
|
16
|
+
table.string('<%= prop %>', 255);
|
|
17
|
+
<% break; %>
|
|
18
|
+
<% case 'text': %>
|
|
19
|
+
table.text('<%= prop %>');
|
|
20
|
+
<% break; %>
|
|
21
|
+
<% case 'timestamp': %>
|
|
22
|
+
table.timestamp('<%= prop %>');
|
|
23
|
+
<% break; %>
|
|
24
|
+
<% default: %>
|
|
25
|
+
throw new Error(`Unknown type <%= type %> for column <%= prop %>`);
|
|
26
|
+
<% } %>
|
|
27
|
+
<% }); %>
|
|
28
|
+
<% }); %>
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
exports.down = function (knex, _) {
|
|
33
|
+
return knex.schema.withSchema('nango').dropTable(tableName);
|
|
34
|
+
};
|
|
35
|
+
|
package/dist/sync.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface RunArgs {
|
|
2
|
+
sync: string;
|
|
3
|
+
provider: string;
|
|
4
|
+
connection: string;
|
|
5
|
+
lastSyncDate?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const init: () => void;
|
|
8
|
+
export declare const verifyAndChangeDistFilesToJs: () => void;
|
|
9
|
+
export declare const run: (args: string[], options: RunArgs) => Promise<void>;
|
|
10
|
+
export declare const tscWatch: () => void;
|
|
11
|
+
export declare const configWatch: () => void;
|
|
12
|
+
export {};
|
package/dist/sync.js
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import yaml from 'js-yaml';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import chokidar from 'chokidar';
|
|
6
|
+
import * as tsNode from 'ts-node';
|
|
7
|
+
import * as dotenv from 'dotenv';
|
|
8
|
+
import { Nango, loadNangoConfig, getIntegrationClass, getServerBaseUrl, getLastSyncDate, syncDataService } from '@nangohq/shared';
|
|
9
|
+
import { getConnection, configFile, NANGO_INTEGRATIONS_LOCATION, buildInterfaces } from './utils.js';
|
|
10
|
+
dotenv.config();
|
|
11
|
+
export const init = () => {
|
|
12
|
+
const data = {
|
|
13
|
+
integrations: {
|
|
14
|
+
'github-prod': {
|
|
15
|
+
'github-users': {
|
|
16
|
+
runs: 'every hour',
|
|
17
|
+
returns: ['users']
|
|
18
|
+
},
|
|
19
|
+
'github-issues': {
|
|
20
|
+
runs: 'every half hour',
|
|
21
|
+
returns: ['issues']
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
'asana-dev': {
|
|
25
|
+
'asana-projects': {
|
|
26
|
+
runs: 'every hour',
|
|
27
|
+
returns: ['projects']
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
models: {
|
|
32
|
+
issues: {
|
|
33
|
+
id: 'integer',
|
|
34
|
+
title: 'char',
|
|
35
|
+
description: 'char',
|
|
36
|
+
status: 'char',
|
|
37
|
+
author: {
|
|
38
|
+
avatar_url: 'char'
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
projects: {
|
|
42
|
+
id: 'integer',
|
|
43
|
+
type: 'char'
|
|
44
|
+
},
|
|
45
|
+
users: {
|
|
46
|
+
id: 'integer',
|
|
47
|
+
name: 'char'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const yamlData = yaml.dump(data);
|
|
52
|
+
if (!fs.existsSync(NANGO_INTEGRATIONS_LOCATION)) {
|
|
53
|
+
fs.mkdirSync(NANGO_INTEGRATIONS_LOCATION);
|
|
54
|
+
}
|
|
55
|
+
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/${configFile}`, yamlData);
|
|
56
|
+
console.log(chalk.green(`${configFile} file has been created`));
|
|
57
|
+
};
|
|
58
|
+
export const verifyAndChangeDistFilesToJs = () => {
|
|
59
|
+
const cwd = process.cwd();
|
|
60
|
+
const distFiles = fs.readdirSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist`));
|
|
61
|
+
distFiles.forEach((file) => {
|
|
62
|
+
if (file.endsWith('.mjs')) {
|
|
63
|
+
fs.renameSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${file}`), path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${file.replace('.mjs', '.js')}`));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
export const run = async (args, options) => {
|
|
68
|
+
verifyAndChangeDistFilesToJs();
|
|
69
|
+
let syncName, providerConfigKey, connectionId, suppliedLastSyncDate;
|
|
70
|
+
if (args.length > 0) {
|
|
71
|
+
[syncName, providerConfigKey, connectionId, suppliedLastSyncDate] = args;
|
|
72
|
+
}
|
|
73
|
+
if (Object.keys(options).length > 0) {
|
|
74
|
+
({ sync: syncName, provider: providerConfigKey, connection: connectionId, lastSyncDate: suppliedLastSyncDate } = options);
|
|
75
|
+
}
|
|
76
|
+
if (!syncName) {
|
|
77
|
+
console.log(chalk.red('Sync name is required'));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (!providerConfigKey) {
|
|
81
|
+
console.log(chalk.red('Provider config key is required'));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (!connectionId) {
|
|
85
|
+
console.log(chalk.red('Connection id is required'));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const cwd = process.cwd();
|
|
89
|
+
const config = loadNangoConfig(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${configFile}`));
|
|
90
|
+
let lastSyncDate;
|
|
91
|
+
if (suppliedLastSyncDate) {
|
|
92
|
+
lastSyncDate = new Date(suppliedLastSyncDate);
|
|
93
|
+
}
|
|
94
|
+
if (config?.integrations?.[providerConfigKey]?.[syncName] &&
|
|
95
|
+
fs.existsSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${syncName}.js`))) {
|
|
96
|
+
const syncData = config?.integrations[providerConfigKey]?.[syncName];
|
|
97
|
+
// to load a module without having to edit the type in the package.json
|
|
98
|
+
// edit the file to be a mjs then rename it back
|
|
99
|
+
fs.renameSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${syncName}.js`), path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${syncName}.mjs`));
|
|
100
|
+
const integrationClass = await getIntegrationClass(syncName, path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${syncName}.mjs`) + `?v=${Math.random().toString(36).substring(3)}`);
|
|
101
|
+
const nango = new Nango({
|
|
102
|
+
host: getServerBaseUrl(),
|
|
103
|
+
connectionId: String(connectionId),
|
|
104
|
+
providerConfigKey: String(providerConfigKey),
|
|
105
|
+
isSync: true
|
|
106
|
+
});
|
|
107
|
+
try {
|
|
108
|
+
const nangoConnection = (await getConnection(providerConfigKey, connectionId));
|
|
109
|
+
if (!lastSyncDate) {
|
|
110
|
+
lastSyncDate = (await getLastSyncDate(nangoConnection?.id, syncName));
|
|
111
|
+
}
|
|
112
|
+
if (lastSyncDate instanceof Date && !isNaN(lastSyncDate.getTime())) {
|
|
113
|
+
nango.setLastSyncDate(lastSyncDate);
|
|
114
|
+
}
|
|
115
|
+
const userDefinedResults = await integrationClass.fetchData(nango);
|
|
116
|
+
console.log(JSON.stringify(userDefinedResults, null, 2));
|
|
117
|
+
fs.renameSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${syncName}.mjs`), path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${syncName}.js`));
|
|
118
|
+
const { returns: models } = syncData;
|
|
119
|
+
for (const model of models) {
|
|
120
|
+
if (userDefinedResults[model]) {
|
|
121
|
+
const { isUnique, nonUniqueKey } = syncDataService.verifyUniqueKeysAreUnique(userDefinedResults[model]);
|
|
122
|
+
if (!isUnique) {
|
|
123
|
+
console.log(chalk.red(`The ${model} model does not have unique id keys! The repeated key is ${nonUniqueKey}. Please resolve this before running the sync on the server.`));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
process.exit(0);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.error(error);
|
|
131
|
+
fs.renameSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${syncName}.mjs`), path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist/${syncName}.js`));
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
console.log(chalk.red('Sync not found'));
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
export const tscWatch = () => {
|
|
140
|
+
const cwd = process.cwd();
|
|
141
|
+
const tsconfig = fs.readFileSync('./node_modules/nango/tsconfig.dev.json', 'utf8');
|
|
142
|
+
const watchPath = `${NANGO_INTEGRATIONS_LOCATION}/*.ts`;
|
|
143
|
+
const watcher = chokidar.watch(watchPath, {
|
|
144
|
+
ignoreInitial: false,
|
|
145
|
+
ignored: (filePath) => {
|
|
146
|
+
const rawNangoIntegrationLocation = NANGO_INTEGRATIONS_LOCATION.replace('./', '');
|
|
147
|
+
return filePath === `${rawNangoIntegrationLocation}/models.ts`;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
const distDir = path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/dist`);
|
|
151
|
+
if (!fs.existsSync(distDir)) {
|
|
152
|
+
fs.mkdirSync(distDir);
|
|
153
|
+
}
|
|
154
|
+
const compiler = tsNode.create({
|
|
155
|
+
compilerOptions: JSON.parse(tsconfig).compilerOptions
|
|
156
|
+
});
|
|
157
|
+
watcher.on('add', (filePath) => {
|
|
158
|
+
compileFiile(filePath);
|
|
159
|
+
});
|
|
160
|
+
watcher.on('change', (filePath) => {
|
|
161
|
+
compileFiile(filePath);
|
|
162
|
+
});
|
|
163
|
+
function compileFiile(filePath) {
|
|
164
|
+
try {
|
|
165
|
+
const result = compiler.compile(fs.readFileSync(filePath, 'utf8'), filePath);
|
|
166
|
+
const jsFilePath = path.join(path.dirname(filePath), path.basename(filePath, '.ts') + '.js');
|
|
167
|
+
const rawNangoIntegrationLocation = NANGO_INTEGRATIONS_LOCATION.replace('./', '');
|
|
168
|
+
const distJSFilePath = jsFilePath.replace(rawNangoIntegrationLocation, `${rawNangoIntegrationLocation}/dist`);
|
|
169
|
+
fs.writeFileSync(distJSFilePath, result);
|
|
170
|
+
console.log(chalk.green(`Compiled ${filePath} successfully`));
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.error(`Error compiling ${filePath}:`);
|
|
174
|
+
console.error(error);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
export const configWatch = () => {
|
|
180
|
+
const watchPath = `${NANGO_INTEGRATIONS_LOCATION}/${configFile}`;
|
|
181
|
+
const watcher = chokidar.watch(watchPath, { ignoreInitial: true });
|
|
182
|
+
watcher.on('add', (filePath) => {
|
|
183
|
+
buildInterface(filePath);
|
|
184
|
+
});
|
|
185
|
+
watcher.on('change', (filePath) => {
|
|
186
|
+
buildInterface(filePath);
|
|
187
|
+
});
|
|
188
|
+
function buildInterface(filePath) {
|
|
189
|
+
const cwd = process.cwd();
|
|
190
|
+
const configContents = fs.readFileSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${configFile}`), 'utf8');
|
|
191
|
+
const configData = yaml.load(configContents);
|
|
192
|
+
const { models } = configData;
|
|
193
|
+
const interfaces = buildInterfaces(models);
|
|
194
|
+
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`, interfaces.join('\n'));
|
|
195
|
+
console.log(chalk.green(`${filePath} was updated. The interface file (${NANGO_INTEGRATIONS_LOCATION}/models.ts) was updated to reflect the updated config`));
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
//# sourceMappingURL=sync.js.map
|
package/dist/sync.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../lib/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import https from 'https';
|
|
3
|
+
import type { NangoModel } from '@nangohq/shared';
|
|
4
|
+
export declare const configFile = "nango.yaml";
|
|
5
|
+
export declare const NANGO_INTEGRATIONS_LOCATION: string;
|
|
6
|
+
export declare function checkEnvVars(): void;
|
|
7
|
+
export declare function getConnection(providerConfigKey: string, connectionId: string): Promise<any>;
|
|
8
|
+
export declare function enrichHeaders(headers?: Record<string, string | number | boolean>): Record<string, string | number | boolean>;
|
|
9
|
+
export declare function httpsAgent(): https.Agent;
|
|
10
|
+
export declare function getFieldType(rawField: string | NangoModel): string;
|
|
11
|
+
export declare function buildInterfaces(models: NangoModel): (string | undefined)[];
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import https from 'https';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import * as dotenv from 'dotenv';
|
|
4
|
+
dotenv.config();
|
|
5
|
+
export const configFile = 'nango.yaml';
|
|
6
|
+
export const NANGO_INTEGRATIONS_LOCATION = process.env['NANGO_INTEGRATIONS_LOCATION'] || './nango-integrations';
|
|
7
|
+
let hostport = process.env['NANGO_HOSTPORT'] || 'http://localhost:3003';
|
|
8
|
+
const cloudHost = 'https://api.nango.dev';
|
|
9
|
+
const stagingHost = 'https://nango-cloud-staging.onrender.com';
|
|
10
|
+
if (hostport.slice(-1) === '/') {
|
|
11
|
+
hostport = hostport.slice(0, -1);
|
|
12
|
+
}
|
|
13
|
+
export function checkEnvVars() {
|
|
14
|
+
if (hostport === 'http://localhost:3003') {
|
|
15
|
+
console.log(`Assuming you are running Nango on localhost:3003 because you did not set the NANGO_HOSTPORT env var.\n\n`);
|
|
16
|
+
}
|
|
17
|
+
else if (hostport === cloudHost || hostport === stagingHost) {
|
|
18
|
+
if (!process.env['NANGO_SECRET_KEY']) {
|
|
19
|
+
console.log(`Assuming you are using Nango Cloud but your are lacking the NANGO_SECRET_KEY env var.`);
|
|
20
|
+
}
|
|
21
|
+
else if (hostport === cloudHost) {
|
|
22
|
+
console.log(`Assuming you are using Nango Cloud (because you set the NANGO_HOSTPORT env var to https://api.nango.dev).`);
|
|
23
|
+
}
|
|
24
|
+
else if (hostport === stagingHost) {
|
|
25
|
+
console.log(`Assuming you are using Nango Cloud (because you set the NANGO_HOSTPORT env var to https://api.staging.nango.dev).`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
console.log(`Assuming you are self-hosting Nango (becauses you set the NANGO_HOSTPORT env var to ${hostport}).`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export async function getConnection(providerConfigKey, connectionId) {
|
|
33
|
+
checkEnvVars();
|
|
34
|
+
const url = hostport + `/connection/${connectionId}`;
|
|
35
|
+
return await axios
|
|
36
|
+
.get(url, { params: { provider_config_key: providerConfigKey }, headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
37
|
+
.then((res) => {
|
|
38
|
+
return res.data;
|
|
39
|
+
})
|
|
40
|
+
.catch((err) => {
|
|
41
|
+
console.log(`❌ ${err.response?.data.error || JSON.stringify(err)}`);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export function enrichHeaders(headers = {}) {
|
|
45
|
+
if ((process.env['NANGO_HOSTPORT'] === cloudHost || process.env['NANGO_HOSTPORT'] === stagingHost) && process.env['NANGO_SECRET_KEY']) {
|
|
46
|
+
// For Nango Cloud (unified)
|
|
47
|
+
headers['Authorization'] = 'Bearer ' + process.env['NANGO_SECRET_KEY'];
|
|
48
|
+
}
|
|
49
|
+
else if (process.env['NANGO_SECRET_KEY']) {
|
|
50
|
+
// For Nango OSS
|
|
51
|
+
headers['Authorization'] = 'Basic ' + Buffer.from(process.env['NANGO_SECRET_KEY'] + ':').toString('base64');
|
|
52
|
+
}
|
|
53
|
+
headers['Accept-Encoding'] = 'application/json';
|
|
54
|
+
return headers;
|
|
55
|
+
}
|
|
56
|
+
export function httpsAgent() {
|
|
57
|
+
return new https.Agent({
|
|
58
|
+
rejectUnauthorized: false
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
export function getFieldType(rawField) {
|
|
62
|
+
if (typeof rawField === 'string') {
|
|
63
|
+
let field = rawField;
|
|
64
|
+
let hasNull = false;
|
|
65
|
+
let hasUndefined = false;
|
|
66
|
+
let tsType = '';
|
|
67
|
+
if (field.indexOf('null') !== -1) {
|
|
68
|
+
field = field.replace(/\s*\|\s*null\s*/g, '');
|
|
69
|
+
hasNull = true;
|
|
70
|
+
}
|
|
71
|
+
if (field.indexOf('undefined') !== -1) {
|
|
72
|
+
field = field.replace(/\s*\|\s*undefined\s*/g, '');
|
|
73
|
+
hasUndefined = true;
|
|
74
|
+
}
|
|
75
|
+
switch (field) {
|
|
76
|
+
case 'boolean':
|
|
77
|
+
case 'bool':
|
|
78
|
+
tsType = 'boolean';
|
|
79
|
+
break;
|
|
80
|
+
case 'string':
|
|
81
|
+
tsType = 'string';
|
|
82
|
+
break;
|
|
83
|
+
case 'char':
|
|
84
|
+
tsType = 'string';
|
|
85
|
+
break;
|
|
86
|
+
case 'integer':
|
|
87
|
+
case 'int':
|
|
88
|
+
case 'number':
|
|
89
|
+
tsType = 'number';
|
|
90
|
+
break;
|
|
91
|
+
case 'date':
|
|
92
|
+
tsType = 'Date';
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
if (hasNull) {
|
|
96
|
+
tsType = `${tsType} | null`;
|
|
97
|
+
}
|
|
98
|
+
if (hasUndefined) {
|
|
99
|
+
tsType = `${tsType} | undefined`;
|
|
100
|
+
}
|
|
101
|
+
return tsType;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const nestedFields = Object.keys(rawField)
|
|
105
|
+
.map((fieldName) => ` ${fieldName}: ${getFieldType(rawField[fieldName])};`)
|
|
106
|
+
.join('\n');
|
|
107
|
+
return `{\n${nestedFields}\n}`;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export function buildInterfaces(models) {
|
|
111
|
+
const interfaceDefinitions = Object.keys(models).map((modelName) => {
|
|
112
|
+
if (modelName.charAt(0) === '_') {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const fields = models[modelName];
|
|
116
|
+
const singularModelName = modelName.charAt(modelName.length - 1) === 's' ? modelName.slice(0, -1) : modelName;
|
|
117
|
+
const interfaceName = `${singularModelName.charAt(0).toUpperCase()}${singularModelName.slice(1)}`;
|
|
118
|
+
const fieldDefinitions = Object.keys(fields)
|
|
119
|
+
.map((fieldName) => {
|
|
120
|
+
const fieldModel = fields[fieldName];
|
|
121
|
+
const fieldType = getFieldType(fieldModel);
|
|
122
|
+
return ` ${fieldName}: ${fieldType};`;
|
|
123
|
+
})
|
|
124
|
+
.join('\n');
|
|
125
|
+
const interfaceDefinition = `export interface ${interfaceName} {\n${fieldDefinitions}\n}\n`;
|
|
126
|
+
return interfaceDefinition;
|
|
127
|
+
});
|
|
128
|
+
return interfaceDefinitions;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nango",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.2-beta",
|
|
4
4
|
"description": "Nango's CLI tool.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,12 +13,36 @@
|
|
|
13
13
|
"directory": "packages/cli"
|
|
14
14
|
},
|
|
15
15
|
"license": "SEE LICENSE IN LICENSE FILE IN GIT REPOSITORY",
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"copyfiles": "copyfiles -u 1 lib/*.ejs dist",
|
|
19
|
+
"postbuild": "npm run copyfiles",
|
|
20
|
+
"dev": "npm run copyfiles && tsc -w"
|
|
21
|
+
},
|
|
16
22
|
"dependencies": {
|
|
23
|
+
"@nangohq/shared": "file:../shared/nangohq-shared-0.17.0.tgz",
|
|
17
24
|
"axios": "^1.2.0",
|
|
18
|
-
"
|
|
25
|
+
"byots": "^5.0.0-dev.20221103.1.34",
|
|
26
|
+
"chokidar": "^3.5.3",
|
|
27
|
+
"commander": "^10.0.1",
|
|
28
|
+
"copyfiles": "^2.4.1",
|
|
29
|
+
"dotenv": "^16.0.3",
|
|
30
|
+
"ejs": "^3.1.9",
|
|
31
|
+
"esbuild": "^0.17.19",
|
|
32
|
+
"figlet": "^1.6.0",
|
|
33
|
+
"js-yaml": "^4.1.0",
|
|
34
|
+
"memfs": "^3.5.1",
|
|
35
|
+
"ora": "^6.3.1",
|
|
36
|
+
"ts-node": "^10.9.1",
|
|
37
|
+
"typescript": "^5.0.4",
|
|
38
|
+
"webpack": "^5.82.1"
|
|
19
39
|
},
|
|
20
40
|
"devDependencies": {
|
|
21
|
-
"@types/commander": "^2.12.2"
|
|
41
|
+
"@types/commander": "^2.12.2",
|
|
42
|
+
"@types/ejs": "^3.1.2",
|
|
43
|
+
"@types/figlet": "^1.5.6",
|
|
44
|
+
"@types/glob": "^8.1.0",
|
|
45
|
+
"@types/node": "^20.1.4"
|
|
22
46
|
},
|
|
23
47
|
"engines": {
|
|
24
48
|
"node": ">=16.7"
|