nango 0.59.12 → 0.60.0

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 (70) hide show
  1. package/dist/index.js +103 -22
  2. package/dist/index.js.map +1 -1
  3. package/dist/migrations/toZeroYaml.d.ts +50 -0
  4. package/dist/migrations/toZeroYaml.js +969 -0
  5. package/dist/migrations/toZeroYaml.js.map +1 -0
  6. package/dist/migrations/toZeroYaml.unit.test.d.ts +1 -0
  7. package/dist/migrations/toZeroYaml.unit.test.js +298 -0
  8. package/dist/migrations/toZeroYaml.unit.test.js.map +1 -0
  9. package/dist/services/dryrun.service.d.ts +3 -1
  10. package/dist/services/dryrun.service.js +77 -23
  11. package/dist/services/dryrun.service.js.map +1 -1
  12. package/dist/services/model.service.d.ts +1 -1
  13. package/dist/services/model.service.js +4 -3
  14. package/dist/services/model.service.js.map +1 -1
  15. package/dist/services/model.service.unit.test.js +2 -2
  16. package/dist/services/model.service.unit.test.js.map +1 -1
  17. package/dist/services/sdk.js +2 -1
  18. package/dist/services/sdk.js.map +1 -1
  19. package/dist/services/sdk.service.unit.test.js +2 -1
  20. package/dist/services/sdk.service.unit.test.js.map +1 -1
  21. package/dist/services/verification.service.js +2 -1
  22. package/dist/services/verification.service.js.map +1 -1
  23. package/dist/tests/helpers.js +2 -2
  24. package/dist/tests/helpers.js.map +1 -1
  25. package/dist/types.d.ts +1 -0
  26. package/dist/utils/result.d.ts +1 -17
  27. package/dist/utils/result.js +4 -0
  28. package/dist/utils/result.js.map +1 -1
  29. package/dist/version.d.ts +1 -1
  30. package/dist/version.js +1 -1
  31. package/dist/version.js.map +1 -1
  32. package/dist/zeroYaml/compile.d.ts +36 -0
  33. package/dist/zeroYaml/compile.js +305 -0
  34. package/dist/zeroYaml/compile.js.map +1 -0
  35. package/dist/zeroYaml/compile.unit.cli-test.d.ts +1 -0
  36. package/dist/zeroYaml/compile.unit.cli-test.js +34 -0
  37. package/dist/zeroYaml/compile.unit.cli-test.js.map +1 -0
  38. package/dist/zeroYaml/constants.d.ts +17 -0
  39. package/dist/zeroYaml/constants.js +60 -0
  40. package/dist/zeroYaml/constants.js.map +1 -0
  41. package/dist/zeroYaml/definitions.d.ts +25 -0
  42. package/dist/zeroYaml/definitions.js +142 -0
  43. package/dist/zeroYaml/definitions.js.map +1 -0
  44. package/dist/zeroYaml/definitions.unit.test.d.ts +1 -0
  45. package/dist/zeroYaml/definitions.unit.test.js +105 -0
  46. package/dist/zeroYaml/definitions.unit.test.js.map +1 -0
  47. package/dist/zeroYaml/deploy.d.ts +7 -0
  48. package/dist/zeroYaml/deploy.js +426 -0
  49. package/dist/zeroYaml/deploy.js.map +1 -0
  50. package/dist/zeroYaml/dev.d.ts +4 -0
  51. package/dist/zeroYaml/dev.js +295 -0
  52. package/dist/zeroYaml/dev.js.map +1 -0
  53. package/dist/zeroYaml/init.d.ts +7 -0
  54. package/dist/zeroYaml/init.js +98 -0
  55. package/dist/zeroYaml/init.js.map +1 -0
  56. package/dist/zeroYaml/zodToNango.d.ts +3 -0
  57. package/dist/zeroYaml/zodToNango.js +113 -0
  58. package/dist/zeroYaml/zodToNango.js.map +1 -0
  59. package/dist/zeroYaml/zodToNango.unit.test.d.ts +1 -0
  60. package/dist/zeroYaml/zodToNango.unit.test.js +77 -0
  61. package/dist/zeroYaml/zodToNango.unit.test.js.map +1 -0
  62. package/example/.env.example +16 -0
  63. package/example/.nango/.gitkeep +0 -0
  64. package/example/github/actions/createIssue.ts +39 -0
  65. package/example/github/on-events/pre-connection-deletion.ts +9 -0
  66. package/example/github/syncs/fetchIssues.ts +93 -0
  67. package/example/index.ts +3 -0
  68. package/example/package.json +13 -0
  69. package/example/tsconfig.json +30 -0
  70. package/package.json +27 -24
