@orchesty/connector-nutshell 1.0.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 (60) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +190 -0
  3. package/coverage/clover.xml +129 -0
  4. package/coverage/coverage-final.json +7 -0
  5. package/coverage/lcov-report/base.css +224 -0
  6. package/coverage/lcov-report/block-navigation.js +87 -0
  7. package/coverage/lcov-report/favicon.png +0 -0
  8. package/coverage/lcov-report/index.html +146 -0
  9. package/coverage/lcov-report/prettify.css +1 -0
  10. package/coverage/lcov-report/prettify.js +2 -0
  11. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  12. package/coverage/lcov-report/sorter.js +210 -0
  13. package/coverage/lcov-report/src/Connector/NutshellGetAccountConnector.ts.html +532 -0
  14. package/coverage/lcov-report/src/Connector/NutshellNewAccountConnector.ts.html +754 -0
  15. package/coverage/lcov-report/src/Connector/NutshellNewLeadConnector.ts.html +802 -0
  16. package/coverage/lcov-report/src/Connector/NutshellNewTaskConnector.ts.html +406 -0
  17. package/coverage/lcov-report/src/Connector/index.html +161 -0
  18. package/coverage/lcov-report/src/NutshellApplication.ts.html +304 -0
  19. package/coverage/lcov-report/src/index.html +116 -0
  20. package/coverage/lcov-report/test/dataProvider.ts.html +235 -0
  21. package/coverage/lcov-report/test/index.html +116 -0
  22. package/coverage/lcov.info +184 -0
  23. package/dist/Connector/NutshellGetAccountConnector.d.ts +108 -0
  24. package/dist/Connector/NutshellGetAccountConnector.js +29 -0
  25. package/dist/Connector/NutshellNewAccountConnector.d.ts +179 -0
  26. package/dist/Connector/NutshellNewAccountConnector.js +29 -0
  27. package/dist/Connector/NutshellNewLeadConnector.d.ts +205 -0
  28. package/dist/Connector/NutshellNewLeadConnector.js +29 -0
  29. package/dist/Connector/NutshellNewTaskConnector.d.ts +67 -0
  30. package/dist/Connector/NutshellNewTaskConnector.js +29 -0
  31. package/dist/NutshellApplication.d.ts +16 -0
  32. package/dist/NutshellApplication.js +85 -0
  33. package/dist/package.json +22 -0
  34. package/jest.config.js +13 -0
  35. package/package.json +22 -0
  36. package/src/Connector/NutshellGetAccountConnector.ts +149 -0
  37. package/src/Connector/NutshellNewAccountConnector.ts +223 -0
  38. package/src/Connector/NutshellNewLeadConnector.ts +239 -0
  39. package/src/Connector/NutshellNewTaskConnector.ts +107 -0
  40. package/src/Connector/__tests__/Data/NutshellGetAccountConnector/input.json +8 -0
  41. package/src/Connector/__tests__/Data/NutshellGetAccountConnector/mock.json +37 -0
  42. package/src/Connector/__tests__/Data/NutshellGetAccountConnector/output.json +34 -0
  43. package/src/Connector/__tests__/Data/NutshellNewAccountConnector/input.json +10 -0
  44. package/src/Connector/__tests__/Data/NutshellNewAccountConnector/mock.json +34 -0
  45. package/src/Connector/__tests__/Data/NutshellNewAccountConnector/output.json +30 -0
  46. package/src/Connector/__tests__/Data/NutshellNewLeadConnector/input.json +10 -0
  47. package/src/Connector/__tests__/Data/NutshellNewLeadConnector/mock.json +77 -0
  48. package/src/Connector/__tests__/Data/NutshellNewLeadConnector/output.json +74 -0
  49. package/src/Connector/__tests__/Data/NutshellNewTaskConnector/input.json +11 -0
  50. package/src/Connector/__tests__/Data/NutshellNewTaskConnector/mock.json +22 -0
  51. package/src/Connector/__tests__/Data/NutshellNewTaskConnector/output.json +19 -0
  52. package/src/Connector/__tests__/NutshellGetAccountConnector.ts +17 -0
  53. package/src/Connector/__tests__/NutshellNewAccountConnector.ts +17 -0
  54. package/src/Connector/__tests__/NutshellNewLeadConnector.ts +17 -0
  55. package/src/Connector/__tests__/NutshellNewTaskConnector.ts +17 -0
  56. package/src/NutshellApplication.ts +73 -0
  57. package/test/dataProvider.ts +50 -0
  58. package/tsconfig.json +8 -0
  59. package/tsconfig.prod.json +13 -0
  60. package/tsconfig.prod.tsbuildinfo +1 -0
