nango 0.40.5 → 0.40.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/index.js +18 -23
- package/dist/index.js.map +1 -1
- package/dist/services/compile.service.d.ts +8 -2
- package/dist/services/compile.service.js +10 -4
- package/dist/services/compile.service.js.map +1 -1
- package/dist/services/config.service.d.ts +2 -2
- package/dist/services/config.service.js +2 -2
- package/dist/services/config.service.js.map +1 -1
- package/dist/services/config.service.unit.test.js +11 -13
- package/dist/services/config.service.unit.test.js.map +1 -1
- package/dist/services/deploy.service.d.ts +11 -10
- package/dist/services/deploy.service.js +119 -75
- package/dist/services/deploy.service.js.map +1 -1
- package/dist/services/deploy.service.unit.cli-test.d.ts +1 -0
- package/dist/services/deploy.service.unit.cli-test.js +30 -0
- package/dist/services/deploy.service.unit.cli-test.js.map +1 -0
- package/dist/services/dryrun.service.d.ts +9 -5
- package/dist/services/dryrun.service.js +26 -20
- package/dist/services/dryrun.service.js.map +1 -1
- package/dist/services/local-integration.service.js +2 -2
- package/dist/services/local-integration.service.js.map +1 -1
- package/dist/services/migration.service.d.ts +1 -1
- package/dist/services/migration.service.js +9 -9
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/model.service.d.ts +13 -1
- package/dist/services/model.service.js +50 -6
- package/dist/services/model.service.js.map +1 -1
- package/dist/services/model.service.unit.test.js +20 -8
- package/dist/services/model.service.unit.test.js.map +1 -1
- package/dist/services/verification.service.js +6 -6
- package/dist/services/verification.service.js.map +1 -1
- package/dist/sync.unit.cli-test.js +32 -36
- package/dist/sync.unit.cli-test.js.map +1 -1
- package/dist/tests/helpers.d.ts +4 -1
- package/dist/tests/helpers.js +14 -4
- package/dist/tests/helpers.js.map +1 -1
- package/package.json +7 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-integration.service.js","sourceRoot":"","sources":["../../lib/services/local-integration.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC1G,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,kBAAkB;IACpB,KAAK,CAAC,YAAY;QACd,OAAO;
|
|
1
|
+
{"version":3,"file":"local-integration.service.js","sourceRoot":"","sources":["../../lib/services/local-integration.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const v1toV2Migration: (loadLocation: string) =>
|
|
1
|
+
export declare const v1toV2Migration: (loadLocation: string) => void;
|
|
2
2
|
export declare const directoryMigration: (loadLocation: string, debug?: boolean) => Promise<void>;
|
|
@@ -4,16 +4,16 @@ import chalk from 'chalk';
|
|
|
4
4
|
import { exec } from 'child_process';
|
|
5
5
|
import { nangoConfigFile } from '@nangohq/nango-yaml';
|
|
6
6
|
import { printDebug, getNangoRootPath } from '../utils.js';
|
|
7
|
-
import {
|
|
8
|
-
export const v1toV2Migration =
|
|
7
|
+
import { parse } from './config.service.js';
|
|
8
|
+
export const v1toV2Migration = (loadLocation) => {
|
|
9
9
|
if (process.env['NANGO_CLI_UPGRADE_MODE'] === 'ignore') {
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
|
-
const { response
|
|
13
|
-
if (!success || !parsed) {
|
|
12
|
+
const { response, success } = parse(loadLocation);
|
|
13
|
+
if (!success || !response?.parsed) {
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
-
if (parsed.yamlVersion === 'v2') {
|
|
16
|
+
if (response.parsed.yamlVersion === 'v2') {
|
|
17
17
|
console.log(chalk.blue(`nango.yaml is already at v2.`));
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
@@ -65,15 +65,15 @@ async function updateModelImport(filePath, debug = false) {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
export const directoryMigration = async (loadLocation, debug) => {
|
|
68
|
-
const { response
|
|
69
|
-
if (!success || !parsed) {
|
|
68
|
+
const { response, success } = parse(loadLocation);
|
|
69
|
+
if (!success || !response?.parsed) {
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
|
-
if (parsed.yamlVersion !== 'v2') {
|
|
72
|
+
if (response.parsed.yamlVersion !== 'v2') {
|
|
73
73
|
console.log(chalk.red(`nango.yaml is not at v2. Nested directories are not supported in v1.`));
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
|
-
for (const [providerConfigKey, integration] of Object.entries(parsed.integrations)) {
|
|
76
|
+
for (const [providerConfigKey, integration] of Object.entries(response.parsed.integrations)) {
|
|
77
77
|
const integrationPath = `${loadLocation}/${providerConfigKey}`;
|
|
78
78
|
await createDirectory(integrationPath, debug);
|
|
79
79
|
if (integration.syncs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.service.js","sourceRoot":"","sources":["../../lib/services/migration.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"migration.service.js","sourceRoot":"","sources":["../../lib/services/migration.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import type { JSONSchema7 } from 'json-schema';
|
|
1
2
|
import type { NangoModel, NangoModelField, NangoYamlParsed } from '@nangohq/types';
|
|
2
3
|
import type { ServiceResponse } from '@nangohq/shared';
|
|
3
4
|
export type ModelsMap = Map<string, Record<string, any>>;
|
|
4
5
|
/**
|
|
5
6
|
* Load nango.yaml and generate model.ts
|
|
6
7
|
*/
|
|
7
|
-
export declare function
|
|
8
|
+
export declare function loadYamlAndGenerate({ fullPath, debug }: {
|
|
8
9
|
fullPath: string;
|
|
9
10
|
debug?: boolean;
|
|
10
11
|
}): ServiceResponse<NangoYamlParsed>;
|
|
@@ -36,3 +37,14 @@ export declare function fieldToTypescript({ field }: {
|
|
|
36
37
|
* Generate SDK types
|
|
37
38
|
*/
|
|
38
39
|
export declare function generateSDKTypes(): string;
|
|
40
|
+
export declare function generateAdditionalExports({ fullPath, parsed, debug }: {
|
|
41
|
+
fullPath: string;
|
|
42
|
+
parsed: NangoYamlParsed;
|
|
43
|
+
debug: boolean;
|
|
44
|
+
}): void;
|
|
45
|
+
export declare function getExportToTS({ parsed }: {
|
|
46
|
+
parsed: NangoYamlParsed;
|
|
47
|
+
}): string;
|
|
48
|
+
export declare function getExportToJSON({ pathTS }: {
|
|
49
|
+
pathTS: string;
|
|
50
|
+
}): JSONSchema7;
|
|
@@ -2,15 +2,16 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { resolve } from 'import-meta-resolve';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
|
+
import tsj from 'ts-json-schema-generator';
|
|
5
6
|
import { NANGO_VERSION } from '@nangohq/shared';
|
|
6
7
|
import { printDebug } from '../utils.js';
|
|
7
8
|
import { TYPES_FILE_NAME } from '../constants.js';
|
|
8
|
-
import {
|
|
9
|
+
import { parse } from './config.service.js';
|
|
9
10
|
import { shouldQuote } from '@nangohq/nango-yaml';
|
|
10
11
|
/**
|
|
11
12
|
* Load nango.yaml and generate model.ts
|
|
12
13
|
*/
|
|
13
|
-
export function
|
|
14
|
+
export function loadYamlAndGenerate({ fullPath, debug = false }) {
|
|
14
15
|
if (debug) {
|
|
15
16
|
printDebug(`Generating ${TYPES_FILE_NAME} file`);
|
|
16
17
|
}
|
|
@@ -25,17 +26,19 @@ export function loadYamlAndGeneratedModel({ fullPath, debug = false }) {
|
|
|
25
26
|
printDebug(`File already exists, replacing`);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
|
-
const { success, error, response
|
|
29
|
-
if (!success || !parsed) {
|
|
29
|
+
const { success, error, response } = parse(fullPath, debug);
|
|
30
|
+
if (!success || !response?.parsed) {
|
|
30
31
|
console.log(chalk.red(error?.message));
|
|
31
32
|
return { success: false, error: null, response: null };
|
|
32
33
|
}
|
|
33
|
-
const modelTs = buildModelsTS({ parsed });
|
|
34
|
+
const modelTs = buildModelsTS({ parsed: response.parsed });
|
|
34
35
|
fs.writeFileSync(fp, modelTs);
|
|
35
36
|
if (debug) {
|
|
36
37
|
printDebug(`${TYPES_FILE_NAME} generated`);
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
+
// --- Additional exports
|
|
40
|
+
generateAdditionalExports({ parsed: response.parsed, fullPath, debug });
|
|
41
|
+
return { success: true, error: null, response: response.parsed };
|
|
39
42
|
}
|
|
40
43
|
/**
|
|
41
44
|
* Build models.ts
|
|
@@ -134,4 +137,45 @@ ${typesContent}
|
|
|
134
137
|
|
|
135
138
|
`;
|
|
136
139
|
}
|
|
140
|
+
export function generateAdditionalExports({ fullPath, parsed, debug }) {
|
|
141
|
+
const exportPath = path.resolve(fullPath, '.nango');
|
|
142
|
+
if (debug) {
|
|
143
|
+
printDebug(`Generating schemas in ${exportPath}`);
|
|
144
|
+
}
|
|
145
|
+
if (!fs.existsSync(exportPath)) {
|
|
146
|
+
fs.mkdirSync(exportPath, { recursive: true });
|
|
147
|
+
}
|
|
148
|
+
// Standalone typescript schema
|
|
149
|
+
const pathTS = path.join(exportPath, 'schema.ts');
|
|
150
|
+
fs.writeFileSync(pathTS, getExportToTS({ parsed }));
|
|
151
|
+
if (debug) {
|
|
152
|
+
printDebug(`Generated export ${pathTS}`);
|
|
153
|
+
}
|
|
154
|
+
// Standalone json schema
|
|
155
|
+
const pathJSON = path.join(exportPath, 'schema.json');
|
|
156
|
+
fs.writeFileSync(pathJSON, JSON.stringify(getExportToJSON({ pathTS }), null, 2));
|
|
157
|
+
if (debug) {
|
|
158
|
+
printDebug(`Generated export ${pathJSON}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
export function getExportToTS({ parsed }) {
|
|
162
|
+
return `// ---------------------------
|
|
163
|
+
// This file was generated by Nango (v${NANGO_VERSION})
|
|
164
|
+
// You can version this file
|
|
165
|
+
// ---------------------------
|
|
166
|
+
|
|
167
|
+
${generateInterfaces({ parsed }).join('\n\n')}
|
|
168
|
+
`;
|
|
169
|
+
}
|
|
170
|
+
export function getExportToJSON({ pathTS }) {
|
|
171
|
+
const schema = tsj
|
|
172
|
+
.createGenerator({
|
|
173
|
+
path: pathTS,
|
|
174
|
+
type: '*',
|
|
175
|
+
skipTypeCheck: true
|
|
176
|
+
})
|
|
177
|
+
.createSchema('*');
|
|
178
|
+
schema.$comment = `This file was generated by Nango (v${NANGO_VERSION})`;
|
|
179
|
+
return schema;
|
|
180
|
+
}
|
|
137
181
|
//# sourceMappingURL=model.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../lib/services/model.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"model.service.js","sourceRoot":"","sources":["../../lib/services/model.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,GAAG,MAAM,0BAA0B,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,EAAyC;IAClG,IAAI,KAAK,EAAE,CAAC;QACR,UAAU,CAAC,cAAc,eAAe,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,IAAI,KAAK,EAAE,CAAC;YACR,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,KAAK,EAAE,CAAC;YACR,UAAU,CAAC,gCAAgC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3D,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAE9B,IAAI,KAAK,EAAE,CAAC;QACR,UAAU,CAAC,GAAG,eAAe,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED,yBAAyB;IACzB,yBAAyB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAExE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,MAAM,EAA+B;IACjE,OAAO;wCAC6B,aAAa;;;;;;EAMnD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;;;EAI3C,gBAAgB,EAAE;;;;4BAIQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;CAEvE,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAA+B;IACtE,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAyB;IAC9D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAAiC;IACxE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEtD,sCAAsC;IACtC,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,oBAAoB,iBAAiB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,iBAAiB;IACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,SAAS;QACb,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACtJ,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAA8B;IACnE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACxF,CAAC;QAED,OAAO,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACzE,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAE9E,OAAO;EACT,YAAY;;CAEb,CAAC;AACF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAiE;IAChI,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,KAAK,EAAE,CAAC;QACR,UAAU,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAClD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,KAAK,EAAE,CAAC;QACR,UAAU,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACtD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,IAAI,KAAK,EAAE,CAAC;QACR,UAAU,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,MAAM,EAA+B;IACjE,OAAO;wCAC6B,aAAa;;;;EAInD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;CAC5C,CAAC;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAsB;IAC1D,MAAM,MAAM,GAAG,GAAG;SACb,eAAe,CAAC;QACb,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG;QACT,aAAa,EAAE,IAAI;KACtB,CAAC;SACD,YAAY,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM,CAAC,QAAQ,GAAG,sCAAsC,aAAa,GAAG,CAAC;IACzE,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
2
3
|
import { describe, expect, it } from 'vitest';
|
|
3
|
-
import { buildModelsTS, fieldToTypescript, fieldsToTypescript } from './model.service.js';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
return res.replace(/(v[0-9.]+)/, 'vTest');
|
|
7
|
-
}
|
|
4
|
+
import { buildModelsTS, fieldToTypescript, fieldsToTypescript, getExportToJSON } from './model.service.js';
|
|
5
|
+
import { parse } from './config.service.js';
|
|
6
|
+
import { removeVersion } from '../tests/helpers.js';
|
|
8
7
|
describe('buildModelTs', () => {
|
|
9
8
|
it('should return empty (with sdk)', () => {
|
|
10
9
|
const res = buildModelsTS({ parsed: { yamlVersion: 'v2', integrations: [], models: new Map() } });
|
|
@@ -65,8 +64,8 @@ describe('buildModelTs', () => {
|
|
|
65
64
|
expect(removeVersion(res.split('\n').slice(0, 25).join('\n'))).toMatchSnapshot('');
|
|
66
65
|
});
|
|
67
66
|
it('should support all advanced syntax', () => {
|
|
68
|
-
const { response
|
|
69
|
-
const res = buildModelsTS({ parsed: parsed });
|
|
67
|
+
const { response } = parse(path.resolve(__dirname, `../../fixtures/nango-yaml/v2/advanced-syntax`));
|
|
68
|
+
const res = buildModelsTS({ parsed: response.parsed });
|
|
70
69
|
const acc = [];
|
|
71
70
|
for (const line of res.split('\n')) {
|
|
72
71
|
if (line === '// ------ SDK') {
|
|
@@ -105,7 +104,7 @@ describe('fieldToTypescript', () => {
|
|
|
105
104
|
{ name: '0', value: 'male' },
|
|
106
105
|
{ name: '1', value: 'string', tsType: true },
|
|
107
106
|
{ name: '1', value: null, tsType: true },
|
|
108
|
-
{ name: '2', value: undefined, tsType: true },
|
|
107
|
+
{ name: '2', value: 'undefined', tsType: true },
|
|
109
108
|
{ name: '3', value: 1, tsType: true },
|
|
110
109
|
{ name: '4', value: true, tsType: true }
|
|
111
110
|
]
|
|
@@ -149,4 +148,17 @@ describe('fieldToTypescript', () => {
|
|
|
149
148
|
})).toStrictEqual('User[] | string');
|
|
150
149
|
});
|
|
151
150
|
});
|
|
151
|
+
describe('generate exports', () => {
|
|
152
|
+
describe('json', () => {
|
|
153
|
+
it('should export to JSON', () => {
|
|
154
|
+
const folderTS = `/tmp/cli-exports-json`;
|
|
155
|
+
fs.rmSync(folderTS, { recursive: true, force: true });
|
|
156
|
+
fs.mkdirSync(folderTS, { recursive: true });
|
|
157
|
+
const pathTS = path.join(`/tmp/cli-exports-json`, 'schema.ts');
|
|
158
|
+
fs.writeFileSync(pathTS, `export interface Test { id: string; name: number[]; }`);
|
|
159
|
+
const res = getExportToJSON({ pathTS });
|
|
160
|
+
expect(removeVersion(JSON.stringify(res, null, 2))).toMatchSnapshot();
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
});
|
|
152
164
|
//# sourceMappingURL=model.service.unit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.service.unit.test.js","sourceRoot":"","sources":["../../lib/services/model.service.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"model.service.unit.test.js","sourceRoot":"","sources":["../../lib/services/model.service.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import promptly from 'promptly';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { nangoConfigFile } from '@nangohq/nango-yaml';
|
|
6
|
-
import {
|
|
6
|
+
import { parse } from './config.service.js';
|
|
7
7
|
import { compileAllFiles, listFilesToCompile } from './compile.service.js';
|
|
8
8
|
import { printDebug } from '../utils.js';
|
|
9
9
|
import { NANGO_INTEGRATIONS_NAME } from '../constants.js';
|
|
@@ -82,15 +82,15 @@ class VerificationService {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
filesMatchConfig({ fullPath }) {
|
|
85
|
-
const { success, error, response
|
|
86
|
-
if (!success || !parsed) {
|
|
85
|
+
const { success, error, response } = parse(fullPath);
|
|
86
|
+
if (!success || !response?.parsed) {
|
|
87
87
|
console.log(chalk.red(error?.message));
|
|
88
88
|
return false;
|
|
89
89
|
}
|
|
90
|
-
const syncNames = parsed.integrations.map((provider) => provider.syncs.map((sync) => sync.name)).flat();
|
|
91
|
-
const actionNames = parsed.integrations.map((provider) => provider.actions.map((action) => action.name)).flat();
|
|
90
|
+
const syncNames = response.parsed.integrations.map((provider) => provider.syncs.map((sync) => sync.name)).flat();
|
|
91
|
+
const actionNames = response.parsed.integrations.map((provider) => provider.actions.map((action) => action.name)).flat();
|
|
92
92
|
const flows = [...syncNames, ...actionNames].filter((name) => name);
|
|
93
|
-
const tsFiles = listFilesToCompile({ fullPath, parsed });
|
|
93
|
+
const tsFiles = listFilesToCompile({ fullPath, parsed: response.parsed });
|
|
94
94
|
const tsFileNames = tsFiles.filter((file) => !file.inputPath.includes('models.ts')).map((file) => file.baseName);
|
|
95
95
|
const missingSyncsAndActions = flows.filter((syncOrActionName) => !tsFileNames.includes(syncOrActionName));
|
|
96
96
|
if (missingSyncsAndActions.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.service.js","sourceRoot":"","sources":["../../lib/services/verification.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"verification.service.js","sourceRoot":"","sources":["../../lib/services/verification.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,30 +8,26 @@ import { exampleSyncName } from './constants.js';
|
|
|
8
8
|
import { compileAllFiles, compileSingleFile, getFileToCompile } from './services/compile.service.js';
|
|
9
9
|
import { getNangoRootPath } from './utils.js';
|
|
10
10
|
import parserService from './services/parser.service.js';
|
|
11
|
-
import { copyDirectoryAndContents } from './tests/helpers.js';
|
|
12
|
-
import {
|
|
13
|
-
function getTestDirectory(name) {
|
|
14
|
-
const dir = `/tmp/${name}/nango-integrations/`;
|
|
15
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
16
|
-
fs.rmSync(dir, { recursive: true, force: true });
|
|
17
|
-
return dir;
|
|
18
|
-
}
|
|
11
|
+
import { copyDirectoryAndContents, removeVersion, fixturesPath, getTestDirectory } from './tests/helpers.js';
|
|
12
|
+
import { parse } from './services/config.service.js';
|
|
19
13
|
describe('generate function tests', () => {
|
|
20
|
-
const fixturesPath = './packages/cli/fixtures';
|
|
21
14
|
// Not the best but until we have a logger it will work
|
|
22
15
|
const consoleMock = vi.spyOn(console, 'log').mockImplementation(() => undefined);
|
|
23
16
|
afterEach(() => {
|
|
24
17
|
consoleMock.mockReset();
|
|
25
18
|
});
|
|
26
19
|
it('should init the expected files in the nango-integrations directory', async () => {
|
|
27
|
-
const dir = getTestDirectory('init');
|
|
20
|
+
const dir = await getTestDirectory('init');
|
|
28
21
|
init({ absolutePath: path.resolve(dir, '..'), debug: false });
|
|
29
22
|
expect(fs.existsSync(`${dir}/demo-github-integration/syncs/${exampleSyncName}.ts`)).toBe(true);
|
|
30
23
|
expect(fs.existsSync(`${dir}/.env`)).toBe(true);
|
|
31
24
|
expect(fs.existsSync(`${dir}/nango.yaml`)).toBe(true);
|
|
25
|
+
expect(fs.existsSync(`${dir}/models.ts`)).toBe(true);
|
|
26
|
+
expect(removeVersion(fs.readFileSync(`${dir}/.nango/schema.ts`).toString())).toMatchSnapshot();
|
|
27
|
+
expect(removeVersion(fs.readFileSync(`${dir}/.nango/schema.json`).toString())).toMatchSnapshot();
|
|
32
28
|
});
|
|
33
29
|
it('should not overwrite existing integration files', async () => {
|
|
34
|
-
const dir = getTestDirectory('overwrite');
|
|
30
|
+
const dir = await getTestDirectory('overwrite');
|
|
35
31
|
init({ absolutePath: dir, debug: false });
|
|
36
32
|
await fs.promises.writeFile(`${dir}/${exampleSyncName}.ts`, 'dummy fake content', 'utf8');
|
|
37
33
|
const dummyContent = 'This is dummy content. Do not overwrite!';
|
|
@@ -43,7 +39,7 @@ describe('generate function tests', () => {
|
|
|
43
39
|
expect(fileContentAfterInit).toBe(dummyContent);
|
|
44
40
|
});
|
|
45
41
|
it('should generate a different sync correctly', async () => {
|
|
46
|
-
const dir = getTestDirectory('generate');
|
|
42
|
+
const dir = await getTestDirectory('generate');
|
|
47
43
|
init({ absolutePath: dir });
|
|
48
44
|
const data = {
|
|
49
45
|
integrations: {
|
|
@@ -77,7 +73,7 @@ describe('generate function tests', () => {
|
|
|
77
73
|
expect(fs.existsSync(`${dir}/demo-github-integration/syncs/some-other-sync.ts`)).toBe(true);
|
|
78
74
|
});
|
|
79
75
|
it('should support a single model return in v1 format', async () => {
|
|
80
|
-
const dir = getTestDirectory('single-model-v1');
|
|
76
|
+
const dir = await getTestDirectory('single-model-v1');
|
|
81
77
|
init({ absolutePath: dir });
|
|
82
78
|
const data = {
|
|
83
79
|
integrations: {
|
|
@@ -111,7 +107,7 @@ describe('generate function tests', () => {
|
|
|
111
107
|
expect(fs.existsSync(`${dir}/demo-github-integration/syncs/single-model-return.ts`)).toBe(true);
|
|
112
108
|
});
|
|
113
109
|
it('should support a single model return in v2 format', async () => {
|
|
114
|
-
const dir = getTestDirectory('single-model-v2');
|
|
110
|
+
const dir = await getTestDirectory('single-model-v2');
|
|
115
111
|
init({ absolutePath: dir });
|
|
116
112
|
const data = {
|
|
117
113
|
integrations: {
|
|
@@ -147,7 +143,7 @@ describe('generate function tests', () => {
|
|
|
147
143
|
expect(fs.existsSync(`${dir}/demo-github-integration/syncs/single-model-return.ts`)).toBe(true);
|
|
148
144
|
});
|
|
149
145
|
it('should not create a file if endpoint is missing from a v2 config', async () => {
|
|
150
|
-
const dir = getTestDirectory('endpoint-missing-v2');
|
|
146
|
+
const dir = await getTestDirectory('endpoint-missing-v2');
|
|
151
147
|
init({ absolutePath: dir });
|
|
152
148
|
const data = {
|
|
153
149
|
integrations: {
|
|
@@ -182,7 +178,7 @@ describe('generate function tests', () => {
|
|
|
182
178
|
expect(fs.existsSync(`${dir}/demo-github-integration/syncs/single-model-return.ts`)).toBe(false);
|
|
183
179
|
});
|
|
184
180
|
it('should generate missing from a v2 config', async () => {
|
|
185
|
-
const dir = getTestDirectory('v2-incremental-compile');
|
|
181
|
+
const dir = await getTestDirectory('v2-incremental-compile');
|
|
186
182
|
init({ absolutePath: dir });
|
|
187
183
|
const data = {
|
|
188
184
|
integrations: {
|
|
@@ -218,7 +214,7 @@ describe('generate function tests', () => {
|
|
|
218
214
|
expect(fs.existsSync(`${dir}/demo-github-integration/syncs/single-model-issue-output.ts`)).toBe(true);
|
|
219
215
|
});
|
|
220
216
|
it('should throw an error if a model is missing an id that is actively used', async () => {
|
|
221
|
-
const dir = getTestDirectory('missing-id');
|
|
217
|
+
const dir = await getTestDirectory('missing-id');
|
|
222
218
|
init({ absolutePath: dir });
|
|
223
219
|
const data = {
|
|
224
220
|
integrations: {
|
|
@@ -258,7 +254,7 @@ describe('generate function tests', () => {
|
|
|
258
254
|
]);
|
|
259
255
|
});
|
|
260
256
|
it('should allow models to end with an "s"', async () => {
|
|
261
|
-
const dir = getTestDirectory('model-with-an-s');
|
|
257
|
+
const dir = await getTestDirectory('model-with-an-s');
|
|
262
258
|
init({ absolutePath: dir });
|
|
263
259
|
const data = {
|
|
264
260
|
integrations: {
|
|
@@ -293,7 +289,7 @@ describe('generate function tests', () => {
|
|
|
293
289
|
expect(modelsFile).toContain('export interface GithubIssues');
|
|
294
290
|
});
|
|
295
291
|
it('should not throw an error if a model is missing an id for an action', async () => {
|
|
296
|
-
const dir = getTestDirectory('missing-id-action');
|
|
292
|
+
const dir = await getTestDirectory('missing-id-action');
|
|
297
293
|
init({ absolutePath: dir });
|
|
298
294
|
const data = {
|
|
299
295
|
integrations: {
|
|
@@ -324,7 +320,7 @@ describe('generate function tests', () => {
|
|
|
324
320
|
generate({ debug: false, fullPath: dir });
|
|
325
321
|
});
|
|
326
322
|
it('should allow javascript primitives as a return type with no model', async () => {
|
|
327
|
-
const dir = getTestDirectory('model-returns-primitives');
|
|
323
|
+
const dir = await getTestDirectory('model-returns-primitives');
|
|
328
324
|
init({ absolutePath: dir });
|
|
329
325
|
const data = {
|
|
330
326
|
integrations: {
|
|
@@ -345,7 +341,7 @@ describe('generate function tests', () => {
|
|
|
345
341
|
generate({ debug: false, fullPath: dir });
|
|
346
342
|
});
|
|
347
343
|
it('should catch non javascript primitives in the config', async () => {
|
|
348
|
-
const dir = getTestDirectory('model-returns-invalid-primitives');
|
|
344
|
+
const dir = await getTestDirectory('model-returns-invalid-primitives');
|
|
349
345
|
init({ absolutePath: dir });
|
|
350
346
|
const data = {
|
|
351
347
|
integrations: {
|
|
@@ -406,7 +402,7 @@ describe('generate function tests', () => {
|
|
|
406
402
|
expect(usedCorrectly).toBe(false);
|
|
407
403
|
});
|
|
408
404
|
it('should be able to compile files in nested directories', async () => {
|
|
409
|
-
const dir = getTestDirectory('nested');
|
|
405
|
+
const dir = await getTestDirectory('nested');
|
|
410
406
|
init({ absolutePath: dir });
|
|
411
407
|
await copyDirectoryAndContents(`${fixturesPath}/nango-yaml/v2/nested-integrations/hubspot`, `${dir}/hubspot`);
|
|
412
408
|
await copyDirectoryAndContents(`${fixturesPath}/nango-yaml/v2/nested-integrations/github`, `${dir}/github`);
|
|
@@ -419,7 +415,7 @@ describe('generate function tests', () => {
|
|
|
419
415
|
expect(success).toBe(true);
|
|
420
416
|
});
|
|
421
417
|
it('should be backwards compatible with the single directory for integration files', async () => {
|
|
422
|
-
const dir = getTestDirectory('old-directory');
|
|
418
|
+
const dir = await getTestDirectory('old-directory');
|
|
423
419
|
init({ absolutePath: dir });
|
|
424
420
|
await copyDirectoryAndContents(`${fixturesPath}/nango-yaml/v2/non-nested-integrations`, dir);
|
|
425
421
|
const success = await compileAllFiles({ fullPath: dir, debug: false });
|
|
@@ -429,7 +425,7 @@ describe('generate function tests', () => {
|
|
|
429
425
|
expect(success).toBe(true);
|
|
430
426
|
});
|
|
431
427
|
it('should be able to compile and run imported files', async () => {
|
|
432
|
-
const dir = getTestDirectory('relative-imports');
|
|
428
|
+
const dir = await getTestDirectory('relative-imports');
|
|
433
429
|
init({ absolutePath: dir });
|
|
434
430
|
await copyDirectoryAndContents(`${fixturesPath}/nango-yaml/v2/relative-imports/github`, `${dir}/github`);
|
|
435
431
|
await fs.promises.copyFile(`${fixturesPath}/nango-yaml/v2/relative-imports/nango.yaml`, `${dir}/nango.yaml`);
|
|
@@ -441,55 +437,55 @@ describe('generate function tests', () => {
|
|
|
441
437
|
});
|
|
442
438
|
it('should compile helper functions and throw an error if there is a complication error with an imported file', async () => {
|
|
443
439
|
const name = 'relative-imports-with-error';
|
|
444
|
-
const dir = getTestDirectory('relative-imports-with-error');
|
|
440
|
+
const dir = await getTestDirectory('relative-imports-with-error');
|
|
445
441
|
init({ absolutePath: dir });
|
|
446
442
|
await copyDirectoryAndContents(`${fixturesPath}/nango-yaml/v2/${name}/github`, `${dir}/github`);
|
|
447
443
|
await fs.promises.copyFile(`${fixturesPath}/nango-yaml/v2/${name}/nango.yaml`, `${dir}/nango.yaml`);
|
|
448
444
|
const tsconfig = fs.readFileSync(`${getNangoRootPath()}/tsconfig.dev.json`, 'utf8');
|
|
449
|
-
const { response
|
|
450
|
-
expect(parsed).not.toBeNull();
|
|
445
|
+
const { response } = parse(path.resolve(`${fixturesPath}/nango-yaml/v2/${name}`));
|
|
446
|
+
expect(response?.parsed).not.toBeNull();
|
|
451
447
|
const result = await compileSingleFile({
|
|
452
448
|
fullPath: dir,
|
|
453
449
|
file: getFileToCompile({ fullPath: dir, filePath: path.join(dir, './github/actions/gh-issues.ts') }),
|
|
454
450
|
tsconfig,
|
|
455
|
-
parsed: parsed,
|
|
451
|
+
parsed: response.parsed,
|
|
456
452
|
debug: false
|
|
457
453
|
});
|
|
458
454
|
expect(result).toBe(false);
|
|
459
455
|
});
|
|
460
456
|
it('should complain if a nango call is used incorrectly in a nested file', async () => {
|
|
461
457
|
const name = 'relative-imports-with-nango-misuse';
|
|
462
|
-
const dir = getTestDirectory('relative-imports-with-nango-misuse');
|
|
458
|
+
const dir = await getTestDirectory('relative-imports-with-nango-misuse');
|
|
463
459
|
init({ absolutePath: dir });
|
|
464
460
|
await copyDirectoryAndContents(`${fixturesPath}/nango-yaml/v2/${name}/github`, `${dir}/github`);
|
|
465
461
|
await fs.promises.copyFile(`${fixturesPath}/nango-yaml/v2/${name}/nango.yaml`, `${dir}/nango.yaml`);
|
|
466
462
|
const tsconfig = fs.readFileSync(`${getNangoRootPath()}/tsconfig.dev.json`, 'utf8');
|
|
467
|
-
const { response
|
|
468
|
-
expect(
|
|
463
|
+
const { response } = parse(path.resolve(`${fixturesPath}/nango-yaml/v2/${name}`));
|
|
464
|
+
expect(response).not.toBeNull();
|
|
469
465
|
const result = await compileSingleFile({
|
|
470
466
|
fullPath: dir,
|
|
471
467
|
file: getFileToCompile({ fullPath: dir, filePath: path.join(dir, './github/actions/gh-issues.ts') }),
|
|
472
468
|
tsconfig,
|
|
473
|
-
parsed: parsed,
|
|
469
|
+
parsed: response.parsed,
|
|
474
470
|
debug: false
|
|
475
471
|
});
|
|
476
472
|
expect(result).toBe(false);
|
|
477
473
|
});
|
|
478
474
|
it('should not allow imports higher than the current directory', async () => {
|
|
479
475
|
const name = 'relative-imports-with-higher-import';
|
|
480
|
-
const dir = getTestDirectory('relative-imports-with-higher-import');
|
|
476
|
+
const dir = await getTestDirectory('relative-imports-with-higher-import');
|
|
481
477
|
init({ absolutePath: dir });
|
|
482
478
|
await copyDirectoryAndContents(`${fixturesPath}/nango-yaml/v2/${name}/github`, `${dir}/github`);
|
|
483
479
|
await fs.promises.copyFile(`${fixturesPath}/nango-yaml/v2/${name}/nango.yaml`, `${dir}/nango.yaml`);
|
|
484
480
|
await fs.promises.copyFile(`${fixturesPath}/nango-yaml/v2/${name}/github/actions/welcomer.ts`, `${dir}/welcomer.ts`);
|
|
485
481
|
const tsconfig = fs.readFileSync(`${getNangoRootPath()}/tsconfig.dev.json`, 'utf8');
|
|
486
|
-
const { response
|
|
487
|
-
expect(
|
|
482
|
+
const { response } = parse(path.resolve(`${fixturesPath}/nango-yaml/v2/${name}`));
|
|
483
|
+
expect(response).not.toBeNull();
|
|
488
484
|
const result = await compileSingleFile({
|
|
489
485
|
fullPath: dir,
|
|
490
486
|
file: getFileToCompile({ fullPath: dir, filePath: path.join(dir, './github/actions/gh-issues.ts') }),
|
|
491
487
|
tsconfig,
|
|
492
|
-
parsed: parsed,
|
|
488
|
+
parsed: response.parsed,
|
|
493
489
|
debug: false
|
|
494
490
|
});
|
|
495
491
|
expect(result).toBe(false);
|