amo-controller 1.0.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.
Files changed (72) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +69 -0
  3. package/classes/Amo.d.ts +50 -0
  4. package/classes/Amo.js +61 -0
  5. package/classes/Companies.d.ts +8 -0
  6. package/classes/Companies.js +8 -0
  7. package/classes/Contacts.d.ts +8 -0
  8. package/classes/Contacts.js +8 -0
  9. package/classes/Events.d.ts +8 -0
  10. package/classes/Events.js +8 -0
  11. package/classes/Leads.d.ts +8 -0
  12. package/classes/Leads.js +8 -0
  13. package/classes/LossReasons.d.ts +8 -0
  14. package/classes/LossReasons.js +8 -0
  15. package/classes/Notes.d.ts +12 -0
  16. package/classes/Notes.js +34 -0
  17. package/classes/Pipelines.d.ts +8 -0
  18. package/classes/Pipelines.js +8 -0
  19. package/classes/Tags.d.ts +10 -0
  20. package/classes/Tags.js +10 -0
  21. package/classes/Tasks.d.ts +8 -0
  22. package/classes/Tasks.js +8 -0
  23. package/classes/Users.d.ts +10 -0
  24. package/classes/Users.js +20 -0
  25. package/classes/base/Entity.d.ts +20 -0
  26. package/classes/base/Entity.js +137 -0
  27. package/classes/base/EntityGetOnly.d.ts +14 -0
  28. package/classes/base/EntityGetOnly.js +71 -0
  29. package/classes/base/EntityWithCodeFields.d.ts +13 -0
  30. package/classes/base/EntityWithCodeFields.js +53 -0
  31. package/index.d.ts +2 -0
  32. package/index.js +2 -0
  33. package/package.json +34 -0
  34. package/tsconfig.tsbuildinfo +1 -0
  35. package/types/company.d.ts +28 -0
  36. package/types/company.js +1 -0
  37. package/types/contact.d.ts +30 -0
  38. package/types/contact.js +1 -0
  39. package/types/custom_fields.d.ts +9 -0
  40. package/types/custom_fields.js +1 -0
  41. package/types/entity.d.ts +44 -0
  42. package/types/entity.js +1 -0
  43. package/types/entity_get_only.d.ts +10 -0
  44. package/types/entity_get_only.js +1 -0
  45. package/types/events.d.ts +18 -0
  46. package/types/events.js +1 -0
  47. package/types/interfaces.d.ts +6 -0
  48. package/types/interfaces.js +1 -0
  49. package/types/lead.d.ts +35 -0
  50. package/types/lead.js +1 -0
  51. package/types/logs.d.ts +3 -0
  52. package/types/logs.js +1 -0
  53. package/types/loss_reason.d.ts +7 -0
  54. package/types/loss_reason.js +1 -0
  55. package/types/note.d.ts +15 -0
  56. package/types/note.js +1 -0
  57. package/types/pipeline.d.ts +22 -0
  58. package/types/pipeline.js +1 -0
  59. package/types/query_params.d.ts +88 -0
  60. package/types/query_params.js +1 -0
  61. package/types/responses.d.ts +21 -0
  62. package/types/responses.js +1 -0
  63. package/types/tag.d.ts +5 -0
  64. package/types/tag.js +1 -0
  65. package/types/task.d.ts +20 -0
  66. package/types/task.js +1 -0
  67. package/types/user.d.ts +64 -0
  68. package/types/user.js +1 -0
  69. package/utils/error.d.ts +2 -0
  70. package/utils/error.js +27 -0
  71. package/utils/logger.d.ts +1 -0
  72. package/utils/logger.js +1 -0
