@nangohq/nango-yaml 0.40.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.
@@ -0,0 +1,151 @@
1
+ import { expect, describe, it } from 'vitest';
2
+ import { NangoYamlParserV2 } from './parser.v2.js';
3
+ import { ParserErrorMissingId, ParserErrorModelIsLiteral, ParserErrorModelNotFound } from './errors.js';
4
+ describe('parse', () => {
5
+ it('should parse', () => {
6
+ const v2 = {
7
+ models: { GithubIssue: { id: 'string' } },
8
+ integrations: {
9
+ provider: {
10
+ syncs: { top: { runs: 'every day', input: 'GithubIssue', output: 'GithubIssue', endpoint: 'GET /provider/top' } },
11
+ actions: { createIssue: { endpoint: '/test', input: 'string', output: 'GithubIssue' } }
12
+ }
13
+ }
14
+ };
15
+ const parser = new NangoYamlParserV2({ raw: v2 });
16
+ parser.parse();
17
+ expect(parser.errors).toStrictEqual([]);
18
+ expect(parser.parsed).toStrictEqual({
19
+ integrations: [
20
+ {
21
+ providerConfigKey: 'provider',
22
+ syncs: [
23
+ {
24
+ auto_start: true,
25
+ description: '',
26
+ endpoints: [{ GET: '/provider/top' }],
27
+ input: 'GithubIssue',
28
+ name: 'top',
29
+ output: ['GithubIssue'],
30
+ runs: 'every day',
31
+ scopes: [],
32
+ sync_type: 'full',
33
+ track_deletes: false,
34
+ type: 'sync',
35
+ usedModels: ['GithubIssue'],
36
+ webhookSubscriptions: []
37
+ }
38
+ ],
39
+ postConnectionScripts: [],
40
+ actions: [
41
+ {
42
+ description: '',
43
+ input: 'Anonymous_provider_action_createIssue_input',
44
+ endpoint: { POST: '/test' },
45
+ name: 'createIssue',
46
+ output: ['GithubIssue'],
47
+ scopes: [],
48
+ type: 'action',
49
+ usedModels: ['GithubIssue', 'Anonymous_provider_action_createIssue_input']
50
+ }
51
+ ]
52
+ }
53
+ ],
54
+ models: new Map([
55
+ ['GithubIssue', { name: 'GithubIssue', fields: [{ name: 'id', value: 'string', tsType: true, array: false, optional: false }] }],
56
+ [
57
+ 'Anonymous_provider_action_createIssue_input',
58
+ {
59
+ fields: [{ array: false, name: 'input', optional: false, tsType: true, value: 'string' }],
60
+ isAnon: true,
61
+ name: 'Anonymous_provider_action_createIssue_input'
62
+ }
63
+ ]
64
+ ]),
65
+ yamlVersion: 'v2'
66
+ });
67
+ });
68
+ it('should handle input / output as literal', () => {
69
+ const v2 = {
70
+ models: {},
71
+ integrations: { provider: { syncs: { top: { runs: 'every day', input: 'boolean', output: 'foobar', endpoint: 'GET /provider/top' } } } }
72
+ };
73
+ const parser = new NangoYamlParserV2({ raw: v2 });
74
+ parser.parse();
75
+ expect(parser.errors).toStrictEqual([
76
+ new ParserErrorMissingId({ model: 'Anonymous_provider_sync_top_output', path: ['provider', 'syncs', 'top', '[output]'] })
77
+ ]);
78
+ expect(parser.warnings).toStrictEqual([new ParserErrorModelIsLiteral({ model: 'boolean', path: ['provider', 'syncs', 'top', '[input]'] })]);
79
+ expect(parser.parsed).toStrictEqual({
80
+ integrations: [
81
+ {
82
+ providerConfigKey: 'provider',
83
+ syncs: [
84
+ {
85
+ auto_start: true,
86
+ description: '',
87
+ endpoints: [{ GET: '/provider/top' }],
88
+ input: 'Anonymous_provider_sync_top_input',
89
+ name: 'top',
90
+ output: ['Anonymous_provider_sync_top_output'],
91
+ runs: 'every day',
92
+ scopes: [],
93
+ sync_type: 'full',
94
+ track_deletes: false,
95
+ type: 'sync',
96
+ usedModels: ['Anonymous_provider_sync_top_output', 'Anonymous_provider_sync_top_input'],
97
+ webhookSubscriptions: []
98
+ }
99
+ ],
100
+ postConnectionScripts: [],
101
+ actions: []
102
+ }
103
+ ],
104
+ models: new Map([
105
+ [
106
+ 'Anonymous_provider_sync_top_output',
107
+ { name: 'Anonymous_provider_sync_top_output', fields: [{ name: 'output', value: 'foobar', array: false, optional: false }], isAnon: true }
108
+ ],
109
+ [
110
+ 'Anonymous_provider_sync_top_input',
111
+ {
112
+ name: 'Anonymous_provider_sync_top_input',
113
+ fields: [{ name: 'input', value: 'boolean', tsType: true, array: false, optional: false }],
114
+ isAnon: true
115
+ }
116
+ ]
117
+ ]),
118
+ yamlVersion: 'v2'
119
+ });
120
+ });
121
+ it('should handle endpoint with model inside (found)', () => {
122
+ const v2 = {
123
+ models: { Found: { id: 'string' } },
124
+ integrations: {
125
+ provider: { actions: { getGithubIssue: { endpoint: 'GET /ticketing/tickets/{Found:id}' } } }
126
+ }
127
+ };
128
+ const parser = new NangoYamlParserV2({ raw: v2 });
129
+ parser.parse();
130
+ expect(parser.errors).toStrictEqual([]);
131
+ expect(parser.warnings).toStrictEqual([]);
132
+ expect(parser.parsed?.integrations[0]?.actions).toMatchObject([
133
+ {
134
+ endpoint: { GET: '/ticketing/tickets/{Found:id}' }
135
+ }
136
+ ]);
137
+ });
138
+ it('should handle endpoint with model inside (missing)', () => {
139
+ const v2 = {
140
+ models: {},
141
+ integrations: {
142
+ provider: { actions: { getGithubIssue: { endpoint: 'GET /ticketing/tickets/{Missing:id}' } } }
143
+ }
144
+ };
145
+ const parser = new NangoYamlParserV2({ raw: v2 });
146
+ parser.parse();
147
+ expect(parser.errors).toStrictEqual([new ParserErrorModelNotFound({ model: 'Missing', path: ['provider', 'syncs', 'getGithubIssue', '[endpoint]'] })]);
148
+ expect(parser.warnings).toStrictEqual([]);
149
+ });
150
+ });
151
+ //# sourceMappingURL=parser.v2.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.v2.unit.test.js","sourceRoot":"","sources":["../lib/parser.v2.unit.test.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@nangohq/nango-yaml",
3
+ "version": "0.40.1",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "rimraf ./dist && tsc"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/NangoHQ/nango.git",
13
+ "directory": "packages/nango-yaml"
14
+ },
15
+ "dependencies": {
16
+ "ms": "3.0.0-canary.1",
17
+ "js-yaml": "^4.1.0"
18
+ },
19
+ "devDependencies": {
20
+ "@nangohq/types": "^0.40.1",
21
+ "vitest": "0.33.0"
22
+ },
23
+ "files": [
24
+ "dist/**/*"
25
+ ]
26
+ }