@@ -0,0 +1,105 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { z } from 'zod';
3
+ import { buildAction, buildSync } from './definitions.js';
4
+ describe('buildSync', () => {
5
+ it('should build a sync', () => {
6
+ const res = buildSync({
7
+ params: {
8
+ type: 'sync',
9
+ description: 'A sync',
10
+ version: '1',
11
+ endpoints: [{ method: 'GET', path: '/foobar' }],
12
+ frequency: 'every 1 hour',
13
+ autoStart: true,
14
+ trackDeletes: false,
15
+ syncType: 'full',
16
+ webhookSubscriptions: ['*'],
17
+ scopes: ['foobar'],
18
+ models: {
19
+ Model: z.object({ id: z.string(), foobar: z.string() })
20
+ },
21
+ metadata: z.void(),
22
+ exec: () => {
23
+ return;
24
+ }
25
+ },
26
+ basename: 'fetchIssues',
27
+ basenameClean: 'fetchIssues',
28
+ integrationIdClean: 'github'
29
+ });
30
+ expect(res.sync).toStrictEqual({
31
+ type: 'sync',
32
+ name: 'fetchIssues',
33
+ description: 'A sync',
34
+ version: '1',
35
+ endpoints: [{ method: 'GET', path: '/foobar' }],
36
+ runs: 'every 1 hour',
37
+ auto_start: true,
38
+ track_deletes: false,
39
+ sync_type: 'full',
40
+ webhookSubscriptions: ['*'],
41
+ scopes: ['foobar'],
42
+ usedModels: ['Model', 'SyncMetadata_github_fetchIssues'],
43
+ input: 'SyncMetadata_github_fetchIssues',
44
+ output: ['Model']
45
+ });
46
+ expect(Array.from(res.models.values())).toStrictEqual([
47
+ {
48
+ fields: [{ name: 'metadata', optional: true, tsType: true, value: 'void' }],
49
+ isAnon: true,
50
+ name: 'SyncMetadata_github_fetchIssues'
51
+ },
52
+ {
53
+ fields: [
54
+ { name: 'id', optional: false, tsType: true, value: 'string' },
55
+ { name: 'foobar', optional: false, tsType: true, value: 'string' }
56
+ ],
57
+ name: 'Model'
58
+ }
59
+ ]);
60
+ });
61
+ it('should build an action', () => {
62
+ const res = buildAction({
63
+ params: {
64
+ type: 'action',
65
+ description: 'A sync',
66
+ version: '1',
67
+ endpoint: { method: 'GET', path: '/foobar' },
68
+ scopes: ['foobar'],
69
+ input: z.void(),
70
+ output: z.number(),
71
+ metadata: z.object({ foo: z.string() }),
72
+ exec: () => {
73
+ return;
74
+ }
75
+ },
76
+ basename: 'createIssue',
77
+ basenameClean: 'createIssue',
78
+ integrationIdClean: 'github'
79
+ });
80
+ expect(res.action).toStrictEqual({
81
+ type: 'action',
82
+ name: 'createIssue',
83
+ description: 'A sync',
84
+ version: '1',
85
+ endpoint: { method: 'GET', path: '/foobar' },
86
+ scopes: ['foobar'],
87
+ input: 'ActionInput_github_createIssue',
88
+ output: ['ActionOutput_github_createIssue'],
89
+ usedModels: ['ActionInput_github_createIssue', 'ActionOutput_github_createIssue']
90
+ });
91
+ expect(Array.from(res.models.values())).toStrictEqual([
92
+ {
93
+ fields: [{ name: 'input', optional: true, tsType: true, value: 'void' }],
94
+ isAnon: true,
95
+ name: 'ActionInput_github_createIssue'
96
+ },
97
+ {
98
+ fields: [{ name: 'output', optional: false, tsType: true, value: 'number' }],
99
+ isAnon: true,
100
+ name: 'ActionOutput_github_createIssue'
101
+ }
102
+ ]);
103
+ });
104
+ });
105
+ //# sourceMappingURL=definitions.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.unit.test.js","sourceRoot":"","sources":["../../lib/zeroYaml/definitions.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE1D,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC3B,MAAM,GAAG,GAAG,SAAS,CAAC;YAClB,MAAM,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,QAAQ;gBACrB,OAAO,EAAE,GAAG;gBACZ,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC/C,SAAS,EAAE,cAAc;gBACzB,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,KAAK;gBACnB,QAAQ,EAAE,MAAM;gBAChB,oBAAoB,EAAE,CAAC,GAAG,CAAC;gBAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,MAAM,EAAE;oBACJ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;iBAC1D;gBACD,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;gBAClB,IAAI,EAAE,GAAG,EAAE;oBACP,OAAO;gBACX,CAAC;aACJ;YACD,QAAQ,EAAE,aAAa;YACvB,aAAa,EAAE,aAAa;YAC5B,kBAAkB,EAAE,QAAQ;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,CAAkB;YAC5C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,QAAQ;YACrB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC/C,IAAI,EAAE,cAAc;YACpB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE,MAAM;YACjB,oBAAoB,EAAE,CAAC,GAAG,CAAC;YAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,UAAU,EAAE,CAAC,OAAO,EAAE,iCAAiC,CAAC;YACxD,KAAK,EAAE,iCAAiC;YACxC,MAAM,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;YAClD;gBACI,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBAC3E,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,iCAAiC;aAC1C;YACD;gBACI,MAAM,EAAE;oBACJ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC9D,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;iBACrE;gBACD,IAAI,EAAE,OAAO;aAChB;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,WAAW,CAAC;YACpB,MAAM,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,QAAQ;gBACrB,OAAO,EAAE,GAAG;gBACZ,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC5C,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAClB,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE;gBACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;gBAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACvC,IAAI,EAAE,GAAG,EAAE;oBACP,OAAO;gBACX,CAAC;aACJ;YACD,QAAQ,EAAE,aAAa;YACvB,aAAa,EAAE,aAAa;YAC5B,kBAAkB,EAAE,QAAQ;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,aAAa,CAAoB;YAChD,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,QAAQ;YACrB,OAAO,EAAE,GAAG;YACZ,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5C,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,KAAK,EAAE,gCAAgC;YACvC,MAAM,EAAE,CAAC,iCAAiC,CAAC;YAC3C,UAAU,EAAE,CAAC,gCAAgC,EAAE,iCAAiC,CAAC;SACpF,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;YAClD;gBACI,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBACxE,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,gCAAgC;aACzC;YACD;gBACI,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAC5E,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,iCAAiC;aAC1C;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { DeployOptions } from '../types.js';
2
+ import type { Result } from '@nangohq/types';
3
+ export declare function deploy({ fullPath, options, environmentName }: {
4
+ fullPath: string;
5
+ options: DeployOptions;
6
+ environmentName: string;
7
+ }): Promise<Result<boolean>>;
@@ -0,0 +1,426 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import chalk from 'chalk';
4
+ import columnify from 'columnify';
5
+ import ora from 'ora';
6
+ import promptly from 'promptly';
7
+ import { buildDefinitions } from './definitions.js';
8
+ import { Err, Ok } from '../utils/result.js';
9
+ import { hostport, isCI, parseSecretKey, printDebug } from '../utils.js';
10
+ import { NANGO_VERSION } from '../version.js';
11
+ export async function deploy({ fullPath, options, environmentName }) {
12
+ const { version, sync: optionalSyncName, action: optionalActionName, debug } = options;
13
+ let pkg;
14
+ const spinnerPackage = ora({ text: 'Packaging' }).start();
15
+ try {
16
+ // Prepare retro-compat json
17
+ const parsed = await buildDefinitions({ fullPath, debug });
18
+ if (parsed.isErr()) {
19
+ spinnerPackage.fail();
20
+ console.log(chalk.red(parsed.error.message));
21
+ return Err(parsed.error);
22
+ }
23
+ // Create deploy package
24
+ const postData = await createPackage({ parsed: parsed.value, fullPath, debug, version, optionalSyncName, optionalActionName });
25
+ if (postData.isErr()) {
26
+ spinnerPackage.fail();
27
+ console.log(chalk.red(postData.error.message));
28
+ return Err('no_data');
29
+ }
30
+ pkg = postData.value;
31
+ spinnerPackage.succeed();
32
+ }
33
+ catch (err) {
34
+ spinnerPackage.fail();
35
+ console.error(chalk.red('Unknown error'), err);
36
+ return Err('failed');
37
+ }
38
+ // Get the private key before reaching the API
39
+ await parseSecretKey(environmentName, debug);
40
+ const nangoYamlBody = '';
41
+ const sdkVersion = `${NANGO_VERSION}-zero`;
42
+ // Check remote state
43
+ const spinnerState = ora({ text: `Acquiring remote state ${chalk.gray(`(${new URL(hostport).origin})`)}` }).start();
44
+ let confirmation;
45
+ try {
46
+ const confirmationRes = await postConfirmation({
47
+ body: { ...pkg, reconcile: false, debug, sdkVersion }
48
+ });
49
+ if (confirmationRes.isErr()) {
50
+ spinnerState.fail();
51
+ console.log(chalk.red(confirmationRes.error.message));
52
+ return Err(confirmationRes.error);
53
+ }
54
+ confirmation = confirmationRes.value;
55
+ spinnerState.succeed();
56
+ }
57
+ catch {
58
+ spinnerState.fail();
59
+ return Err('failed');
60
+ }
61
+ const autoconfirm = process.env['NANGO_DEPLOY_AUTO_CONFIRM'] !== 'true' && !options.autoConfirm;
62
+ const confirmed = await handleConfirmation({ autoconfirm, allowDestructive: options.allowDestructive || false, confirmation });
63
+ if (confirmed.isErr()) {
64
+ return Err('not_confirmed');
65
+ }
66
+ console.log('');
67
+ // Actual deploy
68
+ const total = pkg.flowConfigs.length + (pkg.onEventScriptsByProvider?.reduce((v, t) => v + t.scripts.length, 0) || 0);
69
+ const spinnerDeploy = ora({ text: `Deploying`, suffixText: `${total} scripts` }).start();
70
+ try {
71
+ const deployRes = await postDeploy({
72
+ body: { ...pkg, reconcile: true, debug, nangoYamlBody, sdkVersion }
73
+ });
74
+ if (deployRes.isErr()) {
75
+ spinnerDeploy.fail();
76
+ console.log(chalk.red(deployRes.error.message));
77
+ return Err('failed_to_deploy');
78
+ }
79
+ spinnerDeploy.succeed('Deployed');
80
+ console.log(chalk.green(deployRes.value));
81
+ return Ok(true);
82
+ }
83
+ catch {
84
+ spinnerDeploy.fail();
85
+ return Err('failed');
86
+ }
87
+ }
88
+ async function createPackage({ parsed, fullPath, debug, version = '', optionalSyncName, optionalActionName }) {
89
+ printDebug('Packaging', debug);
90
+ const postData = [];
91
+ const onEventScriptsByProvider = optionalActionName || optionalSyncName ? undefined : []; // only load on-event scripts if we're not deploying a single sync or action
92
+ for (const integration of parsed.integrations) {
93
+ const { providerConfigKey, onEventScripts } = integration;
94
+ if (onEventScriptsByProvider) {
95
+ const scripts = [];
96
+ for (const event of Object.keys(onEventScripts)) {
97
+ for (const scriptName of onEventScripts[event]) {
98
+ const files = await loadScriptFiles({ scriptName, providerConfigKey, fullPath, type: 'on-events' });
99
+ if (!files) {
100
+ return Err(new Error(`No script files found for "${scriptName}"`));
101
+ }
102
+ scripts.push({ name: scriptName, fileBody: files, event });
103
+ }
104
+ }
105
+ if (scripts.length > 0) {
106
+ onEventScriptsByProvider.push({ providerConfigKey, scripts });
107
+ }
108
+ }
109
+ if (!optionalActionName) {
110
+ for (const sync of integration.syncs) {
111
+ if (optionalSyncName && optionalSyncName !== sync.name) {
112
+ continue;
113
+ }
114
+ const metadata = {};
115
+ if (sync.description) {
116
+ metadata['description'] = sync.description;
117
+ }
118
+ if (sync.scopes) {
119
+ metadata['scopes'] = sync.scopes;
120
+ }
121
+ const files = await loadScriptFiles({ scriptName: sync.name, providerConfigKey, fullPath, type: 'syncs' });
122
+ if (!files) {
123
+ return Err(new Error(`No script files found for "${sync.name}"`));
124
+ }
125
+ const body = {
126
+ syncName: sync.name,
127
+ providerConfigKey,
128
+ models: sync.output || [],
129
+ version: version || sync.version,
130
+ runs: sync.runs,
131
+ track_deletes: sync.track_deletes,
132
+ auto_start: sync.auto_start,
133
+ attributes: {},
134
+ metadata: metadata,
135
+ input: sync.input || undefined,
136
+ sync_type: sync.sync_type,
137
+ type: sync.type,
138
+ fileBody: files,
139
+ model_schema: sync.usedModels.map((name) => parsed.models.get(name)),
140
+ endpoints: sync.endpoints,
141
+ webhookSubscriptions: sync.webhookSubscriptions
142
+ };
143
+ postData.push(body);
144
+ }
145
+ }
146
+ if (!optionalSyncName) {
147
+ for (const action of integration.actions) {
148
+ if (optionalActionName && optionalActionName !== action.name) {
149
+ continue;
150
+ }
151
+ const metadata = {};
152
+ if (action.description) {
153
+ metadata['description'] = action.description;
154
+ }
155
+ if (action.scopes) {
156
+ metadata['scopes'] = action.scopes;
157
+ }
158
+ const files = await loadScriptFiles({ scriptName: action.name, providerConfigKey, fullPath, type: 'actions' });
159
+ if (!files) {
160
+ return Err(new Error(`No script files found for "${action.name}"`));
161
+ }
162
+ const body = {
163
+ syncName: action.name,
164
+ providerConfigKey,
165
+ models: action.output || [],
166
+ version: version || action.version,
167
+ runs: null,
168
+ metadata: metadata,
169
+ input: action.input || undefined,
170
+ type: action.type,
171
+ fileBody: files,
172
+ model_schema: action.usedModels.map((name) => parsed.models.get(name)),
173
+ endpoints: action.endpoint ? [action.endpoint] : [],
174
+ track_deletes: false
175
+ };
176
+ postData.push(body);
177
+ }
178
+ }
179
+ }
180
+ // TODO: reup
181
+ // const jsonSchema = loadSchemaJson({ fullPath });
182
+ // if (!jsonSchema) {
183
+ // return null;
184
+ // }
185
+ // console.log(postData);
186
+ return Ok({
187
+ flowConfigs: postData,
188
+ onEventScriptsByProvider,
189
+ jsonSchema: undefined
190
+ });
191
+ }
192
+ /**
193
+ * Load source and bundled files
194
+ */
195
+ async function loadScriptFiles({ fullPath, scriptName, providerConfigKey, type }) {
196
+ const js = await loadScriptJsFile({ fullPath, scriptName, providerConfigKey, type });
197
+ if (!js) {
198
+ return null;
199
+ }
200
+ const ts = await loadScriptTsFile({ fullPath, scriptName, providerConfigKey, type });
201
+ if (!ts) {
202
+ return null;
203
+ }
204
+ return { js, ts };
205
+ }
206
+ /**
207
+ * Load bundled file
208
+ */
209
+ async function loadScriptJsFile({ scriptName, providerConfigKey, fullPath, type }) {
210
+ const filePath = path.join(fullPath, 'build', `${providerConfigKey}_${type}_${scriptName}.cjs`);
211
+ try {
212
+ const content = await fs.promises.readFile(filePath, 'utf8');
213
+ return content;
214
+ }
215
+ catch (err) {
216
+ console.error(chalk.red(`Error loading file ${filePath}`), err instanceof Error ? err.message : err);
217
+ return null;
218
+ }
219
+ }
220
+ /**
221
+ * Load main source file
222
+ * nb: this is a legacy thing but it should bundle every import too otherwise it's useless
223
+ */
224
+ async function loadScriptTsFile({ fullPath, scriptName, providerConfigKey, type }) {
225
+ const filePath = path.join(fullPath, providerConfigKey, type, `${scriptName}.ts`);
226
+ try {
227
+ const content = await fs.promises.readFile(filePath, 'utf8');
228
+ return content;
229
+ }
230
+ catch (err) {
231
+ console.error(chalk.red(`Error loading file ${filePath}`), err instanceof Error ? err.message : err);
232
+ return null;
233
+ }
234
+ }
235
+ /**
236
+ * Call Nango api to get the state of the deploy
237
+ */
238
+ async function postConfirmation({ body }) {
239
+ const url = new URL('/sync/deploy/confirmation', hostport);
240
+ try {
241
+ const res = await fetch(url, {
242
+ method: 'POST',
243
+ body: JSON.stringify(body),
244
+ headers: new Headers({
245
+ authorization: `Bearer ${process.env['NANGO_SECRET_KEY']}`,
246
+ 'content-type': 'application/json'
247
+ })
248
+ });
249
+ const json = (await res.json());
250
+ if ('error' in json) {
251
+ return Err(new Error(`Error checking state:\n${json.error.message} ${chalk.gray(`(${json.error.code})`)}`));
252
+ }
253
+ return Ok(json);
254
+ }
255
+ catch (err) {
256
+ const errorMessage = getFetchError(err);
257
+ return Err(new Error(`Error checking state:\n${errorMessage}`));
258
+ }
259
+ }
260
+ /**
261
+ * Call Nango api to actually deploy
262
+ */
263
+ async function postDeploy({ body }) {
264
+ const url = new URL('/sync/deploy', hostport);
265
+ try {
266
+ const res = await fetch(url, {
267
+ method: 'POST',
268
+ body: JSON.stringify(body),
269
+ headers: new Headers({
270
+ authorization: `Bearer ${process.env['NANGO_SECRET_KEY']}`,
271
+ 'content-type': 'application/json'
272
+ })
273
+ });
274
+ const json = (await res.json());
275
+ if ('error' in json) {
276
+ return Err(new Error(`Error deploying:\n${json.error.message} ${chalk.gray(`(${json.error.code})`)}`));
277
+ }
278
+ if (json.length === 0) {
279
+ return Ok(`Successfully removed the syncs/actions.`);
280
+ }
281
+ const nameAndVersions = json.map((result) => `${result.name}@v${result.version}`);
282
+ return Ok(`Successfully deployed the scripts: \r\n${nameAndVersions
283
+ .map((row) => {
284
+ return `- ${row}`;
285
+ })
286
+ .join('\r\n')}`);
287
+ }
288
+ catch (err) {
289
+ const errorMessage = getFetchError(err);
290
+ return Err(new Error(`Error deploying the scripts:\n${errorMessage}`));
291
+ }
292
+ }
293
+ /**
294
+ * Handle state, display plan and eventually ask for confirmation if destructive
295
+ */
296
+ async function handleConfirmation({ autoconfirm, allowDestructive, confirmation }) {
297
+ const { newSyncs, updatedSyncs, deletedSyncs, newActions, updatedActions, deletedActions, newOnEventScripts, updatedOnEventScripts, deletedOnEventScripts, deletedModels } = confirmation;
298
+ let deletedSyncsConnectionsCount = 0;
299
+ console.log('');
300
+ console.log('', chalk.underline('Nango will perform this plan:'));
301
+ // Syncs
302
+ if (newSyncs.length > 0 || deletedSyncs.length > 0) {
303
+ console.log('');
304
+ console.log(shortSummaryMessage({ name: 'Syncs', newItems: newSyncs, deleteItems: deletedSyncs }));
305
+ const tmp = [];
306
+ for (const sync of newSyncs) {
307
+ const syncMessage = sync.connections === 0 || !sync.auto_start
308
+ ? chalk.gray('(0 impacted connections)')
309
+ : chalk.gray(`(${chalk.yellow(`${sync.connections} impacted connections`)})`);
310
+ tmp.push({ name: ` ${chalk.green('+')} ${sync.providerConfigKey} → ${sync.name}`, msg: syncMessage });
311
+ }
312
+ for (const sync of deletedSyncs) {
313
+ const syncMessage = sync.connections === 0 ? chalk.gray('(0 impacted connections)') : chalk.gray(`(${chalk.red(`${sync.connections} impacted connections`)})`);
314
+ tmp.push({ name: ` ${chalk.red('-')} ${sync.providerConfigKey} → ${sync.name}`, msg: syncMessage });
315
+ deletedSyncsConnectionsCount += sync.connections || 0;
316
+ }
317
+ const columns = columnify(tmp, {
318
+ showHeaders: false,
319
+ minWidth: 30,
320
+ config: {
321
+ name: {
322
+ dataTransform: (a) => {
323
+ return `\u2063\u2063${a}`;
324
+ }
325
+ },
326
+ msg: { align: 'right' }
327
+ }
328
+ });
329
+ console.log(columns);
330
+ }
331
+ // Actions
332
+ if (newActions.length > 0 || deletedActions.length > 0) {
333
+ console.log('');
334
+ console.log(shortSummaryMessage({ name: 'Actions', newItems: newActions, deleteItems: deletedActions }));
335
+ for (const action of newActions) {
336
+ console.log(` ${chalk.green('+')} ${action.providerConfigKey} → ${action.name}`);
337
+ }
338
+ for (const action of deletedActions) {
339
+ console.log(` ${chalk.red('-')} ${action.providerConfigKey} → ${action.name}`);
340
+ }
341
+ }
342
+ // OnEvents
343
+ if (newOnEventScripts.length > 0 || deletedOnEventScripts.length > 0) {
344
+ console.log('');
345
+ console.log(shortSummaryMessage({ name: 'OnEvents', newItems: newOnEventScripts, deleteItems: deletedOnEventScripts }));
346
+ for (const onEvent of newOnEventScripts) {
347
+ console.log(` ${chalk.green('+')} ${onEvent.providerConfigKey} → ${onEvent.name}`);
348
+ }
349
+ for (const onEvent of deletedOnEventScripts) {
350
+ console.log(` ${chalk.red('-')} ${onEvent.providerConfigKey} → ${onEvent.name}`);
351
+ }
352
+ }
353
+ if (deletedModels.length > 0) {
354
+ console.log(chalk.red(`The following models have been removed: ${deletedModels.join(', ')}. `));
355
+ console.log(chalk.red("WARNING: Renaming a model is the equivalent of deleting the old model and creating a new one. Records from the old model won't be transferred to the new model. Consider running a full sync to transfer records."));
356
+ }
357
+ console.log('');
358
+ console.log('', chalk.underline('Summary'));
359
+ const columns = columnify([
360
+ summaryMessageColumns({ name: 'Syncs', newItems: newSyncs, updatedItems: updatedSyncs, deleteItems: deletedSyncs }),
361
+ summaryMessageColumns({ name: 'Actions', newItems: newActions, updatedItems: updatedActions, deleteItems: deletedActions }),
362
+ summaryMessageColumns({ name: 'OnEvents', newItems: newOnEventScripts, updatedItems: updatedOnEventScripts, deleteItems: deletedOnEventScripts })
363
+ ], {
364
+ showHeaders: false,
365
+ minWidth: 18,
366
+ config: {
367
+ name: {
368
+ dataTransform: (a) => {
369
+ return `\u2063\u2063${a}`;
370
+ }
371
+ }
372
+ }
373
+ });
374
+ console.log(columns);
375
+ console.log('');
376
+ const shouldConfirmDestructive = deletedSyncsConnectionsCount > 0 || deletedModels.length > 0;
377
+ if (!shouldConfirmDestructive) {
378
+ console.log(chalk.grey('No sync deleted with active connections, proceeding without confirmation'));
379
+ return Ok(true);
380
+ }
381
+ if (autoconfirm && !shouldConfirmDestructive) {
382
+ console.log(chalk.yellow('autoconfirm flag is on, proceeding without confirmation'));
383
+ return Ok(true);
384
+ }
385
+ else if (autoconfirm && shouldConfirmDestructive && allowDestructive) {
386
+ console.log(chalk.yellow('allowDestructive flag is on, proceeding without confirmation'));
387
+ return Ok(true);
388
+ }
389
+ // Can't do anything here
390
+ if (isCI) {
391
+ console.log(chalk.red(`Syncs/Actions were not deployed. Confirm the deploy by passing the --auto-confirm flag${shouldConfirmDestructive ? ' and --allow-destructive flag' : ''}. Exiting`));
392
+ return Err('is_ci');
393
+ }
394
+ try {
395
+ const wait = await promptly.confirm(`Are you sure you want to continue y/n?`);
396
+ if (!wait) {
397
+ console.log(chalk.yellow('Deployed aborted. Exiting'));
398
+ return Err('not_confirmed');
399
+ }
400
+ }
401
+ catch {
402
+ console.log('');
403
+ console.log(chalk.yellow('Deployed aborted. Exiting'));
404
+ return Err('not_confirmed');
405
+ }
406
+ return Ok(true);
407
+ }
408
+ function getFetchError(err) {
409
+ return err instanceof TypeError && err.cause && err.cause instanceof AggregateError && 'code' in err.cause
410
+ ? err.cause.code
411
+ : err instanceof Error
412
+ ? err.message
413
+ : 'Unknown error';
414
+ }
415
+ function summaryMessageColumns({ name, newItems, updatedItems, deleteItems }) {
416
+ return {
417
+ name: ` ↳ ${name}`,
418
+ create: chalk.gray(`to create [ ${chalk.green(`${newItems.length}`)} ]`),
419
+ update: chalk.gray(`to update [ ${chalk.cyan(`${updatedItems.length}`)} ]`),
420
+ delete: chalk.gray(`to delete [ ${chalk.red(`${deleteItems.length}`)} ]`)
421
+ };
422
+ }
423
+ function shortSummaryMessage({ name, newItems, deleteItems }) {
424
+ return ` [${name} ${chalk.green(`+${newItems.length}`)} ${chalk.red(`-${deleteItems.length}`)}]`;
425
+ }
426
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../lib/zeroYaml/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function dev({ fullPath, debug }: {
2
+ fullPath: string;
3
+ debug: boolean;
4
+ }): void;