nango 0.36.41 → 0.36.42

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.
@@ -0,0 +1,5 @@
1
+ import type { NangoSync, <%= interfaceNames.join(', ') %> } from './<%= interfaceFileName %>';
2
+
3
+ export default async function fetchData(nango: NangoSync): Promise<{<% for (let i = 0; i < mappings.length; i++) { %><%= mappings[i].name %>: <%= mappings[i].type %>[]<% if (i !== mappings.length - 1) { %>, <% } %><% } %>}> {
4
+ // Integration code goes here, be sure to follow the return signature type
5
+ }
@@ -0,0 +1,61 @@
1
+ import type { NangoSync, <%= interfaceNames.join(', ') %> } from './<%= interfaceFileName %>';
2
+
3
+ export default async function fetchData(nango: NangoSync): Promise<{<% for (let i = 0; i < mappings.length; i++) { %><%= mappings[i].name %>: <%= mappings[i].type %>[]<% if (i !== mappings.length - 1) { %>, <% } %><% } %>}> {
4
+
5
+ const repos = await paginate(nango, '/user/repos');
6
+
7
+ for (let repo of repos) {
8
+ let issues = await paginate(nango, `/repos/${repo.owner.login}/${repo.name}/issues`);
9
+
10
+ // Filter out pull requests
11
+ issues = issues.filter(issue => !('pull_request' in issue));
12
+
13
+ const mappedIssues: GithubIssue[] = issues.map(issue => ({
14
+ id: issue.id,
15
+ owner: repo.owner.login,
16
+ repo: repo.name,
17
+ issue_number: issue.number,
18
+ title: issue.title,
19
+ state: issue.state,
20
+ author: issue.user.login,
21
+ author_id: issue.user.id,
22
+ body: issue.body,
23
+ date_created: issue.created_at,
24
+ date_last_modified: issue.updated_at
25
+ }));
26
+
27
+ if (mappedIssues.length > 0) {
28
+ await nango.batchSave<GithubIssue>(mappedIssues, 'GithubIssue');
29
+ await nango.log(`Sent ${mappedIssues.length} issues from ${repo.owner.login}/${repo.name}`);
30
+ }
31
+ }
32
+
33
+ // Return empty array with the model key to indicate success
34
+ return { GithubIssue: [] };
35
+ }
36
+
37
+ async function paginate(nango: NangoSync, endpoint: string) {
38
+ const MAX_PAGE = 100;
39
+
40
+ let results: any[] = [];
41
+ let page = 1;
42
+ while (true) {
43
+ const resp = await nango.get({
44
+ endpoint: endpoint,
45
+ params: {
46
+ limit: `${MAX_PAGE}`,
47
+ page: `${page}`
48
+ }
49
+ });
50
+
51
+ results = results.concat(resp.data);
52
+
53
+ if (resp.data.length == MAX_PAGE) {
54
+ page += 1;
55
+ } else {
56
+ break;
57
+ }
58
+ }
59
+
60
+ return results;
61
+ }
@@ -0,0 +1,6 @@
1
+ import { IntegrationServiceInterface, NangoIntegrationData, NangoSync } from '@nangohq/shared';
2
+ declare class IntegrationService implements IntegrationServiceInterface {
3
+ runScript(syncName: string, _activityLogId: number | undefined, nango: NangoSync, _integrationData: NangoIntegrationData, _environmentId: number, _writeToDb: boolean, isAction: boolean, optionalLoadLocation?: string, input?: object): Promise<any>;
4
+ }
5
+ declare const _default: IntegrationService;
6
+ export default _default;
@@ -0,0 +1,37 @@
1
+ import { localFileService } from '@nangohq/shared';
2
+ class IntegrationService {
3
+ async runScript(syncName, _activityLogId, nango, _integrationData, _environmentId, _writeToDb, isAction, optionalLoadLocation, input) {
4
+ try {
5
+ const script = localFileService.getIntegrationFile(syncName, optionalLoadLocation);
6
+ if (!script) {
7
+ const content = `Unable to find integration file for ${syncName}`;
8
+ console.error(content);
9
+ }
10
+ try {
11
+ let scriptExports;
12
+ eval(`scriptExports = ${script}`);
13
+ if (scriptExports && typeof scriptExports.default === 'function') {
14
+ const results = isAction ? await scriptExports.default(nango, input) : await scriptExports.default(nango);
15
+ return results;
16
+ }
17
+ else {
18
+ const content = `There is no default export that is a function for ${syncName}`;
19
+ console.error(content);
20
+ return null;
21
+ }
22
+ }
23
+ catch (err) {
24
+ console.error(err);
25
+ return null;
26
+ }
27
+ }
28
+ catch (err) {
29
+ const errorMessage = JSON.stringify(err, ['message', 'name', 'stack'], 2);
30
+ const content = `The script failed to load for ${syncName} with the following error: ${errorMessage}`;
31
+ console.error(content);
32
+ return null;
33
+ }
34
+ }
35
+ }
36
+ export default new IntegrationService();
37
+ //# sourceMappingURL=integration.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.service.js","sourceRoot":"","sources":["../lib/integration.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEjH,MAAM,kBAAkB;IACpB,KAAK,CAAC,SAAS,CACX,QAAgB,EAChB,cAAkC,EAClC,KAAgB,EAChB,gBAAsC,EACtC,cAAsB,EACtB,UAAmB,EACnB,QAAiB,EACjB,oBAA6B,EAC7B,KAAc;QAEd,IAAI;YACA,MAAM,MAAM,GAAkB,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAElG,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,OAAO,GAAG,uCAAuC,QAAQ,EAAE,CAAC;gBAElE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC1B;YAED,IAAI;gBACA,IAAI,aAAkB,CAAC;gBAEvB,IAAI,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;gBAClC,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,UAAU,EAAE;oBAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC1G,OAAO,OAAO,CAAC;iBAClB;qBAAM;oBACH,MAAM,OAAO,GAAG,qDAAqD,QAAQ,EAAE,CAAC;oBAChF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAEvB,OAAO,IAAI,CAAC;iBACf;aACJ;YAAC,OAAO,GAAQ,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEnB,OAAO,IAAI,CAAC;aACf;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,iCAAiC,QAAQ,8BAA8B,YAAY,EAAE,CAAC;YAEtG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEvB,OAAO,IAAI,CAAC;SACf;IACL,CAAC;CACJ;AAED,eAAe,IAAI,kBAAkB,EAAE,CAAC"}
@@ -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,68 @@
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 yamlService from './yaml.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 config = await yamlService.getConfig();
37
+ const modelNames = yamlService.getModelNames(config);
38
+ for (const filePath of integrationFiles) {
39
+ try {
40
+ const providerConfiguration = config.find((config) => [...config.syncs, ...config.actions].find((sync) => sync.name === path.basename(filePath, '.ts')));
41
+ if (!providerConfiguration) {
42
+ continue;
43
+ }
44
+ const syncConfig = [...providerConfiguration.syncs, ...providerConfiguration.actions].find((sync) => sync.name === path.basename(filePath, '.ts'));
45
+ const type = syncConfig?.type || SyncConfigType.SYNC;
46
+ if (!parserService.callsAreUsedCorrectly(filePath, type, modelNames)) {
47
+ if (syncName && filePath.includes(syncName)) {
48
+ success = false;
49
+ }
50
+ continue;
51
+ }
52
+ const result = compiler.compile(fs.readFileSync(filePath, 'utf8'), filePath);
53
+ const jsFilePath = filePath.replace(/\/[^\/]*$/, `/dist/${path.basename(filePath.replace('.ts', '.js'))}`);
54
+ fs.writeFileSync(jsFilePath, result);
55
+ console.log(chalk.green(`Compiled "${filePath}" successfully`));
56
+ }
57
+ catch (error) {
58
+ console.error(`Error compiling "${filePath}":`);
59
+ console.error(error);
60
+ success = false;
61
+ }
62
+ }
63
+ return success;
64
+ }
65
+ }
66
+ const compileService = new CompileService();
67
+ export default compileService;
68
+ //# sourceMappingURL=compile%20copy.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile copy.service.js","sourceRoot":"","sources":["../../lib/services/compile copy.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { StandardNangoConfig } from '@nangohq/shared';
2
+ declare class YamlService {
3
+ getConfig(optionalLoadLocation?: string, debug?: boolean): Promise<StandardNangoConfig[]>;
4
+ getModelNames(config: StandardNangoConfig[]): string[];
5
+ }
6
+ declare const yamlService: YamlService;
7
+ export default yamlService;
@@ -0,0 +1,32 @@
1
+ import { loadStandardConfig, nangoConfigFile } from '@nangohq/shared';
2
+ import { printDebug } from '../utils.js';
3
+ class YamlService {
4
+ async getConfig(optionalLoadLocation = '', debug = false) {
5
+ const loadLocation = optionalLoadLocation || './';
6
+ const config = await loadStandardConfig(loadLocation);
7
+ if (!config) {
8
+ throw new Error(`Error loading the ${nangoConfigFile} file`);
9
+ }
10
+ if (debug) {
11
+ printDebug(`Config file file found`);
12
+ }
13
+ return config;
14
+ }
15
+ getModelNames(config) {
16
+ const modelNames = config.reduce((acc, config) => {
17
+ const syncs = config.syncs || [];
18
+ const actions = config.actions || [];
19
+ const allSyncs = [...syncs, ...actions];
20
+ const models = allSyncs.reduce((acc, sync) => {
21
+ const models = sync.models || [];
22
+ const names = models.map((model) => model.name);
23
+ return [...acc, ...names];
24
+ }, []);
25
+ return [...acc, ...models];
26
+ }, []);
27
+ return modelNames;
28
+ }
29
+ }
30
+ const yamlService = new YamlService();
31
+ export default yamlService;
32
+ //# sourceMappingURL=yaml.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.service.js","sourceRoot":"","sources":["../../lib/services/yaml.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,WAAW;IACN,KAAK,CAAC,SAAS,CAAC,oBAAoB,GAAG,EAAE,EAAE,KAAK,GAAG,KAAK;QAC3D,MAAM,YAAY,GAAG,oBAAoB,IAAI,IAAI,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,qBAAqB,eAAe,OAAO,CAAC,CAAC;SAChE;QAED,IAAI,KAAK,EAAE;YACP,UAAU,CAAC,wBAAwB,CAAC,CAAC;SACxC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,aAAa,CAAC,MAA6B;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,IAAI,EAAE,EAAE;gBACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;YAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;QAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,eAAe,WAAW,CAAC"}
package/dist/sync.d.ts CHANGED
@@ -1,14 +1,3 @@
1
- import type { Metadata } from '@nangohq/shared';
2
- import { SyncConfigType } from '@nangohq/shared';
3
- import type { DeployOptions, GlobalOptions } from './types.js';
4
- interface RunArgs extends GlobalOptions {
5
- sync: string;
6
- connectionId: string;
7
- lastSyncDate?: string;
8
- useServerLastSyncDate?: boolean;
9
- input?: object;
10
- metadata?: Metadata;
11
- }
12
1
  export declare const exampleSyncName = "github-issue-example";
