nango 0.40.0 → 0.40.2

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 (52) hide show
  1. package/dist/cli.d.ts +16 -4
  2. package/dist/cli.js +76 -124
  3. package/dist/cli.js.map +1 -1
  4. package/dist/constants.d.ts +0 -1
  5. package/dist/constants.js +0 -1
  6. package/dist/constants.js.map +1 -1
  7. package/dist/index.js +38 -23
  8. package/dist/index.js.map +1 -1
  9. package/dist/services/compile.service.d.ts +14 -9
  10. package/dist/services/compile.service.js +71 -67
  11. package/dist/services/compile.service.js.map +1 -1
  12. package/dist/services/compile.service.unit.test.js +17 -7
  13. package/dist/services/compile.service.unit.test.js.map +1 -1
  14. package/dist/services/config.service.d.ts +16 -7
  15. package/dist/services/config.service.js +84 -55
  16. package/dist/services/config.service.js.map +1 -1
  17. package/dist/services/config.service.unit.test.d.ts +1 -0
  18. package/dist/services/config.service.unit.test.js +147 -0
  19. package/dist/services/config.service.unit.test.js.map +1 -0
  20. package/dist/services/deploy.service.d.ts +14 -5
  21. package/dist/services/deploy.service.js +81 -71
  22. package/dist/services/deploy.service.js.map +1 -1
  23. package/dist/services/dryrun.service.js +11 -11
  24. package/dist/services/dryrun.service.js.map +1 -1
  25. package/dist/services/migration.service.js +23 -26
  26. package/dist/services/migration.service.js.map +1 -1
  27. package/dist/services/model.service.d.ts +38 -8
  28. package/dist/services/model.service.js +129 -167
  29. package/dist/services/model.service.js.map +1 -1
  30. package/dist/services/model.service.unit.test.d.ts +1 -0
  31. package/dist/services/model.service.unit.test.js +138 -0
  32. package/dist/services/model.service.unit.test.js.map +1 -0
  33. package/dist/services/parser.service.d.ts +1 -2
  34. package/dist/services/parser.service.js +3 -4
  35. package/dist/services/parser.service.js.map +1 -1
  36. package/dist/services/verification.service.d.ts +9 -2
  37. package/dist/services/verification.service.js +20 -22
  38. package/dist/services/verification.service.js.map +1 -1
  39. package/dist/sync.unit.cli-test.js +157 -222
  40. package/dist/sync.unit.cli-test.js.map +1 -1
  41. package/dist/templates/action.ejs +2 -47
  42. package/dist/templates/nango.yaml +1 -2
  43. package/dist/templates/sync.ejs +1 -4
  44. package/dist/utils/layoutMode.d.ts +7 -0
  45. package/dist/utils/layoutMode.js +41 -0
  46. package/dist/utils/layoutMode.js.map +1 -0
  47. package/dist/utils.d.ts +0 -3
  48. package/dist/utils.js +4 -127
  49. package/dist/utils.js.map +1 -1
  50. package/lib/nango.yaml.schema.v2.json +183 -178
  51. package/package.json +7 -6
  52. package/dist/nango-sync.d.ts +0 -299
@@ -2,30 +2,29 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  import chalk from 'chalk';
4
4
  import { exec } from 'child_process';
5
- import { nangoConfigFile, loadLocalNangoConfig, determineVersion } from '@nangohq/shared';
5
+ import { nangoConfigFile } from '@nangohq/nango-yaml';
6
6
  import { printDebug, getNangoRootPath } from '../utils.js';
