@dveloxsoft/dvs-client-nestjs 0.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.
- package/README.md +171 -0
- package/dist/client/axios-http-client.d.ts +17 -0
- package/dist/client/axios-http-client.d.ts.map +1 -0
- package/dist/client/axios-http-client.js +67 -0
- package/dist/client/axios-http-client.js.map +1 -0
- package/dist/client/dvs-auth.client.d.ts +68 -0
- package/dist/client/dvs-auth.client.d.ts.map +1 -0
- package/dist/client/dvs-auth.client.js +141 -0
- package/dist/client/dvs-auth.client.js.map +1 -0
- package/dist/client/dvs-notification.client.d.ts +29 -0
- package/dist/client/dvs-notification.client.d.ts.map +1 -0
- package/dist/client/dvs-notification.client.js +145 -0
- package/dist/client/dvs-notification.client.js.map +1 -0
- package/dist/client/dvs-user.client.d.ts +69 -0
- package/dist/client/dvs-user.client.d.ts.map +1 -0
- package/dist/client/dvs-user.client.js +178 -0
- package/dist/client/dvs-user.client.js.map +1 -0
- package/dist/client/http-client.interface.d.ts +32 -0
- package/dist/client/http-client.interface.d.ts.map +1 -0
- package/dist/client/http-client.interface.js +3 -0
- package/dist/client/http-client.interface.js.map +1 -0
- package/dist/client/types.d.ts +29 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +10 -0
- package/dist/client/types.js.map +1 -0
- package/dist/dto/auth/index.d.ts +35 -0
- package/dist/dto/auth/index.d.ts.map +1 -0
- package/dist/dto/auth/index.js +3 -0
- package/dist/dto/auth/index.js.map +1 -0
- package/dist/dto/notification/index.d.ts +36 -0
- package/dist/dto/notification/index.d.ts.map +1 -0
- package/dist/dto/notification/index.js +3 -0
- package/dist/dto/notification/index.js.map +1 -0
- package/dist/dto/user/index.d.ts +49 -0
- package/dist/dto/user/index.d.ts.map +1 -0
- package/dist/dto/user/index.js +3 -0
- package/dist/dto/user/index.js.map +1 -0
- package/dist/dvs-client.module.d.ts +15 -0
- package/dist/dvs-client.module.d.ts.map +1 -0
- package/dist/dvs-client.module.js +133 -0
- package/dist/dvs-client.module.js.map +1 -0
- package/dist/exceptions/auth-errors.enum.d.ts +14 -0
- package/dist/exceptions/auth-errors.enum.d.ts.map +1 -0
- package/dist/exceptions/auth-errors.enum.js +29 -0
- package/dist/exceptions/auth-errors.enum.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/auth-response.interface.d.ts +10 -0
- package/dist/interfaces/auth-response.interface.d.ts.map +1 -0
- package/dist/interfaces/auth-response.interface.js +3 -0
- package/dist/interfaces/auth-response.interface.js.map +1 -0
- package/dist/interfaces/email-response.interface.d.ts +12 -0
- package/dist/interfaces/email-response.interface.d.ts.map +1 -0
- package/dist/interfaces/email-response.interface.js +3 -0
- package/dist/interfaces/email-response.interface.js.map +1 -0
- package/dist/interfaces/page-config.interface.d.ts +21 -0
- package/dist/interfaces/page-config.interface.d.ts.map +1 -0
- package/dist/interfaces/page-config.interface.js +3 -0
- package/dist/interfaces/page-config.interface.js.map +1 -0
- package/dist/interfaces/user-response.interface.d.ts +17 -0
- package/dist/interfaces/user-response.interface.d.ts.map +1 -0
- package/dist/interfaces/user-response.interface.js +3 -0
- package/dist/interfaces/user-response.interface.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface CreateUserDto {
|
|
2
|
+
email: string;
|
|
3
|
+
password?: string;
|
|
4
|
+
phone?: string;
|
|
5
|
+
avatar?: string;
|
|
6
|
+
rolId?: number;
|
|
7
|
+
firstName?: string;
|
|
8
|
+
lastName?: string;
|
|
9
|
+
bornDate?: Date;
|
|
10
|
+
gender?: 'male' | 'female' | 'other' | 'prefer_not_to_say';
|
|
11
|
+
country?: string;
|
|
12
|
+
language?: string;
|
|
13
|
+
timezone?: string;
|
|
14
|
+
timezoneAuto?: boolean;
|
|
15
|
+
avatarUrl?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
providers?: {
|
|
18
|
+
provider: string;
|
|
19
|
+
externalId: string;
|
|
20
|
+
}[];
|
|
21
|
+
}
|
|
22
|
+
export interface UpdateUserDto {
|
|
23
|
+
id?: string;
|
|
24
|
+
name?: string;
|
|
25
|
+
avatar?: string;
|
|
26
|
+
password?: string;
|
|
27
|
+
hasPassword?: boolean;
|
|
28
|
+
phone?: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SearchUserDto {
|
|
32
|
+
email: string;
|
|
33
|
+
companyId?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface FullDetailUserDto {
|
|
36
|
+
email: string;
|
|
37
|
+
pages: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface ResetUserPasswordDto {
|
|
40
|
+
email: string;
|
|
41
|
+
password: string;
|
|
42
|
+
pageId?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface SetupTwoFactorDto {
|
|
45
|
+
userId: string;
|
|
46
|
+
secret: string;
|
|
47
|
+
backupCodes: string;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dto/user/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,mBAAmB,CAAC;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dto/user/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Provider } from '@nestjs/common';
|
|
2
|
+
import { DVSAuthClient } from './client/dvs-auth.client';
|
|
3
|
+
import { DVSUserClient } from './client/dvs-user.client';
|
|
4
|
+
import { DVSNotificationClient } from './client/dvs-notification.client';
|
|
5
|
+
import { ClientConfig } from './client/types';
|
|
6
|
+
export declare const DVS_CLIENT_CONFIG = "DVS_CLIENT_CONFIG";
|
|
7
|
+
export declare const createDVSClientProviders: (config: ClientConfig) => Provider[];
|
|
8
|
+
export declare class DVSClientModule {
|
|
9
|
+
static forRoot(config: ClientConfig): {
|
|
10
|
+
module: typeof DVSClientModule;
|
|
11
|
+
providers: Provider[];
|
|
12
|
+
exports: (typeof DVSAuthClient | typeof DVSUserClient | typeof DVSNotificationClient)[];
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=dvs-client.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dvs-client.module.d.ts","sourceRoot":"","sources":["../src/dvs-client.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,QAAQ,EAAU,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAyE,MAAM,gBAAgB,CAAC;AAErH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,eAAO,MAAM,wBAAwB,GAAI,QAAQ,YAAY,KAAG,QAAQ,EA4BvE,CAAC;AAEF,qBAgCa,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY;;;;;CAYpC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
+
var _, done = false;
|
|
8
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
+
var context = {};
|
|
10
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
+
if (kind === "accessor") {
|
|
15
|
+
if (result === void 0) continue;
|
|
16
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
+
}
|
|
21
|
+
else if (_ = accept(result)) {
|
|
22
|
+
if (kind === "field") initializers.unshift(_);
|
|
23
|
+
else descriptor[key] = _;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
+
done = true;
|
|
28
|
+
};
|
|
29
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
+
var useValue = arguments.length > 2;
|
|
31
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
+
}
|
|
34
|
+
return useValue ? value : void 0;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.DVSClientModule = exports.createDVSClientProviders = exports.DVS_CLIENT_CONFIG = void 0;
|
|
38
|
+
const common_1 = require("@nestjs/common");
|
|
39
|
+
const dvs_auth_client_1 = require("./client/dvs-auth.client");
|
|
40
|
+
const dvs_user_client_1 = require("./client/dvs-user.client");
|
|
41
|
+
const dvs_notification_client_1 = require("./client/dvs-notification.client");
|
|
42
|
+
const types_1 = require("./client/types");
|
|
43
|
+
exports.DVS_CLIENT_CONFIG = 'DVS_CLIENT_CONFIG';
|
|
44
|
+
const createDVSClientProviders = (config) => [
|
|
45
|
+
{
|
|
46
|
+
provide: dvs_auth_client_1.DVSAuthClient,
|
|
47
|
+
useFactory: () => {
|
|
48
|
+
if (!config.authToken && !types_1.DEFAULT_AUTH_TOKEN) {
|
|
49
|
+
throw new Error('DVELOXSOFT_MS_AUTH_TOKEN is required. Provide it via forRoot() or set it as an environment variable.');
|
|
50
|
+
}
|
|
51
|
+
return new dvs_auth_client_1.DVSAuthClient(config);
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
provide: dvs_user_client_1.DVSUserClient,
|
|
56
|
+
useFactory: () => {
|
|
57
|
+
if (!config.authToken && !types_1.DEFAULT_AUTH_TOKEN) {
|
|
58
|
+
throw new Error('DVELOXSOFT_MS_AUTH_TOKEN is required. Provide it via forRoot() or set it as an environment variable.');
|
|
59
|
+
}
|
|
60
|
+
return new dvs_user_client_1.DVSUserClient(config);
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
provide: dvs_notification_client_1.DVSNotificationClient,
|
|
65
|
+
useFactory: () => {
|
|
66
|
+
if (!config.authToken && !types_1.DEFAULT_AUTH_TOKEN) {
|
|
67
|
+
throw new Error('DVELOXSOFT_MS_AUTH_TOKEN is required. Provide it via forRoot() or set it as an environment variable.');
|
|
68
|
+
}
|
|
69
|
+
return new dvs_notification_client_1.DVSNotificationClient(config);
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
exports.createDVSClientProviders = createDVSClientProviders;
|
|
74
|
+
let DVSClientModule = (() => {
|
|
75
|
+
let _classDecorators = [(0, common_1.Module)({
|
|
76
|
+
providers: [
|
|
77
|
+
{
|
|
78
|
+
provide: dvs_auth_client_1.DVSAuthClient,
|
|
79
|
+
useFactory: () => {
|
|
80
|
+
if (!types_1.DEFAULT_AUTH_TOKEN) {
|
|
81
|
+
throw new Error('DVELOXSOFT_MS_AUTH_TOKEN is required. Import DVSClientModule.forRoot({ authToken: "..." }) in your app module.');
|
|
82
|
+
}
|
|
83
|
+
return new dvs_auth_client_1.DVSAuthClient({});
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
provide: dvs_user_client_1.DVSUserClient,
|
|
88
|
+
useFactory: () => {
|
|
89
|
+
if (!types_1.DEFAULT_AUTH_TOKEN) {
|
|
90
|
+
throw new Error('DVELOXSOFT_MS_AUTH_TOKEN is required. Import DVSClientModule.forRoot({ authToken: "..." }) in your app module.');
|
|
91
|
+
}
|
|
92
|
+
return new dvs_user_client_1.DVSUserClient({});
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
provide: dvs_notification_client_1.DVSNotificationClient,
|
|
97
|
+
useFactory: () => {
|
|
98
|
+
if (!types_1.DEFAULT_AUTH_TOKEN) {
|
|
99
|
+
throw new Error('DVELOXSOFT_MS_AUTH_TOKEN is required. Import DVSClientModule.forRoot({ authToken: "..." }) in your app module.');
|
|
100
|
+
}
|
|
101
|
+
return new dvs_notification_client_1.DVSNotificationClient({});
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
exports: [dvs_auth_client_1.DVSAuthClient, dvs_user_client_1.DVSUserClient, dvs_notification_client_1.DVSNotificationClient],
|
|
106
|
+
})];
|
|
107
|
+
let _classDescriptor;
|
|
108
|
+
let _classExtraInitializers = [];
|
|
109
|
+
let _classThis;
|
|
110
|
+
var DVSClientModule = class {
|
|
111
|
+
static { _classThis = this; }
|
|
112
|
+
static {
|
|
113
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
114
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
115
|
+
DVSClientModule = _classThis = _classDescriptor.value;
|
|
116
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
117
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
118
|
+
}
|
|
119
|
+
static forRoot(config) {
|
|
120
|
+
if (!config.authToken && !types_1.DEFAULT_AUTH_TOKEN) {
|
|
121
|
+
throw new Error('DVELOXSOFT_MS_AUTH_TOKEN is required. Provide it via forRoot({ authToken: "..." }) or set DVELOXSOFT_MS_AUTH_TOKEN environment variable.');
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
module: DVSClientModule,
|
|
125
|
+
providers: (0, exports.createDVSClientProviders)(config),
|
|
126
|
+
exports: [dvs_auth_client_1.DVSAuthClient, dvs_user_client_1.DVSUserClient, dvs_notification_client_1.DVSNotificationClient],
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
return DVSClientModule = _classThis;
|
|
131
|
+
})();
|
|
132
|
+
exports.DVSClientModule = DVSClientModule;
|
|
133
|
+
//# sourceMappingURL=dvs-client.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dvs-client.module.js","sourceRoot":"","sources":["../src/dvs-client.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA0D;AAC1D,8DAAyD;AACzD,8DAAyD;AACzD,8EAAyE;AACzE,0CAAqH;AAExG,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AAE9C,MAAM,wBAAwB,GAAG,CAAC,MAAoB,EAAc,EAAE,CAAC;IAC5E;QACE,OAAO,EAAE,+BAAa;QACtB,UAAU,EAAE,GAAG,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,0BAAkB,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;YAC1H,CAAC;YACD,OAAO,IAAI,+BAAa,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;KACF;IACD;QACE,OAAO,EAAE,+BAAa;QACtB,UAAU,EAAE,GAAG,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,0BAAkB,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;YAC1H,CAAC;YACD,OAAO,IAAI,+BAAa,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;KACF;IACD;QACE,OAAO,EAAE,+CAAqB;QAC9B,UAAU,EAAE,GAAG,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,0BAAkB,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;YAC1H,CAAC;YACD,OAAO,IAAI,+CAAqB,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;KACF;CACF,CAAC;AA5BW,QAAA,wBAAwB,4BA4BnC;IAkCW,eAAe;4BAhC3B,IAAA,eAAM,EAAC;YACN,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,+BAAa;oBACtB,UAAU,EAAE,GAAG,EAAE;wBACf,IAAI,CAAC,0BAAkB,EAAE,CAAC;4BACxB,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;wBACpI,CAAC;wBACD,OAAO,IAAI,+BAAa,CAAC,EAAE,CAAC,CAAC;oBAC/B,CAAC;iBACF;gBACD;oBACE,OAAO,EAAE,+BAAa;oBACtB,UAAU,EAAE,GAAG,EAAE;wBACf,IAAI,CAAC,0BAAkB,EAAE,CAAC;4BACxB,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;wBACpI,CAAC;wBACD,OAAO,IAAI,+BAAa,CAAC,EAAE,CAAC,CAAC;oBAC/B,CAAC;iBACF;gBACD;oBACE,OAAO,EAAE,+CAAqB;oBAC9B,UAAU,EAAE,GAAG,EAAE;wBACf,IAAI,CAAC,0BAAkB,EAAE,CAAC;4BACxB,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;wBACpI,CAAC;wBACD,OAAO,IAAI,+CAAqB,CAAC,EAAE,CAAC,CAAC;oBACvC,CAAC;iBACF;aACF;YACD,OAAO,EAAE,CAAC,+BAAa,EAAE,+BAAa,EAAE,+CAAqB,CAAC;SAC/D,CAAC;;;;;;;;YACF,6KAaC;;;YAbY,uDAAe;;QAC1B,MAAM,CAAC,OAAO,CAAC,MAAoB;YACjC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,0BAAkB,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,0IAA0I,CAC3I,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,IAAA,gCAAwB,EAAC,MAAM,CAAC;gBAC3C,OAAO,EAAE,CAAC,+BAAa,EAAE,+BAAa,EAAE,+CAAqB,CAAC;aAC/D,CAAC;QACJ,CAAC;;;;AAZU,0CAAe"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare enum AuthErrorCode {
|
|
2
|
+
INVALID_CREDENTIALS = "INVALID_CREDENTIALS",
|
|
3
|
+
ACCOUNT_LOCKED = "ACCOUNT_LOCKED",
|
|
4
|
+
ACCOUNT_NOT_ACTIVE = "ACCOUNT_NOT_ACTIVE",
|
|
5
|
+
DOMAIN_NOT_ALLOWED = "DOMAIN_NOT_ALLOWED",
|
|
6
|
+
OAUTH_PROVIDER_NOT_ALLOWED = "OAUTH_PROVIDER_NOT_ALLOWED",
|
|
7
|
+
TWO_FACTOR_REQUIRED = "TWO_FACTOR_REQUIRED",
|
|
8
|
+
USER_NOT_FOUND = "USER_NOT_FOUND",
|
|
9
|
+
PASSWORD_NOT_SET = "PASSWORD_NOT_SET",
|
|
10
|
+
TOKEN_EXPIRED = "TOKEN_EXPIRED",
|
|
11
|
+
TOKEN_INVALID = "TOKEN_INVALID"
|
|
12
|
+
}
|
|
13
|
+
export declare const AUTH_ERROR_MESSAGES: Record<AuthErrorCode, string>;
|
|
14
|
+
//# sourceMappingURL=auth-errors.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-errors.enum.d.ts","sourceRoot":"","sources":["../../src/exceptions/auth-errors.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,0BAA0B,+BAA+B;IACzD,mBAAmB,wBAAwB;IAC3C,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAChC;AAED,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAW7D,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AUTH_ERROR_MESSAGES = exports.AuthErrorCode = void 0;
|
|
4
|
+
var AuthErrorCode;
|
|
5
|
+
(function (AuthErrorCode) {
|
|
6
|
+
AuthErrorCode["INVALID_CREDENTIALS"] = "INVALID_CREDENTIALS";
|
|
7
|
+
AuthErrorCode["ACCOUNT_LOCKED"] = "ACCOUNT_LOCKED";
|
|
8
|
+
AuthErrorCode["ACCOUNT_NOT_ACTIVE"] = "ACCOUNT_NOT_ACTIVE";
|
|
9
|
+
AuthErrorCode["DOMAIN_NOT_ALLOWED"] = "DOMAIN_NOT_ALLOWED";
|
|
10
|
+
AuthErrorCode["OAUTH_PROVIDER_NOT_ALLOWED"] = "OAUTH_PROVIDER_NOT_ALLOWED";
|
|
11
|
+
AuthErrorCode["TWO_FACTOR_REQUIRED"] = "TWO_FACTOR_REQUIRED";
|
|
12
|
+
AuthErrorCode["USER_NOT_FOUND"] = "USER_NOT_FOUND";
|
|
13
|
+
AuthErrorCode["PASSWORD_NOT_SET"] = "PASSWORD_NOT_SET";
|
|
14
|
+
AuthErrorCode["TOKEN_EXPIRED"] = "TOKEN_EXPIRED";
|
|
15
|
+
AuthErrorCode["TOKEN_INVALID"] = "TOKEN_INVALID";
|
|
16
|
+
})(AuthErrorCode || (exports.AuthErrorCode = AuthErrorCode = {}));
|
|
17
|
+
exports.AUTH_ERROR_MESSAGES = {
|
|
18
|
+
[AuthErrorCode.INVALID_CREDENTIALS]: 'Credenciales inválidas',
|
|
19
|
+
[AuthErrorCode.ACCOUNT_LOCKED]: 'Demasiados intentos fallidos. Intenta de nuevo en {0} minutos.',
|
|
20
|
+
[AuthErrorCode.ACCOUNT_NOT_ACTIVE]: 'Este usuario aún no está activo',
|
|
21
|
+
[AuthErrorCode.DOMAIN_NOT_ALLOWED]: 'El dominio de correo no está permitido para esta página',
|
|
22
|
+
[AuthErrorCode.OAUTH_PROVIDER_NOT_ALLOWED]: 'Proveedor no permitido para esta página',
|
|
23
|
+
[AuthErrorCode.TWO_FACTOR_REQUIRED]: 'Se requiere verificación en dos pasos',
|
|
24
|
+
[AuthErrorCode.USER_NOT_FOUND]: 'Usuario no encontrado',
|
|
25
|
+
[AuthErrorCode.PASSWORD_NOT_SET]: 'Este usuario fue registrado con un proveedor externo. Inicia sesión con tu proveedor de autenticación.',
|
|
26
|
+
[AuthErrorCode.TOKEN_EXPIRED]: 'El token ha expirado',
|
|
27
|
+
[AuthErrorCode.TOKEN_INVALID]: 'Token inválido o expirado',
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=auth-errors.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-errors.enum.js","sourceRoot":"","sources":["../../src/exceptions/auth-errors.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,4DAA2C,CAAA;IAC3C,kDAAiC,CAAA;IACjC,0DAAyC,CAAA;IACzC,0DAAyC,CAAA;IACzC,0EAAyD,CAAA;IACzD,4DAA2C,CAAA;IAC3C,kDAAiC,CAAA;IACjC,sDAAqC,CAAA;IACrC,gDAA+B,CAAA;IAC/B,gDAA+B,CAAA;AACjC,CAAC,EAXW,aAAa,6BAAb,aAAa,QAWxB;AAEY,QAAA,mBAAmB,GAAkC;IAChE,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,wBAAwB;IAC7D,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,gEAAgE;IAChG,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,iCAAiC;IACrE,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,yDAAyD;IAC7F,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,yCAAyC;IACrF,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,uCAAuC;IAC5E,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,uBAAuB;IACvD,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,wGAAwG;IAC1I,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,sBAAsB;IACrD,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,2BAA2B;CAC3D,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './dto/auth';
|
|
2
|
+
export * from './dto/user';
|
|
3
|
+
export * from './dto/notification';
|
|
4
|
+
export * from './interfaces/auth-response.interface';
|
|
5
|
+
export * from './interfaces/user-response.interface';
|
|
6
|
+
export * from './interfaces/page-config.interface';
|
|
7
|
+
export * from './interfaces/email-response.interface';
|
|
8
|
+
export * from './client/dvs-auth.client';
|
|
9
|
+
export * from './client/dvs-user.client';
|
|
10
|
+
export * from './client/dvs-notification.client';
|
|
11
|
+
export * from './client/types';
|
|
12
|
+
export * from './exceptions/auth-errors.enum';
|
|
13
|
+
export * from './dvs-client.module';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AAEtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gBAAgB,CAAC;AAE/B,cAAc,+BAA+B,CAAC;AAE9C,cAAc,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./dto/auth"), exports);
|
|
18
|
+
__exportStar(require("./dto/user"), exports);
|
|
19
|
+
__exportStar(require("./dto/notification"), exports);
|
|
20
|
+
__exportStar(require("./interfaces/auth-response.interface"), exports);
|
|
21
|
+
__exportStar(require("./interfaces/user-response.interface"), exports);
|
|
22
|
+
__exportStar(require("./interfaces/page-config.interface"), exports);
|
|
23
|
+
__exportStar(require("./interfaces/email-response.interface"), exports);
|
|
24
|
+
__exportStar(require("./client/dvs-auth.client"), exports);
|
|
25
|
+
__exportStar(require("./client/dvs-user.client"), exports);
|
|
26
|
+
__exportStar(require("./client/dvs-notification.client"), exports);
|
|
27
|
+
__exportStar(require("./client/types"), exports);
|
|
28
|
+
__exportStar(require("./exceptions/auth-errors.enum"), exports);
|
|
29
|
+
__exportStar(require("./dvs-client.module"), exports);
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,6CAA2B;AAC3B,qDAAmC;AAEnC,uEAAqD;AACrD,uEAAqD;AACrD,qEAAmD;AACnD,wEAAsD;AAEtD,2DAAyC;AACzC,2DAAyC;AACzC,mEAAiD;AACjD,iDAA+B;AAE/B,gEAA8C;AAE9C,sDAAoC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-response.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/auth-response.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-response.interface.js","sourceRoot":"","sources":["../../src/interfaces/auth-response.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface EmailResponse {
|
|
2
|
+
message: string;
|
|
3
|
+
id?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface EmailTemplateResponse {
|
|
6
|
+
id: string;
|
|
7
|
+
trigger: string;
|
|
8
|
+
template?: string;
|
|
9
|
+
companyId?: string;
|
|
10
|
+
createdAt?: Date;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=email-response.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-response.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/email-response.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-response.interface.js","sourceRoot":"","sources":["../../src/interfaces/email-response.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface PageConfig {
|
|
2
|
+
allowedDomains?: string[];
|
|
3
|
+
allowedProviders?: string[];
|
|
4
|
+
accessTokenExpirySeconds?: number;
|
|
5
|
+
refreshTokenExpirySeconds?: number;
|
|
6
|
+
changePasswordExpirySeconds?: number;
|
|
7
|
+
confirmAccountExpirySeconds?: number;
|
|
8
|
+
autoActivateUserWithoutEmailVerification?: boolean;
|
|
9
|
+
page?: {
|
|
10
|
+
id: string;
|
|
11
|
+
url: string;
|
|
12
|
+
devsUrl?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
company?: {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
accessTokenFields?: string[];
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=page-config.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-config.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/page-config.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,wCAAwC,CAAC,EAAE,OAAO,CAAC;IACnD,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE;YACR,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-config.interface.js","sourceRoot":"","sources":["../../src/interfaces/page-config.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface UserResponse {
|
|
2
|
+
id: number;
|
|
3
|
+
email: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
avatar?: string;
|
|
6
|
+
phone?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
active: boolean;
|
|
9
|
+
twoFactorEnabled?: boolean;
|
|
10
|
+
lastLogin?: Date;
|
|
11
|
+
pageId?: string;
|
|
12
|
+
rolId?: number;
|
|
13
|
+
createdAt?: Date;
|
|
14
|
+
updatedAt?: Date;
|
|
15
|
+
extraData?: Record<string, any>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=user-response.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-response.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/user-response.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-response.interface.js","sourceRoot":"","sources":["../../src/interfaces/user-response.interface.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dveloxsoft/dvs-client-nestjs",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Cliente HTTP para microservicios DVS-Auth, DVS-User y DVS-Notification del ecosistema DveloxSoft",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.esm.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.esm.js",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"prepublishOnly": "npm run build"
|
|
21
|
+
},
|
|
22
|
+
"peerDependencies": {
|
|
23
|
+
"@nestjs/common": "^10.0.0 || ^11.0.0",
|
|
24
|
+
"@nestjs/core": "^10.0.0 || ^11.0.0",
|
|
25
|
+
"axios": "^1.16.1",
|
|
26
|
+
"rxjs": "^7.0.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^20.0.0",
|
|
30
|
+
"typescript": "^5.0.0"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"dveloxsoft",
|
|
34
|
+
"auth",
|
|
35
|
+
"user",
|
|
36
|
+
"notification",
|
|
37
|
+
"microservice",
|
|
38
|
+
"client",
|
|
39
|
+
"nestjs"
|
|
40
|
+
],
|
|
41
|
+
"author": "DveloxSoft",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"config": {
|
|
44
|
+
"requiredEnvVars": {
|
|
45
|
+
"DVELOXSOFT_MS_AUTH_TOKEN": "JWT token para autenticación con el gateway (REQUERIDO)",
|
|
46
|
+
"DVELOXSOFT_MS_BASE_URL": "URL base del gateway, ej: https://ms.dveloxsoft.com (REQUERIDO)",
|
|
47
|
+
"DVELOXSOFT_MS_ORIGIN": "Origen HTTP para headers (REQUERIDO)",
|
|
48
|
+
"DVELOXSOFT_MS_REFERER": "Referer HTTP para headers (REQUERIDO)"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|