13
2
  export declare const version: (debug: boolean) => void;
14
3
  export declare const generate: (debug?: boolean, inParentDirectory?: boolean) => Promise<void>;
@@ -18,12 +7,6 @@ export declare const generate: (debug?: boolean, inParentDirectory?: boolean) =>
18
7
  * and create an example nango.yaml file
19
8
  */
20
9
  export declare const init: (debug?: boolean) => Promise<void>;
21
- export declare const deploy: (options: DeployOptions, environment: string, debug?: boolean) => Promise<void>;
22
- export declare const adminDeploy: (environmentName: string, debug?: boolean) => Promise<void>;
23
- export declare const dryRun: (options: RunArgs, environment: string, debug?: boolean) => Promise<void>;
24
- export declare const tsc: (debug?: boolean, syncName?: string) => Promise<boolean>;
25
- export declare const checkYamlMatchesTsFiles: () => Promise<boolean>;
26
- export declare const nangoCallsAreUsedCorrectly: (filePath: string, type: SyncConfigType | undefined, modelNames: string[]) => boolean;
27
10
  export declare const tscWatch: (debug?: boolean) => Promise<void>;
28
11
  export declare const configWatch: (debug?: boolean) => void;
29
12
  /**
@@ -32,4 +15,3 @@ export declare const configWatch: (debug?: boolean) => void;
32
15
  * Look into https://www.npmjs.com/package/docker-compose to avoid dependency maybe?
33
16
  */
