nango 0.41.1 → 0.42.1
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 +24 -10
- package/dist/cli.js.map +1 -1
- package/dist/services/compile.service.js +16 -14
- package/dist/services/compile.service.js.map +1 -1
- package/dist/services/compile.service.unit.test.js +7 -7
- package/dist/services/compile.service.unit.test.js.map +1 -1
- package/dist/services/config.service.js +2 -1
- package/dist/services/config.service.js.map +1 -1
- package/dist/services/dryrun.service.d.ts +3 -1
- package/dist/services/dryrun.service.js +175 -47
- package/dist/services/dryrun.service.js.map +1 -1
- package/dist/services/migration.service.js +3 -2
- package/dist/services/migration.service.js.map +1 -1
- package/dist/services/model.service.js +1 -1
- package/dist/services/model.service.js.map +1 -1
- package/dist/services/model.service.unit.test.js +3 -2
- package/dist/services/model.service.unit.test.js.map +1 -1
- package/dist/sync.unit.cli-test.js +66 -65
- package/dist/sync.unit.cli-test.js.map +1 -1
- package/dist/tests/helpers.d.ts +1 -1
- package/dist/tests/helpers.js +3 -2
- package/dist/tests/helpers.js.map +1 -1
- package/dist/utils.d.ts +6 -1
- package/dist/utils.js +14 -8
- package/dist/utils.js.map +1 -1
- package/package.json +6 -12
- package/dist/services/local-integration.service.d.ts +0 -7
- package/dist/services/local-integration.service.js +0 -133
- package/dist/services/local-integration.service.js.map +0 -1
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { ActionError, NangoError, formatScriptError, NangoSync, localFileService, validateData } from '@nangohq/shared';
|
|
2
|
-
import * as vm from 'vm';
|
|
3
|
-
import * as url from 'url';
|
|
4
|
-
import * as crypto from 'crypto';
|
|
5
|
-
import * as zod from 'zod';
|
|
6
|
-
import { Buffer } from 'buffer';
|
|
7
|
-
class IntegrationService {
|
|
8
|
-
async cancelScript() {
|
|
9
|
-
return Promise.resolve();
|
|
10
|
-
}
|
|
11
|
-
async runScript({ syncName, nangoProps, isInvokedImmediately, isWebhook, optionalLoadLocation, input }) {
|
|
12
|
-
const nango = new NangoSync(nangoProps);
|
|
13
|
-
try {
|
|
14
|
-
await nango.log(`Executing -> integration:"${nangoProps.provider}" script:"${syncName}"`);
|
|
15
|
-
const script = localFileService.getIntegrationFile(syncName, nangoProps.providerConfigKey, optionalLoadLocation);
|
|
16
|
-
const isAction = isInvokedImmediately && !isWebhook;
|
|
17
|
-
if (!script) {
|
|
18
|
-
const content = `Unable to find script file for "${syncName}"`;
|
|
19
|
-
return { success: false, error: new NangoError(content, 500), response: null };
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
const wrappedScript = `
|
|
23
|
-
(function() {
|
|
24
|
-
var module = { exports: {} };
|
|
25
|
-
var exports = module.exports;
|
|
26
|
-
${script}
|
|
27
|
-
return module.exports;
|
|
28
|
-
})();
|
|
29
|
-
`;
|
|
30
|
-
const scriptObj = new vm.Script(wrappedScript);
|
|
31
|
-
const sandbox = {
|
|
32
|
-
console,
|
|
33
|
-
require: (moduleName) => {
|
|
34
|
-
switch (moduleName) {
|
|
35
|
-
case 'url':
|
|
36
|
-
return url;
|
|
37
|
-
case 'crypto':
|
|
38
|
-
return crypto;
|
|
39
|
-
case 'zod':
|
|
40
|
-
return zod;
|
|
41
|
-
default:
|
|
42
|
-
throw new Error(`Module '${moduleName}' is not allowed`);
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
Buffer,
|
|
46
|
-
setTimeout
|
|
47
|
-
};
|
|
48
|
-
const context = vm.createContext(sandbox);
|
|
49
|
-
const scriptExports = scriptObj.runInContext(context);
|
|
50
|
-
if (!scriptExports.default || !(typeof scriptExports.default === 'function')) {
|
|
51
|
-
const content = `There is no default export that is a function for ${syncName}`;
|
|
52
|
-
return { success: false, error: new NangoError(content, 500), response: null };
|
|
53
|
-
}
|
|
54
|
-
if (isAction) {
|
|
55
|
-
// Validate action input against json schema
|
|
56
|
-
const valInput = validateData({
|
|
57
|
-
version: nangoProps.syncConfig.version || '1',
|
|
58
|
-
input: input,
|
|
59
|
-
modelName: nangoProps.syncConfig.input,
|
|
60
|
-
jsonSchema: nangoProps.syncConfig.models_json_schema
|
|
61
|
-
});
|
|
62
|
-
if (Array.isArray(valInput)) {
|
|
63
|
-
await nango.log('Invalid action input. Use `--validation` option to see the details', { level: 'warn' });
|
|
64
|
-
if (nangoProps.runnerFlags.validateActionInput) {
|
|
65
|
-
return {
|
|
66
|
-
success: false,
|
|
67
|
-
response: null,
|
|
68
|
-
error: new NangoError('invalid_action_input', { data: input, validation: valInput, model: nangoProps.syncConfig.input })
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
const output = await scriptExports.default(nango, input);
|
|
73
|
-
// Validate action output against json schema
|
|
74
|
-
const modelNameOutput = nangoProps.syncConfig.models.length > 0 ? nangoProps.syncConfig.models[0] : undefined;
|
|
75
|
-
const valOutput = validateData({
|
|
76
|
-
version: nangoProps.syncConfig.version || '1',
|
|
77
|
-
input: output,
|
|
78
|
-
modelName: modelNameOutput,
|
|
79
|
-
jsonSchema: nangoProps.syncConfig.models_json_schema
|
|
80
|
-
});
|
|
81
|
-
if (Array.isArray(valOutput)) {
|
|
82
|
-
await nango.log('Invalid action output. Use `--validation` option to see the details', { level: 'warn' });
|
|
83
|
-
if (nangoProps.runnerFlags.validateActionOutput) {
|
|
84
|
-
return {
|
|
85
|
-
success: false,
|
|
86
|
-
response: null,
|
|
87
|
-
error: new NangoError('invalid_action_output', { data: output, validation: valOutput, model: modelNameOutput })
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return { success: true, error: null, response: output };
|
|
92
|
-
}
|
|
93
|
-
const results = await scriptExports.default(nango);
|
|
94
|
-
return { success: true, error: null, response: results };
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
// TODO merge this back with the main integration service
|
|
98
|
-
if (err instanceof ActionError) {
|
|
99
|
-
return {
|
|
100
|
-
success: false,
|
|
101
|
-
error: {
|
|
102
|
-
type: err.type,
|
|
103
|
-
payload: err.payload || {},
|
|
104
|
-
status: 500
|
|
105
|
-
},
|
|
106
|
-
response: null
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
else if (err instanceof NangoError) {
|
|
110
|
-
return { success: false, error: err, response: null };
|
|
111
|
-
}
|
|
112
|
-
let errorType = 'sync_script_failure';
|
|
113
|
-
if (isWebhook) {
|
|
114
|
-
errorType = 'webhook_script_failure';
|
|
115
|
-
}
|
|
116
|
-
else if (isInvokedImmediately) {
|
|
117
|
-
errorType = 'action_script_failure';
|
|
118
|
-
}
|
|
119
|
-
return formatScriptError(err, errorType, syncName);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (err) {
|
|
123
|
-
const errorMessage = JSON.stringify(err, ['message', 'name', 'stack'], 2);
|
|
124
|
-
const content = `The script failed to load for ${syncName} with the following error: ${errorMessage}`;
|
|
125
|
-
return { success: false, error: new NangoError(content, 500), response: null };
|
|
126
|
-
}
|
|
127
|
-
finally {
|
|
128
|
-
await nango.log(`Done`);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
export default new IntegrationService();
|
|
133
|
-
//# sourceMappingURL=local-integration.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-integration.service.js","sourceRoot":"","sources":["../../lib/services/local-integration.service.ts"],"names":[],"mappings":"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"}
|