@@ -0,0 +1,88 @@
1
+ export interface DefaultQueryParams {
2
+ with?: string[];
3
+ query?: string | number;
4
+ filter?: Filter;
5
+ limit?: number;
6
+ page?: number;
7
+ order?: {
8
+ id?: Order;
9
+ created_at?: Order;
10
+ updated_at?: Order;
11
+ };
12
+ }
13
+ type Filter = FilterLeads | FilterContacts | FilterCompanies;
14
+ type Order = 'asc' | 'desc';
15
+ type FromTo = {
16
+ from?: number;
17
+ to?: number;
18
+ };
19
+ export interface FilterLeads extends MainFilter {
20
+ price?: FromTo;
21
+ statuses?: {
22
+ pipeline_id: number;
23
+ status_id: number;
24
+ }[];
25
+ pipeline_id?: number | number[];
26
+ status?: number | number[];
27
+ }
28
+ export type FilterContacts = MainFilter;
29
+ export type FilterCompanies = MainFilter;
30
+ export interface MainFilter {
31
+ id?: number | number[];
32
+ name?: string;
33
+ created_by?: number | number[];
34
+ updated_by?: number | number[];
35
+ responsible_user_id?: number | number[];
36
+ created_at?: FromTo;
37
+ updated_at?: FromTo;
38
+ closed_at?: FromTo;
39
+ closest_task_at?: FromTo;
40
+ }
41
+ export type QueryParams = DefaultQueryParams | TaskQueryParams;
42
+ export interface NoteQueryParams extends Omit<DefaultQueryParams, 'with' | 'query' | 'filter'> {
43
+ filter?: NoteFilter;
44
+ }
45
+ export interface TaskQueryParams extends Omit<DefaultQueryParams, 'with' | 'query' | 'filter'> {
46
+ filter?: TaskFilter;
47
+ }
48
+ export type GetOnlyParams = EventQueryParams | UserQueryParams | PipelineQueryParams | LossReasonQueryParams | TagQueryParams;
49
+ export interface EventQueryParams extends Omit<DefaultQueryParams, 'filter' | 'order' | 'query'> {
50
+ filter?: EventFilter;
51
+ }
52
+ export type UserQueryParams = Omit<DefaultQueryParams, 'filter' | 'order' | 'query'>;
53
+ export type PipelineQueryParams = object;
54
+ export type LossReasonQueryParams = object;
55
+ export interface TagQueryParams extends Omit<DefaultQueryParams, 'filter' | 'order'> {
56
+ filter?: TagFilter;
57
+ }
58
+ interface NoteFilter {
59
+ id?: number | number[];
60
+ entity_id?: number | number[];
61
+ note_type?: NoteTypes;
62
+ updated_at?: FromTo;
63
+ }
64
+ interface TaskFilter {
65
+ id?: number | number[];
66
+ entity_id?: number | number[];
67
+ entity_type?: 'leads' | 'contacts' | 'companies' | 'customers';
68
+ task_type?: number | number[];
69
+ responsible_user_id?: number | number[];
70
+ is_completed?: boolean;
71
+ updated_at?: FromTo;
72
+ }
73
+ interface EventFilter {
74
+ id?: string[];
75
+ created_at?: FromTo;
76
+ created_by?: number | number[];
77
+ entity?: 'lead' | 'contact' | 'company' | 'customer' | 'task';
78
+ entity_id?: number | number[];
79
+ type?: 'lead_added' | 'lead_deleted' | 'lead_restored' | 'lead_status_changed' | 'lead_linked' | 'lead_unlinked' | 'contact_added' | 'contact_deleted' | 'contact_restored' | 'contact_linked' | 'contact_unlinked' | 'company_added' | 'company_deleted' | 'company_restored' | 'company_linked' | 'company_unlinked' | 'customer_added' | 'customer_deleted' | 'customer_status_changed' | 'customer_linked' | 'customer_unlinked' | 'task_added' | 'task_deleted' | 'task_completed' | 'task_type_changed' | 'task_text_changed' | 'task_deadline_changed' | 'task_result_added' | 'incoming_call' | 'outgoing_call' | 'incoming_chat_message' | 'outgoing_chat_message' | 'entity_direct_message' | 'incoming_sms' | 'outgoing_sms' | 'entity_tag_added' | 'entity_tag_deleted' | 'entity_linked' | 'entity_unlinked' | 'sale_field_changed' | 'name_field_changed' | 'ltv_field_changed' | 'custom_field_value_changed' | 'entity_responsible_changed' | 'robot_replied' | 'intent_identified' | 'nps_rate_added' | 'link_followed' | 'transaction_added' | 'common_note_added' | 'common_note_deleted' | 'attachment_note_added' | 'targeting_in_note_added' | 'targeting_out_note_added' | 'geo_note_added' | 'service_note_added' | 'site_visit_note_added' | 'message_to_cashier_note_added' | 'key_action_completed' | 'entity_merged' | `custom_field_${number}_value_changed`;
80
+ value_before?: unknown;
81
+ value_after?: unknown;
82
+ }
83
+ interface TagFilter {
84
+ id?: number | number[];
85
+ name?: string;
86
+ }
87
+ type NoteTypes = 'common' | 'call_in' | 'call_out' | 'service_message' | 'message_cashier' | 'geolocation' | 'sms_in' | 'sms_out' | 'extended_service_message' | 'attachment';
88
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { EntitiesType } from './entity';
2
+ import { EntitiesGetOnlyType } from '../types/entity_get_only';
3
+ export interface Response<T extends EntitiesType, E> {
4
+ _embedded: {
5
+ [key in T]: E[];
6
+ };
7
+ }
8
+ export interface ResponseGetOnly<T extends EntitiesGetOnlyType, E> {
9
+ _embedded: {
10
+ [key in T]: E[];
11
+ };
12
+ }
13
+ export interface CreateResponse {
14
+ id: number;
15
+ request_id: string;
16
+ }
17
+ export interface UpdateResponse {
18
+ id: number;
19
+ name: string;
20
+ updated_at: number;
21
+ }
@@ -0,0 +1 @@
1
+ export {};
package/types/tag.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export interface Tag {
2
+ id?: number;
3
+ name?: string;
4
+ color?: string | null;
5
+ }
package/types/tag.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ export interface Task {
2
+ id: number;
3
+ created_by: number;
4
+ updated_by: number;
5
+ created_at: number;
6
+ updated_at: number;
7
+ responsible_user_id: number;
8
+ group_id: number;
9
+ entity_id: number;
10
+ entity_type: 'leads' | 'contacts' | 'companies';
11
+ duration: number;
12
+ is_completed: true;
13
+ task_type_id: number;
14
+ text: string;
15
+ result: {
16
+ text?: string;
17
+ };
18
+ complete_till: number;
19
+ account_id: number;
20
+ }
package/types/task.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,64 @@
1
+ export interface User {
2
+ id: number;
3
+ name: string;
4
+ email: string;
5
+ lang: string;
6
+ rights: {
7
+ leads: RightSet;
8
+ contacts: RightSet;
9
+ companies: RightSet;
10
+ tasks: {
11
+ edit: RightValue;
12
+ delete: RightValue;
13
+ };
14
+ mail_access: boolean;
15
+ catalog_access: boolean;
16
+ status_rights: StatusRight[];
17
+ is_admin: boolean;
18
+ is_free: boolean;
19
+ is_active: boolean;
20
+ group_id: number | null;
21
+ role_id: number | null;
22
+ };
23
+ _links: {
24
+ self: {
25
+ href: string;
26
+ };
27
+ };
28
+ _embedded: {
29
+ roles: Role[];
30
+ groups: Group[];
31
+ };
32
+ }
33
+ type RightValue = 'A' | 'D' | 'R' | 'M' | string;
34
+ interface RightSet {
35
+ view: RightValue;
36
+ edit: RightValue;
37
+ add: RightValue;
38
+ delete: RightValue;
39
+ export: RightValue;
40
+ }
41
+ interface StatusRight {
42
+ entity_type: string;
43
+ pipeline_id: number;
44
+ status_id: number;
45
+ rights: {
46
+ view: RightValue;
47
+ edit: RightValue;
48
+ delete: RightValue;
49
+ };
50
+ }
51
+ interface Role {
52
+ id: number;
53
+ name: string;
54
+ _links: {
55
+ self: {
56
+ href: string;
57
+ };
58
+ };
59
+ }
60
+ interface Group {
61
+ id: number;
62
+ name: string;
63
+ }
64
+ export {};
package/types/user.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { Logger } from '../types/logs';
2
+ export default function logError(name: string, error: unknown, data?: unknown, loggerInstance?: Logger): void;
package/utils/error.js ADDED
@@ -0,0 +1,27 @@
1
+ import { logger } from './logger';
2
+ import { isAxiosError } from 'axios';
3
+ export default function logError(name, error, data, loggerInstance = logger) {
4
+ let errorStr;
5
+ try {
6
+ errorStr = JSON.stringify(error, null, 2);
7
+ }
8
+ catch {
9
+ errorStr = String(error);
10
+ }
11
+ const responseData = isAxiosError(error) ? error.response?.data : undefined;
12
+ const validationErrors = responseData &&
13
+ typeof responseData === 'object' &&
14
+ 'validation-errors' in responseData &&
15
+ Array.isArray(responseData['validation-errors'])
16
+ ? responseData['validation-errors'].map((err) => err.errors)
17
+ : undefined;
18
+ const errorObj = {
19
+ message: isAxiosError(error) ? error.message : error instanceof Error ? error.message : undefined,
20
+ status: isAxiosError(error) ? error.status : undefined,
21
+ validation_errors: validationErrors,
22
+ error,
23
+ errorStr,
24
+ data,
25
+ };
26
+ loggerInstance.error(name, errorObj);
27
+ }
@@ -0,0 +1 @@
1
+ export declare const logger: Console;
@@ -0,0 +1 @@
1
+ export const logger = console;