nango 0.36.13 → 0.36.15

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.
Files changed (40) hide show
  1. package/dist/cli.d.ts +16 -0
  2. package/dist/cli.js +338 -0
  3. package/dist/cli.js.map +1 -0
  4. package/dist/constants.d.ts +4 -0
  5. package/dist/constants.js +5 -0
  6. package/dist/constants.js.map +1 -0
  7. package/dist/index.js +25 -16
  8. package/dist/index.js.map +1 -1
  9. package/dist/nango-sync.d.ts +7 -6
  10. package/dist/services/compile.service.d.ts +5 -0
  11. package/dist/services/compile.service.js +72 -0
  12. package/dist/services/compile.service.js.map +1 -0
  13. package/dist/services/config.service.d.ts +8 -0
  14. package/dist/services/config.service.js +73 -0
  15. package/dist/services/config.service.js.map +1 -0
  16. package/dist/services/deploy.service.d.ts +16 -0
  17. package/dist/services/deploy.service.js +237 -0
  18. package/dist/services/deploy.service.js.map +1 -0
  19. package/dist/services/dryrun.service.d.ts +15 -0
  20. package/dist/services/dryrun.service.js +149 -0
  21. package/dist/services/dryrun.service.js.map +1 -0
  22. package/dist/services/local-integration.service.d.ts +6 -0
  23. package/dist/services/local-integration.service.js +62 -0
  24. package/dist/services/local-integration.service.js.map +1 -0
  25. package/dist/services/model.service.d.ts +8 -0
  26. package/dist/services/model.service.js +162 -0
  27. package/dist/services/model.service.js.map +1 -0
  28. package/dist/services/parser.service.d.ts +6 -0
  29. package/dist/services/parser.service.js +79 -0
  30. package/dist/services/parser.service.js.map +1 -0
  31. package/dist/services/verification.service.d.ts +6 -0
  32. package/dist/services/verification.service.js +113 -0
  33. package/dist/services/verification.service.js.map +1 -0
  34. package/dist/sync.unit.test.js +93 -11
  35. package/dist/sync.unit.test.js.map +1 -1
  36. package/dist/utils.d.ts +2 -3
  37. package/dist/utils.js +31 -90
  38. package/dist/utils.js.map +1 -1
  39. package/docker/docker-compose.yaml +2 -2
  40. package/package.json +5 -3
