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,295 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { nextTick } from 'node:process';
4
+ import { setTimeout } from 'node:timers/promises';
5
+ import chalk from 'chalk';
6
+ import chokidar from 'chokidar';
7
+ import ora from 'ora';
8
+ import ts from 'typescript';
9
+ import { printDebug } from '../utils.js';
10
+ import { compileOne, tsToJsPath } from './compile.js';
11
+ import { CompileError, tsconfig } from './constants.js';
12
+ export function dev({ fullPath, debug }) {
13
+ const outDir = path.join(fullPath, 'build');
14
+ if (!fs.existsSync(outDir)) {
15
+ printDebug(`Creating ${outDir} directory`, debug);
16
+ fs.mkdirSync(outDir);
17
+ }
18
+ manualWatch({ fullPath, debug });
19
+ typescriptWatchSimple({ fullPath, debug });
20
+ }
21
+ /**
22
+ * Manual watch uses chokidar to listen to files changes and bundle what's declared in index.ts
23
+ * We are not relying on tsc because it's not always sending the appropriate events on delete or rename.
24
+ */
25
+ function manualWatch({ fullPath, debug }) {
26
+ const watchPath = ['./**/*.ts'];
27
+ printDebug(`Watching ${watchPath.join(', ')}`, debug);
28
+ const graph = new DependencyGraph({ fullPath });
29
+ const indexTs = 'index.ts';
30
+ const processing = new Set();
31
+ const failures = new Map();
32
+ let entryPoints = [];
33
+ let isReady = false;
34
+ const watcher = chokidar.watch(watchPath, {
35
+ ignoreInitial: false,
36
+ ignored: ['node_modules', '.nango', 'dist', 'build']
37
+ });
38
+ function fileError(filePath, msg) {
39
+ console.error(chalk.red('err'), '-', chalk.blue(filePath), `\r\n ${msg}\r\n`);
40
+ }
41
+ function bufferOrDisplayError(filePath, msg) {
42
+ if (isReady) {
43
+ fileError(filePath, msg);
44
+ }
45
+ else {
46
+ failures.set(filePath, msg);
47
+ }
48
+ }
49
+ async function onAddOrUpdate(filePath) {
50
+ let spinner;
51
+ processing.add(filePath);
52
+ try {
53
+ graph.updatesForFile(filePath);
54
+ if (filePath === indexTs) {
55
+ // When the user modify index.ts
56
+ // Keep track of what we need to build or not
57
+ // We rely on index.ts being the first file to be parsed
58
+ const tmp = graph.graph.get('index.ts');
59
+ const newEntries = tmp.filter((e) => !entryPoints.includes(e));
60
+ if (newEntries.length > 0) {
61
+ printDebug(`New entry points detected: ${newEntries.join(', ')}`, debug);
62
+ }
63
+ const deletedEntries = entryPoints.filter((e) => !tmp.includes(e));
64
+ if (deletedEntries.length > 0) {
65
+ printDebug(`Deleted entry points detected: ${deletedEntries.join(', ')}`, debug);
66
+ }
67
+ entryPoints = tmp;
68
+ if (isReady) {
69
+ nextTick(() => {
70
+ for (const entry of newEntries) {
71
+ watcher.emit('add', entry);
72
+ }
73
+ for (const entry of deletedEntries) {
74
+ onDelete(entry.replace('.ts', '.js'));
75
+ }
76
+ });
77
+ }
78
+ return;
79
+ }
80
+ // Not a known file
81
+ if (!entryPoints.includes(filePath)) {
82
+ printDebug(`File ${filePath} modified but not imported in index.ts`, debug);
83
+ // Find all dependents and re-bundle them
84
+ const dependents = Array.from(graph.findAllDependents(filePath));
85
+ for (const dep of dependents) {
86
+ if (entryPoints.includes(dep)) {
87
+ await onAddOrUpdate(dep);
88
+ }
89
+ }
90
+ return;
91
+ }
92
+ spinner = ora({ text: `Compiling ${filePath}` }).start();
93
+ const res = await compileOne({ entryPoint: path.join(fullPath, filePath).replace('.ts', '.js'), projectRootPath: fullPath });
94
+ if (res.isErr()) {
95
+ spinner.fail();
96
+ // Errors are already displayed by typescriptWatchSimple
97
+ if (res.error instanceof CompileError && res.error.type !== 'failed_to_build_unknown') {
98
+ bufferOrDisplayError(filePath, res.error.message);
99
+ }
100
+ }
101
+ else {
102
+ spinner.succeed();
103
+ }
104
+ }
105
+ catch (err) {
106
+ spinner?.fail();
107
+ bufferOrDisplayError(filePath, err instanceof Error ? err.message : 'Unknown error');
108
+ }
109
+ finally {
110
+ processing.delete(filePath);
111
+ }
112
+ }
113
+ function onDelete(filePath) {
114
+ console.log(chalk.red('-'), `Removed ${filePath}`);
115
+ try {
116
+ fs.unlinkSync(path.join(fullPath, 'build', tsToJsPath(filePath)));
117
+ }
118
+ catch {
119
+ printDebug(`Failed to remove ${filePath}`, debug);
120
+ }
121
+ graph.removeFile(filePath);
122
+ }
123
+ watcher.on('ready', () => {
124
+ async function messageOnFinish() {
125
+ while (true) {
126
+ if (processing.size <= 0) {
127
+ break;
128
+ }
129
+ await setTimeout(100);
130
+ }
131
+ console.log('');
132
+ if (failures.size) {
133
+ for (const fail of failures) {
134
+ fileError(fail[0], fail[1]);
135
+ }
136
+ }
137
+ isReady = true;
138
+ }
139
+ void messageOnFinish();
140
+ });
141
+ watcher.on('add', (filePath) => {
142
+ printDebug(`Added ${filePath}`, debug);
143
+ void onAddOrUpdate(filePath);
144
+ });
145
+ watcher.on('change', (filePath) => {
146
+ printDebug(`Updated ${filePath}`, debug);
147
+ void onAddOrUpdate(filePath);
148
+ });
149
+ watcher.on('unlink', (filePath) => {
150
+ printDebug(`Removed ${filePath}`, debug);
151
+ if (filePath === indexTs) {
152
+ return;
153
+ }
154
+ const jsFilePath = filePath.replace('.ts', '.js');
155
+ if (entryPoints.includes(jsFilePath)) {
156
+ console.warn(chalk.yellow(`You need to remove import ${filePath} from index.ts`));
157
+ }
158
+ onDelete(jsFilePath);
159
+ });
160
+ }
161
+ /**
162
+ * Use typescript watch program to typecheck all files in parallel
163
+ */
164
+ function typescriptWatchSimple({ fullPath, debug }) {
165
+ let hasError = false;
166
+ function reportDiagnostic(diagnostic) {
167
+ const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
168
+ if (diagnostic.file && diagnostic.start != null) {
169
+ const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
170
+ const fileName = diagnostic.file.fileName.replace(`${fullPath}/`, '');
171
+ console.error(chalk.red('err'), '-', `${chalk.blue(fileName)}${chalk.yellow(`:${line + 1}:${character + 1}`)}`, `\r\n ${message}\r\n`);
172
+ }
173
+ else {
174
+ console.error(message);
175
+ }
176
+ }
177
+ function reportWatchStatusChanged(diagnostic) {
178
+ if (typeof diagnostic.messageText !== 'string') {
179
+ return;
180
+ }
181
+ const noError = diagnostic.messageText.startsWith('Found 0 errors');
182
+ const maybeError = diagnostic.messageText.startsWith('Found');
183
+ if (maybeError && !noError) {
184
+ hasError = true;
185
+ console.info(diagnostic.messageText);
186
+ }
187
+ else if (diagnostic.messageText.startsWith('Starting compilation')) {
188
+ console.info(diagnostic.messageText);
189
+ }
190
+ else if (noError) {
191
+ if (hasError) {
192
+ // Only log after we had some errors
193
+ console.info(chalk.green('✔'), 'No error');
194
+ }
195
+ hasError = false;
196
+ }
197
+ else {
198
+ printDebug(diagnostic.messageText, debug);
199
+ }
200
+ }
201
+ const host = ts.createWatchCompilerHost(path.join(fullPath, 'tsconfig.json'), tsconfig, ts.sys, ts.createSemanticDiagnosticsBuilderProgram, reportDiagnostic, reportWatchStatusChanged);
202
+ ts.createWatchProgram(host);
203
+ }
204
+ const importRegex = /^import(\s+[^'"\n]+from)?\s+['"](?<path>.+)['"]/gm;
205
+ /**
206
+ * Dependency graph to track imports and dependents
207
+ * so we can re-bundle files when an imported file is updated
208
+ */
209
+ class DependencyGraph {
210
+ graph = new Map();
211
+ reverse = new Map();
212
+ fullPath;
213
+ constructor({ fullPath }) {
214
+ this.fullPath = fullPath;
215
+ }
216
+ parseImports(filePath) {
217
+ const absPath = path.join(this.fullPath, filePath);
218
+ if (!fs.existsSync(absPath)) {
219
+ return [];
220
+ }
221
+ const content = fs.readFileSync(absPath, 'utf8');
222
+ const imports = [];
223
+ let match;
224
+ while ((match = importRegex.exec(content))) {
225
+ const imp = match.groups?.['path'];
226
+ if (!imp || !imp.startsWith('.')) {
227
+ continue;
228
+ }
229
+ let resolvedImp = imp;
230
+ if (resolvedImp.endsWith('.js')) {
231
+ resolvedImp = resolvedImp.replace('.js', '.ts');
232
+ }
233
+ else if (!resolvedImp.endsWith('.ts')) {
234
+ resolvedImp += '.ts';
235
+ }
236
+ const resolved = path.normalize(path.join(path.dirname(filePath), resolvedImp));
237
+ imports.push(resolved);
238
+ }
239
+ return imports;
240
+ }
241
+ /**
242
+ * Update the graphs for a single file
243
+ */
244
+ updatesForFile(file) {
245
+ // Remove old reverse links
246
+ if (this.graph.has(file)) {
247
+ for (const imp of this.graph.get(file)) {
248
+ this.reverse.get(imp)?.delete(file);
249
+ }
250
+ }
251
+ // Parse new imports
252
+ if (fs.existsSync(path.join(this.fullPath, file))) {
253
+ const imports = this.parseImports(file);
254
+ this.graph.set(file, imports);
255
+ for (const imp of imports) {
256
+ if (!this.reverse.get(imp)) {
257
+ this.reverse.set(imp, new Set());
258
+ }
259
+ this.reverse.get(imp).add(file);
260
+ }
261
+ }
262
+ else {
263
+ // File deleted
264
+ this.graph.delete(file);
265
+ }
266
+ }
267
+ /**
268
+ * Remove a file from the graphs
269
+ */
270
+ removeFile(file) {
271
+ if (this.graph.has(file)) {
272
+ for (const imp of this.graph.get(file)) {
273
+ this.reverse.get(imp)?.delete(file);
274
+ }
275
+ this.graph.delete(file);
276
+ }
277
+ this.reverse.delete(file);
278
+ }
279
+ /**
280
+ * Find all dependents recursively
281
+ */
282
+ findAllDependents(file, visited = new Set()) {
283
+ if (!this.reverse.has(file)) {
284
+ return visited;
285
+ }
286
+ for (const dep of this.reverse.get(file)) {
287
+ if (!visited.has(dep)) {
288
+ visited.add(dep);
289
+ this.findAllDependents(dep, visited);
290
+ }
291
+ }
292
+ return visited;
293
+ }
294
+ }
295
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../lib/zeroYaml/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Init a new nango folder
3
+ */
4
+ export declare function initZero({ absolutePath, debug }: {
5
+ absolutePath: string;
6
+ debug?: boolean;
7
+ }): Promise<boolean>;
@@ -0,0 +1,98 @@
1
+ import { exec } from 'node:child_process';
2
+ import fs from 'node:fs';
3
+ import path, { dirname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { promisify } from 'node:util';
6
+ import chalk from 'chalk';
7
+ import ora from 'ora';
8
+ import { printDebug } from '../utils.js';
9
+ import { NANGO_VERSION } from '../version.js';
10
+ import { compileAll } from './compile.js';
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ const execAsync = promisify(exec);
14
+ /**
15
+ * Init a new nango folder
16
+ */
17
+ export async function initZero({ absolutePath, debug = false }) {
18
+ printDebug(`Creating the nango integrations directory in ${absolutePath}`, debug);
19
+ const stat = fs.statSync(absolutePath, { throwIfNoEntry: false });
20
+ // Create directory if it doesn't exist
21
+ if (!stat) {
22
+ printDebug(`Directory does not exist`, debug);
23
+ await fs.promises.mkdir(absolutePath);
24
+ }
25
+ else if (!stat.isDirectory()) {
26
+ console.log(chalk.red(`The path provided is not a directory. Exiting.`));
27
+ return false;
28
+ }
29
+ // Copy example folder
30
+ {
31
+ const spinner = ora({ text: 'Copy example' }).start();
32
+ const exampleFolderPath = path.join(__dirname, '..', '..', 'example');
33
+ try {
34
+ printDebug(`Copy example folder`, debug);
35
+ await fs.promises.mkdir(absolutePath, { recursive: true });
36
+ await copyRecursive(exampleFolderPath, absolutePath);
37
+ await fs.promises.rename(path.join(absolutePath, '.env.example'), path.join(absolutePath, '.env'));
38
+ spinner.succeed();
39
+ }
40
+ catch (err) {
41
+ spinner.fail();
42
+ console.log(chalk.red(`Failed to copy template: ${err instanceof Error ? err.message : 'unknown error'}`));
43
+ return false;
44
+ }
45
+ }
46
+ // Update nango dependency version in package.json
47
+ const packageJsonPath = path.join(absolutePath, 'package.json');
48
+ try {
49
+ const packageJsonRaw = await fs.promises.readFile(packageJsonPath, 'utf-8');
50
+ const packageJson = JSON.parse(packageJsonRaw);
51
+ packageJson.devDependencies.nango = NANGO_VERSION;
52
+ await fs.promises.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf-8');
53
+ }
54
+ catch (err) {
55
+ console.log(chalk.red(`Failed to update nango version in package.json: ${err instanceof Error ? err.message : 'unknown error'}`));
56
+ return false;
57
+ }
58
+ // Run npm install
59
+ {
60
+ const spinner = ora({ text: 'Install packages' }).start();
61
+ try {
62
+ printDebug(`Running npm install`, debug);
63
+ await execAsync('npm install', { cwd: absolutePath });
64
+ spinner.succeed();
65
+ }
66
+ catch (err) {
67
+ spinner.fail();
68
+ console.log(chalk.red(`Failed to npm install: ${err instanceof Error ? err.message : 'unknown error'}`));
69
+ return false;
70
+ }
71
+ }
72
+ // TODO: add compileAll
73
+ {
74
+ const res = await compileAll({ fullPath: absolutePath, debug });
75
+ if (res.isErr()) {
76
+ return false;
77
+ }
78
+ }
79
+ return true;
80
+ }
81
+ async function copyRecursive(src, dest) {
82
+ const entries = await fs.promises.readdir(src, { withFileTypes: true });
83
+ for (const entry of entries) {
84
+ const srcPath = path.join(src, entry.name);
85
+ const destPath = path.join(dest, entry.name);
86
+ if (entry.isDirectory()) {
87
+ if (entry.name === 'node_modules') {
88
+ continue;
89
+ }
90
+ await fs.promises.mkdir(destPath, { recursive: true });
91
+ await copyRecursive(srcPath, destPath);
92
+ }
93
+ else {
94
+ await fs.promises.copyFile(srcPath, destPath);
95
+ }
96
+ }
97
+ }
98
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../lib/zeroYaml/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { NangoModelField } from '@nangohq/types';
2
+ import type { z } from 'zod';
3
+ export declare function zodToNangoModelField(name: string, schema: z.ZodType): NangoModelField;
@@ -0,0 +1,113 @@
1
+ export function zodToNangoModelField(name, schema) {
2
+ const optional = schema.isOptional();
3
+ if (isZodObject(schema)) {
4
+ const values = [];
5
+ for (const [key, value] of Object.entries(schema.shape)) {
6
+ values.push(zodToNangoModelField(key, value));
7
+ }
8
+ return { name, value: values, optional };
9
+ }
10
+ else if (isZodString(schema)) {
11
+ return { name, value: 'string', tsType: true, optional };
12
+ }
13
+ else if (isZodLiteral(schema)) {
14
+ return { name, value: schema._def.value, optional };
15
+ }
16
+ else if (isZodNumber(schema)) {
17
+ return { name, value: 'number', tsType: true, optional };
18
+ }
19
+ else if (isZodBoolean(schema)) {
20
+ return { name, value: 'boolean', tsType: true, optional };
21
+ }
22
+ else if (isZodNull(schema)) {
23
+ return { name, value: null, tsType: true, optional };
24
+ }
25
+ else if (isZodEnum(schema)) {
26
+ const values = [];
27
+ for (const [key, value] of Object.entries(schema._def.values)) {
28
+ values.push({ name: key, value: value });
29
+ }
30
+ return { name, value: values, optional, union: true };
31
+ }
32
+ else if (isZodAny(schema)) {
33
+ return { name, value: 'any', tsType: true, optional };
34
+ }
35
+ else if (isZodDate(schema)) {
36
+ return { name, value: 'Date', tsType: true, optional };
37
+ }
38
+ else if (isZodRecord(schema)) {
39
+ return { name, value: [{ ...zodToNangoModelField('__string', schema._def.valueType), dynamic: true }], optional };
40
+ }
41
+ else if (isZodArray(schema)) {
42
+ const value = zodToNangoModelField('0', schema._def.type).value;
43
+ return { name, value, tsType: true, array: true, optional };
44
+ }
45
+ else if (isZodUnion(schema)) {
46
+ const values = [];
47
+ for (const [key, value] of Object.entries(schema._def.options)) {
48
+ values.push(zodToNangoModelField(key, value));
49
+ }
50
+ return { name, value: values, tsType: true, union: true, optional };
51
+ }
52
+ else if (isZodNever(schema)) {
53
+ return { name, value: 'never', tsType: true, optional };
54
+ }
55
+ else if (isZodVoid(schema)) {
56
+ return { name, value: 'void', tsType: true, optional };
57
+ }
58
+ else if (isZodOptional(schema)) {
59
+ return zodToNangoModelField(name, schema._def.innerType);
60
+ }
61
+ else {
62
+ throw new Error(`not handled, ${JSON.stringify(schema)}`);
63
+ }
64
+ }
65
+ // We are using type guards because instanceof does not work
66
+ // the files are compiled and the zod version loaded by the scripts is the not the same
67
+ // (at least that's my interpretation, as it works in unit test)
68
+ function isZodObject(schema) {
69
+ return schema.constructor.name === 'ZodObject';
70
+ }
71
+ function isZodString(schema) {
72
+ return schema.constructor.name === 'ZodString';
73
+ }
74
+ function isZodLiteral(schema) {
75
+ return schema.constructor.name === 'ZodLiteral';
76
+ }
77
+ function isZodNumber(schema) {
78
+ return schema.constructor.name === 'ZodNumber';
79
+ }
80
+ function isZodBoolean(schema) {
81
+ return schema.constructor.name === 'ZodBoolean';
82
+ }
83
+ function isZodNull(schema) {
84
+ return schema.constructor.name === 'ZodNull';
85
+ }
86
+ function isZodEnum(schema) {
87
+ return schema.constructor.name === 'ZodEnum';
88
+ }
89
+ function isZodArray(schema) {
90
+ return schema.constructor.name === 'ZodArray';
91
+ }
92
+ function isZodUnion(schema) {
93
+ return schema.constructor.name === 'ZodUnion';
94
+ }
95
+ function isZodAny(schema) {
96
+ return schema.constructor.name === 'ZodAny';
97
+ }
98
+ function isZodRecord(schema) {
99
+ return schema.constructor.name === 'ZodRecord';
100
+ }
101
+ function isZodDate(schema) {
102
+ return schema.constructor.name === 'ZodDate';
103
+ }
104
+ function isZodNever(schema) {
105
+ return schema.constructor.name === 'ZodNever';
106
+ }
107
+ function isZodVoid(schema) {
108
+ return schema.constructor.name === 'ZodVoid';
109
+ }
110
+ function isZodOptional(schema) {
111
+ return schema.constructor.name === 'ZodOptional';
112
+ }
113
+ //# sourceMappingURL=zodToNango.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodToNango.js","sourceRoot":"","sources":["../../lib/zeroYaml/zodToNango.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,MAAiB;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAErC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAqB,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IACxD,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC9D,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACzD,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAe,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1D,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1D,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC3D,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtH,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAChE,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAA6B,EAAE,CAAC;QAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAqB,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACxE,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5D,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC3D,CAAC;SAAM,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;AACL,CAAC;AAED,4DAA4D;AAC5D,uFAAuF;AACvF,gEAAgE;AAEhE,SAAS,WAAW,CAAC,MAAoB;IACrC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,MAAoB;IACrC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,MAAoB;IACtC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,MAAoB;IACrC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,MAAoB;IACtC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC;AACpD,CAAC;AAED,SAAS,SAAS,CAAC,MAAoB;IACnC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,MAAoB;IACnC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,UAAU,CAAC,MAAoB;IACpC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC;AAClD,CAAC;AAED,SAAS,UAAU,CAAC,MAAoB;IACpC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,MAAoB;IAClC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,MAAoB;IACrC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;AACnD,CAAC;AAED,SAAS,SAAS,CAAC,MAAoB;IACnC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,UAAU,CAAC,MAAoB;IACpC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,MAAoB;IACnC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,MAAoB;IACvC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,aAAa,CAAC;AACrD,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,77 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { z } from 'zod';
3
+ import { zodToNangoModelField } from './zodToNango.js';
4
+ describe('zodToNango', () => {
5
+ it('should transform stuff', () => {
6
+ const ref = z.object({ id: z.string() });
7
+ expect(zodToNangoModelField('test', z.object({
8
+ foo: z.literal('bar'),
9
+ num: z.number(),
10
+ bool: z.boolean(),
11
+ null: z.null(),
12
+ enum: z.enum(['tip', 'top']),
13
+ arr: z.array(z.string()),
14
+ obj: z.object({ bar: z.string() }),
15
+ union: z.union([z.string(), z.boolean()]),
16
+ any: z.any(),
17
+ reco: z.record(z.string(), z.date()),
18
+ opt: z.any().optional(),
19
+ ref: ref,
20
+ void: z.void(),
21
+ never: z.never(),
22
+ date: z.date()
23
+ // Not supported
24
+ // lazy: z.lazy(() => ref)
25
+ }))).toStrictEqual({
26
+ name: 'test',
27
+ optional: false,
28
+ value: [
29
+ { name: 'foo', optional: false, value: 'bar' },
30
+ { name: 'num', optional: false, tsType: true, value: 'number' },
31
+ { name: 'bool', optional: false, tsType: true, value: 'boolean' },
32
+ { name: 'null', optional: false, tsType: true, value: null },
33
+ {
34
+ name: 'enum',
35
+ optional: false,
36
+ union: true,
37
+ value: [
38
+ { name: '0', value: 'tip' },
39
+ { name: '1', value: 'top' }
40
+ ]
41
+ },
42
+ { array: true, name: 'arr', optional: false, tsType: true, value: 'string' },
43
+ {
44
+ name: 'obj',
45
+ optional: false,
46
+ value: [{ name: 'bar', optional: false, tsType: true, value: 'string' }]
47
+ },
48
+ {
49
+ name: 'union',
50
+ optional: false,
51
+ tsType: true,
52
+ union: true,
53
+ value: [
54
+ { name: '0', optional: false, tsType: true, value: 'string' },
55
+ { name: '1', optional: false, tsType: true, value: 'boolean' }
56
+ ]
57
+ },
58
+ { name: 'any', optional: true, tsType: true, value: 'any' },
59
+ {
60
+ name: 'reco',
61
+ optional: false,
62
+ value: [{ dynamic: true, name: '__string', optional: false, tsType: true, value: 'Date' }]
63
+ },
64
+ { name: 'opt', optional: true, tsType: true, value: 'any' },
65
+ {
66
+ name: 'ref',
67
+ optional: false,
68
+ value: [{ name: 'id', optional: false, tsType: true, value: 'string' }]
69
+ },
70
+ { name: 'void', optional: true, tsType: true, value: 'void' },
71
+ { name: 'never', optional: false, tsType: true, value: 'never' },
72
+ { name: 'date', optional: false, tsType: true, value: 'Date' }
73
+ ]
74
+ });
75
+ });
76
+ });
77
+ //# sourceMappingURL=zodToNango.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zodToNango.unit.test.js","sourceRoot":"","sources":["../../lib/zeroYaml/zodToNango.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ # Authenticates the CLI
2
+ # Get the keys in the dashboard's Environment Settings
3
+ # https://app.nango.dev/dev/environment-settings
4
+ NANGO_SECRET_KEY_DEV=
5
+ NANGO_SECRET_KEY_PROD=
6
+
7
+ # Nango's instance URL
8
+ # Default to: https://api.nango.dev
9
+ # OSS: change to your instance URL
10
+ # NANGO_HOSTPORT=http://localhost:3003
11
+
12
+ # How to handle CLI upgrades ("prompt", "auto" or "ignore").
13
+ # NANGO_CLI_UPGRADE_MODE=prompt
14
+
15
+ # Whether to prompt before deployments.
16
+ # NANGO_DEPLOY_AUTO_CONFIRM=false