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 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 https from 'https';
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
- let cloudHost = 'https://api.nango.dev';
11
- let stagingHost = 'https://nango-cloud-staging.onrender.com';
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
- let url = hostport + '/config';
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
- let url = hostport + `/config/${this.args[0]}`;
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
- let body = {
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
- let url = hostport + `/config`;
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
- let body = {
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
- let url = hostport + `/config`;
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
- let url = hostport + `/config/${this.args[0]}`;
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
- let url = hostport + `/connection/${this.args[1]}`;
130
- await axios
131
- .get(url, { params: { provider_config_key: this.args[0] }, headers: enrichHeaders(), httpsAgent: httpsAgent() })
132
- .then((res) => {
133
- console.log(res.data);
134
- })
135
- .catch((err) => {
136
- console.log(`❌ ${err.response?.data.error || JSON.stringify(err)}`);
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
- let url = hostport + `/connection/${this.args[1]}`;
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
- let url = hostport + `/connection`;
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
- let url = hostport + `/connection/${this.args[1]}`;
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.parseAsync(process.argv);
198
- function enrichHeaders(headers = {}) {
199
- if ((process.env['NANGO_HOSTPORT'] === cloudHost || process.env['NANGO_HOSTPORT'] === stagingHost) && process.env['NANGO_SECRET_KEY']) {
200
- // For Nango Cloud (unified)
201
- headers['Authorization'] = 'Bearer ' + process.env['NANGO_SECRET_KEY'];
202
- }
203
- else if (process.env['NANGO_SECRET_KEY']) {
204
- // For Nango OSS
205
- headers['Authorization'] = 'Basic ' + Buffer.from(process.env['NANGO_SECRET_KEY'] + ':').toString('base64');
206
- }
207
- headers['Accept-Encoding'] = 'application/json';
208
- return headers;
209
- }
210
- function httpsAgent() {
211
- return new https.Agent({
212
- rejectUnauthorized: false
213
- });
214
- }
215
- function checkEnvVars() {
216
- if (hostport === 'http://localhost:3003') {
217
- console.log(`Assuming you are running Nango on localhost:3003 because you did not set the NANGO_HOSTPORT env var.\n\n`);
218
- }
219
- else if (hostport === cloudHost || hostport === stagingHost) {
220
- if (!process.env['NANGO_SECRET_KEY']) {
221
- console.log(`Assuming you are using Nango Cloud but your are lacking the NANGO_SECRET_KEY env var.`);
222
- }
223
- else if (hostport === cloudHost) {
224
- console.log(`Assuming you are using Nango Cloud (because you set the NANGO_HOSTPORT env var to https://api.nango.dev).`);
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
- else if (hostport === stagingHost) {
227
- console.log(`Assuming you are using Nango Cloud (because you set the NANGO_HOSTPORT env var to https://api.staging.nango.dev).`);
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
- else {
231
- console.log(`Assuming you are self-hosting Nango (becauses you set the NANGO_HOSTPORT env var to ${hostport}).`);
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":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE9I,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,uBAAuB,CAAC;AAExE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAC5B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACpC;AAED,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,uEAAuE;AACvE,OAAO;KACF,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CACR,kPAAkP,CACrP,CAAC;AAEN,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAEzE,OAAO;KACF,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjC,MAAM,KAAK;SACN,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;SAChE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACV,OAAO,CAAC,KAAK,CACT,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YAC/B,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;QACrF,CAAC,CAAC,CACL,CAAC;IACN,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,QAAQ,CAAC,uBAAuB,EAAE,yGAAyG,CAAC;KAC5I,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,QAAQ,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,KAAK;SACN,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;SAChE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mCAAmC,CAAC;KAChD,QAAQ,CAAC,uBAAuB,EAAE,8FAA8F,CAAC;KACjI,QAAQ,CAAC,YAAY,EAAE,sHAAsH,CAAC;KAC9I,QAAQ,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;KACpF,QAAQ,CAAC,uBAAuB,EAAE,yDAAyD,CAAC;KAC5F,QAAQ,CAAC,gBAAgB,EAAE,oEAAoE,CAAC;KAChG,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,IAAI,GAAG;QACT,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtB,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7B,CAAC;IAEF,MAAM,GAAG,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjC,MAAM,KAAK;SACN,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;SACvE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAChF,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,QAAQ,CAAC,uBAAuB,EAAE,8FAA8F,CAAC;KACjI,QAAQ,CAAC,YAAY,EAAE,sHAAsH,CAAC;KAC9I,QAAQ,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;KACpF,QAAQ,CAAC,uBAAuB,EAAE,yDAAyD,CAAC;KAC5F,QAAQ,CAAC,gBAAgB,EAAE,oEAAoE,CAAC;KAChG,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,IAAI,GAAG;QACT,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtB,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7B,CAAC;IAEF,MAAM,GAAG,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjC,MAAM,KAAK;SACN,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;SACtE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACrF,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mCAAmC,CAAC;KAChD,QAAQ,CAAC,uBAAuB,EAAE,yGAAyG,CAAC;KAC5I,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,QAAQ,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,KAAK;SACN,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;SACnE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC9E,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,uBAAuB,EAAE,yGAAyG,CAAC;KAC5I,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;KACxD,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IAEpD,IAAI,CAAC,iBAAiB,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;KACnE;IAED,IAAI,CAAC,YAAY,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;KAC7D;IAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,iBAA2B,EAAE,YAAsB,CAAC,CAAC;IAE5F,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,uBAAuB,EAAE,yGAAyG,CAAC;KAC5I,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;KACxD,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,QAAQ,GAAG,eAAe,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,KAAK;SACN,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;SAC/G,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACf,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACpC,KAAK,QAAQ;gBACT,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;gBACjE,MAAM;YACV,KAAK,QAAQ;gBACT,OAAO,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,YAAY,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBACxH,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,0BAA0B,CAAC,CAAC;SAC7G;IACL,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,QAAQ,GAAG,aAAa,CAAC;IACrC,MAAM,KAAK;SACN,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;SAChE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,uBAAuB,EAAE,yGAAyG,CAAC;KAC5I,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;KACxD,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,MAAM,GAAG,GAAG,QAAQ,GAAG,eAAe,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,KAAK;SACN,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;SAClH,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAClE,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,GAAG,EAAE;IACT,IAAI,EAAE,CAAC;AACX,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,UAAU,CAAC;KACnB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,GAAG,EAAE;IACT,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAE/F,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,IAAI,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAClH,MAAM,UAAU,GAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAA2B,CAAC;IACpF,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAE9B,MAAM,oBAAoB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAErD,EAAE,CAAC,aAAa,CAAC,GAAG,2BAA2B,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAW,CAAC;QACjE,MAAM,UAAU,GAAG,YAAY,CAAC,iBAAiB,CAAmD,CAAC;QACrG,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAW,CAAC;YACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAoC,CAAC;YACzE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;YACrC,MAAM,aAAa,GAAG,QAAQ;iBACzB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;YACd,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE;gBAC1C,QAAQ,EAAE,aAAa;gBACvB,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACjC,MAAM,aAAa,GAAG,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC3F,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,CAAC,CAAC;gBACF,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC3B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC1F,OAAO;wBACH,IAAI,EAAE,KAAK;wBACX,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;qBAC5E,CAAC;gBACN,CAAC,CAAC;aACL,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,2BAA2B,IAAI,QAAQ,KAAK,CAAC,EAAE;gBACjE,EAAE,CAAC,aAAa,CAAC,GAAG,2BAA2B,IAAI,QAAQ,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC/E;SACJ;KACJ;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACT,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC,CAAC;IAC7F,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE;QACjC,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErD,MAAM,eAAe,GAAG;YACpB,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM;YACjC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;SAClC,CAAC;QAEF,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,aAAa,EAAE;YAChD,eAAe;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;QACzD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;QAExC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC;QAEzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YACzB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SACzB;QAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,SAAS,eAAe,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;KACnH;AACL,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,mGAAmG,CAAC;KAChH,MAAM,CAAC,yBAAyB,EAAE,aAAa,UAAU,yCAAyC,EAAE,IAAI,CAAC;KACzG,MAAM,CAAC,KAAK;IACT,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE1C,QAAQ,EAAE,CAAC;IACX,IAAI,iBAAiB,EAAE;QACnB,WAAW,EAAE,CAAC;KACjB;AACL,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,KAAK,CAAC;KACd,KAAK,CAAC,SAAS,CAAC;KAChB,KAAK,CAAC,OAAO,CAAC;KACd,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACT,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,CAAC;IAEd,YAAY;IACZ,+CAA+C;IAC/C,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,+CAA+C,EAAE,qBAAqB,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE;QAC7H,GAAG;QACH,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS;KACnB,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC,CAAC;IAC7F,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE;QACjC,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErD,MAAM,eAAe,GAAG;YACpB,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM;YACjC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;SAClC,CAAC;QAEF,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,aAAa,EAAE;YAChD,eAAe;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;QAExC,aAAa;QACb,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC;YAC/B,KAAK,EAAE;gBACH,QAAQ,EAAE,aAAa;gBACvB,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;gBACxC,MAAM,EAAE,IAAI;aACf;YACD,KAAK,EAAE,KAAK;YACZ,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAc,CAAC;QAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;QAEzD,2CAA2C;QAC3C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,IAAI,eAAe,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC;QAE3G,MAAM,IAAI,GAAG;YACT,eAAe;YACf,OAAO;YACP,QAAQ,EAAE,QAAQ,CAAC,uCAAuC;SAC7D,CAAC;QAEF,MAAM,GAAG,GAAG,QAAQ,GAAG,cAAc,CAAC;QAEtC,MAAM,KAAK;aACN,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;aACvE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAC5E,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;KACV;AACL,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,mBAAmB,CAAC;KAC5B,KAAK,CAAC,KAAK,CAAC;KACZ,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;IAEvG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,UAAU,CAAC;KACnB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,uBAAuB,EAAE,2CAA2C,CAAC;KAC5E,MAAM,CAAC,sCAAsC,EAAE,yGAAyG,CAAC;KACzJ,MAAM,CAAC,kCAAkC,EAAE,2BAA2B,CAAC;KACvE,MAAM,CAAC,mCAAmC,EAAE,qEAAqE,CAAC;KAClH,MAAM,CAAC,KAAK;IACT,YAAY,EAAE,CAAC;IACf,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../lib/sync.ts"],"names":[],"mappings":"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"}
@@ -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.0",
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
- "commander": "^9.4.0"
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"