@@ -0,0 +1,179 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
3
+ export declare const NAME = "nutshell-new-account-connector";
4
+ export default class NutshellNewAccountConnector extends AConnector {
5
+ getName(): string;
6
+ processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IOutput>>;
7
+ }
8
+ export interface IInput {
9
+ account: {
10
+ name: string;
11
+ owner?: {
12
+ entityType?: string;
13
+ id?: number;
14
+ };
15
+ industryId?: string;
16
+ accountTypeId?: string;
17
+ territoryId?: string;
18
+ url?: string[];
19
+ phone?: string[];
20
+ leads?: [
21
+ {
22
+ relationship?: string;
23
+ id?: number;
24
+ }
25
+ ];
26
+ contacts?: [
27
+ {
28
+ relationship?: string;
29
+ id?: number;
30
+ }
31
+ ];
32
+ address?: [
33
+ {
34
+ address_1?: string;
35
+ address_2?: string;
36
+ address_3?: string;
37
+ city?: string;
38
+ state?: string;
39
+ postalCode?: string;
40
+ country?: string;
41
+ }
42
+ ];
43
+ customFields?: {
44
+ Number_of_Employees?: string;
45
+ };
46
+ };
47
+ }
48
+ export interface IOutput {
49
+ id: number;
50
+ entityType: string;
51
+ rev: string;
52
+ modifiedTime: string;
53
+ createdTime: string;
54
+ name: string;
55
+ htmlUrl: string;
56
+ htmlUrlPath: string;
57
+ avatarUrl: string;
58
+ accountType: {
59
+ id: number;
60
+ name: string;
61
+ };
62
+ industry: {
63
+ stub: boolean;
64
+ id: number;
65
+ rev: string;
66
+ entityType: string;
67
+ name: string;
68
+ };
69
+ creator: {
70
+ stub: boolean;
71
+ id: number;
72
+ rev: string;
73
+ entityType: string;
74
+ modifiedTime: string;
75
+ createdTime: string;
76
+ name: string;
77
+ emails: string[];
78
+ isEnabled: boolean;
79
+ isAdministrator: boolean;
80
+ };
81
+ owner: {
82
+ stub: boolean;
83
+ id: number;
84
+ rev: string;
85
+ entityType: string;
86
+ modifiedTime: string;
87
+ createdTime: string;
88
+ name: string;
89
+ emails: string[];
90
+ isEnabled: boolean;
91
+ isAdministrator: boolean;
92
+ };
93
+ tags: [];
94
+ lastContactedDate: string;
95
+ contacts: [
96
+ {
97
+ stub: boolean;
98
+ id: number;
99
+ rev: string;
100
+ entityType: string;
101
+ modifiedTime: string;
102
+ createdTime: string;
103
+ name: string;
104
+ jobTitle: string;
105
+ relationship: string;
106
+ }
107
+ ];
108
+ description: null;
109
+ legacyId: null;
110
+ phone: {
111
+ '0': {
112
+ countryCode: string;
113
+ number: string;
114
+ extension: null;
115
+ numberFormatted: string;
116
+ E164: string;
117
+ countryCodeAndNumber: string;
118
+ };
119
+ '1': {
120
+ countryCode: string;
121
+ number: string;
122
+ extension: null;
123
+ numberFormatted: string;
124
+ E164: string;
125
+ countryCodeAndNumber: string;
126
+ };
127
+ '2': {
128
+ countryCode: string;
129
+ number: string;
130
+ extension: null;
131
+ numberFormatted: string;
132
+ E164: string;
133
+ countryCodeAndNumber: string;
134
+ };
135
+ '--primary': {
136
+ countryCode: string;
137
+ number: string;
138
+ extension: null;
139
+ numberFormatted: string;
140
+ E164: string;
141
+ countryCodeAndNumber: string;
142
+ };
143
+ };
144
+ url: {
145
+ '0': string;
146
+ '1': string;
147
+ '--primary': string;
148
+ };
149
+ address: {
150
+ '0': {
151
+ name: null;
152
+ location: null;
153
+ locationAccuracy: null;
154
+ address_1: string;
155
+ address_2: string;
156
+ address_3: string;
157
+ city: string;
158
+ state: string;
159
+ postalCode: string;
160
+ country: string;
161
+ timezone: null;
162
+ };
163
+ '--primary': {
164
+ name: null;
165
+ location: null;
166
+ locationAccuracy: null;
167
+ address_1: string;
168
+ address_2: string;
169
+ address_3: string;
170
+ city: string;
171
+ state: string;
172
+ postalCode: string;
173
+ country: string;
174
+ timezone: null;
175
+ };
176
+ };
177
+ notes: [];
178
+ leads: [];
179
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NAME = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ const crypto_1 = __importDefault(require("crypto"));
10
+ exports.NAME = 'nutshell-new-account-connector';
11
+ class NutshellNewAccountConnector extends AConnector_1.default {
12
+ getName() {
13
+ return exports.NAME;
14
+ }
15
+ async processAction(dto) {
16
+ const appInstall = await this.getApplicationInstallFromProcess(dto);
17
+ const data = {
18
+ jsonrpc: '2.0',
19
+ method: 'newAccount',
20
+ params: dto.getJsonData(),
21
+ id: crypto_1.default.randomBytes(4).toString('hex'),
22
+ };
23
+ const req = await this.getApplication().getRequestDto(dto, appInstall, HttpMethods_1.HttpMethods.POST, undefined, data);
24
+ const resp = await this.getSender().send(req, [200]);
25
+ const response = resp.getJsonBody();
26
+ return dto.setNewJsonData(response.result);
27
+ }
28
+ }
29
+ exports.default = NutshellNewAccountConnector;
@@ -0,0 +1,205 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
3
+ export declare const NAME = "nutshell-new-lead-connector";
4
+ export default class NutshellNewLeadConnector extends AConnector {
5
+ getName(): string;
6
+ processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IOutput>>;
7
+ }
8
+ export interface IOutput {
9
+ id: number;
10
+ entityType: string;
11
+ rev: string;
12
+ modifiedTime: string;
13
+ createdTime: string;
14
+ name: string;
15
+ description: string;
16
+ htmlUrl: string;
17
+ htmlUrlPath: string;
18
+ avatarUrl: string;
19
+ creator: {
20
+ stub: boolean;
21
+ id: number;
22
+ rev: string;
23
+ entityType: string;
24
+ modifiedTime: string;
25
+ createdTime: string;
26
+ name: string;
27
+ emails: string[];
28
+ isEnabled: boolean;
29
+ isAdministrator: boolean;
30
+ };
31
+ primaryAccount: {
32
+ stub: boolean;
33
+ id: number;
34
+ rev: string;
35
+ entityType: string;
36
+ modifiedTime: string;
37
+ createdTime: string;
38
+ name: string;
39
+ regions: string[];
40
+ relationship: null;
41
+ description: null;
42
+ };
43
+ milestone: null;
44
+ stageset: {
45
+ stub: boolean;
46
+ id: number;
47
+ entityType: string;
48
+ modifiedTime: string;
49
+ name: string;
50
+ };
51
+ activitiesCount: {
52
+ '0': number;
53
+ '1': number;
54
+ '2': number;
55
+ '-1': number;
56
+ };
57
+ status: number;
58
+ confidence: number;
59
+ completion: number;
60
+ urgency: string;
61
+ isOverdue: boolean;
62
+ lastContactedDate: null;
63
+ market: {
64
+ stub: boolean;
65
+ id: number;
66
+ rev: string;
67
+ entityType: string;
68
+ name: string;
69
+ };
70
+ assignee: {
71
+ stub: boolean;
72
+ id: number;
73
+ rev: string;
74
+ entityType: string;
75
+ modifiedTime: string;
76
+ createdTime: string;
77
+ name: string;
78
+ emails: string[];
79
+ isEnabled: boolean;
80
+ isAdministrator: boolean;
81
+ };
82
+ sources: [];
83
+ competitors: [];
84
+ products: [
85
+ {
86
+ stub: boolean;
87
+ id: number;
88
+ rev: string;
89
+ entityType: string;
90
+ modifiedTime: string;
91
+ createdTime: string;
92
+ name: string;
93
+ relationship: string;
94
+ price: {
95
+ currency: string;
96
+ amount: number;
97
+ };
98
+ quantity: number;
99
+ }
100
+ ];
101
+ contacts: [];
102
+ accounts: [];
103
+ tags: string[];
104
+ priority: number;
105
+ dueTime: string;
106
+ value: {
107
+ currency: string;
108
+ amount: number;
109
+ };
110
+ normalizedValue: {
111
+ currency: string;
112
+ amount: number;
113
+ };
114
+ processes: [];
115
+ notes: [
116
+ {
117
+ stub: number;
118
+ id: number;
119
+ rev: string;
120
+ entityType: string;
121
+ createdTime: string;
122
+ note: string;
123
+ noteMarkup: string;
124
+ noteHtml: string;
125
+ user: {
126
+ stub: boolean;
127
+ id: number;
128
+ rev: string;
129
+ entityType: string;
130
+ modifiedTim: string;
131
+ createdTime: string;
132
+ name: string;
133
+ emails: string[];
134
+ isEnabled: boolean;
135
+ isAdministrator: boolean;
136
+ };
137
+ originId: number;
138
+ date: string;
139
+ }
140
+ ];
141
+ estimatedValue: {
142
+ currency: string;
143
+ amount: number;
144
+ };
145
+ }
146
+ export interface IInput {
147
+ lead: {
148
+ primaryAccount?: {
149
+ id: string;
150
+ };
151
+ dueTime?: string;
152
+ market?: {
153
+ id: string;
154
+ };
155
+ tags?: string[];
156
+ description?: string;
157
+ accounts?: [
158
+ {
159
+ id?: number;
160
+ }
161
+ ];
162
+ contacts?: [
163
+ {
164
+ id?: number;
165
+ }
166
+ ];
167
+ products?: [
168
+ {
169
+ relationship?: string;
170
+ quantity?: number;
171
+ price?: {
172
+ currency_shortname?: string;
173
+ amount?: string;
174
+ };
175
+ id?: number;
176
+ }
177
+ ];
178
+ competitors?: [
179
+ {
180
+ status?: number;
181
+ relationship?: string;
182
+ id?: number;
183
+ }
184
+ ];
185
+ sources?: [
186
+ {
187
+ id?: number;
188
+ }
189
+ ];
190
+ confidence?: number;
191
+ assignee?: {
192
+ entityType?: string;
193
+ id?: number;
194
+ };
195
+ customFields?: {
196
+ 'Tracking #'?: string;
197
+ Discount?: {
198
+ currency_shortname?: string;
199
+ amount?: string;
200
+ };
201
+ };
202
+ note?: string[];
203
+ priority?: number;
204
+ };
205
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NAME = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ const crypto_1 = __importDefault(require("crypto"));
10
+ exports.NAME = 'nutshell-new-lead-connector';
11
+ class NutshellNewLeadConnector extends AConnector_1.default {
12
+ getName() {
13
+ return exports.NAME;
14
+ }
15
+ async processAction(dto) {
16
+ const appInstall = await this.getApplicationInstallFromProcess(dto);
17
+ const data = {
18
+ jsonrpc: '2.0',
19
+ method: 'newLead',
20
+ params: dto.getJsonData(),
21
+ id: crypto_1.default.randomBytes(4).toString('hex'),
22
+ };
23
+ const req = await this.getApplication().getRequestDto(dto, appInstall, HttpMethods_1.HttpMethods.POST, undefined, data);
24
+ const resp = await this.getSender().send(req, [200]);
25
+ const response = resp.getJsonBody();
26
+ return dto.setNewJsonData(response.result);
27
+ }
28
+ }
29
+ exports.default = NutshellNewLeadConnector;
@@ -0,0 +1,67 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
3
+ export declare const NAME = "nutshell-new-task-connector";
4
+ export default class NutshellNewTaskConnector extends AConnector {
5
+ getName(): string;
6
+ processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IOutput>>;
7
+ }
8
+ export interface IOutput {
9
+ title: string;
10
+ id: number;
11
+ entityType: string;
12
+ rev: string;
13
+ createdTime: string;
14
+ description: string;
15
+ dueTime: string;
16
+ completedTime: null;
17
+ completedUser: null;
18
+ assignee: {
19
+ stub: boolean;
20
+ id: number;
21
+ rev: string;
22
+ entityType: string;
23
+ modifiedTime: string;
24
+ createdTime: string;
25
+ name: string;
26
+ emails: string[];
27
+ isEnabled: boolean;
28
+ isAdministrator: boolean;
29
+ };
30
+ entity: {
31
+ stub: boolean;
32
+ id: number;
33
+ rev: string;
34
+ entityType: string;
35
+ modifiedTime: string;
36
+ createdTime: string;
37
+ name: string;
38
+ regions: string[];
39
+ };
40
+ creator: {
41
+ stub: boolean;
42
+ id: number;
43
+ rev: string;
44
+ entityType: string;
45
+ modifiedTime: string;
46
+ createdTime: string;
47
+ name: string;
48
+ emails: string[];
49
+ isEnabled: boolean;
50
+ isAdministrator: boolean;
51
+ };
52
+ }
53
+ export interface IInput {
54
+ task: {
55
+ title: string;
56
+ description?: string;
57
+ dueTime?: string;
58
+ assignee?: {
59
+ entityType?: string;
60
+ id?: number;
61
+ };
62
+ entity?: {
63
+ entityType?: string;
64
+ id?: number;
65
+ };
66
+ };
67
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NAME = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ const crypto_1 = __importDefault(require("crypto"));
10
+ exports.NAME = 'nutshell-new-task-connector';
11
+ class NutshellNewTaskConnector extends AConnector_1.default {
12
+ getName() {
13
+ return exports.NAME;
14
+ }
15
+ async processAction(dto) {
16
+ const appInstall = await this.getApplicationInstallFromProcess(dto);
17
+ const data = {
18
+ jsonrpc: '2.0',
19
+ method: 'newTask',
20
+ params: dto.getJsonData(),
21
+ id: crypto_1.default.randomBytes(4).toString('hex'),
22
+ };
23
+ const req = await this.getApplication().getRequestDto(dto, appInstall, HttpMethods_1.HttpMethods.POST, undefined, data);
24
+ const resp = await this.getSender().send(req, [200]);
25
+ const response = resp.getJsonBody();
26
+ return dto.setNewJsonData(response.result);
27
+ }
28
+ }
29
+ exports.default = NutshellNewTaskConnector;
@@ -0,0 +1,16 @@
1
+ import { ApplicationInstall } from '@orchesty/nodejs-sdk/dist/lib/Application/Database/ApplicationInstall';
2
+ import FormStack from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FormStack';
3
+ import { ABasicApplication } from '@orchesty/nodejs-sdk/dist/lib/Authorization/Type/Basic/ABasicApplication';
4
+ import RequestDto from '@orchesty/nodejs-sdk/dist/lib/Transport/Curl/RequestDto';
5
+ import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
6
+ import AProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/AProcessDto';
7
+ export declare const NAME = "nutshell";
8
+ export default class NutshellApplication extends ABasicApplication {
9
+ getDescription(): string;
10
+ getName(): string;
11
+ getPublicName(): string;
12
+ getLogo(): string;
13
+ getRequestDto(dto: AProcessDto, applicationInstall: ApplicationInstall, method: HttpMethods, url?: string, data?: unknown): Promise<RequestDto> | RequestDto;
14
+ getFormStack(): FormStack;
15
+ private getToken;
16
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.NAME = void 0;
40
+ const CoreFormsEnum_1 = __importStar(require("@orchesty/nodejs-sdk/dist/lib/Application/Base/CoreFormsEnum"));
41
+ const Field_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Field"));
42
+ const FieldType_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FieldType"));
43
+ const Form_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Form"));
44
+ const FormStack_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FormStack"));
45
+ const ABasicApplication_1 = require("@orchesty/nodejs-sdk/dist/lib/Authorization/Type/Basic/ABasicApplication");
46
+ const RequestDto_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Transport/Curl/RequestDto"));
47
+ const Base64_1 = require("@orchesty/nodejs-sdk/dist/lib/Utils/Base64");
48
+ const Headers_1 = require("@orchesty/nodejs-sdk/dist/lib/Utils/Headers");
49
+ exports.NAME = 'nutshell';
50
+ class NutshellApplication extends ABasicApplication_1.ABasicApplication {
51
+ getDescription() {
52
+ return 'Affordable, easy-to-use CRM that helps small-business sales teams win more deals';
53
+ }
54
+ getName() {
55
+ return exports.NAME;
56
+ }
57
+ getPublicName() {
58
+ return 'Nutshell';
59
+ }
60
+ getLogo() {
61
+ return 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IlZyc3R2YV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAwIDEwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNGRTU4MDA7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQo8L3N0eWxlPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0wLjEsMC4xaDk5Ljd2OTkuN0gwLjFWMC4xeiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTU1LjUsMjkuMmMtMS4xLDAtMi0xLTEuOS0yLjFjMC0wLjEsMC0wLjIsMC0wLjNsMS40LTcuM2MwLTAuMSwwLTAuMiwwLTAuM2MwLTEuNS0yLjItMS43LTUtMS43cy01LDAuMi01LDEuNwoJCWMwLDAuMSwwLDAuMiwwLDAuM2wxLjQsNy4zYzAuMiwxLjEtMC41LDIuMi0xLjYsMi40Yy0wLjEsMC0wLjIsMC0wLjMsMGMtMTMuNCwwLjUtMjIuOSw0LjktMjIuOSwxMi45djMuMWMwLDAuOCwwLjcsMS41LDEuNSwxLjUKCQljMCwwLDAsMCwwLDBoMjQuNGMxLDAsMS41LDAuNywxLjUsMS41YzAsMC43LTAuNSwxLjMtMS4yLDEuNEwyOS43LDUzYy0wLjcsMC4xLTEuMiwwLjctMS4yLDEuNHY2LjJjMCwxMS45LDkuMywyMS45LDIxLjUsMjEuOQoJCWMxMS45LDAsMjEuNS05LjcsMjEuNS0yMS41di0xM2MwLTAuOCwwLjctMS40LDEuNC0xLjRjMCwwLDAsMCwwLDBoMy45YzAuOCwwLDEuNS0wLjcsMS41LTEuNWMwLDAsMCwwLDAsMHYtMy4xCgkJQzc4LjQsMzQsNjguOSwzMCw1NS41LDI5LjJMNTUuNSwyOS4yeiIvPgo8L2c+Cjwvc3ZnPgo=';
62
+ }
63
+ getRequestDto(dto, applicationInstall, method, url, data) {
64
+ const request = new RequestDto_1.default('https://app.nutshell.com/api/v1/json', method, dto);
65
+ request.setHeaders({
66
+ [Headers_1.CommonHeaders.CONTENT_TYPE]: Headers_1.JSON_TYPE,
67
+ [Headers_1.CommonHeaders.ACCEPT]: Headers_1.JSON_TYPE,
68
+ [Headers_1.CommonHeaders.AUTHORIZATION]: `Basic ${this.getToken(applicationInstall)}`,
69
+ });
70
+ if (data) {
71
+ request.setJsonBody(data);
72
+ }
73
+ return request;
74
+ }
75
+ getFormStack() {
76
+ const form = new Form_1.default(CoreFormsEnum_1.default.AUTHORIZATION_FORM, (0, CoreFormsEnum_1.getFormName)(CoreFormsEnum_1.default.AUTHORIZATION_FORM))
77
+ .addField(new Field_1.default(FieldType_1.default.TEXT, ABasicApplication_1.USER, 'Username', undefined, true))
78
+ .addField(new Field_1.default(FieldType_1.default.TEXT, ABasicApplication_1.PASSWORD, 'API Key', undefined, true));
79
+ return new FormStack_1.default().addForm(form);
80
+ }
81
+ getToken(applicationInstall) {
82
+ return (0, Base64_1.encode)(`${applicationInstall.getSettings()[CoreFormsEnum_1.default.AUTHORIZATION_FORM][ABasicApplication_1.USER]}:${applicationInstall.getSettings()[CoreFormsEnum_1.default.AUTHORIZATION_FORM][ABasicApplication_1.PASSWORD]}`);
83
+ }
84
+ }
85
+ exports.default = NutshellApplication;
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@orchesty/connector-nutshell",
3
+ "description": "",
4
+ "version": "0.0.0",
5
+ "license": "Apache-2.0",
6
+ "url": "https://github.com/Orchesty/orchesty-nodejs-connectors",
7
+ "repository": "https://github.com/Orchesty/orchesty-nodejs-connectors",
8
+ "scripts": {
9
+ "build": "rm -rf dist && rm -rf tsconfig.prod.tsbuildinfo && tsc -d -p tsconfig.prod.json && cp package.json ./dist/package.json",
10
+ "test": "jest --coverage --forceExit --passWithNoTests",
11
+ "lint": "eslint src test --fix",
12
+ "lint-ci": "eslint src test"
13
+ },
14
+ "keywords": [],
15
+ "author": "info@hanaboso.com",
16
+ "dependencies": {
17
+ "@orchesty/nodejs-sdk": "^4.3.6"
18
+ },
19
+ "engines": {
20
+ "node": ">=24"
21
+ }
22
+ }
package/jest.config.js ADDED
@@ -0,0 +1,13 @@
1
+ const baseConfig = require('../../jest.config.js');
2
+
3
+ module.exports = {
4
+ ...baseConfig,
5
+ roots: ["<rootDir>/src"],
6
+ setupFiles: ["<rootDir>/../../.jest/testEnvs.ts"],
7
+ setupFilesAfterEnv: ["<rootDir>/../../.jest/testLifecycle.ts"],
8
+ globalSetup: "<rootDir>/../../.jest/globalSetup.ts",
9
+ moduleNameMapper: {
10
+ "^@orchesty/nodejs-connectors/test/(.*)$": "<rootDir>/../../test/$1",
11
+ "^@orchesty/nodejs-connectors/lib/(.*)$": "<rootDir>/../../lib/$1",
12
+ },
13
+ }