@prisme.ai/sdk 1.0.1 → 1.0.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/_virtual/_tslib.js +17 -8
- package/dist/lib/ImportProcessing.d.ts +19 -0
- package/dist/lib/WorkspacesEndpoint.d.ts +10 -0
- package/dist/lib/api.d.ts +18 -3
- package/dist/lib/endpoints/users.d.ts +6 -2
- package/dist/lib/endpoints/workspaces.d.ts +16 -0
- package/dist/lib/endpoints/workspacesVersions.d.ts +2 -2
- package/dist/lib/events.d.ts +3 -1
- package/dist/lib/fetch.d.ts +2 -0
- package/dist/lib/fetcher.d.ts +2 -1
- package/dist/lib/interpolate.d.ts +2 -0
- package/dist/lib/interpolate.test.d.ts +1 -0
- package/dist/lib/interpolateVars.d.ts +2 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/sdk/lib/ImportProcessing.js +17 -0
- package/dist/sdk/lib/WorkspacesEndpoint.js +19 -0
- package/dist/sdk/lib/api.js +86 -24
- package/dist/sdk/lib/endpoints/users.js +57 -6
- package/dist/sdk/lib/endpoints/workspaces.js +121 -0
- package/dist/sdk/lib/endpoints/workspacesVersions.js +4 -4
- package/dist/sdk/lib/events.js +40 -13
- package/dist/sdk/lib/fetch.js +12 -0
- package/dist/sdk/lib/fetcher.js +74 -36
- package/dist/sdk/lib/interpolate.js +26 -0
- package/dist/sdk/lib/interpolateVars.js +26 -0
- package/dist/sdk/lib/utils.js +48 -1
- package/lib/ImportProcessing.ts +22 -0
- package/lib/api.test.ts +20 -5
- package/lib/api.ts +111 -33
- package/lib/endpoints/users.ts +40 -4
- package/lib/endpoints/workspaces.ts +103 -0
- package/lib/endpoints/workspacesVersions.ts +13 -9
- package/lib/events.ts +54 -12
- package/lib/fetcher.ts +42 -7
- package/lib/utils.ts +39 -0
- package/package.json +2 -1
|
@@ -3,12 +3,47 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _tslib = require('../../../_virtual/_tslib.js');
|
|
6
|
+
var utils = require('../utils.js');
|
|
6
7
|
|
|
7
8
|
var UsersEndpoint = /** @class */ (function () {
|
|
8
9
|
function UsersEndpoint(id, api) {
|
|
9
10
|
this.id = id;
|
|
10
11
|
this.api = api;
|
|
11
12
|
}
|
|
13
|
+
UsersEndpoint.prototype.update = function (data) {
|
|
14
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
15
|
+
return _tslib.__generator(this, function (_a) {
|
|
16
|
+
switch (_a.label) {
|
|
17
|
+
case 0:
|
|
18
|
+
if (!utils.isDataURL(data.photo)) return [3 /*break*/, 2];
|
|
19
|
+
return [4 /*yield*/, this.updatePhoto(data.photo)];
|
|
20
|
+
case 1:
|
|
21
|
+
_a.sent();
|
|
22
|
+
delete data.photo;
|
|
23
|
+
_a.label = 2;
|
|
24
|
+
case 2: return [4 /*yield*/, this.api.patch('/user', data)];
|
|
25
|
+
case 3: return [2 /*return*/, _a.sent()];
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
UsersEndpoint.prototype.updatePhoto = function (photo) {
|
|
31
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
32
|
+
var formData;
|
|
33
|
+
return _tslib.__generator(this, function (_a) {
|
|
34
|
+
switch (_a.label) {
|
|
35
|
+
case 0:
|
|
36
|
+
if (!utils.isDataURL(photo)) {
|
|
37
|
+
throw new Error('Photo must be a dataurl file');
|
|
38
|
+
}
|
|
39
|
+
formData = new FormData();
|
|
40
|
+
formData.append.apply(formData, _tslib.__spreadArray(['photo'], utils.dataURItoBlob(photo), false));
|
|
41
|
+
return [4 /*yield*/, this.api.post("/user/photo", formData)];
|
|
42
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
};
|
|
12
47
|
UsersEndpoint.prototype.setMeta = function (k, v) {
|
|
13
48
|
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
14
49
|
var _a;
|
|
@@ -17,9 +52,7 @@ var UsersEndpoint = /** @class */ (function () {
|
|
|
17
52
|
case 0: return [4 /*yield*/, this.api.post("/user/meta", (_a = {},
|
|
18
53
|
_a[k] = v,
|
|
19
54
|
_a))];
|
|
20
|
-
case 1:
|
|
21
|
-
_b.sent();
|
|
22
|
-
return [2 /*return*/];
|
|
55
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
23
56
|
}
|
|
24
57
|
});
|
|
25
58
|
});
|
|
@@ -29,9 +62,27 @@ var UsersEndpoint = /** @class */ (function () {
|
|
|
29
62
|
return _tslib.__generator(this, function (_a) {
|
|
30
63
|
switch (_a.label) {
|
|
31
64
|
case 0: return [4 /*yield*/, this.api.delete("/user/meta/".concat(k))];
|
|
32
|
-
case 1:
|
|
33
|
-
|
|
34
|
-
|
|
65
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
UsersEndpoint.prototype.sendDeleteValidation = function () {
|
|
71
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
72
|
+
return _tslib.__generator(this, function (_a) {
|
|
73
|
+
switch (_a.label) {
|
|
74
|
+
case 0: return [4 /*yield*/, this.api.delete("/user")];
|
|
75
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
UsersEndpoint.prototype.delete = function (token) {
|
|
81
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
82
|
+
return _tslib.__generator(this, function (_a) {
|
|
83
|
+
switch (_a.label) {
|
|
84
|
+
case 0: return [4 /*yield*/, this.api.delete("/users/".concat(this.id, "?token=").concat(token))];
|
|
85
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
35
86
|
}
|
|
36
87
|
});
|
|
37
88
|
});
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var _tslib = require('../../../_virtual/_tslib.js');
|
|
6
|
+
var ImportProcessing = require('../ImportProcessing.js');
|
|
7
|
+
var utils = require('../utils.js');
|
|
5
8
|
var workspacesVersions = require('./workspacesVersions.js');
|
|
6
9
|
|
|
7
10
|
var WorkspacesEndpoint = /** @class */ (function () {
|
|
@@ -16,6 +19,124 @@ var WorkspacesEndpoint = /** @class */ (function () {
|
|
|
16
19
|
enumerable: false,
|
|
17
20
|
configurable: true
|
|
18
21
|
});
|
|
22
|
+
WorkspacesEndpoint.prototype.update = function (workspace) {
|
|
23
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
24
|
+
var _a, _b, _c;
|
|
25
|
+
return _tslib.__generator(this, function (_d) {
|
|
26
|
+
switch (_d.label) {
|
|
27
|
+
case 0:
|
|
28
|
+
_b = (_a = this.api).patch;
|
|
29
|
+
_c = ["/workspaces/".concat(this.id)];
|
|
30
|
+
return [4 /*yield*/, this.api.replaceAllImagesData(workspace, this.id)];
|
|
31
|
+
case 1: return [4 /*yield*/, _b.apply(_a, _c.concat([_d.sent()]))];
|
|
32
|
+
case 2: return [2 /*return*/, _d.sent()];
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
WorkspacesEndpoint.prototype.delete = function () {
|
|
38
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
39
|
+
return _tslib.__generator(this, function (_a) {
|
|
40
|
+
switch (_a.label) {
|
|
41
|
+
case 0: return [4 /*yield*/, this.api.delete("/workspaces/".concat(this.id))];
|
|
42
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
WorkspacesEndpoint.prototype.uploadFiles = function (files, opts) {
|
|
48
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
49
|
+
var formData, e_1;
|
|
50
|
+
return _tslib.__generator(this, function (_a) {
|
|
51
|
+
switch (_a.label) {
|
|
52
|
+
case 0:
|
|
53
|
+
formData = new FormData();
|
|
54
|
+
(Array.isArray(files) ? files : [files]).forEach(function (file) {
|
|
55
|
+
try {
|
|
56
|
+
formData.append.apply(formData, _tslib.__spreadArray(['file'], utils.dataURItoBlob(file), false));
|
|
57
|
+
}
|
|
58
|
+
catch (_a) { }
|
|
59
|
+
});
|
|
60
|
+
if (opts === null || opts === void 0 ? void 0 : opts.expiresAfter) {
|
|
61
|
+
formData.append('expiresAfter', "".concat(opts === null || opts === void 0 ? void 0 : opts.expiresAfter));
|
|
62
|
+
}
|
|
63
|
+
if (typeof (opts === null || opts === void 0 ? void 0 : opts.public) === 'boolean') {
|
|
64
|
+
formData.append('public', "".concat(opts === null || opts === void 0 ? void 0 : opts.public));
|
|
65
|
+
}
|
|
66
|
+
if (typeof (opts === null || opts === void 0 ? void 0 : opts.shareToken) === 'boolean') {
|
|
67
|
+
formData.append('shareToken', "".concat(opts === null || opts === void 0 ? void 0 : opts.shareToken));
|
|
68
|
+
}
|
|
69
|
+
_a.label = 1;
|
|
70
|
+
case 1:
|
|
71
|
+
_a.trys.push([1, 3, , 4]);
|
|
72
|
+
return [4 /*yield*/, this.api.post("/workspaces/".concat(this.id, "/files"), formData)];
|
|
73
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
74
|
+
case 3:
|
|
75
|
+
e_1 = _a.sent();
|
|
76
|
+
console.error(e_1);
|
|
77
|
+
return [3 /*break*/, 4];
|
|
78
|
+
case 4: return [2 /*return*/, []];
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
WorkspacesEndpoint.prototype.listAppInstances = function () {
|
|
84
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
85
|
+
return _tslib.__generator(this, function (_a) {
|
|
86
|
+
switch (_a.label) {
|
|
87
|
+
case 0: return [4 /*yield*/, this.api.get("/workspaces/".concat(this.id, "/apps"))];
|
|
88
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
WorkspacesEndpoint.prototype.getUsage = function (_a) {
|
|
94
|
+
var _b = _a === void 0 ? {} : _a, afterDate = _b.afterDate, beforeDate = _b.beforeDate, details = _b.details;
|
|
95
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
96
|
+
var params;
|
|
97
|
+
return _tslib.__generator(this, function (_c) {
|
|
98
|
+
params = new URLSearchParams(utils.removedUndefinedProperties({
|
|
99
|
+
afterDate: "".concat(afterDate || ''),
|
|
100
|
+
beforeDate: "".concat(beforeDate || ''),
|
|
101
|
+
details: "".concat(details || ''),
|
|
102
|
+
}, true));
|
|
103
|
+
return [2 /*return*/, this.api.get("/workspaces/".concat(this.id, "/usage?").concat(params.toString()))];
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
WorkspacesEndpoint.prototype.importArchive = function (archive) {
|
|
108
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
109
|
+
var _this = this;
|
|
110
|
+
return _tslib.__generator(this, function (_a) {
|
|
111
|
+
return [2 /*return*/, new Promise(function (resolve) {
|
|
112
|
+
var fileReader = new FileReader();
|
|
113
|
+
fileReader.addEventListener('load', function (_a) {
|
|
114
|
+
var target = _a.target;
|
|
115
|
+
return _tslib.__awaiter(_this, void 0, void 0, function () {
|
|
116
|
+
var file, formData, result;
|
|
117
|
+
return _tslib.__generator(this, function (_b) {
|
|
118
|
+
switch (_b.label) {
|
|
119
|
+
case 0:
|
|
120
|
+
file = target === null || target === void 0 ? void 0 : target.result;
|
|
121
|
+
formData = new FormData();
|
|
122
|
+
formData.append.apply(formData, _tslib.__spreadArray(['archive'], utils.dataURItoBlob(file), false));
|
|
123
|
+
return [4 /*yield*/, this.api.post("/workspaces/".concat(this.id, "/import"), formData)];
|
|
124
|
+
case 1:
|
|
125
|
+
result = _b.sent();
|
|
126
|
+
if (result.processing) {
|
|
127
|
+
throw new ImportProcessing.ImportProcessingError(result);
|
|
128
|
+
}
|
|
129
|
+
resolve(result);
|
|
130
|
+
return [2 /*return*/];
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
fileReader.readAsDataURL(archive);
|
|
136
|
+
})];
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
};
|
|
19
140
|
return WorkspacesEndpoint;
|
|
20
141
|
}());
|
|
21
142
|
|
|
@@ -10,10 +10,10 @@ var WorkspacesVersionsEndpoint = /** @class */ (function () {
|
|
|
10
10
|
this.api = api;
|
|
11
11
|
}
|
|
12
12
|
WorkspacesVersionsEndpoint.prototype.create = function (version) {
|
|
13
|
-
this.api.post("/workspaces/".concat(this.workspaceId, "/versions"), version);
|
|
13
|
+
return this.api.post("/workspaces/".concat(this.workspaceId, "/versions"), version);
|
|
14
14
|
};
|
|
15
|
-
WorkspacesVersionsEndpoint.prototype.rollback = function (versionId) {
|
|
16
|
-
this.api.post("/workspaces/".concat(this.workspaceId, "/versions/").concat(versionId, "/
|
|
15
|
+
WorkspacesVersionsEndpoint.prototype.rollback = function (versionId, opts) {
|
|
16
|
+
return this.api.post("/workspaces/".concat(this.workspaceId, "/versions/").concat(versionId, "/pull"), opts);
|
|
17
17
|
};
|
|
18
18
|
WorkspacesVersionsEndpoint.prototype.export = function (version) {
|
|
19
19
|
if (version === void 0) { version = 'current'; }
|
|
@@ -22,7 +22,7 @@ var WorkspacesVersionsEndpoint = /** @class */ (function () {
|
|
|
22
22
|
return _tslib.__generator(this, function (_b) {
|
|
23
23
|
switch (_b.label) {
|
|
24
24
|
case 0: return [4 /*yield*/, this.api.prepareRequest("/workspaces/".concat(this.workspaceId, "/versions/").concat(version, "/export"), {
|
|
25
|
-
method: 'post'
|
|
25
|
+
method: 'post',
|
|
26
26
|
})];
|
|
27
27
|
case 1:
|
|
28
28
|
res = _b.sent();
|
package/dist/sdk/lib/events.js
CHANGED
|
@@ -11,7 +11,7 @@ var io__default = /*#__PURE__*/_interopDefaultLegacy(io);
|
|
|
11
11
|
|
|
12
12
|
var Events = /** @class */ (function () {
|
|
13
13
|
function Events(_a) {
|
|
14
|
-
var workspaceId = _a.workspaceId, token = _a.token, legacyToken = _a.legacyToken, apiKey = _a.apiKey, _b = _a.apiHost, apiHost = _b === void 0 ? 'https://api.eda.prisme.ai' : _b, filters = _a.filters, api = _a.api;
|
|
14
|
+
var workspaceId = _a.workspaceId, token = _a.token, legacyToken = _a.legacyToken, apiKey = _a.apiKey, _b = _a.apiHost, apiHost = _b === void 0 ? 'https://api.eda.prisme.ai' : _b, filters = _a.filters, api = _a.api, transports = _a.transports;
|
|
15
15
|
var _this = this;
|
|
16
16
|
this.listeners = new Map();
|
|
17
17
|
this.workspaceId = workspaceId;
|
|
@@ -19,22 +19,45 @@ var Events = /** @class */ (function () {
|
|
|
19
19
|
var fullQueryString = queryString ? "?".concat(queryString) : '';
|
|
20
20
|
var extraHeaders = token
|
|
21
21
|
? {
|
|
22
|
-
|
|
22
|
+
authorization: "Bearer ".concat(token),
|
|
23
23
|
}
|
|
24
24
|
: { 'x-prismeai-token': legacyToken };
|
|
25
25
|
this.lastReceivedEventDate = new Date();
|
|
26
26
|
if (apiKey) {
|
|
27
27
|
extraHeaders['x-prismeai-api-key'] = apiKey;
|
|
28
28
|
}
|
|
29
|
+
this.filters = [filters || {}];
|
|
30
|
+
this.listenedUserTopics = new Map();
|
|
29
31
|
this.client = io__default["default"]("".concat(apiHost, "/workspaces/").concat(workspaceId, "/events").concat(fullQueryString), {
|
|
30
32
|
extraHeaders: extraHeaders,
|
|
31
|
-
withCredentials:
|
|
33
|
+
withCredentials: !extraHeaders.authorization,
|
|
34
|
+
transports: transports || ['polling', 'websocket'],
|
|
35
|
+
auth: function (cb) {
|
|
36
|
+
cb({
|
|
37
|
+
// Browser websockets cannot send extraHeaders, so we use socketio-client auth instead
|
|
38
|
+
extraHeaders: transports && transports[0] === 'websocket' ? extraHeaders : {},
|
|
39
|
+
filters: {
|
|
40
|
+
payloadQuery: _this.filters,
|
|
41
|
+
},
|
|
42
|
+
reuseSocketId: _this.socketId,
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
this.client.on('connect_error', function (err) {
|
|
47
|
+
console.error("Failed websocket connection : ", err);
|
|
48
|
+
// revert to classic upgrade
|
|
49
|
+
_this.client.io.opts.transports = ['polling', 'websocket'];
|
|
50
|
+
});
|
|
51
|
+
this.client.on('error', function (err) {
|
|
52
|
+
_this.client.io.opts.transports = ['polling', 'websocket'];
|
|
32
53
|
});
|
|
33
54
|
var onConnect = function () {
|
|
34
|
-
//
|
|
35
|
-
_this.
|
|
36
|
-
|
|
37
|
-
|
|
55
|
+
// First connection
|
|
56
|
+
if (!_this.socketId) {
|
|
57
|
+
_this.socketId = _this.client.id;
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Retrieve lost history on reconnection
|
|
38
61
|
setTimeout(function () { return _tslib.__awaiter(_this, void 0, void 0, function () {
|
|
39
62
|
var events;
|
|
40
63
|
var _this = this;
|
|
@@ -53,15 +76,18 @@ var Events = /** @class */ (function () {
|
|
|
53
76
|
});
|
|
54
77
|
}); }, 2000);
|
|
55
78
|
};
|
|
79
|
+
this.client.on('connect', onConnect);
|
|
56
80
|
this.client.on('disconnect', function () {
|
|
57
81
|
if (!_this.lastReceivedEventDate) {
|
|
58
82
|
_this.lastReceivedEventDate = new Date();
|
|
59
83
|
}
|
|
84
|
+
// Make sure we reconnect with current filters & socketId
|
|
85
|
+
_this.client.auth = _tslib.__assign(_tslib.__assign({}, _this.client.auth), { filters: {
|
|
86
|
+
payloadQuery: _this.filters,
|
|
87
|
+
}, reuseSocketId: _this.socketId });
|
|
60
88
|
_this.client.off('connect', onConnect);
|
|
61
89
|
_this.client.on('connect', onConnect);
|
|
62
90
|
});
|
|
63
|
-
this.filters = [filters || {}];
|
|
64
|
-
this.listenedUserTopics = new Map();
|
|
65
91
|
}
|
|
66
92
|
Object.defineProperty(Events.prototype, "socket", {
|
|
67
93
|
get: function () {
|
|
@@ -83,15 +109,16 @@ var Events = /** @class */ (function () {
|
|
|
83
109
|
};
|
|
84
110
|
Events.prototype.all = function (listener) {
|
|
85
111
|
var _this = this;
|
|
86
|
-
|
|
112
|
+
var anyListener = function (eventName, eventData) {
|
|
87
113
|
_this.lastReceivedEventDate = new Date(eventData === null || eventData === void 0 ? void 0 : eventData.createdAt);
|
|
88
114
|
return listener(eventName, eventData);
|
|
89
|
-
}
|
|
90
|
-
|
|
115
|
+
};
|
|
116
|
+
this.client.onAny(anyListener);
|
|
117
|
+
return function () { return _this.client.offAny(anyListener); };
|
|
91
118
|
};
|
|
92
119
|
Events.prototype.on = function (ev, listener) {
|
|
93
120
|
var _this = this;
|
|
94
|
-
this.listeners.set(ev, _tslib.__spreadArray(_tslib.__spreadArray([], (this.listeners.get(ev) || []), true), [listener]));
|
|
121
|
+
this.listeners.set(ev, _tslib.__spreadArray(_tslib.__spreadArray([], (this.listeners.get(ev) || []), true), [listener], false));
|
|
95
122
|
this.client.on(ev, listener);
|
|
96
123
|
return function () {
|
|
97
124
|
_this.listeners.set(ev, (_this.listeners.get(ev) || []).filter(function (l) { return l !== listener; }));
|
package/dist/sdk/lib/fetcher.js
CHANGED
|
@@ -3,8 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _tslib = require('../../_virtual/_tslib.js');
|
|
6
|
+
var FormData = require('form-data');
|
|
6
7
|
var ApiError = require('./ApiError.js');
|
|
7
8
|
var HTTPError = require('./HTTPError.js');
|
|
9
|
+
var utils = require('./utils.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
+
|
|
13
|
+
var FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData);
|
|
8
14
|
|
|
9
15
|
var headersAsObject = function (headers) {
|
|
10
16
|
return Array.from(headers).reduce(function (prev, _a) {
|
|
@@ -13,11 +19,16 @@ var headersAsObject = function (headers) {
|
|
|
13
19
|
return (_tslib.__assign(_tslib.__assign({}, prev), (_b = {}, _b[k] = v, _b)));
|
|
14
20
|
}, {});
|
|
15
21
|
};
|
|
22
|
+
function isFormData(data) {
|
|
23
|
+
return !!(data.append && typeof data.append === 'function');
|
|
24
|
+
}
|
|
25
|
+
var CSRF_TOKEN_HEADER = 'x-prismeai-csrf-token';
|
|
16
26
|
var Fetcher = /** @class */ (function () {
|
|
17
27
|
function Fetcher(host, clientIdHeader) {
|
|
18
28
|
this.token = null;
|
|
19
29
|
this.legacyToken = null;
|
|
20
30
|
this._apiKey = null;
|
|
31
|
+
this._csrfToken = null;
|
|
21
32
|
this.host = host;
|
|
22
33
|
this.clientIdHeader = clientIdHeader;
|
|
23
34
|
}
|
|
@@ -40,30 +51,47 @@ var Fetcher = /** @class */ (function () {
|
|
|
40
51
|
if (this._apiKey && !headers.has('x-prismeai-apikey')) {
|
|
41
52
|
headers.append('x-prismeai-api-key', this._apiKey);
|
|
42
53
|
}
|
|
54
|
+
if (this._csrfToken && options.method && options.method !== 'GET') {
|
|
55
|
+
headers.append(CSRF_TOKEN_HEADER, this._csrfToken);
|
|
56
|
+
}
|
|
43
57
|
if (this.language) {
|
|
44
58
|
headers.append('accept-language', this.language);
|
|
45
59
|
}
|
|
46
60
|
if (options.body instanceof URLSearchParams) {
|
|
47
61
|
headers.set('Content-Type', 'application/x-www-form-urlencoded');
|
|
48
62
|
}
|
|
49
|
-
if ((!options.body || !(options.body instanceof
|
|
63
|
+
if ((!options.body || !(options.body instanceof FormData__default["default"])) &&
|
|
50
64
|
!headers.has('Content-Type')) {
|
|
51
65
|
headers.append('Content-Type', 'application/json');
|
|
52
66
|
}
|
|
53
67
|
var fullUrl = url.startsWith('http://') || url.startsWith('https://')
|
|
54
68
|
? url
|
|
55
69
|
: "".concat(this.host).concat(url);
|
|
56
|
-
return global.fetch(fullUrl, _tslib.__assign(_tslib.__assign({ credentials: 'include' }, options), { headers: headers }));
|
|
70
|
+
return global.fetch(fullUrl, _tslib.__assign(_tslib.__assign({ credentials: headers.has('Authorization') ? 'omit' : 'include' }, options), { headers: headers }));
|
|
57
71
|
};
|
|
58
|
-
Fetcher.prototype._fetch = function (url, options) {
|
|
72
|
+
Fetcher.prototype._fetch = function (url, options, maxRetries) {
|
|
73
|
+
var _a;
|
|
59
74
|
if (options === void 0) { options = {}; }
|
|
75
|
+
if (maxRetries === void 0) { maxRetries = 3; }
|
|
60
76
|
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
61
|
-
var res, error,
|
|
62
|
-
return _tslib.__generator(this, function (
|
|
63
|
-
switch (
|
|
64
|
-
case 0:
|
|
77
|
+
var res, e_1, error, _b, contentType, response, text;
|
|
78
|
+
return _tslib.__generator(this, function (_c) {
|
|
79
|
+
switch (_c.label) {
|
|
80
|
+
case 0:
|
|
81
|
+
_c.trys.push([0, 2, , 5]);
|
|
82
|
+
return [4 /*yield*/, this.prepareRequest(url, options)];
|
|
65
83
|
case 1:
|
|
66
|
-
res =
|
|
84
|
+
res = _c.sent();
|
|
85
|
+
return [3 /*break*/, 5];
|
|
86
|
+
case 2:
|
|
87
|
+
e_1 = _c.sent();
|
|
88
|
+
if (!(maxRetries > 0 && e_1.message === 'Load failed')) return [3 /*break*/, 4];
|
|
89
|
+
return [4 /*yield*/, utils.wait(20)];
|
|
90
|
+
case 3:
|
|
91
|
+
_c.sent();
|
|
92
|
+
return [2 /*return*/, this._fetch(url, options, --maxRetries)];
|
|
93
|
+
case 4: throw e_1;
|
|
94
|
+
case 5:
|
|
67
95
|
if (options.redirect === 'manual' && res.status === 0) {
|
|
68
96
|
return [2 /*return*/, { redirected: true }];
|
|
69
97
|
}
|
|
@@ -71,30 +99,42 @@ var Fetcher = /** @class */ (function () {
|
|
|
71
99
|
if (this.clientIdHeader && this.lastReceivedHeaders[this.clientIdHeader]) {
|
|
72
100
|
this.overwriteClientId = this.lastReceivedHeaders[this.clientIdHeader];
|
|
73
101
|
}
|
|
74
|
-
if (
|
|
102
|
+
if (this.lastReceivedHeaders[CSRF_TOKEN_HEADER]) {
|
|
103
|
+
this._csrfToken = this.lastReceivedHeaders[CSRF_TOKEN_HEADER];
|
|
104
|
+
}
|
|
105
|
+
if (!!res.ok) return [3 /*break*/, 12];
|
|
106
|
+
if (!(((_a = res.statusText) === null || _a === void 0 ? void 0 : _a.length) &&
|
|
107
|
+
res.statusText.includes('ECONNRESET') &&
|
|
108
|
+
maxRetries > 0)) return [3 /*break*/, 7];
|
|
109
|
+
console.log("Retrying request towards ".concat(url, " as we received ECONNRESET error : ").concat(res.statusText));
|
|
110
|
+
return [4 /*yield*/, utils.wait(20)];
|
|
111
|
+
case 6:
|
|
112
|
+
_c.sent();
|
|
113
|
+
return [2 /*return*/, this._fetch(url, options, --maxRetries)];
|
|
114
|
+
case 7:
|
|
75
115
|
error = void 0;
|
|
76
|
-
|
|
77
|
-
case
|
|
78
|
-
|
|
79
|
-
|
|
116
|
+
_c.label = 8;
|
|
117
|
+
case 8:
|
|
118
|
+
_c.trys.push([8, 10, , 11]);
|
|
119
|
+
_b = ApiError.ApiError.bind;
|
|
80
120
|
return [4 /*yield*/, res.json()];
|
|
81
|
-
case
|
|
82
|
-
error = new (
|
|
83
|
-
return [3 /*break*/,
|
|
84
|
-
case
|
|
85
|
-
|
|
121
|
+
case 9:
|
|
122
|
+
error = new (_b.apply(ApiError.ApiError, [void 0, _c.sent(), res.status]))();
|
|
123
|
+
return [3 /*break*/, 11];
|
|
124
|
+
case 10:
|
|
125
|
+
_c.sent();
|
|
86
126
|
error = new HTTPError.HTTPError(res.statusText, res.status);
|
|
87
|
-
return [3 /*break*/,
|
|
88
|
-
case
|
|
89
|
-
case
|
|
127
|
+
return [3 /*break*/, 11];
|
|
128
|
+
case 11: throw error;
|
|
129
|
+
case 12:
|
|
90
130
|
contentType = res.headers.get('content-type');
|
|
91
|
-
if (!(contentType && contentType.includes('application/json'))) return [3 /*break*/,
|
|
92
|
-
|
|
93
|
-
case
|
|
94
|
-
|
|
131
|
+
if (!(contentType && contentType.includes('application/json'))) return [3 /*break*/, 16];
|
|
132
|
+
_c.label = 13;
|
|
133
|
+
case 13:
|
|
134
|
+
_c.trys.push([13, 15, , 16]);
|
|
95
135
|
return [4 /*yield*/, res.json()];
|
|
96
|
-
case
|
|
97
|
-
response = (
|
|
136
|
+
case 14:
|
|
137
|
+
response = (_c.sent()) || {};
|
|
98
138
|
Object.defineProperty(response, 'headers', {
|
|
99
139
|
value: headersAsObject(res.headers),
|
|
100
140
|
configurable: false,
|
|
@@ -102,16 +142,16 @@ var Fetcher = /** @class */ (function () {
|
|
|
102
142
|
writable: false,
|
|
103
143
|
});
|
|
104
144
|
return [2 /*return*/, response];
|
|
105
|
-
case
|
|
106
|
-
|
|
145
|
+
case 15:
|
|
146
|
+
_c.sent();
|
|
107
147
|
return [2 /*return*/, {}];
|
|
108
|
-
case
|
|
109
|
-
case
|
|
110
|
-
text =
|
|
148
|
+
case 16: return [4 /*yield*/, res.text()];
|
|
149
|
+
case 17:
|
|
150
|
+
text = _c.sent();
|
|
111
151
|
try {
|
|
112
152
|
return [2 /*return*/, JSON.parse(text)];
|
|
113
153
|
}
|
|
114
|
-
catch (
|
|
154
|
+
catch (_d) {
|
|
115
155
|
return [2 /*return*/, text];
|
|
116
156
|
}
|
|
117
157
|
return [2 /*return*/];
|
|
@@ -131,9 +171,7 @@ var Fetcher = /** @class */ (function () {
|
|
|
131
171
|
Fetcher.prototype.post = function (url, body, opts) {
|
|
132
172
|
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
133
173
|
return _tslib.__generator(this, function (_a) {
|
|
134
|
-
return [2 /*return*/, this._fetch(url, _tslib.__assign({ method: 'POST', body: body &&
|
|
135
|
-
!(body instanceof FormData) &&
|
|
136
|
-
!(body instanceof URLSearchParams)
|
|
174
|
+
return [2 /*return*/, this._fetch(url, _tslib.__assign({ method: 'POST', body: body && !isFormData(body) && !(body instanceof URLSearchParams)
|
|
137
175
|
? JSON.stringify(body)
|
|
138
176
|
: body }, opts))];
|
|
139
177
|
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _tslib = require('../../_virtual/_tslib.js');
|
|
6
|
+
|
|
7
|
+
function interpolateString(str, values) {
|
|
8
|
+
if (values === void 0) { values = {}; }
|
|
9
|
+
return str.replace(/\$\{([^}]+)\}/g, function (_, m) { return values[m] || ''; });
|
|
10
|
+
}
|
|
11
|
+
function interpolate(into, values) {
|
|
12
|
+
if (typeof into === 'string') {
|
|
13
|
+
return interpolateString(into, values);
|
|
14
|
+
}
|
|
15
|
+
var isArray = Array.isArray(into);
|
|
16
|
+
var newObject = isArray ? _tslib.__spreadArray([], into) : _tslib.__assign({}, into);
|
|
17
|
+
for (var _i = 0, _a = Object.keys(newObject); _i < _a.length; _i++) {
|
|
18
|
+
var key = _a[_i];
|
|
19
|
+
var value = newObject[key];
|
|
20
|
+
newObject[key] = interpolate(value, values);
|
|
21
|
+
}
|
|
22
|
+
return newObject;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
exports.interpolate = interpolate;
|
|
26
|
+
exports.interpolateString = interpolateString;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _tslib = require('../../_virtual/_tslib.js');
|
|
6
|
+
|
|
7
|
+
function interpolateString(str, values) {
|
|
8
|
+
if (values === void 0) { values = {}; }
|
|
9
|
+
return str.replace(/\$\{([^}]+)\}/g, function (_, m) { return values[m] || ''; });
|
|
10
|
+
}
|
|
11
|
+
function interpolate(into, values) {
|
|
12
|
+
if (typeof into === 'string') {
|
|
13
|
+
return interpolateString(into, values);
|
|
14
|
+
}
|
|
15
|
+
var isArray = Array.isArray(into);
|
|
16
|
+
var newObject = isArray ? _tslib.__spreadArray([], into) : _tslib.__assign({}, into);
|
|
17
|
+
for (var _i = 0, _a = Object.keys(newObject); _i < _a.length; _i++) {
|
|
18
|
+
var key = _a[_i];
|
|
19
|
+
var value = newObject[key];
|
|
20
|
+
newObject[key] = interpolate(value, values);
|
|
21
|
+
}
|
|
22
|
+
return newObject;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
exports.interpolate = interpolate;
|
|
26
|
+
exports.interpolateString = interpolateString;
|
package/dist/sdk/lib/utils.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var _tslib = require('../../_virtual/_tslib.js');
|
|
6
|
+
|
|
5
7
|
var removedUndefinedProperties = function (obj, removeEmptyStrings) {
|
|
6
8
|
if (removeEmptyStrings === void 0) { removeEmptyStrings = false; }
|
|
7
9
|
return Object.entries(obj).reduce(function (newObject, _a) {
|
|
@@ -13,6 +15,51 @@ var removedUndefinedProperties = function (obj, removeEmptyStrings) {
|
|
|
13
15
|
}
|
|
14
16
|
return newObject;
|
|
15
17
|
}, {});
|
|
16
|
-
};
|
|
18
|
+
};
|
|
19
|
+
function dataURItoBlob(dataURI) {
|
|
20
|
+
// convert base64/URLEncoded data component to raw binary data held in a string
|
|
21
|
+
var byteString;
|
|
22
|
+
if (dataURI.split(',')[0].indexOf('base64') >= 0)
|
|
23
|
+
byteString = atob(dataURI.split(',')[1].split(';')[0]);
|
|
24
|
+
else
|
|
25
|
+
byteString = unescape(dataURI.split(',')[1]);
|
|
26
|
+
// separate out the mime component
|
|
27
|
+
var metadata = dataURI
|
|
28
|
+
.split(';')
|
|
29
|
+
.map(function (v) { return v.split(/:/); })
|
|
30
|
+
.filter(function (pair) { return pair.length === 2; });
|
|
31
|
+
var _a = metadata.find(function (_a) {
|
|
32
|
+
var k = _a[0]; _a[1];
|
|
33
|
+
return k === 'data';
|
|
34
|
+
}) || [], _b = _a[1], mimeString = _b === void 0 ? '' : _b;
|
|
35
|
+
var _c = mimeString.split(/\//), ext = _c[1];
|
|
36
|
+
var _d = metadata.find(function (_a) {
|
|
37
|
+
var k = _a[0]; _a[1];
|
|
38
|
+
return k === 'filename';
|
|
39
|
+
}) || [], _e = _d[1], fileName = _e === void 0 ? "file.".concat(ext) : _e;
|
|
40
|
+
var sanitizedFileName = encodeURIComponent(decodeURIComponent(fileName).replace(/[;,\s]/g, '-'));
|
|
41
|
+
// write the bytes of the string to a typed array
|
|
42
|
+
var ia = new Uint8Array(byteString.length);
|
|
43
|
+
for (var i = 0; i < byteString.length; i++) {
|
|
44
|
+
ia[i] = byteString.charCodeAt(i);
|
|
45
|
+
}
|
|
46
|
+
return [new Blob([ia], { type: mimeString }), sanitizedFileName];
|
|
47
|
+
}
|
|
48
|
+
function isDataURL(file) {
|
|
49
|
+
return !!(typeof file === 'string' && file.match(/^data\:/));
|
|
50
|
+
}
|
|
51
|
+
function wait(delay) {
|
|
52
|
+
if (delay === void 0) { delay = 0; }
|
|
53
|
+
return _tslib.__awaiter(this, void 0, void 0, function () {
|
|
54
|
+
return _tslib.__generator(this, function (_a) {
|
|
55
|
+
return [2 /*return*/, new Promise(function (resolve) {
|
|
56
|
+
setTimeout(resolve, delay);
|
|
57
|
+
})];
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
17
61
|
|
|
62
|
+
exports.dataURItoBlob = dataURItoBlob;
|
|
63
|
+
exports.isDataURL = isDataURL;
|
|
18
64
|
exports.removedUndefinedProperties = removedUndefinedProperties;
|
|
65
|
+
exports.wait = wait;
|