@sweepbright/api-client 0.39.1 → 0.40.2
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/client.d.ts +8 -2
- package/dist/client.js +35 -8
- package/dist/client.js.map +1 -1
- package/dist/entities/negotiator.d.ts +16 -3
- package/dist/oauth-manager/TokensRepository_Redis.d.ts +2 -0
- package/dist/oauth-manager/TokensRepository_Redis.js +27 -6
- package/dist/oauth-manager/TokensRepository_Redis.js.map +1 -1
- package/dist/oauth-manager/playground/async.d.ts +1 -0
- package/dist/oauth-manager/playground/async.js +74 -0
- package/dist/oauth-manager/playground/async.js.map +1 -0
- package/dist/resources/events.d.ts +51 -0
- package/dist/resources/events.js +27 -0
- package/dist/resources/events.js.map +1 -0
- package/dist/resources/negotiators.d.ts +3 -2
- package/dist/resources/negotiators.js.map +1 -1
- package/dist/types.d.ts +5 -10
- package/dist/types.js.map +1 -1
- package/package.json +4 -2
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Logger } from './oauth-manager/interfaces';
|
|
2
|
-
import { Client, ClientConf, InitConf } from './types';
|
|
2
|
+
import { Client, ClientConf, InitConf, Maybe } from './types';
|
|
3
3
|
export declare class ClientImpl implements Client {
|
|
4
4
|
private readonly conf;
|
|
5
5
|
private readonly logger?;
|
|
@@ -10,8 +10,11 @@ export declare class ClientImpl implements Client {
|
|
|
10
10
|
constructor(conf: ClientConf, logger?: Logger | undefined);
|
|
11
11
|
private getContext;
|
|
12
12
|
private authorizeWithOAuthManager;
|
|
13
|
+
private resetAuth;
|
|
13
14
|
authorize(config?: InitConf): Promise<Client>;
|
|
14
15
|
withUserToken(accessToken: string): Promise<Client>;
|
|
16
|
+
isAuthorized(config?: InitConf): boolean;
|
|
17
|
+
getCurrentToken(): Maybe<string>;
|
|
15
18
|
get leads(): {
|
|
16
19
|
createLead: (attributes: {
|
|
17
20
|
firstName?: string;
|
|
@@ -55,7 +58,7 @@ export declare class ClientImpl implements Client {
|
|
|
55
58
|
ids: string;
|
|
56
59
|
companyId: string;
|
|
57
60
|
}) => Promise<{
|
|
58
|
-
data: import("./
|
|
61
|
+
data: import("./entities/negotiator").CompanyNegotiator[];
|
|
59
62
|
}>;
|
|
60
63
|
};
|
|
61
64
|
get offices(): {
|
|
@@ -155,4 +158,7 @@ export declare class ClientImpl implements Client {
|
|
|
155
158
|
url: string;
|
|
156
159
|
}) => Promise<import("axios").AxiosResponse<any, any>>;
|
|
157
160
|
};
|
|
161
|
+
get events(): {
|
|
162
|
+
create: (attributes: import("./resources/events").CreateEventAttributes) => Promise<import("axios").AxiosResponse<any, any>>;
|
|
163
|
+
};
|
|
158
164
|
}
|
package/dist/client.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ClientImpl = void 0;
|
|
7
|
+
const async_mutex_1 = require("async-mutex");
|
|
7
8
|
const axios_1 = __importDefault(require("axios"));
|
|
8
9
|
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
|
|
9
10
|
const envHosts_1 = require("./common/envHosts");
|
|
@@ -19,11 +20,13 @@ const companies_1 = __importDefault(require("./resources/companies"));
|
|
|
19
20
|
const contact_preferences_1 = __importDefault(require("./resources/contact_preferences"));
|
|
20
21
|
const contacts_1 = __importDefault(require("./resources/contacts"));
|
|
21
22
|
const estates_1 = __importDefault(require("./resources/estates"));
|
|
23
|
+
const events_1 = __importDefault(require("./resources/events"));
|
|
22
24
|
const leads_1 = __importDefault(require("./resources/leads"));
|
|
23
25
|
const negotiators_1 = __importDefault(require("./resources/negotiators"));
|
|
24
26
|
const offices_1 = __importDefault(require("./resources/offices"));
|
|
25
27
|
const types_1 = require("./types");
|
|
26
28
|
const utils_1 = require("./utils");
|
|
29
|
+
const authorizationMutex = new async_mutex_1.Mutex();
|
|
27
30
|
const getDefaultAuthConfig = (conf, logger) => {
|
|
28
31
|
return {
|
|
29
32
|
storage: 'memory',
|
|
@@ -43,7 +46,6 @@ class ClientImpl {
|
|
|
43
46
|
oauthManager ??
|
|
44
47
|
(0, createCustomEndpointAuthManager_1.createCustomEndpointAuthManager)(getDefaultAuthConfig(conf, logger));
|
|
45
48
|
this.httpClient = axios_1.default.create({ baseURL: envHosts_1.envHosts[env] });
|
|
46
|
-
this.httpClient.interceptors.response.use(utils_1.getData, utils_1.handleRequestFailure);
|
|
47
49
|
this.httpClient.interceptors.request.use((request) => {
|
|
48
50
|
this.logger?.debug('api request:', (0, logRequest_1.logRequest)(request));
|
|
49
51
|
return request;
|
|
@@ -52,6 +54,7 @@ class ClientImpl {
|
|
|
52
54
|
this.logger?.debug('api response:', (0, logResponse_1.logResponse)(response));
|
|
53
55
|
return response;
|
|
54
56
|
});
|
|
57
|
+
this.httpClient.interceptors.response.use(utils_1.getData, utils_1.handleRequestFailure);
|
|
55
58
|
if (version) {
|
|
56
59
|
this.httpClient.defaults.headers.common['Accept'] = `application/vnd.sweepbright.${version}+json`;
|
|
57
60
|
}
|
|
@@ -71,12 +74,22 @@ class ClientImpl {
|
|
|
71
74
|
};
|
|
72
75
|
}
|
|
73
76
|
async authorizeWithOAuthManager(clientId, clientSecret, scopes, options) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
await authorizationMutex.runExclusive(async () => {
|
|
78
|
+
this.logger?.debug('Started authorization mutex');
|
|
79
|
+
if (this.isAuthorized({ scopes })) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const accessToken = await this.localAuthManager.getAccessTokenBySessionData(new SessionDataImpl_1.SessionDataImpl({ clientId, clientSecret, scopes }), options);
|
|
83
|
+
if (!accessToken) {
|
|
84
|
+
throw new ApiClientError_1.ApiClientError('Authentication failed');
|
|
85
|
+
}
|
|
86
|
+
this._auth = { token: accessToken, type: types_1.TokenType.API_TOKEN, scopes };
|
|
87
|
+
this.httpClient.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`;
|
|
88
|
+
});
|
|
89
|
+
this.logger?.debug('End authorization mutex');
|
|
90
|
+
}
|
|
91
|
+
resetAuth() {
|
|
92
|
+
this._auth = null;
|
|
80
93
|
}
|
|
81
94
|
async authorize(config = {}) {
|
|
82
95
|
try {
|
|
@@ -84,9 +97,13 @@ class ClientImpl {
|
|
|
84
97
|
const { clientId, clientSecret } = this.conf;
|
|
85
98
|
(0, tiny_invariant_1.default)(clientId, 'Missing client ID');
|
|
86
99
|
(0, tiny_invariant_1.default)(clientSecret, 'Missing client secret');
|
|
100
|
+
if (this.isAuthorized({ scopes })) {
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
87
103
|
this._oAuthManagerInvalidateInterceptor = async (error) => {
|
|
88
|
-
if (error
|
|
104
|
+
if (error?.status === 401) {
|
|
89
105
|
this.logger?.debug('revoking cache due to 401', { clientId, scopes });
|
|
106
|
+
this.resetAuth();
|
|
90
107
|
await this.authorizeWithOAuthManager(clientId, clientSecret, scopes, {
|
|
91
108
|
forceInvalidate: true,
|
|
92
109
|
});
|
|
@@ -112,6 +129,13 @@ class ClientImpl {
|
|
|
112
129
|
this.httpClient.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`;
|
|
113
130
|
return this;
|
|
114
131
|
}
|
|
132
|
+
isAuthorized(config = {}) {
|
|
133
|
+
const { scopes = ['companies:read', 'properties:download', 'lead_info:write'], } = config;
|
|
134
|
+
return !!this._auth?.token && this._auth.scopes === scopes;
|
|
135
|
+
}
|
|
136
|
+
getCurrentToken() {
|
|
137
|
+
return this._auth?.token ?? '';
|
|
138
|
+
}
|
|
115
139
|
get leads() {
|
|
116
140
|
return (0, leads_1.default)(this.getContext());
|
|
117
141
|
}
|
|
@@ -139,6 +163,9 @@ class ClientImpl {
|
|
|
139
163
|
get estates() {
|
|
140
164
|
return (0, estates_1.default)(this.getContext());
|
|
141
165
|
}
|
|
166
|
+
get events() {
|
|
167
|
+
return (0, events_1.default)(this.getContext());
|
|
168
|
+
}
|
|
142
169
|
}
|
|
143
170
|
exports.ClientImpl = ClientImpl;
|
|
144
171
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0C;AAC1C,oEAAuC;AACvC,gDAA6C;AAC7C,oDAAiD;AACjD,sDAAmD;AACnD,uDAAiD;AACjD,4DAAyD;AACzD,qEAAkE;AAClE,+GAA4G;AAG5G,oFAA2D;AAC3D,oEAA4C;AAC5C,sEAA8C;AAC9C,0FAAkE;AAClE,oEAA4C;AAC5C,kEAA0C;AAC1C,8DAAsC;AACtC,0EAAkD;AAClD,kEAA0C;AAC1C,mCAQiB;AACjB,mCAAwD;AAExD,MAAM,oBAAoB,GAAG,CAC3B,IAAgB,EAChB,MAAe,EACY,EAAE;IAC7B,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,WAAG,CAAC,UAAU;QAC/B,UAAU,EAAE,IAAI,CAAC,OAAO;QACxB,MAAM,EAAE,MAAM;KACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAa,UAAU;IAQrB,YACmB,IAAgB,EAChB,MAAe;QADf,SAAI,GAAJ,IAAI,CAAY;QAChB,WAAM,GAAN,MAAM,CAAS;QAT1B,UAAK,GAAgB,IAAI,CAAC;QAC1B,uCAAkC,GAEtC,IAAI,CAAC;QAQP,MAAM,EAAE,GAAG,GAAG,WAAG,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAE7D,IAAI,CAAC,gBAAgB;YACnB,YAAY;gBACZ,IAAA,iEAA+B,EAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,eAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,mBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,28 @@ export interface Negotiator {
|
|
|
4
4
|
last_name?: string;
|
|
5
5
|
email?: string;
|
|
6
6
|
phone?: string;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
full_name?: string;
|
|
8
|
+
role_id?: string;
|
|
9
|
+
created_at: string;
|
|
10
|
+
updated_at: string;
|
|
11
|
+
locale?: string;
|
|
12
|
+
office_id: string;
|
|
10
13
|
photo?: {
|
|
11
14
|
data: {
|
|
12
15
|
url: string;
|
|
16
|
+
uploaded_at: string;
|
|
17
|
+
photo_file_id: string;
|
|
13
18
|
};
|
|
14
19
|
};
|
|
15
20
|
}
|
|
16
21
|
export interface NegotiatorData {
|
|
17
22
|
data: Negotiator;
|
|
18
23
|
}
|
|
24
|
+
export interface CompanyNegotiator {
|
|
25
|
+
id: number;
|
|
26
|
+
first_name?: string;
|
|
27
|
+
last_name?: string;
|
|
28
|
+
picture_url?: string;
|
|
29
|
+
is_archived: boolean;
|
|
30
|
+
photo_file_id?: string;
|
|
31
|
+
}
|
|
@@ -6,6 +6,8 @@ export declare class TokensRepository_Redis implements TokensRepository, CanChec
|
|
|
6
6
|
private readonly log;
|
|
7
7
|
private readonly version;
|
|
8
8
|
constructor(redis: RedisClientType | RedisClusterType, log: Logger);
|
|
9
|
+
private forceDisconnect;
|
|
10
|
+
private processRedisError;
|
|
9
11
|
private getClient;
|
|
10
12
|
isConnected(): Promise<boolean>;
|
|
11
13
|
private accessTokenKey;
|
|
@@ -7,16 +7,27 @@ class TokensRepository_Redis {
|
|
|
7
7
|
this.redis = redis;
|
|
8
8
|
this.log = log;
|
|
9
9
|
this.version = 'v1';
|
|
10
|
+
this.forceDisconnect = async () => {
|
|
11
|
+
// try to force disconnect to connect again on next call
|
|
12
|
+
await this.redis
|
|
13
|
+
.disconnect()
|
|
14
|
+
.catch((err) => this.log.warn(err?.message ?? `Unknown error on disconnect`, { err }));
|
|
15
|
+
};
|
|
16
|
+
this.processRedisError = async (err) => {
|
|
17
|
+
if (err instanceof Error) {
|
|
18
|
+
this.log.error(err.message, { err });
|
|
19
|
+
}
|
|
20
|
+
await this.forceDisconnect();
|
|
21
|
+
throw err;
|
|
22
|
+
};
|
|
10
23
|
}
|
|
11
24
|
async getClient() {
|
|
12
25
|
try {
|
|
13
26
|
if (this.redis && this.redis.isOpen) {
|
|
14
27
|
return this.redis;
|
|
15
28
|
}
|
|
16
|
-
this.redis.on('error', (err) =>
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
this.log.debug(`Connection is not open. Connecting to redis ${new Date().toISOString()}`);
|
|
29
|
+
this.redis.on('error', async (err) => this.processRedisError(err));
|
|
30
|
+
this.log.debug('Connection is not open. Connecting to redis');
|
|
20
31
|
await this.redis.connect();
|
|
21
32
|
return this.redis;
|
|
22
33
|
}
|
|
@@ -42,8 +53,18 @@ class TokensRepository_Redis {
|
|
|
42
53
|
return `${this.version}/${sessionKey}/l`;
|
|
43
54
|
}
|
|
44
55
|
async getAccessTokenIfValid(sessionKey) {
|
|
45
|
-
|
|
46
|
-
|
|
56
|
+
try {
|
|
57
|
+
const redis = await this.getClient();
|
|
58
|
+
return redis.get(this.accessTokenKey(sessionKey));
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
if (err instanceof Error) {
|
|
62
|
+
this.log.error(err.message, { err });
|
|
63
|
+
}
|
|
64
|
+
await this.forceDisconnect();
|
|
65
|
+
this.log.warn('Some error on token getting returning null', { err });
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
47
68
|
}
|
|
48
69
|
async deleteAccessToken(lockId, sessionKey) {
|
|
49
70
|
const redis = await this.getClient();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokensRepository_Redis.js","sourceRoot":"","sources":["../../src/oauth-manager/TokensRepository_Redis.ts"],"names":[],"mappings":";;;AACA,+BAA0B;AAU1B,MAAa,sBAAsB;IAKjC,YACmB,KAAyC,EACzC,GAAW;QADX,UAAK,GAAL,KAAK,CAAoC;QACzC,QAAG,GAAH,GAAG,CAAQ;QAJb,YAAO,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"TokensRepository_Redis.js","sourceRoot":"","sources":["../../src/oauth-manager/TokensRepository_Redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const assert_1 = require("assert");
|
|
4
|
+
const redis_1 = require("redis");
|
|
5
|
+
const __1 = require("../..");
|
|
6
|
+
const types_1 = require("../../types");
|
|
7
|
+
const createCustomEndpointAuthManager_1 = require("../factories/createCustomEndpointAuthManager");
|
|
8
|
+
const logger = console;
|
|
9
|
+
const REDIS = process.env.REDIS_URL ?? fail('redis must be set');
|
|
10
|
+
const getRedisClient = () => {
|
|
11
|
+
const url = new URL(REDIS);
|
|
12
|
+
const useTLS = url.protocol.startsWith('rediss');
|
|
13
|
+
const host = url.hostname;
|
|
14
|
+
const port = Number(url.port) ?? fail(`Invalid port ${url.port}`);
|
|
15
|
+
return (0, redis_1.createCluster)({
|
|
16
|
+
rootNodes: [
|
|
17
|
+
{
|
|
18
|
+
socket: {
|
|
19
|
+
host,
|
|
20
|
+
port,
|
|
21
|
+
noDelay: true,
|
|
22
|
+
reconnectStrategy: (retries) => {
|
|
23
|
+
console.log(`Reconnecting attempt #${retries}`);
|
|
24
|
+
return Math.min(retries * 50, 2000); // Exponential backoff
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
minimizeConnections: true,
|
|
30
|
+
defaults: {
|
|
31
|
+
socket: { tls: useTLS },
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const oauthManager = (0, createCustomEndpointAuthManager_1.createCustomEndpointAuthManager)({
|
|
36
|
+
env: types_1.Env.DEV,
|
|
37
|
+
apiVersion: 'v20230109',
|
|
38
|
+
storage: 'redis',
|
|
39
|
+
client: getRedisClient(),
|
|
40
|
+
logger,
|
|
41
|
+
});
|
|
42
|
+
const cuncurrentExecutions = 10;
|
|
43
|
+
async function main() {
|
|
44
|
+
const tasks = Array.from({ length: cuncurrentExecutions }, (_, k) => k);
|
|
45
|
+
const clientId = process.env.CLIENT_ID;
|
|
46
|
+
(0, assert_1.ok)(clientId, 'clientId should be defined');
|
|
47
|
+
const clientSecret = process.env.CLIENT_SECRET;
|
|
48
|
+
(0, assert_1.ok)(clientSecret, 'clientSecret should be defined');
|
|
49
|
+
const scopes = ['contacts:read'];
|
|
50
|
+
const client = (0, __1.createClient)({
|
|
51
|
+
clientId,
|
|
52
|
+
clientSecret,
|
|
53
|
+
env: types_1.Env.DEV,
|
|
54
|
+
version: 'v20230109',
|
|
55
|
+
oauthManager,
|
|
56
|
+
}, logger);
|
|
57
|
+
const pending = tasks.map(async (task) => {
|
|
58
|
+
console.log(`Processing ${task}`);
|
|
59
|
+
await client.authorize({ scopes });
|
|
60
|
+
await client.contacts.getOne({
|
|
61
|
+
contactId: 'b97c3865-2de0-4411-b9bc-999b5f0c4d19',
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
await Promise.all(pending);
|
|
65
|
+
}
|
|
66
|
+
main()
|
|
67
|
+
.then(() => {
|
|
68
|
+
process.exit(0);
|
|
69
|
+
})
|
|
70
|
+
.catch((e) => {
|
|
71
|
+
console.error(e);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=async.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../../src/oauth-manager/playground/async.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ClientCtx } from '../types';
|
|
2
|
+
export declare enum EventType {
|
|
3
|
+
VISIT_SCHEDULED = "VISIT_SCHEDULED",
|
|
4
|
+
VISIT_UPDATED = "VISIT_UPDATED",
|
|
5
|
+
VISIT_DELETED = "VISIT_DELETED",
|
|
6
|
+
OPEN_HOME_CREATED = "OPEN_HOME_CREATED",
|
|
7
|
+
OPEN_HOME_UPDATED = "OPEN_HOME_UPDATED",
|
|
8
|
+
OPEN_HOME_DELETED = "OPEN_HOME_DELETED",
|
|
9
|
+
AUCTION_CREATED = "AUCTION_CREATED",
|
|
10
|
+
AUCTION_UPDATED = "AUCTION_UPDATED",
|
|
11
|
+
AUCTION_DELETED = "AUCTION_DELETED"
|
|
12
|
+
}
|
|
13
|
+
export type UserType = 'user';
|
|
14
|
+
export type ContactType = 'contact';
|
|
15
|
+
export interface VisitEventData {
|
|
16
|
+
id: string;
|
|
17
|
+
organizer: {
|
|
18
|
+
type: UserType;
|
|
19
|
+
id: string;
|
|
20
|
+
};
|
|
21
|
+
attendees: {
|
|
22
|
+
type: ContactType;
|
|
23
|
+
id: string;
|
|
24
|
+
}[];
|
|
25
|
+
start_date: Date;
|
|
26
|
+
duration_in_minutes: number;
|
|
27
|
+
estate_id: string;
|
|
28
|
+
title: string;
|
|
29
|
+
description: string;
|
|
30
|
+
location: string;
|
|
31
|
+
creator_id: string;
|
|
32
|
+
legacy_id?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface OpenHopeEventData {
|
|
35
|
+
start_date: Date;
|
|
36
|
+
end_date: Date;
|
|
37
|
+
estate_id: string;
|
|
38
|
+
legacy_id?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface AuctionEventData {
|
|
41
|
+
start_date: Date;
|
|
42
|
+
estate_id: string;
|
|
43
|
+
}
|
|
44
|
+
export interface CreateEventAttributes {
|
|
45
|
+
event: EventType;
|
|
46
|
+
data: VisitEventData | OpenHopeEventData | AuctionEventData;
|
|
47
|
+
}
|
|
48
|
+
declare const events: (ctx: ClientCtx) => {
|
|
49
|
+
create: (attributes: CreateEventAttributes) => Promise<import("axios").AxiosResponse<any, any>>;
|
|
50
|
+
};
|
|
51
|
+
export default events;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventType = void 0;
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
var EventType;
|
|
6
|
+
(function (EventType) {
|
|
7
|
+
EventType["VISIT_SCHEDULED"] = "VISIT_SCHEDULED";
|
|
8
|
+
EventType["VISIT_UPDATED"] = "VISIT_UPDATED";
|
|
9
|
+
EventType["VISIT_DELETED"] = "VISIT_DELETED";
|
|
10
|
+
EventType["OPEN_HOME_CREATED"] = "OPEN_HOME_CREATED";
|
|
11
|
+
EventType["OPEN_HOME_UPDATED"] = "OPEN_HOME_UPDATED";
|
|
12
|
+
EventType["OPEN_HOME_DELETED"] = "OPEN_HOME_DELETED";
|
|
13
|
+
EventType["AUCTION_CREATED"] = "AUCTION_CREATED";
|
|
14
|
+
EventType["AUCTION_UPDATED"] = "AUCTION_UPDATED";
|
|
15
|
+
EventType["AUCTION_DELETED"] = "AUCTION_DELETED";
|
|
16
|
+
})(EventType || (exports.EventType = EventType = {}));
|
|
17
|
+
const events = (ctx) => {
|
|
18
|
+
return {
|
|
19
|
+
create: async (attributes) => {
|
|
20
|
+
ctx.checkAuth(types_1.TokenType.API_TOKEN);
|
|
21
|
+
const result = await ctx.httpClient.post('/services/events', attributes);
|
|
22
|
+
return result;
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.default = events;
|
|
27
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/resources/events.ts"],"names":[],"mappings":";;;AAAA,oCAAgD;AAEhD,IAAY,SAUX;AAVD,WAAY,SAAS;IACnB,gDAAmC,CAAA;IACnC,4CAA+B,CAAA;IAC/B,4CAA+B,CAAA;IAC/B,oDAAuC,CAAA;IACvC,oDAAuC,CAAA;IACvC,oDAAuC,CAAA;IACvC,gDAAmC,CAAA;IACnC,gDAAmC,CAAA;IACnC,gDAAmC,CAAA;AACrC,CAAC,EAVW,SAAS,yBAAT,SAAS,QAUpB;AA0CD,MAAM,MAAM,GAAG,CAAC,GAAc,EAAE,EAAE;IAChC,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,UAAiC,EAAE,EAAE;YAClD,GAAG,CAAC,SAAS,CAAC,iBAAS,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;YACzE,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CompanyNegotiator } from '../entities/negotiator';
|
|
2
|
+
import { ClientCtx } from '../types';
|
|
2
3
|
export default function (ctx: ClientCtx): {
|
|
3
4
|
getNegotiatorsByIdCompanyId: (attributes: {
|
|
4
5
|
ids: string;
|
|
5
6
|
companyId: string;
|
|
6
7
|
}) => Promise<{
|
|
7
|
-
data:
|
|
8
|
+
data: CompanyNegotiator[];
|
|
8
9
|
}>;
|
|
9
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"negotiators.js","sourceRoot":"","sources":["../../src/resources/negotiators.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"negotiators.js","sourceRoot":"","sources":["../../src/resources/negotiators.ts"],"names":[],"mappings":";;AAGA,4BAgBC;AAlBD,oCAAgD;AAEhD,mBAAyB,GAAc;IACrC,SAAS,2BAA2B,CAAC,UAGpC;QACC,GAAG,CAAC,SAAS,CAAC,iBAAS,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CACvB,uBAAuB,UAAU,CAAC,SAAS,cAAc,EACzD;YACE,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE;SAChC,CACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,2BAA2B;KAC5B,CAAC;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import companies from './resources/companies';
|
|
|
7
7
|
import contact_preferences from './resources/contact_preferences';
|
|
8
8
|
import contacts from './resources/contacts';
|
|
9
9
|
import estates from './resources/estates';
|
|
10
|
+
import events from './resources/events';
|
|
10
11
|
import leads from './resources/leads';
|
|
11
12
|
import negotiators from './resources/negotiators';
|
|
12
13
|
import offices from './resources/offices';
|
|
@@ -56,22 +57,13 @@ export declare enum TokenType {
|
|
|
56
57
|
export type Auth = {
|
|
57
58
|
token: string;
|
|
58
59
|
type: TokenType;
|
|
60
|
+
scopes?: string[];
|
|
59
61
|
};
|
|
60
62
|
export type Maybe<T> = T | null;
|
|
61
63
|
export type ClientCtx = {
|
|
62
64
|
checkAuth: (tokenType: TokenType) => void;
|
|
63
65
|
httpClient: AxiosInstance;
|
|
64
66
|
};
|
|
65
|
-
export interface NegotiatorInfo {
|
|
66
|
-
id: number;
|
|
67
|
-
first_name?: string;
|
|
68
|
-
last_name?: string;
|
|
69
|
-
picture_url?: string;
|
|
70
|
-
full_name?: string;
|
|
71
|
-
email?: string;
|
|
72
|
-
phone?: string;
|
|
73
|
-
picture?: string;
|
|
74
|
-
}
|
|
75
67
|
export interface GetUnitsInput {
|
|
76
68
|
page?: number;
|
|
77
69
|
limit?: number;
|
|
@@ -89,6 +81,8 @@ export interface PropertiesOutput {
|
|
|
89
81
|
export interface Client {
|
|
90
82
|
authorize(config?: InitConf): Promise<Client>;
|
|
91
83
|
withUserToken(accessToken: string): Promise<Client>;
|
|
84
|
+
isAuthorized(config?: InitConf): boolean;
|
|
85
|
+
getCurrentToken(): Maybe<string>;
|
|
92
86
|
leads: ReturnType<typeof leads>;
|
|
93
87
|
negotiators: ReturnType<typeof negotiators>;
|
|
94
88
|
offices: ReturnType<typeof offices>;
|
|
@@ -98,6 +92,7 @@ export interface Client {
|
|
|
98
92
|
companies: ReturnType<typeof companies>;
|
|
99
93
|
contactPreferences: ReturnType<typeof contact_preferences>;
|
|
100
94
|
estates: ReturnType<typeof estates>;
|
|
95
|
+
events: ReturnType<typeof events>;
|
|
101
96
|
}
|
|
102
97
|
export interface AccessToken {
|
|
103
98
|
access_token: string;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAcA,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,gCAAyB,CAAA;IACzB,0BAAmB,CAAA;IACnB,kBAAW,CAAA;AACb,CAAC,EAJW,GAAG,mBAAH,GAAG,QAId;AAED,IAAY,aAuBX;AAvBD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,sCAAqB,CAAA;IACrB,0CAAyB,CAAA;IACzB,oDAAqC,CAAA;IACrC,sDAAuC,CAAA;IACvC,oEAAqD,CAAA;IACrD,0FAA2E,CAAA;IAC3E,4EAA6D,CAAA;IAC7D,4DAA6C,CAAA;IAC7C,0EAA2D,CAAA;IAC3D,gEAAiD,CAAA;IACjD,gDAAiC,CAAA;IACjC,8DAA+C,CAAA;IAC/C,gDAAiC,CAAA;IACjC,gEAAiD,CAAA;IACjD,8EAA+D,CAAA;IAC/D,oGAAqF,CAAA;IACrF,sFAAuE,CAAA;IACvE,sEAAuD,CAAA;IACvD,oFAAqE,CAAA;IACrE,oDAAqC,CAAA;IACrC,0EAA2D,CAAA;AAC7D,CAAC,EAvBW,aAAa,6BAAb,aAAa,QAuBxB;AAcD,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,qDAAU,CAAA;IACV,mDAAS,CAAA;AACX,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.40.2",
|
|
3
3
|
"license": "UNLICENCED",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"typings": "./dist/index.d.ts",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"lint": "eslint --ext .ts ./src",
|
|
15
15
|
"format": "prettier --write \"**/*.{js,md,scss,css,ts,tsx}\"",
|
|
16
16
|
"dev:one": "tsx ./src/oauth-manager/playground/one.ts",
|
|
17
|
-
"dev:two": "tsx ./src/oauth-manager/playground/two.ts"
|
|
17
|
+
"dev:two": "tsx ./src/oauth-manager/playground/two.ts",
|
|
18
|
+
"dev:async": "tsx ./src/oauth-manager/playground/async.ts"
|
|
18
19
|
},
|
|
19
20
|
"peerDependencies": {},
|
|
20
21
|
"prettier": {
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"typescript": "^5.7.3"
|
|
43
44
|
},
|
|
44
45
|
"dependencies": {
|
|
46
|
+
"async-mutex": "^0.5.0",
|
|
45
47
|
"axios": "1.7.9",
|
|
46
48
|
"redis": "^4.7.0",
|
|
47
49
|
"tiny-invariant": "1.3.3",
|