34
17
  export declare const dockerRun: (debug?: boolean) => Promise<void>;
35
- export {};
package/dist/sync.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import fs from 'fs';
2
2
  import path, { dirname } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
- import axios from 'axios';
5
4
  import yaml from 'js-yaml';
6
5
  import chalk from 'chalk';
7
6
  import chokidar from 'chokidar';
@@ -10,13 +9,12 @@ import glob from 'glob';
10
9
  import ejs from 'ejs';
11
10
  import * as dotenv from 'dotenv';
12
11
  import { spawn } from 'child_process';
13
- import parser from '@babel/parser';
14
- import traverse from '@babel/traverse';
15
- import promptly from 'promptly';
16
- import * as t from '@babel/types';
17
- import { getInterval, loadSimplifiedConfig, cloudHost, stagingHost, SyncType, syncRunService, nangoConfigFile, localFileService, SyncConfigType, JAVASCRIPT_PRIMITIVES } from '@nangohq/shared';
18
- import { hostport, port, httpsAgent, verifyNecessaryFiles, getConnection, NANGO_INTEGRATIONS_NAME, buildInterfaces, enrichHeaders, getNangoRootPath, printDebug, getModelNamesFromConfig } from './utils.js';
19
- import integrationService from './local-integration.service.js';
12
+ import 'promptly';
13
+ import { nangoConfigFile, SyncConfigType, JAVASCRIPT_PRIMITIVES } from '@nangohq/shared';
14
+ import { NANGO_INTEGRATIONS_NAME, getNangoRootPath, printDebug } from './utils.js';
15
+ import yamlService from './services/yaml.service.js';
16
+ import modelService from './services/model.service.js';
17
+ import parserService from './services/parser.service.js';
20
18
  const __filename = fileURLToPath(import.meta.url);
21
19
  const __dirname = dirname(__filename);
22
20
  dotenv.config();
@@ -40,14 +38,14 @@ export const version = (debug) => {
40
38
  };