package/dist/cli.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ export declare const version: (debug: boolean) => void;
2
+ export declare const generate: (debug?: boolean, inParentDirectory?: boolean) => Promise<void>;
3
+ /**
4
+ * Init
5
+ * If we're not currently in the nango-integrations directory create one
6
+ * and create an example nango.yaml file
7
+ */
8
+ export declare const init: (debug?: boolean) => Promise<void>;
9
+ export declare const tscWatch: (debug?: boolean) => Promise<void>;
10
+ export declare const configWatch: (debug?: boolean) => void;
11
+ /**
12
+ * Docker Run
13
+ * @desc spawn a child process to run the docker compose located in the cli
14
+ * Look into https://www.npmjs.com/package/docker-compose to avoid dependency maybe?
15
+ */
16
+ export declare const dockerRun: (debug?: boolean) => Promise<void>;
package/dist/cli.js ADDED
@@ -0,0 +1,338 @@
1
+ import fs from 'fs';
2
+ import path, { dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import yaml from 'js-yaml';
5
+ import chalk from 'chalk';
6
+ import chokidar from 'chokidar';
7
+ import * as tsNode from 'ts-node';
8
+ import glob from 'glob';
9
+ import ejs from 'ejs';
10
+ import * as dotenv from 'dotenv';
11
+ import { spawn } from 'child_process';
12
+ import { nangoConfigFile, SyncConfigType, JAVASCRIPT_PRIMITIVES } from '@nangohq/shared';
13
+ import { NANGO_INTEGRATIONS_NAME, getNangoRootPath, printDebug } from './utils.js';
14
+ import configService from './services/config.service.js';
15
+ import modelService from './services/model.service.js';
16
+ import parserService from './services/parser.service.js';
17
+ import { NangoSyncTypesFileLocation, TYPES_FILE_NAME, exampleSyncName } from './constants.js';
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = dirname(__filename);
20
+ dotenv.config();
21
+ export const version = (debug) => {
22
+ if (debug) {
23
+ printDebug('Looking up the version first for a local path first then globally');
24
+ }
25
+ const packageJson = JSON.parse(fs.readFileSync(path.resolve(getNangoRootPath(debug), 'package.json'), 'utf8'));
26
+ const dockerComposeYaml = fs.readFileSync(path.resolve(getNangoRootPath(), 'docker/docker-compose.yaml'), 'utf8');
27
+ const dockerCompose = yaml.load(dockerComposeYaml);
28
+ const nangoServerImage = dockerCompose.services['nango-server'].image;
29
+ const nangoWorkerImage = dockerCompose.services['nango-worker'].image;
30
+ const nangoServerVersion = nangoServerImage.split(':').pop();
31
+ const nangoWorkerVersion = nangoWorkerImage.split(':').pop();
32
+ console.log(chalk.green('Nango Server version:'), nangoServerVersion);
33
+ console.log(chalk.green('Nango Worker version:'), nangoWorkerVersion);
34
+ console.log(chalk.green('Nango CLI version:'), packageJson.version);
35
+ };
36
+ export const generate = async (debug = false, inParentDirectory = false) => {
37
+ const dirPrefix = inParentDirectory ? `./${NANGO_INTEGRATIONS_NAME}` : '.';
38
+ const syncTemplateContents = fs.readFileSync(path.resolve(__dirname, './templates/sync.ejs'), 'utf8');
39
+ const actionTemplateContents = fs.readFileSync(path.resolve(__dirname, './templates/action.ejs'), 'utf8');
40
+ const githubExampleTemplateContents = fs.readFileSync(path.resolve(__dirname, './templates/github.sync.ejs'), 'utf8');
41
+ const configContents = fs.readFileSync(`${dirPrefix}/${nangoConfigFile}`, 'utf8');
42
+ const configData = yaml.load(configContents);
43
+ const { models, integrations } = configData;
44
+ const interfaceDefinitions = modelService.build(models, integrations, debug);
45
+ if (interfaceDefinitions) {
46
+ fs.writeFileSync(`${dirPrefix}/${TYPES_FILE_NAME}`, interfaceDefinitions.join('\n'));
47
+ }
48
+ if (debug) {
49
+ printDebug(`Interfaces from the ${nangoConfigFile} file written to ${TYPES_FILE_NAME}`);
50
+ }
51
+ // insert NangoSync types to the bottom of the file
52
+ const typesContent = fs.readFileSync(`${getNangoRootPath()}/${NangoSyncTypesFileLocation}`, 'utf8');
53
+ fs.writeFileSync(`${dirPrefix}/${TYPES_FILE_NAME}`, typesContent, { flag: 'a' });
54
+ const { success, error, response: config } = await configService.load(dirPrefix, debug);
55
+ if (!success || !config) {
56
+ console.log(chalk.red(error?.message));
57
+ return;
58
+ }
59
+ const flowConfig = `export const NangoFlows = ${JSON.stringify(config, null, 2)} as const; \n`;
60
+ fs.writeFileSync(`${dirPrefix}/${TYPES_FILE_NAME}`, flowConfig, { flag: 'a' });
61
+ if (debug) {
62
+ printDebug(`NangoSync types written to ${TYPES_FILE_NAME}`);
63
+ }
64
+ const allSyncNames = {};
65
+ for (const standardConfig of config) {
66
+ const { syncs, actions } = standardConfig;
67
+ for (const flow of [...syncs, ...actions]) {
68
+ const { name, type, returns: models, input } = flow;
69
+ if (allSyncNames[name] === undefined) {
70
+ allSyncNames[name] = true;
71
+ }
72
+ else {
73
+ console.log(chalk.red(`The ${type} name ${name} is duplicated in the ${nangoConfigFile} file. All sync names must be unique.`));
74
+ process.exit(1);
75
+ }
76
+ if (debug) {
77
+ printDebug(`Generating ${name} integration`);
78
+ }
79
+ const flowNameCamel = name
80
+ .split('-')
81
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
82
+ .join('');
83
+ let ejsTemplateContents = '';
84
+ if (name === exampleSyncName && type === SyncConfigType.SYNC) {
85
+ ejsTemplateContents = githubExampleTemplateContents;
86
+ }
87
+ else {
88
+ ejsTemplateContents = type === SyncConfigType.SYNC ? syncTemplateContents : actionTemplateContents;
89
+ }
90
+ const formatModelName = (model) => {
91
+ if (JAVASCRIPT_PRIMITIVES.includes(model)) {
92
+ return '';
93
+ }
94
+ const singularModel = model.charAt(model.length - 1) === 's' ? model.slice(0, -1) : model;
95
+ return `${singularModel.charAt(0).toUpperCase()}${singularModel.slice(1)}`;
96
+ };
97
+ let interfaceNames;
98
+ let mappings;
99
+ if (typeof models === 'string') {
100
+ const formattedName = formatModelName(models);
101
+ interfaceNames = formattedName;
102
+ mappings = {
103
+ name: models,
104
+ type: formattedName
105
+ };
106
+ }
107
+ else {
108
+ interfaceNames = models.map(formatModelName);
109
+ mappings = models.map((model) => ({
110
+ name: model,
111
+ type: formatModelName(model)
112
+ }));
113
+ }
114
+ const rendered = ejs.render(ejsTemplateContents, {
115
+ syncName: flowNameCamel,
116
+ interfaceFileName: TYPES_FILE_NAME.replace('.ts', ''),
117
+ interfaceNames,
118
+ mappings,
119
+ inputs: input && Object.keys(input).length > 0 ? input : ''
120
+ });
121
+ const stripped = rendered.replace(/^\s+/, '');
122
+ if (!fs.existsSync(`${dirPrefix}/${name}.ts`)) {
123
+ fs.writeFileSync(`${dirPrefix}/${name}.ts`, stripped);
124
+ if (debug) {
125
+ printDebug(`Created ${name}.ts file`);
126
+ }
127
+ }
128
+ else {
129
+ if (debug) {
130
+ printDebug(`${name}.ts file already exists, so will not overwrite it.`);
131
+ }
132
+ }
133
+ }
134
+ }
135
+ };
136
+ /**
137
+ * Init
138
+ * If we're not currently in the nango-integrations directory create one
139
+ * and create an example nango.yaml file
140
+ */
141
+ export const init = async (debug = false) => {
142
+ const yamlData = fs.readFileSync(path.resolve(__dirname, `./templates/${nangoConfigFile}`), 'utf8');
143
+ // if currently in the nango-integrations directory then don't create another one
144
+ const cwd = process.cwd();
145
+ const currentDirectorySplit = cwd.split('/');
146
+ const currentDirectory = currentDirectorySplit[currentDirectorySplit.length - 1];
147
+ let dirExists = false;
148
+ let inParentDirectory = true;
149
+ if (currentDirectory === NANGO_INTEGRATIONS_NAME) {
150
+ dirExists = true;
151
+ inParentDirectory = false;
152
+ if (debug) {
153
+ printDebug(`Currently in the ${NANGO_INTEGRATIONS_NAME} directory so the directory will not be created`);
154
+ }
155
+ }
156
+ if (fs.existsSync(`./${NANGO_INTEGRATIONS_NAME}`)) {
157
+ dirExists = true;
158
+ console.log(chalk.red(`The ${NANGO_INTEGRATIONS_NAME} directory already exists. You should run commands from within this directory`));
159
+ }
160
+ if (!dirExists) {
161
+ if (debug) {
162
+ printDebug(`Creating the nango integrations directory at ./${NANGO_INTEGRATIONS_NAME}`);
163
+ }
164
+ fs.mkdirSync(`./${NANGO_INTEGRATIONS_NAME}`);
165
+ }
166
+ const configFileLocation = inParentDirectory ? `./${NANGO_INTEGRATIONS_NAME}/${nangoConfigFile}` : `./${nangoConfigFile}`;
167
+ if (!fs.existsSync(configFileLocation)) {
168
+ if (debug) {
169
+ printDebug(`Creating the ${nangoConfigFile} file at ${configFileLocation}`);
170
+ }
171
+ fs.writeFileSync(configFileLocation, yamlData);
172
+ }
173
+ else {
174
+ if (debug) {
175
+ printDebug(`Nango config file already exists at ${configFileLocation} so not creating a new one`);
176
+ }
177
+ }
178
+ const envFileLocation = inParentDirectory ? `./${NANGO_INTEGRATIONS_NAME}/.env` : './.env';
179
+ if (!fs.existsSync(envFileLocation)) {
180
+ if (debug) {
181
+ printDebug(`Creating the .env file at ${envFileLocation}`);
182
+ }
183
+ fs.writeFileSync(envFileLocation, `# Authenticates the CLI (get the keys in the dashboard's Projects Settings).
184
+ #NANGO_SECRET_KEY_DEV=xxxx-xxx-xxxx
185
+ #NANGO_SECRET_KEY_PROD=xxxx-xxx-xxxx
186
+
187
+ # Nango's instance URL (OSS: change to http://localhost:3003 or your instance URL).
188
+ NANGO_HOSTPORT=https://api.nango.dev # Default value
189
+
190
+ # How to handle CLI upgrades ("prompt", "auto" or "ignore").
191
+ NANGO_CLI_UPGRADE_MODE=prompt # Default value
192
+
193
+ # Whether to prompt before deployments.
194
+ NANGO_DEPLOY_AUTO_CONFIRM=false # Default value`);
195
+ }
196
+ else {
197
+ if (debug) {
198
+ printDebug(`.env file already exists at ${envFileLocation} so not creating a new one`);
199
+ }
200
+ }
201
+ await generate(debug, inParentDirectory);
202
+ console.log(chalk.green(`Nango integrations initialized!`));
203
+ };
204
+ export const tscWatch = async (debug = false) => {
205
+ const tsconfig = fs.readFileSync(`${getNangoRootPath()}/tsconfig.dev.json`, 'utf8');
206
+ const { success, error, response: config } = await configService.load();
207
+ if (!success || !config) {
208
+ console.log(chalk.red(error?.message));
209
+ return;
210
+ }
211
+ const modelNames = configService.getModelNames(config);
212
+ const watchPath = [`./*.ts`, `./${nangoConfigFile}`];
213
+ if (debug) {
214
+ printDebug(`Watching ${watchPath.join(', ')}`);
215
+ }
216
+ const watcher = chokidar.watch(watchPath, {
217
+ ignoreInitial: false,
218
+ ignored: (filePath) => {
219
+ return filePath === TYPES_FILE_NAME;
220
+ }
221
+ });
222
+ const distDir = './dist';
223
+ if (!fs.existsSync(distDir)) {
224
+ if (debug) {
225
+ printDebug(`Creating ${distDir} directory`);
226
+ }
227
+ fs.mkdirSync(distDir);
228
+ }
229
+ if (!fs.existsSync(`./${TYPES_FILE_NAME}`)) {
230
+ if (debug) {
231
+ printDebug(`Creating ${TYPES_FILE_NAME} file`);
232
+ }
233
+ await modelService.createModelFile();
234
+ }
235
+ watcher.on('add', (filePath) => {
236
+ if (filePath === nangoConfigFile) {
237
+ return;
238
+ }
239
+ compileFile(filePath);
240
+ });
241
+ watcher.on('unlink', (filePath) => {
242
+ if (filePath === nangoConfigFile) {
243
+ return;
244
+ }
245
+ const jsFilePath = `./dist/${path.basename(filePath.replace('.ts', '.js'))}`;
246
+ fs.unlinkSync(jsFilePath);
247
+ });
248
+ watcher.on('change', (filePath) => {
249
+ if (filePath === nangoConfigFile) {
250
+ // config file changed, re-compile each ts file
251
+ const integrationFiles = glob.sync(`./*.ts`);
252
+ for (const file of integrationFiles) {
253
+ // strip the file to just the last part
254
+ const strippedFile = file.replace(/^.*[\\\/]/, '');
255
+ compileFile(strippedFile);
256
+ }
257
+ return;
258
+ }
259
+ compileFile(filePath);
260
+ });
261
+ function compileFile(filePath) {
262
+ const compiler = tsNode.create({
263
+ compilerOptions: JSON.parse(tsconfig).compilerOptions
264
+ });
265
+ try {
266
+ const providerConfiguration = config?.find((config) => [...config.syncs, ...config.actions].find((sync) => sync.name === path.basename(filePath, '.ts')));
267
+ if (!providerConfiguration) {
268
+ return;
269
+ }
270
+ const syncConfig = [...providerConfiguration.syncs, ...providerConfiguration.actions].find((sync) => sync.name === path.basename(filePath, '.ts'));
271
+ const type = syncConfig?.type || SyncConfigType.SYNC;
272
+ if (!parserService.callsAreUsedCorrectly(filePath, type, modelNames)) {
273
+ return;
274
+ }
275
+ const result = compiler.compile(fs.readFileSync(filePath, 'utf8'), filePath);
276
+ const jsFilePath = `./dist/${path.basename(filePath.replace('.ts', '.js'))}`;
277
+ fs.writeFileSync(jsFilePath, result);
278
+ console.log(chalk.green(`Compiled ${filePath} successfully`));
279
+ }
280
+ catch (error) {
281
+ console.error(`Error compiling ${filePath}:`);
282
+ console.error(error);
283
+ return;
284
+ }
285
+ }
286
+ };
287
+ export const configWatch = (debug = false) => {
288
+ const watchPath = `./${nangoConfigFile}`;
289
+ if (debug) {
290
+ printDebug(`Watching ${watchPath}`);
291
+ }
292
+ const watcher = chokidar.watch(watchPath, { ignoreInitial: true });
293
+ watcher.on('change', async () => {
294
+ await modelService.createModelFile(true);
295
+ });
296
+ };
297
+ let child;
298
+ process.on('SIGINT', () => {
299
+ if (child) {
300
+ const dockerDown = spawn('docker', ['compose', '-f', `${getNangoRootPath()}/docker/docker-compose.yaml`, '--project-directory', '.', 'down'], {
301
+ stdio: 'inherit'
302
+ });
303
+ dockerDown.on('exit', () => {
304
+ process.exit();
305
+ });
306
+ }
307
+ else {
308
+ process.exit();
309
+ }
310
+ });
311
+ /**
312
+ * Docker Run
313
+ * @desc spawn a child process to run the docker compose located in the cli
314
+ * Look into https://www.npmjs.com/package/docker-compose to avoid dependency maybe?
315
+ */
316
+ export const dockerRun = async (debug = false) => {
317
+ const cwd = process.cwd();
318
+ const args = ['compose', '-f', `${getNangoRootPath()}/docker/docker-compose.yaml`, '--project-directory', '.', 'up', '--build'];
319
+ if (debug) {
320
+ printDebug(`Running docker with args: ${args.join(' ')}`);
321
+ }
322
+ child = spawn('docker', args, {
323
+ cwd,
324
+ detached: false,
325
+ stdio: 'inherit'
326
+ });
327
+ await new Promise((resolve, reject) => {
328
+ child?.on('exit', (code) => {
329
+ if (code !== 0) {
330
+ reject(new Error(`Error with the nango docker containers, please check your containers using 'docker ps''`));
331
+ return;
332
+ }
333
+ resolve(true);
334
+ });
335
+ child?.on('error', reject);
336
+ });
337
+ };
338
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../lib/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const TYPES_FILE_NAME = "models.ts";
2
+ export declare const NangoSyncTypesFileLocation = "dist/nango-sync.d.ts";
3
+ export declare const NANGO_INTEGRATIONS_NAME = "nango-integrations";
4
+ export declare const exampleSyncName = "github-issue-example";
@@ -0,0 +1,5 @@
1
+ export const TYPES_FILE_NAME = 'models.ts';
2
+ export const NangoSyncTypesFileLocation = 'dist/nango-sync.d.ts';
3
+ export const NANGO_INTEGRATIONS_NAME = 'nango-integrations';
4
+ export const exampleSyncName = 'github-issue-example';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../lib/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -8,9 +8,14 @@ import chalk from 'chalk';
8
8
  import figlet from 'figlet';
9
9
  import path from 'path';
10
10
  import * as dotenv from 'dotenv';
11
- import { nangoConfigFile, loadSimplifiedConfig } from '@nangohq/shared';
12
- import { init, dryRun, generate, tsc, tscWatch, configWatch, dockerRun, version, deploy, adminDeploy, checkYamlMatchesTsFiles } from './sync.js';
13
- import { upgradeAction, NANGO_INTEGRATIONS_LOCATION, verifyNecessaryFiles, printDebug } from './utils.js';
11
+ import { nangoConfigFile } from '@nangohq/shared';
12
+ import { init, generate, tscWatch, configWatch, dockerRun, version } from './cli.js';
13
+ import deployService from './services/deploy.service.js';
14
+ import compileService from './services/compile.service.js';
15
+ import verificationService from './services/verification.service.js';
16
+ import dryrunService from './services/dryrun.service.js';
17
+ import configService from './services/config.service.js';
18
+ import { upgradeAction, NANGO_INTEGRATIONS_LOCATION, printDebug } from './utils.js';
14
19
  class NangoCommand extends Command {
15
20
  createCommand(name) {
16
21
  const cmd = new Command(name);
@@ -86,8 +91,8 @@ program
86
91
  .option('-m, --metadata [metadata]', 'Optional (for syncs only): metadata to stub for the sync script')
87
92
  .action(async function (sync, connectionId) {
88
93
  const { autoConfirm, debug, e: environment } = this.opts();
89
- await verifyNecessaryFiles(autoConfirm, debug);
90
- dryRun({ ...this.opts(), sync, connectionId }, environment, debug);
94
+ await verificationService.necessaryFilesExist(autoConfirm, debug);
95
+ dryrunService.run({ ...this.opts(), sync, connectionId }, environment, debug);
91
96
  });
92
97
  program
93
98
  .command('dev')
@@ -95,7 +100,7 @@ program
95
100
  .option('--no-compile-interfaces', `Watch the ${nangoConfigFile} and recompile the interfaces on change`, true)
96
101
  .action(async function () {
97
102
  const { compileInterfaces, autoConfirm, debug } = this.opts();
98
- await verifyNecessaryFiles(autoConfirm, debug, false);
103
+ await verificationService.necessaryFilesExist(autoConfirm, debug, false);
99
104
  if (compileInterfaces) {
100
105
  configWatch(debug);
101
106
  }
@@ -113,7 +118,7 @@ program
113
118
  const options = this.opts();
114
119
  (async (options) => {
115
120
  const { debug } = options;
116
- await deploy({ ...options, env: 'production' }, environment, debug);
121
+ await deployService.prep({ ...options, env: 'production' }, environment, debug);
117
122
  })(options);
118
123
  });
119
124
  // Hidden commands //
@@ -127,7 +132,7 @@ program
127
132
  .action(async function (environment) {
128
133
  const options = this.opts();
129
134
  (async (options) => {
130
- await deploy({ ...options, env: 'local' }, environment, options.debug);
135
+ await deployService.prep({ ...options, env: 'local' }, environment, options.debug);
131
136
  })(options);
132
137
  });
133
138
  program
@@ -140,7 +145,7 @@ program
140
145
  .action(async function (environment) {
141
146
  const options = this.opts();
142
147
  (async (options) => {
143
- await deploy({ ...options, env: 'staging' }, environment, options.debug);
148
+ await deployService.prep({ ...options, env: 'staging' }, environment, options.debug);
144
149
  })(options);
145
150
  });
146
151
  program
@@ -148,9 +153,9 @@ program
148
153
  .description('Compile the integration files to JavaScript')
149
154
  .action(async function () {
150
155
  const { autoConfirm, debug } = this.opts();
151
- await verifyNecessaryFiles(autoConfirm, debug);
152
- await checkYamlMatchesTsFiles();
153
- tsc(debug);
156
+ await verificationService.necessaryFilesExist(autoConfirm, debug);
157
+ await verificationService.filesMatchConfig();
158
+ await compileService.run(debug);
154
159
  });
155
160
  program
156
161
  .command('sync:dev', { hidden: true })
@@ -158,7 +163,7 @@ program
158
163
  .option('--no-compile-interfaces', `Watch the ${nangoConfigFile} and recompile the interfaces on change`, true)
159
164
  .action(async function () {
160
165
  const { compileInterfaces, autoConfirm, debug } = this.opts();
161
- await verifyNecessaryFiles(autoConfirm, debug);
166
+ await verificationService.necessaryFilesExist(autoConfirm, debug);
162
167
  if (compileInterfaces) {
163
168
  configWatch(debug);
164
169
  }
@@ -178,9 +183,13 @@ program
178
183
  .description('Verify the parsed sync config and output the object for verification')
179
184
  .action(async function () {
180
185
  const { autoConfirm } = this.opts();
181
- await verifyNecessaryFiles(autoConfirm);
186
+ await verificationService.necessaryFilesExist(autoConfirm);
182
187
  const cwd = process.cwd();
183
- const config = await loadSimplifiedConfig(path.resolve(cwd, NANGO_INTEGRATIONS_LOCATION));
188
+ const { success, error, response: config } = await configService.load(path.resolve(cwd, NANGO_INTEGRATIONS_LOCATION));
189
+ if (!success || !config) {
190
+ console.log(chalk.red(error?.message));
191
+ return;
192
+ }
184
193
  console.log(chalk.green(JSON.stringify(config, null, 2)));
185
194
  });
186
195
  // admin only commands
@@ -190,7 +199,7 @@ program
190
199
  .arguments('environmentName')
191
200
  .action(async function (environmentName) {
192
201
  const { debug } = this.opts();
193
- await adminDeploy(environmentName, debug);
202
+ await deployService.admin(environmentName, debug);
194
203
  });
195
204
  program.parse();
196
205
  //# 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":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACjJ,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG1G,MAAM,YAAa,SAAQ,OAAO;IACrB,aAAa,CAAC,IAAY;QAC/B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;QACjE,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,iDAAiD,CAAC,CAAC;QACzE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAA0B,aAAsB;YACvE,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,KAAK,EAAE;gBACP,UAAU,CAAC,oBAAoB,CAAC,CAAC;gBACjC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;oBACvB,UAAU,CAAC,+BAA+B,CAAC,CAAC;iBAC/C;aACJ;YAED,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAED,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AAEnC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAC7B;;;;;;;;;;;;;;;;;;;;;;CAsBH,CACA,CAAC;AAEF,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAEzE,OAAO;KACF,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC;IACJ,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,KAAK;IACT,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK;IACT,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iGAAiG,CAAC;KAC9G,SAAS,CAAC,oBAAoB,CAAC;KAC/B,MAAM,CAAC,kBAAkB,EAAE,yCAAyC,EAAE,KAAK,CAAC;KAC5E,MAAM,CAAC,mCAAmC,EAAE,sFAAsF,CAAC;KACnI,MAAM,CAAC,qBAAqB,EAAE,iEAAiE,CAAC;KAChG,MAAM,CAAC,2BAA2B,EAAE,iEAAiE,CAAC;KACtG,MAAM,CAAC,KAAK,WAA0B,IAAY,EAAE,YAAoB;IACrE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,mGAAmG,CAAC;KAChH,MAAM,CAAC,yBAAyB,EAAE,aAAa,eAAe,yCAAyC,EAAE,IAAI,CAAC;KAC9G,MAAM,CAAC,KAAK;IACT,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEtD,IAAI,iBAAiB,EAAE;QACnB,WAAW,CAAC,KAAK,CAAC,CAAC;KACtB;IAED,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4BAA4B,CAAC;KACzC,SAAS,CAAC,aAAa,CAAC;KACxB,MAAM,CAAC,yBAAyB,EAAE,qGAAqG,CAAC;KACxI,MAAM,CAAC,uBAAuB,EAAE,sCAAsC,CAAC;KACvE,MAAM,CAAC,2BAA2B,EAAE,wCAAwC,CAAC;KAC7E,MAAM,CAAC,yBAAyB,EAAE,qBAAqB,eAAe,EAAE,EAAE,IAAI,CAAC;KAC/E,MAAM,CAAC,KAAK,WAA0B,WAAmB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC1B,MAAM,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,YAAmB,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC,OAAwB,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEP,qBAAqB;AAErB,OAAO;KACF,OAAO,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACzC,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,qCAAqC,CAAC;KAClD,SAAS,CAAC,aAAa,CAAC;KACxB,MAAM,CAAC,yBAAyB,EAAE,qGAAqG,CAAC;KACxI,MAAM,CAAC,yBAAyB,EAAE,qBAAqB,eAAe,EAAE,EAAE,IAAI,CAAC;KAC/E,MAAM,CAAC,KAAK,WAA0B,WAAmB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QAC9B,MAAM,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC,OAAwB,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAC3C,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,qCAAqC,CAAC;KAClD,SAAS,CAAC,aAAa,CAAC;KACxB,MAAM,CAAC,yBAAyB,EAAE,qGAAqG,CAAC;KACxI,MAAM,CAAC,yBAAyB,EAAE,qBAAqB,eAAe,EAAE,EAAE,IAAI,CAAC;KAC/E,MAAM,CAAC,KAAK,WAA0B,WAAmB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QAC9B,MAAM,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC,OAAwB,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACpC,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,KAAK;IACT,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,uBAAuB,EAAE,CAAC;IAChC,GAAG,CAAC,KAAK,CAAC,CAAC;AACf,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACrC,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,yBAAyB,EAAE,aAAa,eAAe,yCAAyC,EAAE,IAAI,CAAC;KAC9G,MAAM,CAAC,KAAK;IACT,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9D,MAAM,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,iBAAiB,EAAE;QACnB,WAAW,CAAC,KAAK,CAAC,CAAC;KACtB;IAED,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAC5C,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK;IACT,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAC9C,KAAK,CAAC,KAAK,CAAC;KACZ,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,KAAK;IACT,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACpC,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAE1F,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,sBAAsB;AACtB,OAAO;KACF,OAAO,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KACzC,WAAW,CAAC,0CAA0C,CAAC;KACvD,SAAS,CAAC,iBAAiB,CAAC;KAC5B,MAAM,CAAC,KAAK,WAA0B,eAAuB;IAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,WAAW,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,7 @@ export interface ProxyConfiguration {
68
68
  retries?: number;
69
69
  baseUrlOverride?: string;
70
70
  paginate?: Partial<CursorPagination> | Partial<LinkPagination> | Partial<OffsetPagination>;
71
+ responseType?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream';
71
72
  }
72
73
  declare enum AuthModes {
73
74
  OAuth1 = "OAUTH1",
@@ -76,19 +77,19 @@ declare enum AuthModes {
76
77
  ApiKey = "API_KEY",
77
78
  App = "APP"
78
79
  }
79
- interface AppCredentials {
80
- type?: AuthModes.App;
80
+ interface AppCredentials extends CredentialsCommon {
81
+ type: AuthModes.App;
81
82
  access_token: string;
82
83
  expires_at?: Date | undefined;
83
84
  raw: Record<string, any>;
84
85
  }
85
- interface BasicApiCredentials {
86
- type?: AuthModes.Basic;
86
+ interface BasicApiCredentials extends CredentialsCommon {
87
+ type: AuthModes.Basic;
87
88
  username: string;
88
89
  password: string;
89
90
  }
90
- interface ApiKeyCredentials {
91
- type?: AuthModes.ApiKey;
91
+ interface ApiKeyCredentials extends CredentialsCommon {
92
+ type: AuthModes.ApiKey;
92
93
  apiKey: string;
93
94
  }
94
95
  interface CredentialsCommon<T = Record<string, any>> {
@@ -0,0 +1,5 @@
1
+ declare class CompileService {
2
+ run(debug?: boolean, syncName?: string): Promise<boolean>;
3
+ }
4
+ declare const compileService: CompileService;
5
+ export default compileService;
@@ -0,0 +1,72 @@
1
+ import fs from 'fs';
2
+ import * as tsNode from 'ts-node';
3
+ import glob from 'glob';
4
+ import chalk from 'chalk';
5
+ import path from 'path';
6
+ import { SyncConfigType } from '@nangohq/shared';
7
+ import configService from './config.service.js';
8
+ import { getNangoRootPath, printDebug } from '../utils.js';
9
+ import { TYPES_FILE_NAME } from '../constants.js';
10
+ import modelService from './model.service.js';
11
+ import parserService from './parser.service.js';
12
+ class CompileService {
13
+ async run(debug = false, syncName) {
14
+ const tsconfig = fs.readFileSync(`${getNangoRootPath()}/tsconfig.dev.json`, 'utf8');
15
+ const distDir = './dist';
16
+ if (!fs.existsSync(distDir)) {
17
+ if (debug) {
18
+ printDebug(`Creating ${distDir} directory`);
19
+ }
20
+ fs.mkdirSync(distDir);
21
+ }
22
+ if (!fs.existsSync(`./${TYPES_FILE_NAME}`)) {
23
+ if (debug) {
24
+ printDebug(`Creating ${TYPES_FILE_NAME} file`);
25
+ }
26
+ await modelService.createModelFile();
27
+ }
28
+ const compiler = tsNode.create({
29
+ compilerOptions: JSON.parse(tsconfig).compilerOptions
30
+ });
31
+ if (debug) {
32
+ printDebug(`Compiler options: ${JSON.stringify(JSON.parse(tsconfig).compilerOptions, null, 2)}`);
33
+ }
34
+ const integrationFiles = syncName ? [`./${syncName}.ts`] : glob.sync(`./*.ts`);
35
+ let success = true;
36
+ const { success: loadSuccess, error, response: config } = await configService.load('', debug);
37
+ if (!loadSuccess || !config) {
38
+ console.log(chalk.red(error?.message));
39
+ throw new Error('Error loading config');
40
+ }
41
+ const modelNames = configService.getModelNames(config);
42
+ for (const filePath of integrationFiles) {
43
+ try {
44
+ const providerConfiguration = config.find((config) => [...config.syncs, ...config.actions].find((sync) => sync.name === path.basename(filePath, '.ts')));
45
+ if (!providerConfiguration) {
46
+ continue;
47
+ }
48
+ const syncConfig = [...providerConfiguration.syncs, ...providerConfiguration.actions].find((sync) => sync.name === path.basename(filePath, '.ts'));
49
+ const type = syncConfig?.type || SyncConfigType.SYNC;
50
+ if (!parserService.callsAreUsedCorrectly(filePath, type, modelNames)) {
51
+ if (syncName && filePath.includes(syncName)) {
52
+ success = false;
53
+ }
54
+ continue;
55
+ }
56
+ const result = compiler.compile(fs.readFileSync(filePath, 'utf8'), filePath);
57
+ const jsFilePath = filePath.replace(/\/[^\/]*$/, `/dist/${path.basename(filePath.replace('.ts', '.js'))}`);
58
+ fs.writeFileSync(jsFilePath, result);
59
+ console.log(chalk.green(`Compiled "${filePath}" successfully`));
60
+ }
61
+ catch (error) {
62
+ console.error(`Error compiling "${filePath}":`);
63
+ console.error(error);
64
+ success = false;
65
+ }
66
+ }
67
+ return success;
68
+ }
69
+ }
70
+ const compileService = new CompileService();
71
+ export default compileService;
72
+ //# sourceMappingURL=compile.service.js.map