@in.pulse-crm/sdk 1.0.7 → 1.2.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.
- package/dist/auth.d.ts +75 -0
- package/dist/auth.js +97 -0
- package/dist/file.d.ts +97 -0
- package/dist/file.js +64 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.js +44 -7
- package/dist/instance.d.ts +21 -0
- package/dist/instance.js +37 -0
- package/dist/response.d.ts +22 -0
- package/dist/response.js +2 -0
- package/dist/user.d.ts +192 -0
- package/dist/user.js +85 -0
- package/package.json +11 -4
- package/src/auth.ts +139 -0
- package/src/file.ts +137 -0
- package/src/index.ts +23 -4
- package/src/instance.ts +44 -0
- package/src/reports.ts +59 -0
- package/src/response.ts +26 -0
- package/src/user.ts +246 -0
- package/src/auth.sdk.ts +0 -80
- package/src/instance.sdk.ts +0 -38
- package/src/user.sdk.ts +0 -68
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
import { User } from "./user";
|
|
3
|
+
import { DataResponse } from "./response";
|
|
4
|
+
export interface LoginData {
|
|
5
|
+
/**
|
|
6
|
+
* Token de autenticação.
|
|
7
|
+
*/
|
|
8
|
+
token: string;
|
|
9
|
+
/**
|
|
10
|
+
* Dados do usuário.
|
|
11
|
+
*/
|
|
12
|
+
user: User;
|
|
13
|
+
}
|
|
14
|
+
export interface SessionData {
|
|
15
|
+
/**
|
|
16
|
+
* ID do usuário.
|
|
17
|
+
*/
|
|
18
|
+
userId: number;
|
|
19
|
+
/**
|
|
20
|
+
* Papel do usuário.
|
|
21
|
+
*/
|
|
22
|
+
role: string;
|
|
23
|
+
/**
|
|
24
|
+
* Nome da instância.
|
|
25
|
+
*/
|
|
26
|
+
instance: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Classe AuthSDK para interagir com a API de autenticação.
|
|
30
|
+
*/
|
|
31
|
+
export default class AuthSDK {
|
|
32
|
+
private readonly httpClient;
|
|
33
|
+
/**
|
|
34
|
+
* Cria uma instância do SDK de autenticação.
|
|
35
|
+
* @param {AxiosInstance} httpClient A instância do cliente HTTP a ser usada para fazer requisições à API.
|
|
36
|
+
*/
|
|
37
|
+
constructor(httpClient: AxiosInstance);
|
|
38
|
+
/**
|
|
39
|
+
* Realiza o login do usuário.
|
|
40
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
41
|
+
* @param {string} username Nome de usuário.
|
|
42
|
+
* @param {string} password Senha do usuário.
|
|
43
|
+
* @returns {Promise<DataResponse<LoginData>>} Dados de login.
|
|
44
|
+
*/
|
|
45
|
+
login(instanceName: string, username: string, password: string): Promise<DataResponse<LoginData>>;
|
|
46
|
+
/**
|
|
47
|
+
* Busca os dados da sessão.
|
|
48
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
49
|
+
* @param {string} authToken Token de autenticação.
|
|
50
|
+
* @returns {Promise<DataResponse<AuthTypes.SessionData>>} Dados da sessão.
|
|
51
|
+
*/
|
|
52
|
+
fetchSessionData(instanceName: string, authToken: string): Promise<DataResponse<SessionData>>;
|
|
53
|
+
/**
|
|
54
|
+
* Busca os dados do usuário da sessão.
|
|
55
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
56
|
+
* @param {string} authToken Token de autenticação.
|
|
57
|
+
* @returns {Promise<DataResponse<AuthTypes.User>>} Dados do usuário.
|
|
58
|
+
*/
|
|
59
|
+
fetchSessionUser(instanceName: string, authToken: string): Promise<DataResponse<User>>;
|
|
60
|
+
/**
|
|
61
|
+
* Verifica se o usuário está autenticado.
|
|
62
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
63
|
+
* @param {string} authToken Token de autenticação.
|
|
64
|
+
* @returns {Promise<boolean>} Verdadeiro se o usuário estiver autenticado, falso caso contrário.
|
|
65
|
+
*/
|
|
66
|
+
isAuthenticated(instanceName: string, authToken: string): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Verifica se o usuário está autorizado.
|
|
69
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
70
|
+
* @param {string} authToken Token de autenticação.
|
|
71
|
+
* @param {string[]} authorizedRoles Lista de papéis autorizados.
|
|
72
|
+
* @returns {Promise<boolean>} Verdadeiro se o usuário estiver autorizado, falso caso contrário.
|
|
73
|
+
*/
|
|
74
|
+
isAuthorized(instanceName: string, authToken: string, authorizedRoles: string[]): Promise<boolean>;
|
|
75
|
+
}
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@in.pulse-crm/utils");
|
|
4
|
+
/**
|
|
5
|
+
* Classe AuthSDK para interagir com a API de autenticação.
|
|
6
|
+
*/
|
|
7
|
+
class AuthSDK {
|
|
8
|
+
httpClient;
|
|
9
|
+
/**
|
|
10
|
+
* Cria uma instância do SDK de autenticação.
|
|
11
|
+
* @param {AxiosInstance} httpClient A instância do cliente HTTP a ser usada para fazer requisições à API.
|
|
12
|
+
*/
|
|
13
|
+
constructor(httpClient) {
|
|
14
|
+
this.httpClient = httpClient;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Realiza o login do usuário.
|
|
18
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
19
|
+
* @param {string} username Nome de usuário.
|
|
20
|
+
* @param {string} password Senha do usuário.
|
|
21
|
+
* @returns {Promise<DataResponse<LoginData>>} Dados de login.
|
|
22
|
+
*/
|
|
23
|
+
async login(instanceName, username, password) {
|
|
24
|
+
const response = await this.httpClient.post(`${instanceName}/login`, { LOGIN: username, SENHA: password });
|
|
25
|
+
return response.data;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Busca os dados da sessão.
|
|
29
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
30
|
+
* @param {string} authToken Token de autenticação.
|
|
31
|
+
* @returns {Promise<DataResponse<AuthTypes.SessionData>>} Dados da sessão.
|
|
32
|
+
*/
|
|
33
|
+
async fetchSessionData(instanceName, authToken) {
|
|
34
|
+
const response = await this.httpClient
|
|
35
|
+
.get(`/${instanceName}/auth`, {
|
|
36
|
+
headers: {
|
|
37
|
+
authorization: authToken,
|
|
38
|
+
},
|
|
39
|
+
})
|
|
40
|
+
.catch((error) => {
|
|
41
|
+
const message = (0, utils_1.sanitizeErrorMessage)(error);
|
|
42
|
+
throw new Error("Failed to fetch session data! " + message);
|
|
43
|
+
});
|
|
44
|
+
return response.data;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Busca os dados do usuário da sessão.
|
|
48
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
49
|
+
* @param {string} authToken Token de autenticação.
|
|
50
|
+
* @returns {Promise<DataResponse<AuthTypes.User>>} Dados do usuário.
|
|
51
|
+
*/
|
|
52
|
+
async fetchSessionUser(instanceName, authToken) {
|
|
53
|
+
const response = await this.httpClient
|
|
54
|
+
.get(`/${instanceName}/auth/user`, {
|
|
55
|
+
headers: {
|
|
56
|
+
authorization: authToken,
|
|
57
|
+
},
|
|
58
|
+
})
|
|
59
|
+
.catch((error) => {
|
|
60
|
+
const message = (0, utils_1.sanitizeErrorMessage)(error);
|
|
61
|
+
throw new Error("Failed to fetch session user! " + message);
|
|
62
|
+
});
|
|
63
|
+
return response.data;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Verifica se o usuário está autenticado.
|
|
67
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
68
|
+
* @param {string} authToken Token de autenticação.
|
|
69
|
+
* @returns {Promise<boolean>} Verdadeiro se o usuário estiver autenticado, falso caso contrário.
|
|
70
|
+
*/
|
|
71
|
+
async isAuthenticated(instanceName, authToken) {
|
|
72
|
+
try {
|
|
73
|
+
const { data } = await this.fetchSessionData(instanceName, authToken);
|
|
74
|
+
return !!data.userId;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Verifica se o usuário está autorizado.
|
|
82
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
83
|
+
* @param {string} authToken Token de autenticação.
|
|
84
|
+
* @param {string[]} authorizedRoles Lista de papéis autorizados.
|
|
85
|
+
* @returns {Promise<boolean>} Verdadeiro se o usuário estiver autorizado, falso caso contrário.
|
|
86
|
+
*/
|
|
87
|
+
async isAuthorized(instanceName, authToken, authorizedRoles) {
|
|
88
|
+
try {
|
|
89
|
+
const { data } = await this.fetchSessionData(instanceName, authToken);
|
|
90
|
+
return authorizedRoles.includes(data.role);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.default = AuthSDK;
|
package/dist/file.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
interface UploadFileOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Nome da instância onde o arquivo está armazenado.
|
|
5
|
+
*/
|
|
6
|
+
instance: string;
|
|
7
|
+
/**
|
|
8
|
+
* Tipo de diretório onde o arquivo está armazenado.
|
|
9
|
+
*/
|
|
10
|
+
dirType: FileDirType;
|
|
11
|
+
/**
|
|
12
|
+
* Nome do arquivo.
|
|
13
|
+
*/
|
|
14
|
+
fileName: string;
|
|
15
|
+
/**
|
|
16
|
+
* Buffer com o conteúdo do arquivo.
|
|
17
|
+
*/
|
|
18
|
+
buffer: Buffer;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Enum que representa os tipos de diretórios de arquivos.
|
|
22
|
+
*
|
|
23
|
+
* @enum {string}
|
|
24
|
+
* @property {string} PUBLIC - Representa o diretório público.
|
|
25
|
+
* @property {string} MODELS - Representa o diretório de modelos.
|
|
26
|
+
*/
|
|
27
|
+
export declare enum FileDirType {
|
|
28
|
+
PUBLIC = "public",
|
|
29
|
+
MODELS = "models"
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Representa um arquivo no sistema.
|
|
33
|
+
*/
|
|
34
|
+
export interface File {
|
|
35
|
+
/**
|
|
36
|
+
* Identificador único para o arquivo.
|
|
37
|
+
*/
|
|
38
|
+
id: number;
|
|
39
|
+
/**
|
|
40
|
+
* Identificador único para o arquivo no armazenamento.
|
|
41
|
+
*/
|
|
42
|
+
id_storage: string;
|
|
43
|
+
/**
|
|
44
|
+
* Identificador único para o armazenamento.
|
|
45
|
+
*/
|
|
46
|
+
storage_id: number;
|
|
47
|
+
/**
|
|
48
|
+
* Nome do arquivo.
|
|
49
|
+
*/
|
|
50
|
+
name: string;
|
|
51
|
+
/**
|
|
52
|
+
* Tipo MIME do arquivo.
|
|
53
|
+
*/
|
|
54
|
+
mime_type: string;
|
|
55
|
+
/**
|
|
56
|
+
* Tamanho do arquivo em bytes.
|
|
57
|
+
*/
|
|
58
|
+
size: number;
|
|
59
|
+
/**
|
|
60
|
+
* Tipo de diretório onde o arquivo está armazenado.
|
|
61
|
+
*/
|
|
62
|
+
dir_type: FileDirType;
|
|
63
|
+
/**
|
|
64
|
+
* Data e hora em que o arquivo foi criado.
|
|
65
|
+
*/
|
|
66
|
+
created_at: Date;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* SDK para operações de arquivos.
|
|
70
|
+
*/
|
|
71
|
+
declare class FileSDK {
|
|
72
|
+
private readonly httpClient;
|
|
73
|
+
/**
|
|
74
|
+
* Cria uma instância do SDK de arquivos.
|
|
75
|
+
* @param httpClient A instância do cliente HTTP a ser usada para fazer requisições à API.
|
|
76
|
+
*/
|
|
77
|
+
constructor(httpClient: AxiosInstance);
|
|
78
|
+
/**
|
|
79
|
+
* Busca um arquivo pelo ID.
|
|
80
|
+
* @param {number} id - ID do arquivo.
|
|
81
|
+
* @returns {Promise<Buffer>} Um buffer contendo os dados do arquivo.
|
|
82
|
+
*/
|
|
83
|
+
fetchFile(id: number): Promise<Buffer>;
|
|
84
|
+
/**
|
|
85
|
+
* Faz o upload de um arquivo.
|
|
86
|
+
* @param {UploadFileOptions} props - Opções para o upload do arquivo.
|
|
87
|
+
* @returns {Promise<File>} Os dados do arquivo enviado.
|
|
88
|
+
*/
|
|
89
|
+
uploadFile(props: UploadFileOptions): Promise<File>;
|
|
90
|
+
/**
|
|
91
|
+
* Deleta um arquivo pelo ID.
|
|
92
|
+
* @param {number} id - ID do arquivo.
|
|
93
|
+
* @returns {Promise<void>}
|
|
94
|
+
*/
|
|
95
|
+
deleteFile(id: number): Promise<void>;
|
|
96
|
+
}
|
|
97
|
+
export default FileSDK;
|
package/dist/file.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileDirType = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Enum que representa os tipos de diretórios de arquivos.
|
|
6
|
+
*
|
|
7
|
+
* @enum {string}
|
|
8
|
+
* @property {string} PUBLIC - Representa o diretório público.
|
|
9
|
+
* @property {string} MODELS - Representa o diretório de modelos.
|
|
10
|
+
*/
|
|
11
|
+
var FileDirType;
|
|
12
|
+
(function (FileDirType) {
|
|
13
|
+
FileDirType["PUBLIC"] = "public";
|
|
14
|
+
FileDirType["MODELS"] = "models";
|
|
15
|
+
})(FileDirType || (exports.FileDirType = FileDirType = {}));
|
|
16
|
+
/**
|
|
17
|
+
* SDK para operações de arquivos.
|
|
18
|
+
*/
|
|
19
|
+
class FileSDK {
|
|
20
|
+
httpClient;
|
|
21
|
+
/**
|
|
22
|
+
* Cria uma instância do SDK de arquivos.
|
|
23
|
+
* @param httpClient A instância do cliente HTTP a ser usada para fazer requisições à API.
|
|
24
|
+
*/
|
|
25
|
+
constructor(httpClient) {
|
|
26
|
+
this.httpClient = httpClient;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Busca um arquivo pelo ID.
|
|
30
|
+
* @param {number} id - ID do arquivo.
|
|
31
|
+
* @returns {Promise<Buffer>} Um buffer contendo os dados do arquivo.
|
|
32
|
+
*/
|
|
33
|
+
async fetchFile(id) {
|
|
34
|
+
const response = await this.httpClient.get(`/files/${id}`, {
|
|
35
|
+
responseType: "arraybuffer"
|
|
36
|
+
});
|
|
37
|
+
const buffer = Buffer.from(response.data, "binary");
|
|
38
|
+
return buffer;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Faz o upload de um arquivo.
|
|
42
|
+
* @param {UploadFileOptions} props - Opções para o upload do arquivo.
|
|
43
|
+
* @returns {Promise<File>} Os dados do arquivo enviado.
|
|
44
|
+
*/
|
|
45
|
+
async uploadFile(props) {
|
|
46
|
+
const form = new FormData();
|
|
47
|
+
form.append("instance", props.instance);
|
|
48
|
+
form.append("dirType", props.dirType);
|
|
49
|
+
form.append("file", new Blob([props.buffer]), props.fileName);
|
|
50
|
+
const response = await this.httpClient.post("/files", form, {
|
|
51
|
+
headers: { "Content-Type": "multipart/form-data" }
|
|
52
|
+
});
|
|
53
|
+
return response.data.data;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Deleta um arquivo pelo ID.
|
|
57
|
+
* @param {number} id - ID do arquivo.
|
|
58
|
+
* @returns {Promise<void>}
|
|
59
|
+
*/
|
|
60
|
+
async deleteFile(id) {
|
|
61
|
+
await this.httpClient.delete(`/files/${id}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.default = FileSDK;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import AuthSDK from "./auth
|
|
2
|
-
import
|
|
3
|
-
import InstanceSDK from "./instance
|
|
4
|
-
|
|
1
|
+
import AuthSDK, { LoginData, SessionData } from "./auth";
|
|
2
|
+
import FileSDK, { File, FileDirType } from "./file";
|
|
3
|
+
import InstanceSDK from "./instance";
|
|
4
|
+
import UserSDK, { CreateUserDTO, UpdateUserDTO, User, UserRole } from "./user";
|
|
5
|
+
import { DataResponse, ErrorResponse, PaginatedResponse, QueryResponse } from "./response";
|
|
6
|
+
export { AuthSDK, LoginData, SessionData, FileSDK, File, FileDirType, InstanceSDK, UserSDK, CreateUserDTO, UpdateUserDTO, User, UserRole, DataResponse, ErrorResponse, PaginatedResponse, QueryResponse, };
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,49 @@
|
|
|
1
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
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
const
|
|
8
|
-
exports.AuthSDK =
|
|
9
|
-
const
|
|
10
|
-
exports.
|
|
11
|
-
|
|
12
|
-
|
|
39
|
+
exports.UserRole = exports.UserSDK = exports.InstanceSDK = exports.FileDirType = exports.FileSDK = exports.AuthSDK = void 0;
|
|
40
|
+
const auth_1 = __importDefault(require("./auth"));
|
|
41
|
+
exports.AuthSDK = auth_1.default;
|
|
42
|
+
const file_1 = __importStar(require("./file"));
|
|
43
|
+
exports.FileSDK = file_1.default;
|
|
44
|
+
Object.defineProperty(exports, "FileDirType", { enumerable: true, get: function () { return file_1.FileDirType; } });
|
|
45
|
+
const instance_1 = __importDefault(require("./instance"));
|
|
46
|
+
exports.InstanceSDK = instance_1.default;
|
|
47
|
+
const user_1 = __importStar(require("./user"));
|
|
48
|
+
exports.UserSDK = user_1.default;
|
|
49
|
+
Object.defineProperty(exports, "UserRole", { enumerable: true, get: function () { return user_1.UserRole; } });
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
/**
|
|
3
|
+
* Classe InstanceSDK para interagir com a API de instâncias.
|
|
4
|
+
*/
|
|
5
|
+
declare class InstanceSDK {
|
|
6
|
+
private readonly httpClient;
|
|
7
|
+
/**
|
|
8
|
+
* Cria uma instância do SDK de instância.
|
|
9
|
+
* @param {AxiosInstance} httpClient A instância do cliente HTTP a ser usada para fazer requisições à API.
|
|
10
|
+
*/
|
|
11
|
+
constructor(httpClient: AxiosInstance);
|
|
12
|
+
/**
|
|
13
|
+
* Executa uma consulta na instância especificada.
|
|
14
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
15
|
+
* @param {string} query Consulta a ser executada.
|
|
16
|
+
* @param {any[]} parameters Parâmetros da consulta.
|
|
17
|
+
* @returns {Promise<T>} Resultado da consulta.
|
|
18
|
+
*/
|
|
19
|
+
executeQuery<T>(instanceName: string, query: string, parameters: any[]): Promise<T>;
|
|
20
|
+
}
|
|
21
|
+
export default InstanceSDK;
|
package/dist/instance.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Classe InstanceSDK para interagir com a API de instâncias.
|
|
5
|
+
*/
|
|
6
|
+
class InstanceSDK {
|
|
7
|
+
httpClient;
|
|
8
|
+
/**
|
|
9
|
+
* Cria uma instância do SDK de instância.
|
|
10
|
+
* @param {AxiosInstance} httpClient A instância do cliente HTTP a ser usada para fazer requisições à API.
|
|
11
|
+
*/
|
|
12
|
+
constructor(httpClient) {
|
|
13
|
+
this.httpClient = httpClient;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Executa uma consulta na instância especificada.
|
|
17
|
+
* @param {string} instanceName Nome da instância do Inpulse.
|
|
18
|
+
* @param {string} query Consulta a ser executada.
|
|
19
|
+
* @param {any[]} parameters Parâmetros da consulta.
|
|
20
|
+
* @returns {Promise<T>} Resultado da consulta.
|
|
21
|
+
*/
|
|
22
|
+
async executeQuery(instanceName, query, parameters) {
|
|
23
|
+
const response = await this.httpClient
|
|
24
|
+
.post(`/${instanceName}/query`, { query, parameters })
|
|
25
|
+
.catch((error) => {
|
|
26
|
+
if (error.response?.data?.message) {
|
|
27
|
+
throw new Error(error.response.data.message);
|
|
28
|
+
}
|
|
29
|
+
if (error.response?.status) {
|
|
30
|
+
throw new Error(`Failed to execute query, status: ${error.response.status}`);
|
|
31
|
+
}
|
|
32
|
+
throw new Error(error.message);
|
|
33
|
+
});
|
|
34
|
+
return response.data.result;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.default = InstanceSDK;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface DataResponse<T> {
|
|
2
|
+
message: string;
|
|
3
|
+
data: T;
|
|
4
|
+
}
|
|
5
|
+
export interface MessageResponse {
|
|
6
|
+
message: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ErrorResponse {
|
|
9
|
+
message: string;
|
|
10
|
+
cause?: any;
|
|
11
|
+
}
|
|
12
|
+
export interface PaginatedResponse<T> {
|
|
13
|
+
message: string;
|
|
14
|
+
data: Array<T>;
|
|
15
|
+
page: {
|
|
16
|
+
current: number;
|
|
17
|
+
next: boolean;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface QueryResponse<T> {
|
|
21
|
+
result: T;
|
|
22
|
+
}
|
package/dist/response.js
ADDED
package/dist/user.d.ts
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
import { DataResponse, PaginatedResponse } from "./response";
|
|
3
|
+
/**
|
|
4
|
+
* Enum que representa os diferentes papéis de usuário dentro do sistema.
|
|
5
|
+
*
|
|
6
|
+
* @enum {string}
|
|
7
|
+
* @property {string} ADMIN - Representa um papel de administrador.
|
|
8
|
+
* @property {string} ACTIVE - Representa um papel de usuário ativo.
|
|
9
|
+
* @property {string} RECEPTIONIST - Representa um papel de recepcionista.
|
|
10
|
+
* @property {string} BOTH - Representa um papel que combina tanto recepcionista quanto usuário ativo.
|
|
11
|
+
*/
|
|
12
|
+
export declare enum UserRole {
|
|
13
|
+
ADMIN = "ADMIN",
|
|
14
|
+
ACTIVE = "ATIVO",
|
|
15
|
+
RECEPTIONIST = "RECEP",
|
|
16
|
+
BOTH = "AMBOS"
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Interface que representa um usuário do Inpulse.
|
|
20
|
+
*/
|
|
21
|
+
export interface User {
|
|
22
|
+
/** Código do usuário */
|
|
23
|
+
CODIGO: number;
|
|
24
|
+
/** Indica se o usuário está ativo */
|
|
25
|
+
ATIVO: "SIM" | "NAO" | null;
|
|
26
|
+
/** Nome do usuário */
|
|
27
|
+
NOME: string;
|
|
28
|
+
/** Login do usuário */
|
|
29
|
+
LOGIN: string;
|
|
30
|
+
/** Email do usuário */
|
|
31
|
+
EMAIl: string;
|
|
32
|
+
/** Nível de acesso do usuário */
|
|
33
|
+
NIVEL: UserRole | null;
|
|
34
|
+
/** Horário de trabalho do usuário */
|
|
35
|
+
HORARIO: number;
|
|
36
|
+
/** Data de cadastro do usuário */
|
|
37
|
+
DATACAD: Date | null;
|
|
38
|
+
/** Código do setor do usuário */
|
|
39
|
+
SETOR: number;
|
|
40
|
+
/** Nome de exibição do usuário */
|
|
41
|
+
NOME_EXIBICAO: string | null;
|
|
42
|
+
/** Código ERP do usuário */
|
|
43
|
+
CODIGO_ERP: string;
|
|
44
|
+
/** Nome do setor do usuário */
|
|
45
|
+
SETOR_NOME: string;
|
|
46
|
+
/** Senha do usuário */
|
|
47
|
+
SENHA?: string | null;
|
|
48
|
+
/** Data de expiração da senha do usuário */
|
|
49
|
+
EXPIRA_EM: Date | null;
|
|
50
|
+
/** Indica se o usuário deve alterar a senha */
|
|
51
|
+
ALTERA_SENHA: "SIM" | "NAO" | null;
|
|
52
|
+
/** Indica se o usuário pode editar contatos */
|
|
53
|
+
EDITA_CONTATOS: "SIM" | "NAO" | null;
|
|
54
|
+
/** Indica se o usuário pode visualizar compras */
|
|
55
|
+
VISUALIZA_COMPRAS: "SIM" | "NAO" | null;
|
|
56
|
+
/** Tipo de cadastro do usuário */
|
|
57
|
+
CADASTRO: "TOTAL" | "NULOS" | null;
|
|
58
|
+
/** Indica se o usuário está logado */
|
|
59
|
+
LOGADO: number | null;
|
|
60
|
+
/** Data e hora do início do último login */
|
|
61
|
+
ULTIMO_LOGIN_INI: Date | null;
|
|
62
|
+
/** Data e hora do fim do último login */
|
|
63
|
+
ULTIMO_LOGIN_FIM: Date | null;
|
|
64
|
+
/** Código de telefonia do usuário */
|
|
65
|
+
CODTELEFONIA: string;
|
|
66
|
+
/** Indica se o usuário agenda ligações */
|
|
67
|
+
AGENDA_LIG: "SIM" | "NAO";
|
|
68
|
+
/** Indica se o usuário liga para representantes */
|
|
69
|
+
LIGA_REPRESENTANTE: "SIM" | "NAO";
|
|
70
|
+
/** Banco do usuário */
|
|
71
|
+
BANCO: string;
|
|
72
|
+
/** Indica se o usuário filtra por DDD */
|
|
73
|
+
FILTRA_DDD: "SIM" | "NAO";
|
|
74
|
+
/** Indica se o usuário filtra por estado */
|
|
75
|
+
FILTRA_ESTADO: "SIM" | "NAO";
|
|
76
|
+
/** Ramal do Asterisk do usuário */
|
|
77
|
+
ASTERISK_RAMAL: string | null;
|
|
78
|
+
/** UserID do Asterisk do usuário */
|
|
79
|
+
ASTERISK_USERID: string | null;
|
|
80
|
+
/** Login do Asterisk do usuário */
|
|
81
|
+
ASTERISK_LOGIN: string | null;
|
|
82
|
+
/** Senha do Asterisk do usuário */
|
|
83
|
+
ASTERISK_SENHA: string | null;
|
|
84
|
+
/** Codec do Asterisk do usuário */
|
|
85
|
+
CODEC: string | null;
|
|
86
|
+
/** Assinatura de email do usuário */
|
|
87
|
+
ASSINATURA_EMAIL: string | null;
|
|
88
|
+
/** Dias para ligar para representantes */
|
|
89
|
+
LIGA_REPRESENTANTE_DIAS: number | null;
|
|
90
|
+
/** Email do operador */
|
|
91
|
+
EMAILOPERADOR: string | null;
|
|
92
|
+
/** Senha do email do operador */
|
|
93
|
+
SENHAEMAILOPERADOR: string | null;
|
|
94
|
+
/** Email de exibição do usuário */
|
|
95
|
+
EMAIL_EXIBICAO: string | null;
|
|
96
|
+
/** Limite diário de agendamento */
|
|
97
|
+
limite_diario_agendamento: number | null;
|
|
98
|
+
/** Indica se o usuário é omni */
|
|
99
|
+
OMNI: number | null;
|
|
100
|
+
/** Caminho do banco de dados */
|
|
101
|
+
CAMINHO_DATABASE: string | null;
|
|
102
|
+
/** ID da campanha WeOn */
|
|
103
|
+
IDCAMPANHA_WEON: string | null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Interface que representa o objeto de transferência de dados para criar um usuário.
|
|
107
|
+
*/
|
|
108
|
+
export interface CreateUserDTO {
|
|
109
|
+
/**
|
|
110
|
+
* O nome do usuário.
|
|
111
|
+
*/
|
|
112
|
+
NOME: string;
|
|
113
|
+
/**
|
|
114
|
+
* O nome de usuário para login.
|
|
115
|
+
*/
|
|
116
|
+
LOGIN: string;
|
|
117
|
+
/**
|
|
118
|
+
* A senha do usuário.
|
|
119
|
+
*/
|
|
120
|
+
SENHA: string;
|
|
121
|
+
/**
|
|
122
|
+
* O nível de acesso do usuário.
|
|
123
|
+
* Pode ser um dos seguintes valores:
|
|
124
|
+
* - "ATIVO"
|
|
125
|
+
* - "RECEP"
|
|
126
|
+
* - "AMBOS"
|
|
127
|
+
* - "ADMIN"
|
|
128
|
+
*/
|
|
129
|
+
NIVEL: UserRole;
|
|
130
|
+
/**
|
|
131
|
+
* O número do setor do usuário.
|
|
132
|
+
*/
|
|
133
|
+
SETOR: number;
|
|
134
|
+
/**
|
|
135
|
+
* O endereço de email do usuário (opcional).
|
|
136
|
+
*/
|
|
137
|
+
EMAIL?: string;
|
|
138
|
+
/**
|
|
139
|
+
* O nome de exibição do usuário (opcional).
|
|
140
|
+
*/
|
|
141
|
+
NOME_EXIBICAO?: string;
|
|
142
|
+
/**
|
|
143
|
+
* O código ERP do usuário (opcional).
|
|
144
|
+
*/
|
|
145
|
+
CODIGO_ERP?: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Interface que representa o objeto de transferência de dados para atualizar um usuário.
|
|
149
|
+
*/
|
|
150
|
+
export type UpdateUserDTO = Partial<CreateUserDTO>;
|
|
151
|
+
/**
|
|
152
|
+
* SDK para operações de usuários.
|
|
153
|
+
*/
|
|
154
|
+
declare class UserSDK {
|
|
155
|
+
private readonly httpClient;
|
|
156
|
+
/**
|
|
157
|
+
* Cria uma instância do SDK de usuários.
|
|
158
|
+
* @param httpClient - A instância do cliente HTTP a ser usada para fazer requisições à API.
|
|
159
|
+
*/
|
|
160
|
+
constructor(httpClient: AxiosInstance);
|
|
161
|
+
/**
|
|
162
|
+
* Obtém a lista de usuários.
|
|
163
|
+
* @param instance - O nome da instância.
|
|
164
|
+
* @returns Uma resposta paginada contendo os usuários.
|
|
165
|
+
*/
|
|
166
|
+
getUsers(instance: string): Promise<PaginatedResponse<User>>;
|
|
167
|
+
/**
|
|
168
|
+
* Obtém um usuário pelo ID.
|
|
169
|
+
* @param instance - O nome da instância.
|
|
170
|
+
* @param userId - O ID do usuário.
|
|
171
|
+
* @returns Uma resposta contendo os dados do usuário.
|
|
172
|
+
*/
|
|
173
|
+
getUserById(instance: string, userId: number): Promise<DataResponse<User>>;
|
|
174
|
+
/**
|
|
175
|
+
* Cria um novo usuário.
|
|
176
|
+
* @param instance - O nome da instância.
|
|
177
|
+
* @param data - Os dados para criação do usuário.
|
|
178
|
+
* @returns Uma resposta contendo os dados do usuário criado.
|
|
179
|
+
* @throws Um erro se a criação do usuário falhar.
|
|
180
|
+
*/
|
|
181
|
+
createUser(instance: string, data: CreateUserDTO): Promise<DataResponse<User>>;
|
|
182
|
+
/**
|
|
183
|
+
* Atualiza um usuário existente.
|
|
184
|
+
* @param instance - O nome da instância.
|
|
185
|
+
* @param userId - O ID do usuário.
|
|
186
|
+
* @param data - Os dados para atualização do usuário.
|
|
187
|
+
* @returns Uma resposta contendo os dados do usuário atualizado.
|
|
188
|
+
* @throws Um erro se a atualização do usuário falhar.
|
|
189
|
+
*/
|
|
190
|
+
updateUser(instance: string, userId: string, data: UpdateUserDTO): Promise<DataResponse<User>>;
|
|
191
|
+
}
|
|
192
|
+
export default UserSDK;
|