7
+ import { load } from './config.service.js';
7
8
  export const v1toV2Migration = async (loadLocation) => {
8
9
  if (process.env['NANGO_CLI_UPGRADE_MODE'] === 'ignore') {
9
10
  return;
10
11
  }
11
- const localConfig = await loadLocalNangoConfig(loadLocation);
12
- if (!localConfig) {
12
+ const { response: parsed, success } = load(loadLocation);
13
+ if (!success || !parsed) {
13
14
  return;
14
15
  }
15
- const version = determineVersion(localConfig);
16
- if (version === 'v2') {
16
+ if (parsed.yamlVersion === 'v2') {
17
17
  console.log(chalk.blue(`nango.yaml is already at v2.`));
18
+ return;
18
19
  }
19
- if (version === 'v1' && localConfig.integrations) {
20
- exec(`node ${getNangoRootPath()}/scripts/v1-v2.js ./${nangoConfigFile}`, (error) => {
21
- if (error) {
22
- console.log(chalk.red(`There was an issue migrating your nango.yaml to v2.`));
23
- console.error(error);
24
- return;
25
- }
26
- console.log(chalk.blue(`Migrated to v2 of nango.yaml!`));
27
- });
28
- }
20
+ exec(`node ${getNangoRootPath()}/scripts/v1-v2.js ./${nangoConfigFile}`, (error) => {
21
+ if (error) {
22
+ console.log(chalk.red(`There was an issue migrating your nango.yaml to v2.`));
23
+ console.error(error);
24
+ return;
25
+ }
26
+ console.log(chalk.blue(`Migrated to v2 of nango.yaml!`));
27
+ });
29
28
  };
30
29
  async function createDirectory(dirPath, debug = false) {
31
30
  if (fs.existsSync(dirPath)) {
@@ -66,23 +65,21 @@ async function updateModelImport(filePath, debug = false) {
66
65
  }
67
66
  }
68
67
  export const directoryMigration = async (loadLocation, debug) => {
69
- const localConfig = await loadLocalNangoConfig(loadLocation);
70
- if (!localConfig) {
68
+ const { response: parsed, success } = load(loadLocation);
69
+ if (!success || !parsed) {
71
70
  return;
72
71
  }
73
- const version = determineVersion(localConfig);
74
- if (version !== 'v2') {
72
+ if (parsed.yamlVersion !== 'v2') {
75
73
  console.log(chalk.red(`nango.yaml is not at v2. Nested directories are not supported in v1.`));
76
74
  return;
77
75
  }
78
- for (const integration of Object.keys(localConfig.integrations)) {
79
- const integrationPath = `${loadLocation}/${integration}`;
76
+ for (const [providerConfigKey, integration] of Object.entries(parsed.integrations)) {
77
+ const integrationPath = `${loadLocation}/${providerConfigKey}`;
80
78
  await createDirectory(integrationPath, debug);
81
- const scripts = localConfig.integrations[integration];
82
- if (scripts?.syncs) {
79
+ if (integration.syncs) {
83
80
  const syncsPath = path.join(integrationPath, 'syncs');
84
81
  await createDirectory(syncsPath, debug);
85
- for (const sync of Object.keys(scripts.syncs)) {
82
+ for (const sync of Object.keys(integration.syncs)) {
86
83
  const syncPath = path.join(syncsPath, `${sync}.ts`);
87
84
  const moved = await moveFile(path.join(loadLocation, `${sync}.ts`), syncPath, debug);
88
85
  if (moved) {
@@ -90,10 +87,10 @@ export const directoryMigration = async (loadLocation, debug) => {
90
87
  }
91
88
  }
92
89
  }
93
- if (scripts?.actions) {
90
+ if (integration.actions) {
94
91
  const actionsPath = path.join(integrationPath, 'actions');
95
92
  await createDirectory(actionsPath, debug);
96
- for (const action of Object.keys(scripts.actions)) {
93
+ for (const action of Object.keys(integration.actions)) {
97
94
  const actionPath = path.join(actionsPath, `${action}.ts`);
98
95
  const moved = await moveFile(path.join(loadLocation, `${action}.ts`), actionPath, debug);
99
96
  if (moved) {
@@ -1 +1 @@
1
- {"version":3,"file":"migration.service.js","sourceRoot":"","sources":["../../lib/services/migration.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration.service.js","sourceRoot":"","sources":["../../lib/services/migration.service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,38 @@
1
- import type { NangoModel, NangoIntegration } from '@nangohq/shared';
2
- declare class ModelService {
3
- build(models: NangoModel, integrations: NangoIntegration, debug?: boolean): (string | undefined)[] | null;
4
- private getFieldType;
5
- createModelFile(notify?: boolean): Promise<void>;
6
- }
7
- declare const modelService: ModelService;
8
- export default modelService;
1
+ import type { NangoModel, NangoModelField, NangoYamlParsed } from '@nangohq/types';
2
+ import type { ServiceResponse } from '@nangohq/shared';
3
+ export type ModelsMap = Map<string, Record<string, any>>;
4
+ /**
5
+ * Load nango.yaml and generate model.ts
6
+ */
7
+ export declare function loadYamlAndGeneratedModel({ fullPath, debug }: {
8
+ fullPath: string;
9
+ debug?: boolean;
10
+ }): ServiceResponse<NangoYamlParsed>;
11
+ /**
12
+ * Build models.ts
13
+ */
14
+ export declare function buildModelsTS({ parsed }: {
15
+ parsed: NangoYamlParsed;
16
+ }): string;
17
+ export declare function generateInterfaces({ parsed }: {
18
+ parsed: NangoYamlParsed;
19
+ }): string[];
20
+ /**
21
+ * Transform a JSON model to its Typescript equivalent
22
+ */
23
+ export declare function modelToTypescript({ model }: {
24
+ model: NangoModel;
25
+ }): string;
26
+ export declare function fieldsToTypescript({ fields }: {
27
+ fields: NangoModelField[];
28
+ }): string[];
29
+ /**
30
+ * Transform a field definition to its typescript equivalent
31
+ */
32
+ export declare function fieldToTypescript({ field }: {
33
+ field: NangoModelField;
34
+ }): string | boolean | null | undefined | number;
35
+ /**
36
+ * Generate SDK types
37
+ */
38
+ export declare function generateSDKTypes(): string;
@@ -1,180 +1,142 @@
1
- import fs from 'fs';
2
- import yaml from 'js-yaml';
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { resolve } from 'import-meta-resolve';
3
4
  import chalk from 'chalk';
4
- import { isJsOrTsType, SyncConfigType, nangoConfigFile } from '@nangohq/shared';
5
- import { printDebug, getNangoRootPath } from '../utils.js';
6
- import { TYPES_FILE_NAME, NangoSyncTypesFileLocation } from '../constants.js';
7
- import configService from './config.service.js';
8
- class ModelService {
9
- build(models, integrations, debug = false) {
10
- const returnedModels = Object.keys(integrations).reduce((acc, providerConfigKey) => {
11
- const syncObject = integrations[providerConfigKey];
12
- const syncNames = Object.keys(syncObject);
13
- for (const syncName of syncNames) {
14
- const syncData = syncObject[syncName];
15
- if (syncData.returns) {
16
- const syncReturns = Array.isArray(syncData.returns) ? syncData.returns : [syncData.returns];
17
- syncReturns.forEach((modelName) => {
18
- if (!acc.includes(modelName)) {
19
- acc.push(modelName);
20
- }
21
- });
22
- }
23
- }
24
- return acc;
25
- }, []);
26
- if (!models) {
27
- return null;
5
+ import { NANGO_VERSION } from '@nangohq/shared';
6
+ import { printDebug } from '../utils.js';
7
+ import { TYPES_FILE_NAME } from '../constants.js';
8
+ import { load } from './config.service.js';
9
+ import { shouldQuote } from '@nangohq/nango-yaml';
10
+ /**
11
+ * Load nango.yaml and generate model.ts
12
+ */
13
+ export function loadYamlAndGeneratedModel({ fullPath, debug = false }) {
14
+ if (debug) {
15
+ printDebug(`Generating ${TYPES_FILE_NAME} file`);
16
+ }
17
+ const fp = path.resolve(fullPath, TYPES_FILE_NAME);
18
+ if (!fs.existsSync(fp)) {
19
+ if (debug) {
20
+ printDebug('First compilation');
21
+ }
22
+ }
23
+ else {
24
+ if (debug) {
25
+ printDebug(`File already exists, replacing`);
28
26
  }
29
- const interfaceDefinitions = Object.keys(models).map((modelName) => {
30
- const fields = models[modelName];
31
- // we only care that models that are returned have an ID field
32
- // if the model is not returned from a sync script then it must be a
33
- // helper model that is used to build the returned models
34
- const syncForModel = Object.keys(integrations).find((providerConfigKey) => {
35
- const syncObject = integrations[providerConfigKey];
36
- const syncNames = Object.keys(syncObject);
37
- for (const syncName of syncNames) {
38
- const syncData = syncObject[syncName];
39
- if (syncData.returns && syncData.type !== SyncConfigType.ACTION) {
40
- return syncData.returns.includes(modelName);
41
- }
42
- }
43
- return false;
44
- });
45
- if (returnedModels.includes(modelName) && !fields['id'] && syncForModel) {
46
- throw new Error(`Model "${modelName}" doesn't have an id field. This is required to be able to uniquely identify the data record.`);
47
- }
48
- const interfaceName = `${modelName.charAt(0).toUpperCase()}${modelName.slice(1)}`;
49
- let extendsClause = '';
50
- const fieldDefinitions = Object.keys(fields)
51
- .filter((fieldName) => {
52
- if (fieldName === '__extends') {
53
- const fieldModel = fields[fieldName];
54
- const multipleExtends = fieldModel.split(',').map((e) => e.trim());
55
- extendsClause = ` extends ${multipleExtends.join(', ')}`;
56
- return false;
57
- }
58
- return true;
59
- })
60
- .map((fieldName) => {
61
- const fieldModel = fields[fieldName];
62
- const fieldType = this.getFieldType(fieldModel, debug, modelName, models);
63
- if (fieldName === '__string') {
64
- const dynamicName = fields[fieldName];
65
- return ` [key: string]: ${dynamicName};`;
66
- }
67
- return ` ${fieldName}: ${fieldType};`;
68
- })
69
- .join('\n');
70
- const interfaceDefinition = `export interface ${interfaceName}${extendsClause} {\n${fieldDefinitions}\n}\n`;
71
- return interfaceDefinition;
72
- });
73
- return interfaceDefinitions;
74
27
  }
75
- getFieldType(rawField, debug = false, modelName, models) {
76
- if (typeof rawField === 'string') {
77
- if (rawField.toString().endsWith(',') || rawField.toString().endsWith(';')) {
78
- throw new Error(`Field "${rawField}" in the model ${modelName} ends with a comma or semicolon which is not allowed.`);
79
- }
80
- let field = rawField;
81
- let hasNull = false;
82
- let hasUndefined = false;
83
- let tsType = '';
84
- if (field.includes('null')) {
85
- field = field.replace(/\s*\|\s*null\s*/g, '');
86
- hasNull = true;
87
- }
88
- if (field === 'undefined') {
89
- if (debug) {
90
- printDebug(`Field is defined undefined which isn't recommended.`);
91
- }
92
- return 'undefined';
93
- }
94
- if (field.includes('undefined')) {
95
- field = field.replace(/\s*\|\s*undefined\s*/g, '');
96
- hasUndefined = true;
97
- }
98
- switch (field) {
99
- case 'boolean':
100
- case 'bool':
101
- tsType = 'boolean';
102
- break;
103
- case 'string':
104
- tsType = 'string';
105
- break;
106
- case 'char':
107
- tsType = 'string';
108
- break;
109
- case 'integer':
110
- case 'int':
111
- case 'number':
112
- tsType = 'number';
113
- break;
114
- case 'date':
115
- tsType = 'Date';
116
- break;
117
- default:
118
- tsType = field;
119
- }
120
- if (hasNull) {
121
- tsType = `${tsType} | null`;
122
- }
123
- if (hasUndefined) {
124
- tsType = `${tsType} | undefined`;
125
- }
126
- if (tsType.includes('|')) {
127
- const types = tsType.split('|');
128
- const hasStringLiteral = types.some((type) => !isJsOrTsType(type.trim()) && !Object.keys(models).includes(type.replace(/\[\]/g, '').trim()));
129
- if (hasStringLiteral) {
130
- const enumValues = tsType
131
- .split('|')
132
- .map((e) => (isJsOrTsType(e.trim()) || Object.keys(models).includes(e.trim()) ? e.trim() : `'${e.trim()}'`))
133
- .join(' | ');
134
- tsType = enumValues;
135
- }
136
- }
137
- return tsType;
28
+ const { success, error, response: parsed } = load(fullPath, debug);
29
+ if (!success || !parsed) {
30
+ console.log(chalk.red(error?.message));
31
+ return { success: false, error: null, response: null };
32
+ }
33
+ const modelTs = buildModelsTS({ parsed });
34
+ fs.writeFileSync(fp, modelTs);
35
+ if (debug) {
36
+ printDebug(`${TYPES_FILE_NAME} generated`);
37
+ }
38
+ return { success: true, error: null, response: parsed };
39
+ }
40
+ /**
41
+ * Build models.ts
42
+ */
43
+ export function buildModelsTS({ parsed }) {
44
+ return `// ---------------------------
45
+ // This file was generated by Nango (v${NANGO_VERSION})
46
+ // It's recommended to version this file
47
+ // https://nango.dev
48
+ // ---------------------------
49
+
50
+ // ------ Models
51
+ ${generateInterfaces({ parsed }).join('\n\n')}
52
+ // ------ /Models
53
+
54
+ // ------ SDK
55
+ ${generateSDKTypes()}
56
+ // ------ /SDK
57
+
58
+ // ------ Flows
59
+ export const NangoFlows = ${JSON.stringify(parsed.integrations, null, 2)} as const;
60
+ // ------ /Flows
61
+ `;
62
+ }
63
+ export function generateInterfaces({ parsed }) {
64
+ const interfaces = [];
65
+ for (const [, model] of parsed.models) {
66
+ interfaces.push(modelToTypescript({ model }));
67
+ }
68
+ return interfaces;
69
+ }
70
+ /**
71
+ * Transform a JSON model to its Typescript equivalent
72
+ */
73
+ export function modelToTypescript({ model }) {
74
+ const output = [];
75
+ if (model.isAnon) {
76
+ output.push(`/** @deprecated It is recommended to use a Model */`);
77
+ output.push(`export type ${model.name} = ${fieldToTypescript({ field: model.fields[0] })}`);
78
+ }
79
+ else {
80
+ output.push(`export interface ${model.name} {`);
81
+ output.push(...fieldsToTypescript({ fields: model.fields }));
82
+ output.push(`};`);
83
+ }
84
+ return output.join('\n');
85
+ }
86
+ export function fieldsToTypescript({ fields }) {
87
+ const output = [];
88
+ const dynamic = fields.find((field) => field.dynamic);
89
+ // Insert dynamic key at the beginning
90
+ if (dynamic) {
91
+ if (!Array.isArray(dynamic.value)) {
92
+ output.push(` [key: string]: ${fieldToTypescript({ field: dynamic })};`);
138
93
  }
139
94
  else {
140
- try {
141
- const nestedFields = Object.keys(rawField)
142
- .map((fieldName) => ` ${fieldName}: ${this.getFieldType(rawField[fieldName], debug, modelName, models)};`)
143
- .join('\n');
144
- return `{\n${nestedFields}\n}`;
145
- }
146
- catch (_) {
147
- // eslint-disable-next-line no-console
148
- console.log(chalk.red(`Failed to parse field ${JSON.stringify(rawField)} so just returning it back as a string`));
149
- return String(rawField);
150
- }
95
+ output.push(` [key: string]: {${fieldsToTypescript({ fields: dynamic.value }).join('\n')}};`);
151
96
  }
152
97
  }
153
- async createModelFile(notify = false) {
154
- const configContents = fs.readFileSync(`./${nangoConfigFile}`, 'utf8');
155
- const configData = yaml.load(configContents);
156
- const { models, integrations } = configData;
157
- const interfaceDefinitions = modelService.build(models, integrations);
158
- if (interfaceDefinitions) {
159
- fs.writeFileSync(`./${TYPES_FILE_NAME}`, interfaceDefinitions.join('\n'));
98
+ // Regular fields
99
+ for (const field of fields) {
100
+ if (field.dynamic) {
101
+ continue;
160
102
  }
161
- // insert NangoSync types to the bottom of the file
162
- const typesContent = fs.readFileSync(`${getNangoRootPath()}/${NangoSyncTypesFileLocation}`, 'utf8');
163
- fs.writeFileSync(`./${TYPES_FILE_NAME}`, typesContent, { flag: 'a' });
164
- const { success, error, response: config } = await configService.load();
165
- if (!success || !config) {
166
- // eslint-disable-next-line no-console
167
- console.log(chalk.red(error?.message));
168
- throw new Error('Failed to load config');
103
+ output.push(` ${shouldQuote(field.name) ? `"${field.name}"` : field.name}${field.optional ? '?' : ''}: ${fieldToTypescript({ field: field })};`);
104
+ }
105
+ return output;
106
+ }
107
+ /**
108
+ * Transform a field definition to its typescript equivalent
109
+ */
110
+ export function fieldToTypescript({ field }) {
111
+ if (Array.isArray(field.value)) {
112
+ if (field.union) {
113
+ return field.value.map((f) => fieldToTypescript({ field: f })).join(' | ');
169
114
  }
170
- const flowConfig = `export const NangoFlows = ${JSON.stringify(config, null, 2)} as const; \n`;
171
- fs.writeFileSync(`./${TYPES_FILE_NAME}`, flowConfig, { flag: 'a' });
172
- if (notify) {
173
- // eslint-disable-next-line no-console
174
- console.log(chalk.green(`The ${nangoConfigFile} was updated. The interface file (${TYPES_FILE_NAME}) was updated to reflect the updated config`));
115
+ if (field.array) {
116
+ return `(${field.value.map((f) => fieldToTypescript({ field: f })).join(' | ')})[]`;
175
117
  }
118
+ return `{${fieldsToTypescript({ fields: field.value }).join('\n')}}`;
176
119
  }
120
+ if (field.model || field.tsType) {
121
+ return `${field.value}${field.array ? '[]' : ''}`;
122
+ }
123
+ if (field.value === null) {
124
+ return 'null';
125
+ }
126
+ if (typeof field.value === 'string') {
127
+ return `'${field.value}${field.array ? '[]' : ''}'`;
128
+ }
129
+ return `${field.value}${field.array ? '[]' : ''}`;
130
+ }
131
+ /**
132
+ * Generate SDK types
133
+ */
134
+ export function generateSDKTypes() {
135
+ const filePath = resolve('@nangohq/shared/dist/sdk/sync.d.ts', import.meta.url);
136
+ const typesContent = fs.readFileSync(filePath.replace('file://', ''), 'utf8');
137
+ return `
138
+ ${typesContent}
139
+
140
+ `;
177
141
  }
178
- const modelService = new ModelService();
179
- export default modelService;
180
142
  //# sourceMappingURL=model.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../lib/services/model.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../lib/services/model.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};