@hexagramio/saga-ts 0.9.293
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/LICENSE +19 -0
- package/README.md +36 -0
- package/dist/cjs/commands/bots.d.ts +74 -0
- package/dist/cjs/commands/bots.d.ts.map +1 -0
- package/dist/cjs/commands/bots.js +133 -0
- package/dist/cjs/commands/bots.js.map +1 -0
- package/dist/cjs/commands/system.d.ts +18 -0
- package/dist/cjs/commands/system.d.ts.map +1 -0
- package/dist/cjs/commands/system.js +30 -0
- package/dist/cjs/commands/system.js.map +1 -0
- package/dist/cjs/commands/test_data.d.ts +10 -0
- package/dist/cjs/commands/test_data.d.ts.map +1 -0
- package/dist/cjs/commands/test_data.js +17 -0
- package/dist/cjs/commands/test_data.js.map +1 -0
- package/dist/cjs/commands/user.d.ts +137 -0
- package/dist/cjs/commands/user.d.ts.map +1 -0
- package/dist/cjs/commands/user.js +186 -0
- package/dist/cjs/commands/user.js.map +1 -0
- package/dist/cjs/index.d.ts +116 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +205 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/shared_types.d.ts +58 -0
- package/dist/cjs/lib/shared_types.d.ts.map +1 -0
- package/dist/cjs/lib/shared_types.js +3 -0
- package/dist/cjs/lib/shared_types.js.map +1 -0
- package/dist/commands/bots.d.ts +74 -0
- package/dist/commands/bots.d.ts.map +1 -0
- package/dist/commands/bots.js +121 -0
- package/dist/commands/bots.js.map +1 -0
- package/dist/commands/system.d.ts +18 -0
- package/dist/commands/system.d.ts.map +1 -0
- package/dist/commands/system.js +25 -0
- package/dist/commands/system.js.map +1 -0
- package/dist/commands/test_data.d.ts +10 -0
- package/dist/commands/test_data.d.ts.map +1 -0
- package/dist/commands/test_data.js +13 -0
- package/dist/commands/test_data.js.map +1 -0
- package/dist/commands/user.d.ts +137 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +170 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/index.d.ts +116 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +196 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/shared_types.d.ts +58 -0
- package/dist/lib/shared_types.d.ts.map +1 -0
- package/dist/lib/shared_types.js +2 -0
- package/dist/lib/shared_types.js.map +1 -0
- package/dist/transport/http.d.ts +7 -0
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/http.js +75 -0
- package/dist/transport/http.js.map +1 -0
- package/package.json +45 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central Module that contains the methods to issue
|
|
3
|
+
* HTTPCommands and SocketCommands to a SAGA host
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
9
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
11
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
12
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
import axios from 'axios';
|
|
16
|
+
import socketio from 'socket.io-client';
|
|
17
|
+
import parseLinkHeader from "parse-link-header";
|
|
18
|
+
import Debug from "debug";
|
|
19
|
+
const debug = Debug("saga-ts");
|
|
20
|
+
/**
|
|
21
|
+
* The APIError is thrown when a HTTPCommand or SocketCommands fails to execute
|
|
22
|
+
*/
|
|
23
|
+
export class APIError extends Error {
|
|
24
|
+
/**
|
|
25
|
+
* Create a
|
|
26
|
+
* @param message the error message
|
|
27
|
+
* @param statusCode a saga status code as explained in the actual saga documentation, very much aligned to HTTP Status codes
|
|
28
|
+
* @param errors list of field names and the reason why the field wasn't permitted
|
|
29
|
+
* @param path The path of the HTTPCommand or SocketCommand that caused the error
|
|
30
|
+
*/
|
|
31
|
+
constructor(message, statusCode, errors, path) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.statusCode = statusCode;
|
|
34
|
+
this.errors = errors;
|
|
35
|
+
this.path = path;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Send the HTTP Command to the host with the given baseURL
|
|
40
|
+
* @param baseURL the baseURL of the HTTP Api, i.e 'https://example.api.hexagram.io'
|
|
41
|
+
* @param command the actual command to send
|
|
42
|
+
* @return a promise containing the response from the command
|
|
43
|
+
* @throws an APIError if the operations fails
|
|
44
|
+
*/
|
|
45
|
+
export const sendHTTPCommand = (baseURL, command) => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
+
var _a, _b, _c, _d, _e;
|
|
47
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
48
|
+
if (command.accessToken) {
|
|
49
|
+
headers.Authorization = `Bearer ${command.accessToken}`;
|
|
50
|
+
}
|
|
51
|
+
const response = yield axios({
|
|
52
|
+
headers,
|
|
53
|
+
baseURL: baseURL.toString(),
|
|
54
|
+
validateStatus: () => true,
|
|
55
|
+
method: command.method,
|
|
56
|
+
url: command.path,
|
|
57
|
+
params: command.params,
|
|
58
|
+
data: command.data
|
|
59
|
+
});
|
|
60
|
+
if (response.status !== 200) {
|
|
61
|
+
throw new APIError(response.data.toString(), response.status, (_a = response.data) === null || _a === void 0 ? void 0 : _a.errors, command.path);
|
|
62
|
+
}
|
|
63
|
+
else if (response.headers['link'] || response.headers['link'] === '') {
|
|
64
|
+
const parsed = parseLinkHeader(response.headers['link']);
|
|
65
|
+
const list = (url) => {
|
|
66
|
+
return {
|
|
67
|
+
method: "GET",
|
|
68
|
+
path: url.pathname,
|
|
69
|
+
params: url.searchParams,
|
|
70
|
+
accessToken: command.accessToken
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
result: response.data,
|
|
75
|
+
prevCommand: ((_b = parsed === null || parsed === void 0 ? void 0 : parsed.prev) === null || _b === void 0 ? void 0 : _b.url) ? list(new URL((_c = parsed === null || parsed === void 0 ? void 0 : parsed.prev) === null || _c === void 0 ? void 0 : _c.url)) : undefined,
|
|
76
|
+
nextCommand: ((_d = parsed === null || parsed === void 0 ? void 0 : parsed.next) === null || _d === void 0 ? void 0 : _d.url) ? list(new URL((_e = parsed === null || parsed === void 0 ? void 0 : parsed.next) === null || _e === void 0 ? void 0 : _e.url)) : undefined
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return response.data;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Class that wraps saga socket connection logic and manages realtime saga socket events. The
|
|
85
|
+
*/
|
|
86
|
+
export class SocketSession {
|
|
87
|
+
/**
|
|
88
|
+
* Set connection parameters.
|
|
89
|
+
* @param host the host to connect to
|
|
90
|
+
* @param accessToken the access token to authenticate
|
|
91
|
+
* @param errorNotify callback function that will be called when errors occur
|
|
92
|
+
*/
|
|
93
|
+
constructor(host, accessToken, errorNotify, options) {
|
|
94
|
+
this.maxRetries = 100;
|
|
95
|
+
this.commandStack = [];
|
|
96
|
+
this.ready = false;
|
|
97
|
+
this.socket = socketio(host.toString(), {
|
|
98
|
+
transports: ['websocket', 'polling'],
|
|
99
|
+
reconnection: true,
|
|
100
|
+
reconnectionDelay: 1000,
|
|
101
|
+
reconnectionDelayMax: 5000,
|
|
102
|
+
reconnectionAttempts: this.maxRetries,
|
|
103
|
+
})
|
|
104
|
+
.on('connect', () => {
|
|
105
|
+
debug('connect');
|
|
106
|
+
if ((options === null || options === void 0 ? void 0 : options.delayAuthentication) && (options === null || options === void 0 ? void 0 : options.delayAuthentication) > 0) {
|
|
107
|
+
setTimeout(() => this.socket.emit('authentication', { accessToken }), options.delayAuthentication);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
this.socket.emit('authentication', { accessToken });
|
|
111
|
+
}
|
|
112
|
+
if ((options === null || options === void 0 ? void 0 : options.triggerDisconnectAndConnect) && options.triggerDisconnectAndConnect > 0) {
|
|
113
|
+
setTimeout(() => {
|
|
114
|
+
options.triggerDisconnectAndConnect = 0;
|
|
115
|
+
this.socket.disconnect();
|
|
116
|
+
this.socket.connect();
|
|
117
|
+
this.emitStackedCommands();
|
|
118
|
+
}, options.triggerDisconnectAndConnect);
|
|
119
|
+
}
|
|
120
|
+
//this.socket.emit('authentication', {accessToken});
|
|
121
|
+
})
|
|
122
|
+
.on('disconnect', err => {
|
|
123
|
+
this.ready = false;
|
|
124
|
+
debug(`disconnect ${err}`);
|
|
125
|
+
})
|
|
126
|
+
.on('error', err => {
|
|
127
|
+
debug(`error ${err}`);
|
|
128
|
+
errorNotify(new APIError(err.message, 500));
|
|
129
|
+
})
|
|
130
|
+
.on('unauthorized', (err) => {
|
|
131
|
+
debug('unauthorized');
|
|
132
|
+
errorNotify(new APIError(err.message, 401));
|
|
133
|
+
})
|
|
134
|
+
.on('authenticated', () => {
|
|
135
|
+
debug('authenticated');
|
|
136
|
+
this.ready = true;
|
|
137
|
+
this.emitStackedCommands();
|
|
138
|
+
});
|
|
139
|
+
this.socket.io.on('reconnect', () => {
|
|
140
|
+
debug('reconnect');
|
|
141
|
+
this.emitStackedCommands();
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
emitStackedCommands() {
|
|
145
|
+
debug(`emitStackedCommands ${this.commandStack.length}`);
|
|
146
|
+
for (const command of this.commandStack) {
|
|
147
|
+
debug(`send queued ${command.method} ${command.join} ${command.id}`);
|
|
148
|
+
this.socket.emit(`${command.method}/${command.join ? "join" : "leave"}`, command.id, (response) => {
|
|
149
|
+
debug(`queued command response ${response.status_code}`);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
this.commandStack = this.commandStack.filter(command => command.join !== undefined);
|
|
153
|
+
}
|
|
154
|
+
on(type, listener) {
|
|
155
|
+
//@ts-ignore
|
|
156
|
+
this.socket.on(type, listener);
|
|
157
|
+
}
|
|
158
|
+
off(type, listener) {
|
|
159
|
+
//@ts-ignore
|
|
160
|
+
this.socket.off(type, listener);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Send commands to the server
|
|
164
|
+
* @param command
|
|
165
|
+
* @throws APIError if error ack is send back from server
|
|
166
|
+
*/
|
|
167
|
+
emitCommand(command) {
|
|
168
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
169
|
+
return new Promise((resolve, reject) => {
|
|
170
|
+
if (!this.ready) {
|
|
171
|
+
debug(`command queued ${command.method} ${command.join} ${command.id}`);
|
|
172
|
+
this.commandStack.push(command);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
debug(`sending ${command.method}`);
|
|
176
|
+
const path = `${command.method}/${command.join ? "join" : "leave"}`;
|
|
177
|
+
this.socket.emit(path, command.id, (response) => {
|
|
178
|
+
debug(`received ack ${response.status_code} for ${command.method} `);
|
|
179
|
+
if (response.status_code !== 200) {
|
|
180
|
+
reject(new APIError(response.body.name.toString(), response.status_code, response.body.errors, path));
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
//we only need to queue messages that join/leave
|
|
184
|
+
//for replay when the socket reconnects
|
|
185
|
+
if (command.join !== undefined) {
|
|
186
|
+
this.commandStack.push(command);
|
|
187
|
+
}
|
|
188
|
+
resolve(response);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { HTTPCommand } from "../index";
|
|
2
|
+
/**
|
|
3
|
+
* Will be used in Read* Objects that have a timestamp
|
|
4
|
+
* @hidden
|
|
5
|
+
*/
|
|
6
|
+
export interface TimeStamp {
|
|
7
|
+
createdAt: Date;
|
|
8
|
+
updatedAt: Date;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* For read* Objects that have an _id
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
export interface Id {
|
|
15
|
+
_id: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* For read* Objects that have an _id
|
|
19
|
+
* @hidden
|
|
20
|
+
*/
|
|
21
|
+
export interface TestData {
|
|
22
|
+
/**
|
|
23
|
+
* Is true when the data is for testing only
|
|
24
|
+
*/
|
|
25
|
+
test_data?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface Tags {
|
|
28
|
+
tags?: [string];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* For read* Objects that have an _id
|
|
32
|
+
*/
|
|
33
|
+
export interface List<T> {
|
|
34
|
+
prevCommand?: HTTPCommand<List<T>>;
|
|
35
|
+
nextCommand?: HTTPCommand<List<T>>;
|
|
36
|
+
result: T[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create Property Interface
|
|
40
|
+
*/
|
|
41
|
+
export interface CreateProperty extends TestData {
|
|
42
|
+
name: string;
|
|
43
|
+
value: any;
|
|
44
|
+
parent_id?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ReadProperty extends CreateProperty {
|
|
47
|
+
_id: string;
|
|
48
|
+
createdAt: Date;
|
|
49
|
+
}
|
|
50
|
+
export interface CreateMessage extends TestData {
|
|
51
|
+
body: string;
|
|
52
|
+
from: "user" | "bot";
|
|
53
|
+
user_id: string;
|
|
54
|
+
bot_id: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ReadMessage extends CreateMessage, Id, TimeStamp {
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=shared_types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared_types.d.ts","sourceRoot":"","sources":["../../src/lib/shared_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,EAAE;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,EAAE,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa,EAAE,EAAE,EAAE,SAAS;CAEhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared_types.js","sourceRoot":"","sources":["../../src/lib/shared_types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
export declare function post<T>(axiosInstance: AxiosInstance, url: string, data: any, headers: Record<string, string> | {}): Promise<T>;
|
|
3
|
+
export declare function get<T>(axiosInstance: AxiosInstance, url: string, headers: Record<string, string> | {}, query?: Record<string, string> | {}): Promise<T>;
|
|
4
|
+
export declare function del<T>(axiosInstance: AxiosInstance, url: string, headers: Record<string, string> | {}): Promise<T>;
|
|
5
|
+
export declare function put<T>(axiosInstance: AxiosInstance, url: string, data: any, headers: Record<string, string> | {}): Promise<T>;
|
|
6
|
+
export declare function authenticationHeader(accessToken: string): Record<string, string>;
|
|
7
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAgB,MAAM,OAAO,CAAC;AAKnD,wBAAsB,IAAI,CAAC,CAAC,EAAE,aAAa,EAAC,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAE,EAAE,GAAI,OAAO,CAAC,CAAC,CAAC,CAGnI;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,aAAa,EAAC,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAE,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAE,EAAE,GAAI,OAAO,CAAC,CAAC,CAAC,CAY3J;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,aAAa,EAAC,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAE,EAAE,GAAI,OAAO,CAAC,CAAC,CAAC,CAGvH;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,aAAa,EAAC,aAAa,EAAE,GAAG,EAAE,MAAM,EAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAE,EAAE,GAAI,OAAO,CAAC,CAAC,CAAC,CAGjI;AAmBD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhF"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.authenticationHeader = exports.put = exports.del = exports.get = exports.post = void 0;
|
|
16
|
+
const index_1 = require("../index");
|
|
17
|
+
const parse_link_header_1 = __importDefault(require("parse-link-header"));
|
|
18
|
+
function post(axiosInstance, url, data, headers) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const response = yield axiosInstance.post(url, data, { headers });
|
|
21
|
+
return handleResponse(response);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
exports.post = post;
|
|
25
|
+
function get(axiosInstance, url, headers, query) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const _query = Object.entries(query || {})
|
|
28
|
+
.filter(([key, value]) => value !== undefined)
|
|
29
|
+
.reduce((obj, [key, value]) => {
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
obj[key] = value;
|
|
32
|
+
return obj;
|
|
33
|
+
}, {});
|
|
34
|
+
const response = yield axiosInstance.get(`${url}?${new URLSearchParams(_query)}`, { headers });
|
|
35
|
+
return handleResponse(response);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
exports.get = get;
|
|
39
|
+
function del(axiosInstance, url, headers) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const response = yield axiosInstance.delete(url, { headers });
|
|
42
|
+
return handleResponse(response);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
exports.del = del;
|
|
46
|
+
function put(axiosInstance, url, data, headers) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const response = yield axiosInstance.put(url, data, { headers });
|
|
49
|
+
return handleResponse(response);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
exports.put = put;
|
|
53
|
+
function handleResponse(response) {
|
|
54
|
+
var _a, _b;
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
if (response.status !== 200) {
|
|
57
|
+
throw new index_1.APIError(response.data.toString(), response.status);
|
|
58
|
+
}
|
|
59
|
+
if (response.headers['link'] || response.headers['link'] === '') {
|
|
60
|
+
const parsed = (0, parse_link_header_1.default)(response.headers['link']);
|
|
61
|
+
let result = response.data;
|
|
62
|
+
return {
|
|
63
|
+
result,
|
|
64
|
+
prevUrl: (_a = parsed === null || parsed === void 0 ? void 0 : parsed.prev) === null || _a === void 0 ? void 0 : _a.url,
|
|
65
|
+
nextUrl: (_b = parsed === null || parsed === void 0 ? void 0 : parsed.next) === null || _b === void 0 ? void 0 : _b.url
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return response.data;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function authenticationHeader(accessToken) {
|
|
72
|
+
return { Authorization: `Bearer ${accessToken}` };
|
|
73
|
+
}
|
|
74
|
+
exports.authenticationHeader = authenticationHeader;
|
|
75
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,oCAAkC;AAClC,0EAAgD;AAGhD,SAAsB,IAAI,CAAI,aAA2B,EAAE,GAAW,EAAE,IAAS,EAAE,OAAmC;;QACpH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,OAAO,cAAc,CAAI,QAAQ,CAAC,CAAA;IACpC,CAAC;CAAA;AAHD,oBAGC;AAED,SAAsB,GAAG,CAAI,aAA2B,EAAE,GAAW,EAAE,OAAmC,EAAE,KAAkC;;QAE5I,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAE,EAAE,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;aAC7C,MAAM,CAAC,CAAC,GAA0B,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACnD,aAAa;YACb,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACjB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAET,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/F,OAAO,cAAc,CAAI,QAAQ,CAAC,CAAA;IACpC,CAAC;CAAA;AAZD,kBAYC;AAED,SAAsB,GAAG,CAAI,aAA2B,EAAE,GAAW,EAAE,OAAmC;;QACxG,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,OAAO,cAAc,CAAI,QAAQ,CAAC,CAAA;IACpC,CAAC;CAAA;AAHD,kBAGC;AAED,SAAsB,GAAG,CAAI,aAA2B,EAAE,GAAW,EAAC,IAAS,EAAE,OAAmC;;QAClH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,OAAO,cAAc,CAAI,QAAQ,CAAC,CAAA;IACpC,CAAC;CAAA;AAHD,kBAGC;AAGD,SAAe,cAAc,CAAI,QAA0B;;;QACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,MAAM,IAAI,gBAAQ,CAAE,QAAQ,CAAC,IAAe,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC3E;QACD,IAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAG,EAAE,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;YACxD,IAAI,MAAM,GAAE,QAAQ,CAAC,IAAI,CAAA;YACzB,OAAU;gBACR,MAAM;gBACN,OAAO,EAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,GAAG;gBACzB,OAAO,EAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,GAAG;aAC1B,CAAA;SACF;QACD,OAAO,QAAQ,CAAC,IAAI,CAAA;;CACrB;AAED,SAAgB,oBAAoB,CAAC,WAAmB;IACtD,OAAO,EAAC,aAAa,EAAE,UAAU,WAAW,EAAE,EAAC,CAAA;AACjD,CAAC;AAFD,oDAEC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hexagramio/saga-ts",
|
|
3
|
+
"version": "0.9.293",
|
|
4
|
+
"description": "Saga SDK",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"test": "jest --forceExit",
|
|
9
|
+
"coverage": "jest --coverage --forceExit",
|
|
10
|
+
"lint": "eslint src/ --ext .ts",
|
|
11
|
+
"build": "npx tsc --project tsconfig.json && npx tsc --project tsconfig.cjs.json",
|
|
12
|
+
"typedoc": "rm -rf docs/; npx typedoc --tsconfig tsconfig.json --disableSources --hideGenerator --entryPointStrategy expand src",
|
|
13
|
+
"prepare": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [],
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@babel/preset-env": "^7.22.4",
|
|
18
|
+
"@babel/preset-typescript": "^7.21.5",
|
|
19
|
+
"@types/debug": "^4.1.8",
|
|
20
|
+
"@types/jest": "^29.5.2",
|
|
21
|
+
"@types/node": "^20.2.5",
|
|
22
|
+
"@types/parse-link-header": "^2.0.1",
|
|
23
|
+
"@typescript-eslint/eslint-plugin": "^5.60.0",
|
|
24
|
+
"@typescript-eslint/parser": "^5.60.0",
|
|
25
|
+
"better-docs": "^2.7.2",
|
|
26
|
+
"dotenv": "^16.1.3",
|
|
27
|
+
"eslint": "^8.43.0",
|
|
28
|
+
"jest": "*",
|
|
29
|
+
"jsdoc": "^4.0.2",
|
|
30
|
+
"taffydb": "^2.7.3",
|
|
31
|
+
"ts-jest": "^29.1.0",
|
|
32
|
+
"typedoc": "^0.24.8",
|
|
33
|
+
"typescript": "^5.1.3"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"axios": "1.4",
|
|
37
|
+
"debug": "4",
|
|
38
|
+
"parse-link-header": "2",
|
|
39
|
+
"socket.io-client": "4",
|
|
40
|
+
"stripe": "^12.10.0"
|
|
41
|
+
},
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"homepage": "https://hexagram.io",
|
|
44
|
+
"author": "Hexagram <admin@hexagram.io> (https:/hexagram.io/)"
|
|
45
|
+
}
|