@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.
Files changed (55) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +36 -0
  3. package/dist/cjs/commands/bots.d.ts +74 -0
  4. package/dist/cjs/commands/bots.d.ts.map +1 -0
  5. package/dist/cjs/commands/bots.js +133 -0
  6. package/dist/cjs/commands/bots.js.map +1 -0
  7. package/dist/cjs/commands/system.d.ts +18 -0
  8. package/dist/cjs/commands/system.d.ts.map +1 -0
  9. package/dist/cjs/commands/system.js +30 -0
  10. package/dist/cjs/commands/system.js.map +1 -0
  11. package/dist/cjs/commands/test_data.d.ts +10 -0
  12. package/dist/cjs/commands/test_data.d.ts.map +1 -0
  13. package/dist/cjs/commands/test_data.js +17 -0
  14. package/dist/cjs/commands/test_data.js.map +1 -0
  15. package/dist/cjs/commands/user.d.ts +137 -0
  16. package/dist/cjs/commands/user.d.ts.map +1 -0
  17. package/dist/cjs/commands/user.js +186 -0
  18. package/dist/cjs/commands/user.js.map +1 -0
  19. package/dist/cjs/index.d.ts +116 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +205 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/lib/shared_types.d.ts +58 -0
  24. package/dist/cjs/lib/shared_types.d.ts.map +1 -0
  25. package/dist/cjs/lib/shared_types.js +3 -0
  26. package/dist/cjs/lib/shared_types.js.map +1 -0
  27. package/dist/commands/bots.d.ts +74 -0
  28. package/dist/commands/bots.d.ts.map +1 -0
  29. package/dist/commands/bots.js +121 -0
  30. package/dist/commands/bots.js.map +1 -0
  31. package/dist/commands/system.d.ts +18 -0
  32. package/dist/commands/system.d.ts.map +1 -0
  33. package/dist/commands/system.js +25 -0
  34. package/dist/commands/system.js.map +1 -0
  35. package/dist/commands/test_data.d.ts +10 -0
  36. package/dist/commands/test_data.d.ts.map +1 -0
  37. package/dist/commands/test_data.js +13 -0
  38. package/dist/commands/test_data.js.map +1 -0
  39. package/dist/commands/user.d.ts +137 -0
  40. package/dist/commands/user.d.ts.map +1 -0
  41. package/dist/commands/user.js +170 -0
  42. package/dist/commands/user.js.map +1 -0
  43. package/dist/index.d.ts +116 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +196 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/lib/shared_types.d.ts +58 -0
  48. package/dist/lib/shared_types.d.ts.map +1 -0
  49. package/dist/lib/shared_types.js +2 -0
  50. package/dist/lib/shared_types.js.map +1 -0
  51. package/dist/transport/http.d.ts +7 -0
  52. package/dist/transport/http.d.ts.map +1 -0
  53. package/dist/transport/http.js +75 -0
  54. package/dist/transport/http.js.map +1 -0
  55. 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":"AAAA;;;;GAIG;;;;;;;;;;AAEH,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,QAAkB,MAAM,kBAAkB,CAAC;AAGlD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAG/B;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAiBjC;;;;;;OAMG;IACH,YAAY,OAAe,EAAE,UAAkB,EAAE,MAA8B,EAAE,IAAa;QAC5F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AA4BD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAU,OAAY,EAAE,OAAuB,EAAc,EAAE;;IAE5F,MAAM,OAAO,GAA2B,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAA;IAC5E,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,OAAO,CAAC,aAAa,GAAG,UAAU,OAAO,CAAC,WAAW,EAAE,CAAC;KACzD;IAED,MAAM,QAAQ,GAAkB,MAAM,KAAK,CAAI;QAC7C,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC3B,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,IAAI;QACjB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;QAC3B,MAAM,IAAI,QAAQ,CAAG,QAAQ,CAAC,IAAe,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAA,QAAQ,CAAC,IAAI,0CAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACjH;SAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;QACtE,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;QAExD,MAAM,IAAI,GAAG,CAAI,GAAQ,EAAkB,EAAE;YAC3C,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,MAAM,EAAE,GAAG,CAAC,YAAY;gBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAA;QACH,CAAC,CAAA;QAED,OAAU;YACR,MAAM,EAAE,QAAQ,CAAC,IAAI;YACrB,WAAW,EAAE,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,GAAG,EAAC,CAAC,CAAC,IAAI,CAAI,IAAI,GAAG,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAChF,WAAW,EAAE,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,GAAG,EAAC,CAAC,CAAC,IAAI,CAAI,IAAI,GAAG,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SACjF,CAAA;KACF;SAAM;QACL,OAAO,QAAQ,CAAC,IAAI,CAAA;KACrB;AAEH,CAAC,CAAA,CAAA;AAgCD;;GAEG;AACH,MAAM,OAAO,aAAa;IAOxB;;;;;OAKG;IACH,YACE,IAAS,EACT,WAAmB,EACnB,WAAqC,EACrC,OAA0E;QAd3D,eAAU,GAAG,GAAG,CAAC;QAC1B,iBAAY,GAAoB,EAAE,CAAC;QACnC,UAAK,GAAG,KAAK,CAAC;QAgBpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtC,UAAU,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;YACpC,YAAY,EAAE,IAAI;YAClB,iBAAiB,EAAE,IAAI;YACvB,oBAAoB,EAAE,IAAI;YAC1B,oBAAoB,EAAE,IAAI,CAAC,UAAU;SACtC,CAAC;aACC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAClB,KAAK,CAAC,SAAS,CAAC,CAAC;YACjB,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,KAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,IAAG,CAAC,EAAE;gBACpE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAC,WAAW,EAAC,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;aAClG;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAC,WAAW,EAAC,CAAC,CAAA;aAClD;YACD,IAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,2BAA2B,KAAI,OAAO,CAAC,2BAA2B,GAAC,CAAC,EAAC;gBAC/E,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,CAAC,2BAA2B,GAAC,CAAC,CAAC;oBACtC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;oBACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACtB,IAAI,CAAC,mBAAmB,EAAE,CAAA;gBAC5B,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAC;aACzC;YACD,oDAAoD;QAEtD,CAAC,CAAC;aACD,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,KAAK,GAAC,KAAK,CAAC;YACjB,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QAE7B,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACjB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YACtB,WAAW,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;QAC7C,CAAC,CAAC;aACD,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1B,KAAK,CAAC,cAAc,CAAC,CAAC;YACtB,WAAW,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;QAC7C,CAAC,CAAC;aACD,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YACxB,KAAK,CAAC,eAAe,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC5B,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;YAClC,KAAK,CAAC,WAAW,CAAC,CAAC;YACnB,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;IAGJ,CAAC;IAGM,mBAAmB;QACxB,KAAK,CAAC,uBAAuB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE;YACvC,KAAK,CAAC,eAAe,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,QAAa,EAAE,EAAE;gBACrG,KAAK,CAAC,2BAA2B,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAA;SACH;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IACrF,CAAC;IAED,EAAE,CAA2B,IAAO,EAAE,QAAwC;QAC5E,YAAY;QACZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAChC,CAAC;IAED,GAAG,CAA2B,IAAO,EAAE,QAAyC;QAC9E,YAAY;QACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED;;;;OAIG;IACG,WAAW,CAAC,OAAsB;;YACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAErC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBACf,KAAK,CAAC,kBAAkB,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;iBAChC;qBAAM;oBACL,KAAK,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBACnC,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;oBACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,QAAa,EAAE,EAAE;wBACjD,KAAK,CAAC,gBAAgB,QAAQ,CAAC,WAAW,QAAQ,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;wBACrE,IAAI,QAAQ,CAAC,WAAW,KAAK,GAAG,EAAE;4BAC/B,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;yBACxG;6BAAM;4BACL,gDAAgD;4BAChD,uCAAuC;4BACvC,IAAG,OAAO,CAAC,IAAI,KAAK,SAAS,EAAC;gCAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;6BAChC;4BACD,OAAO,CAAC,QAAQ,CAAC,CAAA;yBAClB;oBACH,CAAC,CACF,CAAA;iBACF;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;CACF"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shared_types.js.map
@@ -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
+ }