nango 0.21.1 → 0.21.5
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 +33 -58
- package/dist/index.js.map +1 -1
- package/dist/integration.ejs +1 -23
- package/dist/integration.github.ejs +62 -0
- package/dist/sync.d.ts +3 -1
- package/dist/sync.js +168 -28
- package/dist/sync.js.map +1 -1
- package/dist/utils.d.ts +3 -1
- package/dist/utils.js +54 -2
- package/dist/utils.js.map +1 -1
- package/docker/docker-compose.yaml +4 -3
- package/package.json +9 -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
|
@@ -7,32 +7,37 @@ import axios from 'axios';
|
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import figlet from 'figlet';
|
|
9
9
|
import fs from 'fs';
|
|
10
|
-
import path
|
|
11
|
-
import { fileURLToPath } from 'url';
|
|
12
|
-
import yaml from 'js-yaml';
|
|
13
|
-
import ejs from 'ejs';
|
|
10
|
+
import path from 'path';
|
|
14
11
|
import * as dotenv from 'dotenv';
|
|
15
12
|
import promptly from 'promptly';
|
|
16
13
|
import { cloudHost, stagingHost, nangoConfigFile, loadSimplifiedConfig, checkForIntegrationFile } from '@nangohq/shared';
|
|
17
|
-
import { init, run, tsc, tscWatch, configWatch, dockerRun } from './sync.js';
|
|
18
|
-
import {
|
|
14
|
+
import { init, run, generate, tsc, tscWatch, configWatch, dockerRun, version } from './sync.js';
|
|
15
|
+
import { upgradeAction, checkEnvVars, enrichHeaders, httpsAgent, NANGO_INTEGRATIONS_LOCATION, verifyNecessaryFiles } from './utils.js';
|
|
19
16
|
class NangoCommand extends Command {
|
|
20
17
|
createCommand(name) {
|
|
21
18
|
const cmd = new Command(name);
|
|
22
19
|
cmd.option('-sk, --secret-key [secretKey]', 'Set the secret key. Overrides the `NANGO_SECRET_KEY` value set in the .env file');
|
|
23
20
|
cmd.option('-h, --host [host]', 'Set the host. Overrides the `NANGO_HOSTPORT` value set in the .env file');
|
|
21
|
+
cmd.hook('preAction', async () => {
|
|
22
|
+
await upgradeAction();
|
|
23
|
+
});
|
|
24
24
|
return cmd;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
const program = new NangoCommand();
|
|
28
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
29
|
-
const __dirname = dirname(__filename);
|
|
30
28
|
dotenv.config();
|
|
31
29
|
// Test from the package root (/packages/cli) with 'node dist/index.js'
|
|
32
30
|
program
|
|
33
31
|
.name('nango')
|
|
34
32
|
.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`);
|
|
35
33
|
program.addHelpText('before', chalk.green(figlet.textSync('Nango CLI')));
|
|
34
|
+
program
|
|
35
|
+
.command('version')
|
|
36
|
+
.alias('v')
|
|
37
|
+
.description('Print the version of the Nango CLI')
|
|
38
|
+
.action(() => {
|
|
39
|
+
version();
|
|
40
|
+
});
|
|
36
41
|
program
|
|
37
42
|
.command('init')
|
|
38
43
|
.alias('i')
|
|
@@ -45,52 +50,15 @@ program
|
|
|
45
50
|
.alias('g')
|
|
46
51
|
.description('Generate a new Nango integration')
|
|
47
52
|
.action(() => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const configContents = fs.readFileSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${nangoConfigFile}`), 'utf8');
|
|
51
|
-
const configData = yaml.load(configContents);
|
|
52
|
-
const { integrations } = configData;
|
|
53
|
-
const { models } = configData;
|
|
54
|
-
const interfaceDefinitions = buildInterfaces(models);
|
|
55
|
-
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`, interfaceDefinitions.join('\n'));
|
|
56
|
-
for (let i = 0; i < Object.keys(integrations).length; i++) {
|
|
57
|
-
const providerConfigKey = Object.keys(integrations)[i];
|
|
58
|
-
const syncObject = integrations[providerConfigKey];
|
|
59
|
-
const syncNames = Object.keys(syncObject);
|
|
60
|
-
for (let k = 0; k < syncNames.length; k++) {
|
|
61
|
-
const syncName = syncNames[k];
|
|
62
|
-
const syncData = syncObject[syncName];
|
|
63
|
-
const { returns: models } = syncData;
|
|
64
|
-
const syncNameCamel = syncName
|
|
65
|
-
.split('-')
|
|
66
|
-
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
67
|
-
.join('');
|
|
68
|
-
const rendered = ejs.render(templateContents, {
|
|
69
|
-
syncName: syncNameCamel,
|
|
70
|
-
interfaceNames: models.map((model) => {
|
|
71
|
-
const singularModel = model?.charAt(model.length - 1) === 's' ? model.slice(0, -1) : model;
|
|
72
|
-
return `${singularModel.charAt(0).toUpperCase()}${singularModel.slice(1)}`;
|
|
73
|
-
}),
|
|
74
|
-
mappings: models.map((model) => {
|
|
75
|
-
const singularModel = model.charAt(model.length - 1) === 's' ? model.slice(0, -1) : model;
|
|
76
|
-
return {
|
|
77
|
-
name: model,
|
|
78
|
-
type: `${singularModel.charAt(0).toUpperCase()}${singularModel.slice(1)}`
|
|
79
|
-
};
|
|
80
|
-
})
|
|
81
|
-
});
|
|
82
|
-
if (!fs.existsSync(`${NANGO_INTEGRATIONS_LOCATION}/${syncName}.ts`)) {
|
|
83
|
-
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/${syncName}.ts`, rendered);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
console.log(chalk.green(`Integration files have been created`));
|
|
53
|
+
verifyNecessaryFiles();
|
|
54
|
+
generate();
|
|
88
55
|
});
|
|
89
56
|
program
|
|
90
57
|
.command('tsc')
|
|
91
58
|
.alias('compile')
|
|
92
59
|
.description('Compile the integration files to JavaScript')
|
|
93
60
|
.action(() => {
|
|
61
|
+
verifyNecessaryFiles();
|
|
94
62
|
tsc();
|
|
95
63
|
});
|
|
96
64
|
program
|
|
@@ -101,6 +69,7 @@ program
|
|
|
101
69
|
.option('--no-compile-interfaces', `Watch the ${nangoConfigFile} and recompile the interfaces on change`, true)
|
|
102
70
|
.action(async function () {
|
|
103
71
|
const { compileInterfaces } = this.opts();
|
|
72
|
+
verifyNecessaryFiles();
|
|
104
73
|
if (compileInterfaces) {
|
|
105
74
|
configWatch();
|
|
106
75
|
}
|
|
@@ -110,18 +79,20 @@ program
|
|
|
110
79
|
.command('docker:run')
|
|
111
80
|
.alias('dr')
|
|
112
81
|
.description('Run the docker container locally')
|
|
113
|
-
.action(() => {
|
|
114
|
-
|
|
82
|
+
.action(async () => {
|
|
83
|
+
verifyNecessaryFiles();
|
|
84
|
+
await dockerRun();
|
|
115
85
|
});
|
|
116
86
|
program
|
|
117
87
|
.command('dev')
|
|
118
88
|
.alias('develop')
|
|
119
89
|
.alias('watch')
|
|
120
90
|
.description('Work locally to add integration code')
|
|
121
|
-
.action(() => {
|
|
91
|
+
.action(async () => {
|
|
92
|
+
verifyNecessaryFiles();
|
|
122
93
|
configWatch();
|
|
123
94
|
tscWatch();
|
|
124
|
-
dockerRun();
|
|
95
|
+
await dockerRun();
|
|
125
96
|
});
|
|
126
97
|
program
|
|
127
98
|
.command('deploy')
|
|
@@ -134,13 +105,13 @@ program
|
|
|
134
105
|
const options = this.opts();
|
|
135
106
|
(async (options) => {
|
|
136
107
|
const { staging, version, sync: optionalSyncName, secretKey, host } = options;
|
|
108
|
+
verifyNecessaryFiles();
|
|
137
109
|
if (host) {
|
|
138
110
|
process.env['NANGO_HOSTPORT'] = host;
|
|
139
111
|
}
|
|
140
112
|
if (secretKey) {
|
|
141
113
|
process.env['NANGO_SECRET_KEY'] = secretKey;
|
|
142
114
|
}
|
|
143
|
-
console.log(process.env['NANGO_HOSTPORT']);
|
|
144
115
|
if (!process.env['NANGO_HOSTPORT']) {
|
|
145
116
|
if (staging) {
|
|
146
117
|
process.env['NANGO_HOSTPORT'] = stagingHost;
|
|
@@ -149,8 +120,7 @@ program
|
|
|
149
120
|
process.env['NANGO_HOSTPORT'] = cloudHost;
|
|
150
121
|
}
|
|
151
122
|
}
|
|
152
|
-
|
|
153
|
-
if (hostport !== 'http://localhost:3003' && !process.env['NANGO_SECRET_KEY']) {
|
|
123
|
+
if (process.env['NANGO_HOSTPORT'] !== 'http://localhost:3003' && !process.env['NANGO_SECRET_KEY']) {
|
|
154
124
|
console.log(chalk.red(`NANGO_SECRET_KEY environment variable is not set. Please set it now`));
|
|
155
125
|
try {
|
|
156
126
|
const secretKey = await promptly.prompt('Secret Key: ');
|
|
@@ -166,7 +136,7 @@ program
|
|
|
166
136
|
return;
|
|
167
137
|
}
|
|
168
138
|
}
|
|
169
|
-
checkEnvVars();
|
|
139
|
+
checkEnvVars(process.env['NANGO_HOSTPORT']);
|
|
170
140
|
tsc();
|
|
171
141
|
const cwd = process.cwd();
|
|
172
142
|
const config = await loadSimplifiedConfig(path.resolve(cwd, NANGO_INTEGRATIONS_LOCATION));
|
|
@@ -199,7 +169,11 @@ program
|
|
|
199
169
|
postData.push(body);
|
|
200
170
|
}
|
|
201
171
|
}
|
|
202
|
-
const url =
|
|
172
|
+
const url = process.env['NANGO_HOSTPORT'] + `/sync/deploy`;
|
|
173
|
+
if (postData.length === 0) {
|
|
174
|
+
console.log(chalk.red(`No syncs found to deploy. Please make sure your integration files compiled successfully and exist in your dist directory`));
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
203
177
|
await axios
|
|
204
178
|
.post(url, postData, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
|
|
205
179
|
.then((_) => {
|
|
@@ -216,6 +190,7 @@ program
|
|
|
216
190
|
.alias('scc')
|
|
217
191
|
.description('Verify the parsed sync config and output the object for verification')
|
|
218
192
|
.action(async () => {
|
|
193
|
+
verifyNecessaryFiles();
|
|
219
194
|
const cwd = process.cwd();
|
|
220
195
|
const config = await loadSimplifiedConfig(path.resolve(cwd, NANGO_INTEGRATIONS_LOCATION));
|
|
221
196
|
console.log(chalk.green(JSON.stringify(config, null, 2)));
|
|
@@ -230,7 +205,7 @@ program
|
|
|
230
205
|
.option('-l, --lastSyncDate [lastSyncDate]', 'Optional: last sync date to retrieve records greater than this date')
|
|
231
206
|
.option('-u, --useServerLastSyncDate', 'Optional boolean: use the server stored last sync date to retrieve records greater than this date')
|
|
232
207
|
.action(async function () {
|
|
233
|
-
|
|
208
|
+
verifyNecessaryFiles();
|
|
234
209
|
run(this.args, this.opts());
|
|
235
210
|
});
|
|
236
211
|
program.parse();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
|
package/dist/integration.ejs
CHANGED
|
@@ -2,27 +2,5 @@ import { NangoSync } from '@nangohq/node';
|
|
|
2
2
|
import { <%= interfaceNames.join(', ') %> } from './models';
|
|
3
3
|
|
|
4
4
|
export default async function fetchData(nango: NangoSync): Promise<{<% for (let i = 0; i < mappings.length; i++) { %><%= mappings[i].name %>: <%= mappings[i].type %>[]<% if (i !== mappings.length - 1) { %>, <% } %><% } %>}> {
|
|
5
|
-
|
|
6
|
-
* Rest of the integration code goes below.
|
|
7
|
-
* Example:
|
|
8
|
-
const response = await nango.get({
|
|
9
|
-
endpoint: 'repos/NangoHQ/nango/issues'
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
const issues = response.data.map((ghIssue: any) => {
|
|
13
|
-
const issue: Issue = {
|
|
14
|
-
id: ghIssue.id,
|
|
15
|
-
title: ghIssue.title,
|
|
16
|
-
description: ghIssue.body,
|
|
17
|
-
status: ghIssue.status,
|
|
18
|
-
author: {
|
|
19
|
-
avatar_url: ghIssue.user.avatar_url,
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
return issue;
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
return { issues };
|
|
27
|
-
*/
|
|
5
|
+
// Integration code goes here. See github-issue-example for a working example.
|
|
28
6
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { NangoSync } from '@nangohq/node';
|
|
2
|
+
import { <%= interfaceNames.join(', ') %> } from './models';
|
|
3
|
+
|
|
4
|
+
export default async function fetchData(nango: NangoSync): Promise<{<% for (let i = 0; i < mappings.length; i++) { %><%= mappings[i].name %>: <%= mappings[i].type %>[]<% if (i !== mappings.length - 1) { %>, <% } %><% } %>}> {
|
|
5
|
+
|
|
6
|
+
const repos = await paginate(nango, '/user/repos');
|
|
7
|
+
|
|
8
|
+
for (let repo of repos) {
|
|
9
|
+
let issues = await paginate(nango, `/repos/${repo.owner.login}/${repo.name}/issues`);
|
|
10
|
+
|
|
11
|
+
// Filter out pull requests
|
|
12
|
+
issues = issues.filter(issue => !('pull_request' in issue));
|
|
13
|
+
|
|
14
|
+
const mappedIssues: GithubIssue[] = issues.map(issue => ({
|
|
15
|
+
id: issue.id,
|
|
16
|
+
owner: repo.owner.login,
|
|
17
|
+
repo: repo.name,
|
|
18
|
+
issue_number: issue.number,
|
|
19
|
+
title: issue.title,
|
|
20
|
+
state: issue.state,
|
|
21
|
+
author: issue.user.login,
|
|
22
|
+
author_id: issue.user.id,
|
|
23
|
+
body: issue.body,
|
|
24
|
+
date_created: issue.created_at,
|
|
25
|
+
date_last_modified: issue.updated_at
|
|
26
|
+
}));
|
|
27
|
+
|
|
28
|
+
if (mappedIssues.length > 0) {
|
|
29
|
+
await nango.batchSend(mappedIssues, 'GithubIssue');
|
|
30
|
+
await nango.log(`Sent ${mappedIssues.length} issues from ${repo.owner.login}/${repo.name}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Return empty array with the model key to indicate success
|
|
35
|
+
return { GithubIssue: [] };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async function paginate(nango: NangoSync, endpoint: string) {
|
|
39
|
+
const MAX_PAGE = 100;
|
|
40
|
+
|
|
41
|
+
let results: any[] = [];
|
|
42
|
+
let page = 1;
|
|
43
|
+
while (true) {
|
|
44
|
+
const resp = await nango.get({
|
|
45
|
+
endpoint: endpoint,
|
|
46
|
+
params: {
|
|
47
|
+
limit: `${MAX_PAGE}`,
|
|
48
|
+
page: `${page}`
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
results = results.concat(resp.data);
|
|
53
|
+
|
|
54
|
+
if (resp.data.length == MAX_PAGE) {
|
|
55
|
+
page += 1;
|
|
56
|
+
} else {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return results;
|
|
62
|
+
}
|
package/dist/sync.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ interface RunArgs {
|
|
|
5
5
|
lastSyncDate?: string;
|
|
6
6
|
useServerLastSyncDate?: boolean;
|
|
7
7
|
}
|
|
8
|
+
export declare const version: () => void;
|
|
8
9
|
export declare const init: () => void;
|
|
10
|
+
export declare const generate: () => Promise<void>;
|
|
9
11
|
export declare const run: (args: string[], options: RunArgs) => Promise<void>;
|
|
10
12
|
export declare const tsc: () => void;
|
|
11
13
|
export declare const tscWatch: () => void;
|
|
@@ -15,5 +17,5 @@ export declare const configWatch: () => void;
|
|
|
15
17
|
* @desc spawn a child process to run the docker compose located in the cli
|
|
16
18
|
* Look into https://www.npmjs.com/package/docker-compose to avoid dependency maybe?
|
|
17
19
|
*/
|
|
18
|
-
export declare const dockerRun: () => void
|
|
20
|
+
export declare const dockerRun: () => Promise<void>;
|
|
19
21
|
export {};
|
package/dist/sync.js
CHANGED
|
@@ -1,42 +1,78 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
2
|
+
import path, { dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
3
4
|
import yaml from 'js-yaml';
|
|
4
5
|
import chalk from 'chalk';
|
|
5
6
|
import chokidar from 'chokidar';
|
|
6
7
|
import * as tsNode from 'ts-node';
|
|
7
8
|
import glob from 'glob';
|
|
9
|
+
import ejs from 'ejs';
|
|
8
10
|
import * as dotenv from 'dotenv';
|
|
9
11
|
import { spawn } from 'child_process';
|
|
12
|
+
import parser from '@babel/parser';
|
|
13
|
+
import traverse from '@babel/traverse';
|
|
10
14
|
import { cloudHost, stagingHost, SyncType, syncRunService, nangoConfigFile } from '@nangohq/shared';
|
|
11
15
|
import { hostport, getConnection, NANGO_INTEGRATIONS_LOCATION, buildInterfaces } from './utils.js';
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = dirname(__filename);
|
|
12
18
|
dotenv.config();
|
|
19
|
+
const exampleSyncName = 'github-issue-example';
|
|
20
|
+
const createModelFile = (notify = false) => {
|
|
21
|
+
if (!fs.existsSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`)) {
|
|
22
|
+
const cwd = process.cwd();
|
|
23
|
+
const configContents = fs.readFileSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${nangoConfigFile}`), 'utf8');
|
|
24
|
+
const configData = yaml.load(configContents);
|
|
25
|
+
const { models } = configData;
|
|
26
|
+
const interfaceDefinitions = buildInterfaces(models);
|
|
27
|
+
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`, interfaceDefinitions.join('\n'));
|
|
28
|
+
if (notify) {
|
|
29
|
+
console.log(chalk.green(`${NANGO_INTEGRATIONS_LOCATION}/${nangoConfigFile} was updated. The interface file (${NANGO_INTEGRATIONS_LOCATION}/models.ts) was updated to reflect the updated config`));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export const version = () => {
|
|
34
|
+
const packageJson = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8'));
|
|
35
|
+
const dockerComposeYaml = fs.readFileSync(path.resolve(__dirname, '../docker/docker-compose.yaml'), 'utf8');
|
|
36
|
+
const dockerCompose = yaml.load(dockerComposeYaml);
|
|
37
|
+
const nangoServerImage = dockerCompose.services['nango-server'].image;
|
|
38
|
+
const nangoWorkerImage = dockerCompose.services['nango-worker'].image;
|
|
39
|
+
const nangoServerVersion = nangoServerImage.split(':').pop();
|
|
40
|
+
const nangoWorkerVersion = nangoWorkerImage.split(':').pop();
|
|
41
|
+
console.log(chalk.green('Nango Server version:'), nangoServerVersion);
|
|
42
|
+
console.log(chalk.green('Nango Worker version:'), nangoWorkerVersion);
|
|
43
|
+
console.log(chalk.green('Nango CLI version:'), packageJson.version);
|
|
44
|
+
};
|
|
13
45
|
export const init = () => {
|
|
14
46
|
const data = {
|
|
15
47
|
integrations: {
|
|
16
48
|
github: {
|
|
17
|
-
|
|
49
|
+
[exampleSyncName]: {
|
|
18
50
|
runs: 'every half hour',
|
|
19
|
-
returns: ['
|
|
51
|
+
returns: ['GithubIssue']
|
|
20
52
|
}
|
|
21
53
|
},
|
|
22
54
|
'asana-dev': {
|
|
23
55
|
'asana-projects': {
|
|
24
56
|
runs: 'every hour',
|
|
25
|
-
returns: ['
|
|
57
|
+
returns: ['AsanaProject']
|
|
26
58
|
}
|
|
27
59
|
}
|
|
28
60
|
},
|
|
29
61
|
models: {
|
|
30
|
-
|
|
62
|
+
GithubIssue: {
|
|
31
63
|
id: 'integer',
|
|
64
|
+
owner: 'string',
|
|
65
|
+
repo: 'string',
|
|
66
|
+
issue_number: 'number',
|
|
32
67
|
title: 'string',
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
68
|
+
author: 'string',
|
|
69
|
+
author_id: 'string',
|
|
70
|
+
state: 'string',
|
|
71
|
+
date_created: 'date',
|
|
72
|
+
date_last_modified: 'date',
|
|
73
|
+
body: 'string'
|
|
38
74
|
},
|
|
39
|
-
|
|
75
|
+
AsanaProject: {
|
|
40
76
|
id: 'number',
|
|
41
77
|
type: 'string'
|
|
42
78
|
}
|
|
@@ -46,8 +82,62 @@ export const init = () => {
|
|
|
46
82
|
if (!fs.existsSync(NANGO_INTEGRATIONS_LOCATION)) {
|
|
47
83
|
fs.mkdirSync(NANGO_INTEGRATIONS_LOCATION);
|
|
48
84
|
}
|
|
49
|
-
fs.
|
|
50
|
-
|
|
85
|
+
if (!fs.existsSync(`${NANGO_INTEGRATIONS_LOCATION}/${nangoConfigFile}`)) {
|
|
86
|
+
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/${nangoConfigFile}`, yamlData);
|
|
87
|
+
}
|
|
88
|
+
// check if a .env file exists and if not create it with some default content
|
|
89
|
+
if (!fs.existsSync('.env')) {
|
|
90
|
+
fs.writeFileSync('.env', `#NANGO_HOSTPORT=https://api-staging.nango.dev
|
|
91
|
+
#NANGO_SECRET_KEY=xxxx-xxx-xxxx
|
|
92
|
+
#NANGO_INTEGRATIONS_LOCATION=use-this-to-override-where-the-nango-integrations-directory-goes
|
|
93
|
+
#NANGO_PORT=use-this-to-override-the-default-3003
|
|
94
|
+
#NANGO_DB_PORT=use-this-to-override-the-default-5432`);
|
|
95
|
+
}
|
|
96
|
+
console.log(chalk.green(`Nango integrations initialized!`));
|
|
97
|
+
};
|
|
98
|
+
export const generate = async () => {
|
|
99
|
+
const templateContents = fs.readFileSync(path.resolve(__dirname, './integration.ejs'), 'utf8');
|
|
100
|
+
const githubExampleTemplateContents = fs.readFileSync(path.resolve(__dirname, './integration.github.ejs'), 'utf8');
|
|
101
|
+
const cwd = process.cwd();
|
|
102
|
+
const configContents = fs.readFileSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${nangoConfigFile}`), 'utf8');
|
|
103
|
+
const configData = yaml.load(configContents);
|
|
104
|
+
const { integrations } = configData;
|
|
105
|
+
const { models } = configData;
|
|
106
|
+
const interfaceDefinitions = buildInterfaces(models);
|
|
107
|
+
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`, interfaceDefinitions.join('\n'));
|
|
108
|
+
for (let i = 0; i < Object.keys(integrations).length; i++) {
|
|
109
|
+
const providerConfigKey = Object.keys(integrations)[i];
|
|
110
|
+
const syncObject = integrations[providerConfigKey];
|
|
111
|
+
const syncNames = Object.keys(syncObject);
|
|
112
|
+
for (let k = 0; k < syncNames.length; k++) {
|
|
113
|
+
const syncName = syncNames[k];
|
|
114
|
+
const syncData = syncObject[syncName];
|
|
115
|
+
const { returns: models } = syncData;
|
|
116
|
+
const syncNameCamel = syncName
|
|
117
|
+
.split('-')
|
|
118
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
119
|
+
.join('');
|
|
120
|
+
const ejsTeamplateContents = syncName === exampleSyncName ? githubExampleTemplateContents : templateContents;
|
|
121
|
+
const rendered = ejs.render(ejsTeamplateContents, {
|
|
122
|
+
syncName: syncNameCamel,
|
|
123
|
+
interfaceNames: models.map((model) => {
|
|
124
|
+
const singularModel = model?.charAt(model.length - 1) === 's' ? model.slice(0, -1) : model;
|
|
125
|
+
return `${singularModel.charAt(0).toUpperCase()}${singularModel.slice(1)}`;
|
|
126
|
+
}),
|
|
127
|
+
mappings: models.map((model) => {
|
|
128
|
+
const singularModel = model.charAt(model.length - 1) === 's' ? model.slice(0, -1) : model;
|
|
129
|
+
return {
|
|
130
|
+
name: model,
|
|
131
|
+
type: `${singularModel.charAt(0).toUpperCase()}${singularModel.slice(1)}`
|
|
132
|
+
};
|
|
133
|
+
})
|
|
134
|
+
});
|
|
135
|
+
if (!fs.existsSync(`${NANGO_INTEGRATIONS_LOCATION}/${syncName}.ts`)) {
|
|
136
|
+
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/${syncName}.ts`, rendered);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
console.log(chalk.green(`Integration files have been created`));
|
|
51
141
|
};
|
|
52
142
|
export const run = async (args, options) => {
|
|
53
143
|
let syncName, providerConfigKey, connectionId, suppliedLastSyncDate, useServerLastSyncDate;
|
|
@@ -111,6 +201,9 @@ export const tsc = () => {
|
|
|
111
201
|
if (!fs.existsSync(distDir)) {
|
|
112
202
|
fs.mkdirSync(distDir);
|
|
113
203
|
}
|
|
204
|
+
if (!fs.existsSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`)) {
|
|
205
|
+
createModelFile();
|
|
206
|
+
}
|
|
114
207
|
const rawNangoIntegrationLocation = NANGO_INTEGRATIONS_LOCATION.replace('./', '');
|
|
115
208
|
const compiler = tsNode.create({
|
|
116
209
|
compilerOptions: JSON.parse(tsconfig).compilerOptions
|
|
@@ -118,6 +211,9 @@ export const tsc = () => {
|
|
|
118
211
|
const integrationFiles = glob.sync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/*.ts`));
|
|
119
212
|
for (const filePath of integrationFiles) {
|
|
120
213
|
try {
|
|
214
|
+
if (!nangoCallsAreAwaited(filePath)) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
121
217
|
const result = compiler.compile(fs.readFileSync(filePath, 'utf8'), filePath);
|
|
122
218
|
const jsFilePath = path.join(path.dirname(filePath), path.basename(filePath, '.ts') + '.js');
|
|
123
219
|
const distJSFilePath = jsFilePath.replace(rawNangoIntegrationLocation, `${rawNangoIntegrationLocation}/dist`);
|
|
@@ -130,6 +226,29 @@ export const tsc = () => {
|
|
|
130
226
|
}
|
|
131
227
|
}
|
|
132
228
|
};
|
|
229
|
+
const nangoCallsAreAwaited = (filePath) => {
|
|
230
|
+
const code = fs.readFileSync(filePath, 'utf-8');
|
|
231
|
+
let areAwaited = true;
|
|
232
|
+
const ast = parser.parse(code, { sourceType: 'module', plugins: ['typescript'] });
|
|
233
|
+
const message = (call, lineNumber) => console.log(chalk.red(`nango.${call}() calls must be awaited in "${filePath}:${lineNumber}". Not awaiting can lead to unexpected results.`));
|
|
234
|
+
const nangoCalls = ['batchSend', 'log', 'getFieldMapping', 'setFieldMapping', 'get', 'post', 'put', 'patch', 'delete'];
|
|
235
|
+
// @ts-ignore
|
|
236
|
+
traverse.default(ast, {
|
|
237
|
+
CallExpression(path) {
|
|
238
|
+
const lineNumber = path.node.loc?.start.line;
|
|
239
|
+
const callee = path.node.callee;
|
|
240
|
+
if (callee.object.type === 'Identifier' && callee.object.name === 'nango' && callee.property.type === 'Identifier') {
|
|
241
|
+
if (path.parent.type !== 'AwaitExpression') {
|
|
242
|
+
if (nangoCalls.includes(callee.property.name)) {
|
|
243
|
+
message(callee.property.name, lineNumber);
|
|
244
|
+
areAwaited = false;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
return areAwaited;
|
|
251
|
+
};
|
|
133
252
|
export const tscWatch = () => {
|
|
134
253
|
const cwd = process.cwd();
|
|
135
254
|
const tsconfig = fs.readFileSync('./node_modules/nango/tsconfig.dev.json', 'utf8');
|
|
@@ -145,6 +264,9 @@ export const tscWatch = () => {
|
|
|
145
264
|
if (!fs.existsSync(distDir)) {
|
|
146
265
|
fs.mkdirSync(distDir);
|
|
147
266
|
}
|
|
267
|
+
if (!fs.existsSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`)) {
|
|
268
|
+
createModelFile();
|
|
269
|
+
}
|
|
148
270
|
watcher.on('add', (filePath) => {
|
|
149
271
|
if (filePath === `${rawNangoIntegrationLocation}/${nangoConfigFile}`) {
|
|
150
272
|
return;
|
|
@@ -172,6 +294,9 @@ export const tscWatch = () => {
|
|
|
172
294
|
compilerOptions: JSON.parse(tsconfig).compilerOptions
|
|
173
295
|
});
|
|
174
296
|
try {
|
|
297
|
+
if (!nangoCallsAreAwaited(filePath)) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
175
300
|
const result = compiler.compile(fs.readFileSync(filePath, 'utf8'), filePath);
|
|
176
301
|
const jsFilePath = path.join(path.dirname(filePath), path.basename(filePath, '.ts') + '.js');
|
|
177
302
|
const distJSFilePath = jsFilePath.replace(rawNangoIntegrationLocation, `${rawNangoIntegrationLocation}/dist`);
|
|
@@ -188,33 +313,48 @@ export const tscWatch = () => {
|
|
|
188
313
|
export const configWatch = () => {
|
|
189
314
|
const watchPath = `${NANGO_INTEGRATIONS_LOCATION}/${nangoConfigFile}`;
|
|
190
315
|
const watcher = chokidar.watch(watchPath, { ignoreInitial: true });
|
|
191
|
-
watcher.on('add', (
|
|
192
|
-
|
|
316
|
+
watcher.on('add', () => {
|
|
317
|
+
createModelFile(true);
|
|
193
318
|
});
|
|
194
|
-
watcher.on('change', (
|
|
195
|
-
|
|
319
|
+
watcher.on('change', () => {
|
|
320
|
+
createModelFile(true);
|
|
196
321
|
});
|
|
197
|
-
function buildInterface(filePath) {
|
|
198
|
-
const cwd = process.cwd();
|
|
199
|
-
const configContents = fs.readFileSync(path.resolve(cwd, `${NANGO_INTEGRATIONS_LOCATION}/${nangoConfigFile}`), 'utf8');
|
|
200
|
-
const configData = yaml.load(configContents);
|
|
201
|
-
const { models } = configData;
|
|
202
|
-
const interfaces = buildInterfaces(models);
|
|
203
|
-
fs.writeFileSync(`${NANGO_INTEGRATIONS_LOCATION}/models.ts`, interfaces.join('\n'));
|
|
204
|
-
console.log(chalk.green(`${filePath} was updated. The interface file (${NANGO_INTEGRATIONS_LOCATION}/models.ts) was updated to reflect the updated config`));
|
|
205
|
-
}
|
|
206
322
|
};
|
|
323
|
+
let child;
|
|
324
|
+
process.on('SIGINT', () => {
|
|
325
|
+
if (child) {
|
|
326
|
+
const dockerDown = spawn('docker', ['compose', '-f', 'node_modules/nango/docker/docker-compose.yaml', '--project-directory', '.', 'down'], {
|
|
327
|
+
stdio: 'inherit'
|
|
328
|
+
});
|
|
329
|
+
dockerDown.on('exit', () => {
|
|
330
|
+
process.exit();
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
process.exit();
|
|
335
|
+
}
|
|
336
|
+
});
|
|
207
337
|
/**
|
|
208
338
|
* Docker Run
|
|
209
339
|
* @desc spawn a child process to run the docker compose located in the cli
|
|
210
340
|
* Look into https://www.npmjs.com/package/docker-compose to avoid dependency maybe?
|
|
211
341
|
*/
|
|
212
|
-
export const dockerRun = () => {
|
|
342
|
+
export const dockerRun = async () => {
|
|
213
343
|
const cwd = process.cwd();
|
|
214
|
-
spawn('docker', ['compose', '-f', 'node_modules/nango/docker/docker-compose.yaml', '--project-directory', '.', 'up', '--build'], {
|
|
344
|
+
child = spawn('docker', ['compose', '-f', 'node_modules/nango/docker/docker-compose.yaml', '--project-directory', '.', 'up', '--build'], {
|
|
215
345
|
cwd,
|
|
216
346
|
detached: false,
|
|
217
347
|
stdio: 'inherit'
|
|
218
348
|
});
|
|
349
|
+
await new Promise((resolve, reject) => {
|
|
350
|
+
child?.on('exit', (code) => {
|
|
351
|
+
if (code !== 0) {
|
|
352
|
+
reject(new Error(`Error with the nango docker containers, please check your containers using 'docker ps''`));
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
resolve(true);
|
|
356
|
+
});
|
|
357
|
+
child?.on('error', reject);
|
|
358
|
+
});
|
|
219
359
|
};
|
|
220
360
|
//# sourceMappingURL=sync.js.map
|
package/dist/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../lib/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnG,MAAM,CAAC,MAAM,EAAE,CAAC;AAUhB,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE;IACrB,MAAM,IAAI,GAAgB;QACtB,YAAY,EAAE;YACV,MAAM,EAAE;gBACJ,eAAe,EAAE;oBACb,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,CAAC,QAAQ,CAAC;iBACtB;aACJ;YACD,WAAW,EAAE;gBACT,gBAAgB,EAAE;oBACd,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,CAAC,UAAU,CAAC;iBACxB;aACJ;SACJ;QACD,MAAM,EAAE;YACJ,MAAM,EAAE;gBACJ,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,QAAQ;gBACrB,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE;oBACJ,UAAU,EAAE,QAAQ;iBACvB;aACJ;YACD,QAAQ,EAAE;gBACN,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,QAAQ;aACjB;SACJ;KACJ,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE;QAC7C,EAAE,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;KAC7C;IACD,EAAE,CAAC,aAAa,CAAC,GAAG,2BAA2B,IAAI,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEhF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,eAAe,wBAAwB,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,IAAc,EAAE,OAAgB,EAAE,EAAE;IAC1D,IAAI,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,CAAC;IAC3F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACjB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,GAAG,IAAI,CAAC;KACnG;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,CAAC;KACpJ;IAED,IAAI,CAAC,QAAQ,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAChD,OAAO;KACV;IAED,IAAI,CAAC,iBAAiB,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC1D,OAAO;KACV;IAED,IAAI,CAAC,YAAY,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACpD,OAAO;KACV;IAED,MAAM,eAAe,GAAG,CAAC,MAAM,aAAa,CAAC,iBAA2B,EAAE,YAAsB,EAAE;QAC9F,eAAe,EAAE,IAAI;QACrB,kBAAkB,EAAE,IAAI;KAC3B,CAAC,CAA+B,CAAC;IAElC,IAAI,CAAC,eAAe,EAAE;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC/C,OAAO;KACV;IAED,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,WAAW,EAAE;QACpD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;KACvC;IAED,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,IAAI,oBAAoB,EAAE;QACtB,YAAY,GAAG,IAAI,IAAI,CAAC,oBAA8B,CAAC,CAAC;KAC3D;IAED,IAAI,CAAC,qBAAqB,EAAE;QACxB,YAAY,GAAG,IAAI,CAAC;KACvB;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;QAC/B,SAAS,EAAE,KAAK;QAChB,eAAe;QACf,QAAQ;QACR,QAAQ,EAAE,QAAQ,CAAC,OAAO;QAC1B,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,EAAE,CAAC;KACpE,CAAC,CAAC;IAEH,IAAI;QACA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE;IACpB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;IAEnF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC;IAEzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACzB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACzB;IAED,MAAM,2BAA2B,GAAG,2BAA2B,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAElF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,eAAe;KACxD,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC,CAAC;IAC7F,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE;QACrC,IAAI;YACA,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;YAC7F,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,2BAA2B,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC;YAE9G,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,QAAQ,gBAAgB,CAAC,CAAC,CAAC;SACnE;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,IAAI,CAAC,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;KACJ;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;IAEnF,MAAM,SAAS,GAAG,CAAC,GAAG,2BAA2B,OAAO,EAAE,GAAG,2BAA2B,IAAI,eAAe,EAAE,CAAC,CAAC;IAC/G,MAAM,2BAA2B,GAAG,2BAA2B,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAElF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE;QACtC,aAAa,EAAE,KAAK;QACpB,OAAO,EAAE,CAAC,QAAgB,EAAE,EAAE;YAC1B,OAAO,QAAQ,KAAK,GAAG,2BAA2B,YAAY,CAAC;QACnE,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC;IAEzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACzB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACzB;IAED,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAgB,EAAE,EAAE;QACnC,IAAI,QAAQ,KAAK,GAAG,2BAA2B,IAAI,eAAe,EAAE,EAAE;YAClE,OAAO;SACV;QACD,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;QAC7F,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,2BAA2B,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC;QAC9G,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE;QACtC,IAAI,QAAQ,KAAK,GAAG,2BAA2B,IAAI,eAAe,EAAE,EAAE;YAClE,+CAA+C;YAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC,CAAC;YAC7F,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE;gBACjC,WAAW,CAAC,IAAI,CAAC,CAAC;aACrB;YACD,OAAO;SACV;QACD,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,SAAS,WAAW,CAAC,QAAgB;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,eAAe;SACxD,CAAC,CAAC;QAEH,IAAI;YACA,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;YAE7F,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,2BAA2B,EAAE,GAAG,2BAA2B,OAAO,CAAC,CAAC;YAC9G,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAEzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,QAAQ,eAAe,CAAC,CAAC,CAAC;SACjE;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,GAAG,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;SACV;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC5B,MAAM,SAAS,GAAG,GAAG,2BAA2B,IAAI,eAAe,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC3B,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC9B,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,SAAS,cAAc,CAAC,QAAgB;QACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,IAAI,eAAe,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACvH,MAAM,UAAU,GAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,CAA2B,CAAC;QACpF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QAC9B,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,GAAG,2BAA2B,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,qCAAqC,2BAA2B,uDAAuD,CAAC,CAClJ,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../lib/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ export declare const NANGO_INTEGRATIONS_LOCATION: string;
|
|
|
5
5
|
export declare const hostport: string;
|
|
6
6
|
export declare function setCloudHost(): void;
|
|
7
7
|
export declare function setStagingHost(): void;
|
|
8
|
-
export declare function checkEnvVars(): void;
|
|
8
|
+
export declare function checkEnvVars(optionalHostport?: string): void;
|
|
9
|
+
export declare function verifyNecessaryFiles(): void;
|
|
10
|
+
export declare function upgradeAction(): Promise<void>;
|
|
9
11
|
export declare function getConnection(providerConfigKey: string, connectionId: string, headers?: Record<string, string | boolean>): Promise<any>;
|
|
10
12
|
export declare function enrichHeaders(headers?: Record<string, string | number | boolean>): Record<string, string | number | boolean>;
|
|
11
13
|
export declare function httpsAgent(): https.Agent;
|
package/dist/utils.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import https from 'https';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import npa from 'npm-package-arg';
|
|
5
|
+
import path, { dirname } from 'path';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
import semver from 'semver';
|
|
8
|
+
import { spawn } from 'child_process';
|
|
9
|
+
import promptly from 'promptly';
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import { cloudHost, stagingHost, nangoConfigFile } from '@nangohq/shared';
|
|
4
12
|
import * as dotenv from 'dotenv';
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = dirname(__filename);
|
|
5
15
|
dotenv.config();
|
|
6
16
|
export const NANGO_INTEGRATIONS_LOCATION = process.env['NANGO_INTEGRATIONS_LOCATION'] || './nango-integrations';
|
|
7
17
|
let parsedHostport = process.env['NANGO_HOSTPORT'] || 'http://localhost:3003';
|
|
@@ -15,7 +25,8 @@ export function setCloudHost() {
|
|
|
15
25
|
export function setStagingHost() {
|
|
16
26
|
process.env['NANGO_HOSTPORT'] = stagingHost;
|
|
17
27
|
}
|
|
18
|
-
export function checkEnvVars() {
|
|
28
|
+
export function checkEnvVars(optionalHostport) {
|
|
29
|
+
const hostport = optionalHostport || process.env['NANGO_HOSTPORT'] || 'http://localhost:3003';
|
|
19
30
|
if (hostport === 'http://localhost:3003') {
|
|
20
31
|
console.log(`Assuming you are running Nango on localhost:3003 because you did not set the NANGO_HOSTPORT env var.\n\n`);
|
|
21
32
|
}
|
|
@@ -34,6 +45,47 @@ export function checkEnvVars() {
|
|
|
34
45
|
console.log(`Assuming you are self-hosting Nango (because you set the NANGO_HOSTPORT env var to ${hostport}).`);
|
|
35
46
|
}
|
|
36
47
|
}
|
|
48
|
+
export function verifyNecessaryFiles() {
|
|
49
|
+
if (!fs.existsSync(path.resolve(process.cwd(), NANGO_INTEGRATIONS_LOCATION))) {
|
|
50
|
+
console.log(chalk.red(`No ${nangoConfigFile} file found. Please run 'nango init' first`));
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export async function upgradeAction() {
|
|
55
|
+
try {
|
|
56
|
+
const resolved = npa('nango');
|
|
57
|
+
const { version } = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8'));
|
|
58
|
+
const response = await axios.get(`https://registry.npmjs.org/${resolved.name}`);
|
|
59
|
+
const latestVersion = response.data['dist-tags'].latest;
|
|
60
|
+
if (semver.gt(latestVersion, version)) {
|
|
61
|
+
console.log(chalk.red(`A new version of ${resolved.name} is available: ${latestVersion}`));
|
|
62
|
+
const cwd = process.cwd();
|
|
63
|
+
const upgrade = await promptly.confirm('Would you like to upgrade? (yes/no)');
|
|
64
|
+
if (upgrade) {
|
|
65
|
+
console.log(chalk.yellow(`Upgrading ${resolved.name} to version ${latestVersion}...`));
|
|
66
|
+
const child = spawn('npm', ['install', '--no-audit', `nango@${latestVersion}`], {
|
|
67
|
+
cwd,
|
|
68
|
+
detached: false,
|
|
69
|
+
stdio: 'inherit'
|
|
70
|
+
});
|
|
71
|
+
await new Promise((resolve, reject) => {
|
|
72
|
+
child.on('exit', (code) => {
|
|
73
|
+
if (code !== 0) {
|
|
74
|
+
reject(new Error(`Upgrade process exited with code ${code}`));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
resolve(true);
|
|
78
|
+
console.log(chalk.green(`Successfully upgraded ${resolved.name} to version ${latestVersion}`));
|
|
79
|
+
});
|
|
80
|
+
child.on('error', reject);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.error(`An error occurred: ${error.message}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
37
89
|
export async function getConnection(providerConfigKey, connectionId, headers) {
|
|
38
90
|
checkEnvVars();
|
|
39
91
|
const url = hostport + `/connection/${connectionId}`;
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,15 +15,16 @@ services:
|
|
|
15
15
|
- nango
|
|
16
16
|
|
|
17
17
|
nango-server:
|
|
18
|
-
image: nangohq/nango-server:0.21.
|
|
18
|
+
image: nangohq/nango-server:0.21.5
|
|
19
19
|
container_name: nango-server
|
|
20
20
|
environment:
|
|
21
21
|
- TEMPORAL_ADDRESS=temporal:7233
|
|
22
22
|
- NANGO_DB_MIGRATION_FOLDER=/usr/nango-server/src/packages/shared/lib/db/migrations
|
|
23
23
|
- NANGO_CALLBACK_URL=${NANGO_CALLBACK_URL:-http://localhost:3003/oauth/callback}
|
|
24
|
+
- SERVER_PORT=${NANGO_PORT:-SERVER_PORT:-3003}
|
|
24
25
|
restart: always
|
|
25
26
|
ports:
|
|
26
|
-
- '3003:3003'
|
|
27
|
+
- '${NANGO_PORT:-3003}:3003'
|
|
27
28
|
depends_on:
|
|
28
29
|
- nango-db
|
|
29
30
|
volumes:
|
|
@@ -32,7 +33,7 @@ services:
|
|
|
32
33
|
- nango
|
|
33
34
|
|
|
34
35
|
nango-worker:
|
|
35
|
-
image: nangohq/nango-worker:0.21.
|
|
36
|
+
image: nangohq/nango-worker:0.21.5
|
|
36
37
|
container_name: nango-worker
|
|
37
38
|
restart: always
|
|
38
39
|
ports:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nango",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.5",
|
|
4
4
|
"description": "Nango's CLI tool.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"dev": "npm run copyfiles && tsc -w"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@
|
|
24
|
-
"@
|
|
23
|
+
"@babel/traverse": "^7.22.5",
|
|
24
|
+
"@nangohq/shared": "0.21.5",
|
|
25
25
|
"@vercel/ncc": "^0.36.1",
|
|
26
26
|
"axios": "^1.2.0",
|
|
27
27
|
"byots": "^5.0.0-dev.20221103.1.34",
|
|
@@ -34,8 +34,10 @@
|
|
|
34
34
|
"figlet": "^1.6.0",
|
|
35
35
|
"js-yaml": "^4.1.0",
|
|
36
36
|
"memfs": "^3.5.1",
|
|
37
|
+
"npm-package-arg": "^10.1.0",
|
|
37
38
|
"ora": "^6.3.1",
|
|
38
39
|
"promptly": "^3.2.0",
|
|
40
|
+
"semver": "^7.5.2",
|
|
39
41
|
"ts-node": "^10.9.1",
|
|
40
42
|
"typescript": "^5.0.4"
|
|
41
43
|
},
|
|
@@ -43,11 +45,15 @@
|
|
|
43
45
|
"@babel/core": "^7.22.1",
|
|
44
46
|
"@babel/preset-env": "^7.22.4",
|
|
45
47
|
"@babel/preset-typescript": "^7.21.5",
|
|
48
|
+
"@types/babel__traverse": "^7.20.1",
|
|
49
|
+
"@types/babel-traverse": "^6.25.7",
|
|
46
50
|
"@types/commander": "^2.12.2",
|
|
47
51
|
"@types/ejs": "^3.1.2",
|
|
48
52
|
"@types/figlet": "^1.5.6",
|
|
49
53
|
"@types/glob": "^8.1.0",
|
|
50
54
|
"@types/node": "^20.1.4",
|
|
55
|
+
"@types/npm-package-arg": "^6.1.1",
|
|
56
|
+
"@types/promptly": "^3.0.2",
|
|
51
57
|
"babel-loader": "^9.1.2",
|
|
52
58
|
"webpack": "^5.85.1",
|
|
53
59
|
"webpack-cli": "^5.1.3",
|