41
39
  export const generate = async (debug = false, inParentDirectory = false) => {
42
40
  const dirPrefix = inParentDirectory ? `./${NANGO_INTEGRATIONS_NAME}` : '.';
43
- const syncTemplateContents = fs.readFileSync(path.resolve(__dirname, './sync.ejs'), 'utf8');
44
- const actionTemplateContents = fs.readFileSync(path.resolve(__dirname, './action.ejs'), 'utf8');
45
- const githubExampleTemplateContents = fs.readFileSync(path.resolve(__dirname, './github.sync.ejs'), 'utf8');
41
+ const syncTemplateContents = fs.readFileSync(path.resolve(__dirname, './templates/sync.ejs'), 'utf8');
42
+ const actionTemplateContents = fs.readFileSync(path.resolve(__dirname, './templates/action.ejs'), 'utf8');
43
+ const githubExampleTemplateContents = fs.readFileSync(path.resolve(__dirname, './templates/github.sync.ejs'), 'utf8');
46
44
  const configContents = fs.readFileSync(`${dirPrefix}/${nangoConfigFile}`, 'utf8');
47
45
  const configData = yaml.load(configContents);
48
46
  const { integrations } = configData;
49
47
  const { models } = configData;
50
- const interfaceDefinitions = buildInterfaces(models, integrations, debug);
48
+ const interfaceDefinitions = modelService.build(models, integrations, debug);
51
49
  if (interfaceDefinitions) {
52
50
  fs.writeFileSync(`${dirPrefix}/${TYPES_FILE_NAME}`, interfaceDefinitions.join('\n'));
53
51
  }
@@ -57,7 +55,7 @@ export const generate = async (debug = false, inParentDirectory = false) => {
57
55
  // insert NangoSync types to the bottom of the file
58
56
  const typesContent = fs.readFileSync(`${getNangoRootPath()}/${NangoSyncTypesFileLocation}`, 'utf8');
59
57
  fs.writeFileSync(`${dirPrefix}/${TYPES_FILE_NAME}`, typesContent, { flag: 'a' });
60
- const config = await getConfig(dirPrefix, debug);
58
+ const config = await yamlService.getConfig(dirPrefix, debug);
61
59
  const flowConfig = `export const NangoFlows = ${JSON.stringify(config, null, 2)} as const; \n`;
62
60
  fs.writeFileSync(`${dirPrefix}/${TYPES_FILE_NAME}`, flowConfig, { flag: 'a' });
63
61
  if (debug) {
@@ -88,7 +86,7 @@ export const generate = async (debug = false, inParentDirectory = false) => {
88
86
  console.log(chalk.red(`The ${syncName} integration is missing a returns property for what models the sync returns. Make sure you have "returns" instead of "return"`));
89
87
  process.exit(1);
90
88
  }
91
- const { returns: modelOrModels, inputs, type = SyncConfigType.SYNC } = syncData;
89
+ const { returns: modelOrModels, input, type = SyncConfigType.SYNC } = syncData;
92
90
  const syncNameCamel = syncName
93
91
  .split('-')
94
92
  .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
@@ -129,7 +127,7 @@ export const generate = async (debug = false, inParentDirectory = false) => {
129
127
  interfaceFileName: TYPES_FILE_NAME.replace('.ts', ''),
130
128
  interfaceNames,
131
129
  mappings,
132
- inputs: inputs || ''
130
+ inputs: input || ''
133
131
  });
134
132
  const stripped = rendered.replace(/^\s+/, '');
135
133
  if (!fs.existsSync(`${dirPrefix}/${syncName}.ts`)) {
@@ -153,33 +151,7 @@ export const generate = async (debug = false, inParentDirectory = false) => {
153
151
  * and create an example nango.yaml file
154
152
  */
155
153
  export const init = async (debug = false) => {
156
- const data = {
157
- integrations: {
158
- 'demo-github-integration': {
159
- [exampleSyncName]: {
160
- type: SyncConfigType.SYNC,
161
- runs: 'every half hour',
162
- returns: ['GithubIssue']
163
- }
164
- }
165
- },
166
- models: {
167
- GithubIssue: {
168
- id: 'integer',
169
- owner: 'string',
170
- repo: 'string',
171
- issue_number: 'number',
172
- title: 'string',
173
- author: 'string',
174
- author_id: 'string',
175
- state: 'string',
176
- date_created: 'date',
177
- date_last_modified: 'date',
178
- body: 'string'
179
- }
180
- }
181
- };
182
- const yamlData = yaml.dump(data);
154
+ const yamlData = fs.readFileSync(path.resolve(__dirname, `./templates/${nangoConfigFile}`), 'utf8');
183
155
  // if currently in the nango-integrations directory then don't create another one
184
156
  const cwd = process.cwd();
185
157
  const currentDirectorySplit = cwd.split('/');
@@ -241,477 +213,10 @@ NANGO_DEPLOY_AUTO_CONFIRM=false # Default value`);
241
213
  await generate(debug, inParentDirectory);
242
214
  console.log(chalk.green(`Nango integrations initialized!`));
243
215
  };
244
- const createModelFile = async (notify = false) => {
245
- const configContents = fs.readFileSync(`./${nangoConfigFile}`, 'utf8');
246
- const configData = yaml.load(configContents);
247
- const { models, integrations } = configData;
248
- const interfaceDefinitions = buildInterfaces(models, integrations);
249
- if (interfaceDefinitions) {
250
- fs.writeFileSync(`./${TYPES_FILE_NAME}`, interfaceDefinitions.join('\n'));
251
- }
252
- // insert NangoSync types to the bottom of the file
253
- const typesContent = fs.readFileSync(`${getNangoRootPath()}/${NangoSyncTypesFileLocation}`, 'utf8');
254
- fs.writeFileSync(`./${TYPES_FILE_NAME}`, typesContent, { flag: 'a' });
255
- const config = await getConfig();
256
- const flowConfig = `export const NangoFlows = ${JSON.stringify(config, null, 2)} as const; \n`;
257
- fs.writeFileSync(`./${TYPES_FILE_NAME}`, flowConfig, { flag: 'a' });
258
- if (notify) {
259
- console.log(chalk.green(`The ${nangoConfigFile} was updated. The interface file (${TYPES_FILE_NAME}) was updated to reflect the updated config`));
260
- }
261
- };
262
- const getConfig = async (optionalLoadLocation = '', debug = false) => {
263
- const loadLocation = optionalLoadLocation || './';
264
- const config = await loadSimplifiedConfig(loadLocation);
265
- if (!config) {
266
- throw new Error(`Error loading the ${nangoConfigFile} file`);
267
- }
268
- if (debug) {
269
- printDebug(`Config file file found`);
270
- }
271
- return config;
272
- };
273
- async function parseSecretKey(environment, debug = false) {
274
- if (process.env['NANGO_SECRET_KEY_PROD'] && environment === 'prod') {
275
- if (debug) {
276
- printDebug(`Environment is set to prod, setting NANGO_SECRET_KEY to NANGO_SECRET_KEY_PROD.`);
277
- }
278
- process.env['NANGO_SECRET_KEY'] = process.env['NANGO_SECRET_KEY_PROD'];
279
- }
280
- if (process.env['NANGO_SECRET_KEY_DEV'] && environment === 'dev') {
281
- if (debug) {
282
- printDebug(`Environment is set to dev, setting NANGO_SECRET_KEY to NANGO_SECRET_KEY_DEV.`);
283
- }
284
- process.env['NANGO_SECRET_KEY'] = process.env['NANGO_SECRET_KEY_DEV'];
285
- }
286
- if (!process.env['NANGO_SECRET_KEY']) {
287
- console.log(chalk.red(`NANGO_SECRET_KEY environment variable is not set. Please set it now`));
288
- try {
289
- const secretKey = await promptly.prompt('Secret Key: ');
290
- if (secretKey) {
291
- process.env['NANGO_SECRET_KEY'] = secretKey;
292
- }
293
- else {
294
- return;
295
- }
296
- }
297
- catch (error) {
298
- console.log('Error occurred while trying to prompt for secret key:', error);
299
- process.exit(1);
300
- }
301
- }
302
- }
303
- export const deploy = async (options, environment, debug = false) => {
304
- const { env, version, sync: optionalSyncName, action: optionalActionName, autoConfirm } = options;
305
- await verifyNecessaryFiles(autoConfirm);
306
- await parseSecretKey(environment, debug);
307
- if (!process.env['NANGO_HOSTPORT']) {
308
- switch (env) {
309
- case 'local':
310
- process.env['NANGO_HOSTPORT'] = `http://localhost:${port}`;
311
- break;
312
- case 'staging':
313
- process.env['NANGO_HOSTPORT'] = stagingHost;
314
- break;
315
- default:
316
- process.env['NANGO_HOSTPORT'] = cloudHost;
317
- break;
318
- }
319
- }
320
- if (debug) {
321
- printDebug(`NANGO_HOSTPORT is set to ${process.env['NANGO_HOSTPORT']}.`);
322
- printDebug(`Environment is set to ${environment}`);
323
- }
324
- const singleDeployMode = Boolean(optionalSyncName || optionalActionName);
325
- await tsc(debug);
326
- const config = await getConfig('', debug);
327
- const postData = packageIntegrationData(config, debug, version, optionalSyncName, optionalActionName);
328
- if (!postData) {
329
- return;
330
- }
331
- const url = process.env['NANGO_HOSTPORT'] + `/sync/deploy`;
332
- const nangoYamlBody = localFileService.getNangoYamlFileContents('./');
333
- if (process.env['NANGO_DEPLOY_AUTO_CONFIRM'] !== 'true' && !autoConfirm) {
334
- const confirmationUrl = process.env['NANGO_HOSTPORT'] + `/sync/deploy/confirmation`;
335
- try {
336
- const response = await axios.post(confirmationUrl, { syncs: postData, reconcile: false, debug, singleDeployMode }, { headers: enrichHeaders(), httpsAgent: httpsAgent() });
337
- console.log(JSON.stringify(response.data, null, 2));
338
- const { newSyncs, deletedSyncs } = response.data;
339
- for (const sync of newSyncs) {
340
- const actionMessage = sync.connections === 0 || sync.auto_start === false
341
- ? 'The sync will be added to your Nango instance if you deploy.'
342
- : `Nango will start syncing the corresponding data for ${sync.connections} existing connections.`;
343
- console.log(chalk.yellow(`Sync "${sync.name}" is new. ${actionMessage}`));
344
- }
345
- for (const sync of deletedSyncs) {
346
- console.log(chalk.red(`Sync "${sync.name}" has been removed. It will stop running and the corresponding data will be deleted for ${sync.connections} existing connections.`));
347
- }
348
- const confirmation = await promptly.confirm('Do you want to continue y/n?');
349
- if (confirmation) {
350
- await deploySyncs(url, { syncs: postData, nangoYamlBody, reconcile: true, debug, singleDeployMode });
351
- }
352
- else {
353
- console.log(chalk.red('Syncs/Actions were not deployed. Exiting'));
354
- process.exit(0);
355
- }
356
- }
357
- catch (err) {
358
- let errorMessage;
359
- if (!err?.response?.data) {
360
- const { message, stack, config: { method }, code, status } = err?.toJSON();
361
- const errorObject = { message, stack, code, status, url, method };
362
- errorMessage = JSON.stringify(errorObject, null, 2);
363
- }
364
- else {
365
- errorMessage = JSON.stringify(err.response.data, null, 2);
366
- }
367
- console.log(chalk.red(`Error deploying the syncs/actions with the following error: ${errorMessage}`));
368
- process.exit(1);
369
- }
370
- }
371
- else {
372
- if (debug) {
373
- printDebug(`Auto confirm is set so deploy will start without confirmation`);
374
- }
375
- await deploySyncs(url, { syncs: postData, nangoYamlBody, reconcile: true, debug, singleDeployMode });
376
- }
377
- };
378
- async function deploySyncs(url, body) {
379
- await axios
380
- .post(url, body, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
381
- .then((response) => {
382
- const results = response.data;
383
- if (results.length === 0) {
384
- console.log(chalk.green(`Successfully removed the syncs/actions.`));
385
- }
386
- else {
387
- const nameAndVersions = results.map((result) => `${result.sync_name || result.name}@v${result.version}`);
388
- console.log(chalk.green(`Successfully deployed the syncs/actions: ${nameAndVersions.join(', ')}!`));
389
- }
390
- })
391
- .catch((err) => {
392
- const errorMessage = JSON.stringify(err.response.data, null, 2);
393
- console.log(chalk.red(`Error deploying the syncs/actions with the following error: ${errorMessage}`));
394
- process.exit(1);
395
- });
396
- }
397
- export const adminDeploy = async (environmentName, debug = false) => {
398
- await verifyNecessaryFiles(false);
399
- await parseSecretKey(environmentName, debug);
400
- if (!process.env['NANGO_HOSTPORT']) {
401
- switch (environmentName) {
402
- case 'local':
403
- process.env['NANGO_HOSTPORT'] = `http://localhost:${port}`;
404
- break;
405
- case 'staging':
406
- process.env['NANGO_HOSTPORT'] = stagingHost;
407
- break;
408
- default:
409
- process.env['NANGO_HOSTPORT'] = cloudHost;
410
- break;
411
- }
412
- }
413
- if (debug) {
414
- printDebug(`NANGO_HOSTPORT is set to ${process.env['NANGO_HOSTPORT']}.`);
415
- printDebug(`Environment is set to ${environmentName}`);
416
- }
417
- await tsc(debug);
418
- const config = await getConfig('', debug);
419
- const flowData = packageIntegrationData(config, debug);
420
- if (!flowData) {
421
- return;
422
- }
423
- const targetAccountUUID = await promptly.prompt('Input the account uuid to deploy to: ');
424
- if (!targetAccountUUID) {
425
- console.log(chalk.red('Account uuid is required. Exiting'));
426
- return;
427
- }
428
- const url = process.env['NANGO_HOSTPORT'] + `/admin/flow/deploy/pre-built`;
429
- const nangoYamlBody = localFileService.getNangoYamlFileContents('./');
430
- try {
431
- await axios
432
- .post(url, { targetAccountUUID, targetEnvironment: environmentName, config: flowData, nangoYamlBody }, { headers: enrichHeaders(), httpsAgent: httpsAgent() })
433
- .then(() => {
434
- console.log(chalk.green(`Successfully deployed the syncs/actions to the users account.`));
435
- })
436
- .catch((err) => {
437
- const errorMessage = JSON.stringify(err.response.data, null, 2);
438
- console.log(chalk.red(`Error deploying the syncs/actions with the following error: ${errorMessage}`));
439
- process.exit(1);
440
- });
441
- }
442
- catch (e) {
443
- console.log(e);
444
- }
445
- };
446
- export const dryRun = async (options, environment, debug = false) => {
447
- let syncName = '';
448
- let connectionId, suppliedLastSyncDate, actionInput, stubbedMetadata;
449
- await parseSecretKey(environment, debug);
450
- if (!process.env['NANGO_HOSTPORT']) {
451
- if (debug) {
452
- printDebug(`NANGO_HOSTPORT is not set. Setting the default to ${hostport}`);
453
- }
454
- process.env['NANGO_HOSTPORT'] = hostport;
455
- }
456
- if (debug) {
457
- printDebug(`NANGO_HOSTPORT is set to ${process.env['NANGO_HOSTPORT']}`);
458
- }
459
- if (Object.keys(options).length > 0) {
460
- ({ sync: syncName, connectionId, lastSyncDate: suppliedLastSyncDate, input: actionInput, metadata: stubbedMetadata } = options);
461
- }
462
- if (!syncName) {
463
- console.log(chalk.red('Sync name is required'));
464
- return;
465
- }
466
- if (!connectionId) {
467
- console.log(chalk.red('Connection id is required'));
468
- return;
469
- }
470
- const config = await getConfig('', debug);
471
- const providerConfigKey = config.find((config) => [...config.syncs, ...config.actions].find((sync) => sync.name === syncName))?.providerConfigKey;
472
- if (!providerConfigKey) {
473
- console.log(chalk.red(`Provider config key not found, please check that the provider exists for this sync name: ${syncName}`));
474
- return;
475
- }
476
- const foundConfig = config.find((configItem) => {
477
- const syncsArray = configItem.syncs || [];
478
- const actionsArray = configItem.actions || [];
479
- return [...syncsArray, ...actionsArray].some((sync) => sync.name === syncName);
480
- });
481
- const syncInfo = foundConfig
482
- ? (foundConfig.syncs || []).find((sync) => sync.name === syncName) || (foundConfig.actions || []).find((action) => action.name === syncName)
483
- : null;
484
- if (debug) {
485
- printDebug(`Provider config key found to be ${providerConfigKey}`);
486
- }
487
- const nangoConnection = (await getConnection(providerConfigKey, connectionId, {
488
- 'Nango-Is-Sync': true,
489
- 'Nango-Is-Dry-Run': true
490
- }, debug));
491
- if (!nangoConnection) {
492
- console.log(chalk.red('Connection not found'));
493
- return;
494
- }
495
- if (debug) {
496
- printDebug(`Connection found with ${JSON.stringify(nangoConnection, null, 2)}`);
497
- }
498
- if (process.env['NANGO_HOSTPORT'] === cloudHost || process.env['NANGO_HOSTPORT'] === stagingHost) {
499
- process.env['NANGO_CLOUD'] = 'true';
500
- }
501
- let lastSyncDate = null;
502
- if (suppliedLastSyncDate) {
503
- if (debug) {
504
- printDebug(`Last sync date supplied as ${suppliedLastSyncDate}`);
505
- }
506
- lastSyncDate = new Date(suppliedLastSyncDate);
507
- }
508
- const result = await tsc(debug, syncName);
509
- if (!result) {
510
- console.log(chalk.red('The sync/action did not compile successfully. Exiting'));
511
- return;
512
- }
513
- let normalizedInput;
514
- try {
515
- normalizedInput = JSON.parse(actionInput);
516
- }
517
- catch (e) {
518
- normalizedInput = actionInput;
519
- }
520
- const logMessages = [];
521
- const syncRun = new syncRunService({
522
- integrationService,
523
- writeToDb: false,
524
- nangoConnection,
525
- input: normalizedInput,
526
- isAction: syncInfo?.type === SyncConfigType.ACTION,
527
- syncId: 'abc',
528
- activityLogId: -1,
529
- syncJobId: -1,
530
- syncName,
531
- syncType: SyncType.INITIAL,
532
- loadLocation: './',
533
- debug,
534
- logMessages,
535
- stubbedMetadata
536
- });
537
- try {
538
- const secretKey = process.env['NANGO_SECRET_KEY'];
539
- const results = await syncRun.run(lastSyncDate, true, secretKey, process.env['NANGO_HOSTPORT']);
540
- if (results) {
541
- console.log(JSON.stringify(results, null, 2));
542
- }
543
- if (syncRun.logMessages && syncRun.logMessages.length > 0) {
544
- const logMessages = syncRun.logMessages;
545
- let index = 0;
546
- const batchCount = 10;
547
- const displayBatch = () => {
548
- for (let i = 0; i < batchCount && index < logMessages.length; i++, index++) {
549
- const logs = logMessages[index];
550
- console.log(chalk.yellow(JSON.stringify(logs, null, 2)));
551
- }
552
- };
553
- console.log(chalk.yellow('The following log messages were generated:'));
554
- displayBatch();
555
- while (index < syncRun.logMessages.length) {
556
- const remaining = syncRun.logMessages.length - index;
557
- const confirmation = await promptly.confirm(`There are ${remaining} logs messages remaining. Would you like to see the next 10 log messages? (y/n)`);
558
- if (confirmation) {
559
- displayBatch();
560
- }
561
- else {
562
- break;
563
- }
564
- }
565
- }
566
- process.exit(0);
567
- }
568
- catch (e) {
569
- process.exit(1);
570
- }
571
- };
572
- export const tsc = async (debug = false, syncName) => {
573
- const tsconfig = fs.readFileSync(`${getNangoRootPath()}/tsconfig.dev.json`, 'utf8');
574
- const distDir = './dist';
575
- if (!fs.existsSync(distDir)) {
576
- if (debug) {
577
- printDebug(`Creating ${distDir} directory`);
578
- }
579
- fs.mkdirSync(distDir);
580
- }
581
- if (!fs.existsSync(`./${TYPES_FILE_NAME}`)) {
582
- if (debug) {
583
- printDebug(`Creating ${TYPES_FILE_NAME} file`);
584
- }
585
- await createModelFile();
586
- }
587
- const compiler = tsNode.create({
588
- compilerOptions: JSON.parse(tsconfig).compilerOptions
589
- });
590
- if (debug) {
591
- printDebug(`Compiler options: ${JSON.stringify(JSON.parse(tsconfig).compilerOptions, null, 2)}`);
592
- }
593
- const integrationFiles = syncName ? [`./${syncName}.ts`] : glob.sync(`./*.ts`);
594
- let success = true;
595
- const config = await getConfig();
596
- const modelNames = getModelNamesFromConfig(config);
597
- for (const filePath of integrationFiles) {
598
- try {
599
- const providerConfiguration = config.find((config) => [...config.syncs, ...config.actions].find((sync) => sync.name === path.basename(filePath, '.ts')));
600
- if (!providerConfiguration) {
601
- continue;
602
- }
603
- const syncConfig = [...providerConfiguration.syncs, ...providerConfiguration.actions].find((sync) => sync.name === path.basename(filePath, '.ts'));
604
- const type = syncConfig?.type || SyncConfigType.SYNC;
605
- if (!nangoCallsAreUsedCorrectly(filePath, type, modelNames)) {
606
- if (syncName && filePath.includes(syncName)) {
607
- success = false;
608
- }
609
- continue;
610
- }
611
- const result = compiler.compile(fs.readFileSync(filePath, 'utf8'), filePath);
612
- const jsFilePath = filePath.replace(/\/[^\/]*$/, `/dist/${path.basename(filePath.replace('.ts', '.js'))}`);
613
- fs.writeFileSync(jsFilePath, result);
614
- console.log(chalk.green(`Compiled "${filePath}" successfully`));
615
- }
616
- catch (error) {
617
- console.error(`Error compiling "${filePath}":`);
618
- console.error(error);
619
- success = false;
620
- }
621
- }
622
- return success;
623
- };
624
- export const checkYamlMatchesTsFiles = async () => {
625
- const config = await getConfig();
626
- const syncNames = config.map((provider) => provider.syncs.map((sync) => sync.name)).flat();
627
- const actionNames = config.map((provider) => provider.actions.map((action) => action.name)).flat();
628
- const flows = [...syncNames, ...actionNames];
629
- const tsFiles = glob.sync(`./*.ts`);
630
- const tsFileNames = tsFiles.filter((file) => !file.includes('models.ts')).map((file) => path.basename(file, '.ts'));
631
- const missingSyncsAndActions = flows.filter((syncOrActionName) => !tsFileNames.includes(syncOrActionName));
632
- if (missingSyncsAndActions.length > 0) {
633
- console.log(chalk.red(`The following syncs are missing a corresponding .ts file: ${missingSyncsAndActions.join(', ')}`));
634
- throw new Error('Syncs missing .ts files');
635
- }
636
- const extraSyncs = tsFileNames.filter((syncName) => !flows.includes(syncName));
637
- if (extraSyncs.length > 0) {
638
- console.log(chalk.red(`The following .ts files do not have a corresponding sync in the config: ${extraSyncs.join(', ')}`));
639
- throw new Error('Extra .ts files');
640
- }
641
- return true;
642
- };
643
- export const nangoCallsAreUsedCorrectly = (filePath, type = SyncConfigType.SYNC, modelNames) => {
644
- const code = fs.readFileSync(filePath, 'utf-8');
645
- let areAwaited = true;
646
- let usedCorrectly = true;
647
- const ast = parser.parse(code, { sourceType: 'module', plugins: ['typescript'] });
648
- const awaitMessage = (call, lineNumber) => console.log(chalk.red(`nango.${call}() calls must be awaited in "${filePath}:${lineNumber}". Not awaiting can lead to unexpected results.`));
649
- const disallowedMessage = (call, lineNumber) => console.log(chalk.red(`nango.${call}() calls are not allowed in an action script. Please remove it at "${filePath}:${lineNumber}".`));
650
- const nangoCalls = [
651
- 'batchSend',
652
- 'batchSave',
653
- 'batchDelete',
654
- 'log',
655
- 'getFieldMapping',
656
- 'setFieldMapping',
657
- 'getMetadata',
658
- 'setMetadata',
659
- 'get',
660
- 'post',
661
- 'put',
662
- 'patch',
663
- 'delete',
664
- 'getConnection',
665
- 'setLastSyncDate',
666
- 'getEnvironmentVariables',
667
- 'triggerAction'
668
- ];
669
- const disallowedActionCalls = ['batchSend', 'batchSave', 'batchDelete', 'setLastSyncDate'];
670
- const deprecatedCalls = {
671
- batchSend: 'batchSave',
672
- getFieldMapping: 'getMetadata',
673
- setFieldMapping: 'setMetadata'
674
- };
675
- const callsReferencingModelsToCheck = ['batchSave', 'batchDelete'];
676
- const traverseFn = traverse.default || traverse;
677
- traverseFn(ast, {
678
- CallExpression(path) {
679
- const lineNumber = path.node.loc?.start.line;
680
- const callee = path.node.callee;
681
- if (callee.object?.type === 'Identifier' && callee.object.name === 'nango' && callee.property?.type === 'Identifier') {
682
- if (deprecatedCalls[callee.property.name]) {
683
- console.warn(chalk.yellow(`nango.${callee.property.name}() used at line ${lineNumber} is deprecated. Use nango.${deprecatedCalls[callee.property.name]}() instead.`));
684
- }
685
- if (type === SyncConfigType.ACTION) {
686
- if (disallowedActionCalls.includes(callee.property.name)) {
687
- disallowedMessage(callee.property.name, lineNumber);
688
- usedCorrectly = false;
689
- }
690
- }
691
- const isAwaited = path.findParent((parentPath) => parentPath.isAwaitExpression());
692
- const isThenOrCatch = path.findParent((parentPath) => t.isMemberExpression(parentPath.node) &&
693
- (t.isIdentifier(parentPath.node.property, { name: 'then' }) || t.isIdentifier(parentPath.node.property, { name: 'catch' })));
694
- if (!isAwaited && !isThenOrCatch && nangoCalls.includes(callee.property.name)) {
695
- awaitMessage(callee.property.name, lineNumber);
696
- areAwaited = false;
697
- }
698
- if (callsReferencingModelsToCheck.includes(callee.property.name)) {
699
- const args = path.node.arguments;
700
- const modelArg = args[args.length - 1];
701
- if (!modelNames.includes(modelArg.value)) {
702
- console.log(chalk.red(`"${modelArg.value}" is not a valid model name. Please check "${filePath}:${lineNumber}". The possible model names are: ${modelNames.join(', ')}`));
703
- usedCorrectly = false;
704
- }
705
- }
706
- }
707
- }
708
- });
709
- return areAwaited && usedCorrectly;
710
- };
711
216
  export const tscWatch = async (debug = false) => {
712
217
  const tsconfig = fs.readFileSync(`${getNangoRootPath()}/tsconfig.dev.json`, 'utf8');
713
- const config = await getConfig();
714
- const modelNames = getModelNamesFromConfig(config);
218
+ const config = await yamlService.getConfig();
219
+ const modelNames = yamlService.getModelNames(config);
715
220
  const watchPath = [`./*.ts`, `./${nangoConfigFile}`];
716
221
  if (debug) {
717
222
  printDebug(`Watching ${watchPath.join(', ')}`);
@@ -733,7 +238,7 @@ export const tscWatch = async (debug = false) => {
733
238
  if (debug) {
734
239
  printDebug(`Creating ${TYPES_FILE_NAME} file`);
735
240
  }
736
- await createModelFile();
241
+ await modelService.createModelFile();
737
242
  }
738
243
  watcher.on('add', (filePath) => {
739
244
  if (filePath === nangoConfigFile) {
@@ -772,7 +277,7 @@ export const tscWatch = async (debug = false) => {
772
277
  }
773
278
  const syncConfig = [...providerConfiguration.syncs, ...providerConfiguration.actions].find((sync) => sync.name === path.basename(filePath, '.ts'));
774
279
  const type = syncConfig?.type || SyncConfigType.SYNC;
775
- if (!nangoCallsAreUsedCorrectly(filePath, type, modelNames)) {
280
+ if (!parserService.callsAreUsedCorrectly(filePath, type, modelNames)) {
776
281
  return;
777
282
  }
778
283
  const result = compiler.compile(fs.readFileSync(filePath, 'utf8'), filePath);
@@ -794,7 +299,7 @@ export const configWatch = (debug = false) => {
794
299
  }
795
300
  const watcher = chokidar.watch(watchPath, { ignoreInitial: true });
796
301
  watcher.on('change', async () => {
797
- await createModelFile(true);
302
+ await modelService.createModelFile(true);
798
303
  });
799
304
  };
800
305
  let child;
@@ -838,74 +343,4 @@ export const dockerRun = async (debug = false) => {
838
343
  child?.on('error', reject);
839
344
  });
840
345
  };
841
- function packageIntegrationData(config, debug, version = '', optionalSyncName = '', optionalActionName = '') {
842
- const postData = [];
843
- for (const integration of config) {
844
- const { providerConfigKey } = integration;
845
- let { syncs, actions } = integration;
846
- let flows = [...syncs, ...actions];
847
- if (optionalSyncName) {
848
- syncs = syncs.filter((sync) => sync.name === optionalSyncName);
849
- flows = syncs;
850
- }
851
- if (optionalActionName) {
852
- actions = actions.filter((action) => action.name === optionalActionName);
853
- flows = actions;
854
- }
855
- if (optionalSyncName && optionalActionName) {
856
- flows = [...syncs, ...actions];
857
- }
858
- for (const sync of flows) {
859
- const { name: syncName, runs = '', returns: models, models: model_schema, type = SyncConfigType.SYNC } = sync;
860
- const { path: integrationFilePath, result: integrationFileResult } = localFileService.checkForIntegrationDistFile(syncName, './');
861
- const metadata = {};
862
- if (sync.description) {
863
- metadata['description'] = sync.description;
864
- }
865
- if (sync.scopes) {
866
- metadata['scopes'] = sync.scopes;
867
- }
868
- if (!integrationFileResult) {
869
- console.log(chalk.red(`No integration file found for ${syncName} at ${integrationFilePath}. Skipping...`));
870
- continue;
871
- }
872
- if (type !== SyncConfigType.SYNC && type !== SyncConfigType.ACTION) {
873
- console.log(chalk.red(`The sync ${syncName} has an invalid type "${type}". The type must be either ${SyncConfigType.SYNC} or${SyncConfigType.ACTION}. Skipping...`));
874
- }
875
- if (type === SyncConfigType.SYNC && !runs) {
876
- console.log(chalk.red(`The sync ${syncName} is missing the "runs" property. Skipping...`));
877
- continue;
878
- }
879
- if (runs && type === SyncConfigType.SYNC) {
880
- const { success, error } = getInterval(runs, new Date());
881
- if (!success) {
882
- console.log(chalk.red(`The sync ${syncName} has an issue with the sync interval "${runs}": ${error?.message}`));
883
- return null;
884
- }
885
- }
886
- if (debug) {
887
- printDebug(`Integration file found for ${syncName} at ${integrationFilePath}`);
888
- }
889
- const body = {
890
- syncName,
891
- providerConfigKey,
892
- models: Array.isArray(models) ? models : [models],
893
- version: version,
894
- runs,
895
- track_deletes: sync.track_deletes || false,
896
- auto_start: sync.auto_start === false ? false : true,
897
- attributes: sync.attributes || {},
898
- metadata: metadata || {},
899
- type,
900
- fileBody: {
901
- js: localFileService.getIntegrationFile(syncName, './'),
902
- ts: localFileService.getIntegrationTsFile(syncName, './')
903
- },
904
- model_schema: JSON.stringify(model_schema)
905
- };
906
- postData.push(body);
907
- }
908
- }
909
- return postData;
910
- }
911
346
  //# 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":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../lib/sync.ts"],"names":[],"mappings":"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"}
@@ -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
+
@@ -15,7 +15,7 @@ services:
15
15
  - nango
16
16
 
17
17
  nango-server:
18
- image: nangohq/nango-server:0.36.41
18
+ image: nangohq/nango-server:0.36.42
19
19
  container_name: nango-server
20
20
  environment:
21
21
  - TEMPORAL_ADDRESS=temporal:7233
@@ -47,7 +47,7 @@ services:
47
47
  - nango
48
48
 
49
49
  nango-worker:
50
- image: nangohq/nango-worker:0.36.41
50
+ image: nangohq/nango-worker:0.36.42
51
51
  container_name: nango-worker
52
52
  restart: always
53
53
  ports:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nango",
3
- "version": "0.36.41",
3
+ "version": "0.36.42",
4
4
  "description": "Nango's CLI tool.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -23,7 +23,7 @@
23
23
  "dependencies": {
24
24
  "@babel/traverse": "^7.22.5",
25
25
  "@inquirer/prompts": "^2.3.0",
26
- "@nangohq/shared": "0.36.41",
26
+ "@nangohq/shared": "0.36.42",
27
27
  "@vercel/ncc": "^0.36.1",
28
28
  "ajv": "^8.12.0",
29
29
  "ajv-errors": "^3.0.0",