@sanity/client 4.0.0-alpha.esm.6 → 4.0.1-0
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 +1 -1
- package/README.md +23 -16
- package/dist/sanityClient.browser.mjs +2806 -0
- package/dist/sanityClient.browser.mjs.map +7 -0
- package/index.js +7 -0
- package/lib/assets/assetsClient.js +102 -142
- package/lib/auth/authClient.js +20 -35
- package/lib/config.js +21 -43
- package/lib/data/dataMethods.js +42 -67
- package/lib/data/encodeQueryString.js +9 -15
- package/lib/data/listen.js +27 -56
- package/lib/data/patch.js +114 -167
- package/lib/data/transaction.js +95 -139
- package/lib/datasets/datasetsClient.js +31 -56
- package/lib/generateHelpUrl.js +11 -0
- package/lib/http/browserMiddleware.js +4 -3
- package/lib/http/errors.js +9 -15
- package/lib/http/nodeMiddleware.js +6 -10
- package/lib/http/queryString.js +4 -7
- package/lib/http/request.js +14 -28
- package/lib/http/requestOptions.js +7 -10
- package/lib/projects/projectsClient.js +19 -34
- package/lib/sanityClient.js +100 -157
- package/lib/users/usersClient.js +14 -27
- package/lib/util/defaults.js +6 -8
- package/lib/util/getSelection.js +3 -5
- package/lib/util/once.js +4 -6
- package/lib/util/pick.js +4 -6
- package/lib/validators.js +0 -26
- package/lib/warnings.js +9 -13
- package/package.json +51 -40
- package/sanityClient.d.ts +262 -105
- package/umd/sanityClient.js +5474 -146
- package/umd/sanityClient.min.js +14 -1
- package/dist/browser/sanityClient.js +0 -4165
- package/dist/node/sanityClient.js +0 -969
- package/lib/util/observable.js +0 -29
- package/src/assets/assetsClient.js +0 -132
- package/src/auth/authClient.js +0 -13
- package/src/config.js +0 -93
- package/src/data/dataMethods.js +0 -182
- package/src/data/encodeQueryString.js +0 -18
- package/src/data/listen.js +0 -159
- package/src/data/patch.js +0 -119
- package/src/data/transaction.js +0 -103
- package/src/datasets/datasetsClient.js +0 -28
- package/src/http/browserMiddleware.js +0 -1
- package/src/http/errors.js +0 -53
- package/src/http/nodeMiddleware.js +0 -11
- package/src/http/queryString.js +0 -10
- package/src/http/request.js +0 -50
- package/src/http/requestOptions.js +0 -29
- package/src/projects/projectsClient.js +0 -13
- package/src/sanityClient.js +0 -124
- package/src/users/usersClient.js +0 -9
- package/src/util/defaults.js +0 -9
- package/src/util/getSelection.js +0 -17
- package/src/util/observable.js +0 -6
- package/src/util/once.js +0 -12
- package/src/util/pick.js +0 -9
- package/src/validators.js +0 -76
- package/src/warnings.js +0 -25
- package/test/client.test.js +0 -2561
- package/test/encodeQueryString.test.js +0 -38
- package/test/fixtures/horsehead-nebula.jpg +0 -0
- package/test/fixtures/pdf-sample.pdf +0 -0
- package/test/helpers/sseServer.js +0 -27
- package/test/listen.test.js +0 -207
- package/test/warnings.test.disabled.js +0 -84
package/lib/data/dataMethods.js
CHANGED
|
@@ -1,37 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
|
-
exports.
|
|
9
|
-
|
|
10
|
-
var _observable = require("../util/observable");
|
|
11
|
-
|
|
6
|
+
exports.default = void 0;
|
|
12
7
|
var validators = _interopRequireWildcard(require("../validators"));
|
|
13
|
-
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
var _listen = require("./listen");
|
|
23
|
-
|
|
8
|
+
var _getSelection = _interopRequireDefault(require("../util/getSelection"));
|
|
9
|
+
var _encodeQueryString = _interopRequireDefault(require("./encodeQueryString"));
|
|
10
|
+
var _transaction = _interopRequireDefault(require("./transaction"));
|
|
11
|
+
var _patch = _interopRequireDefault(require("./patch"));
|
|
12
|
+
var _listen = _interopRequireDefault(require("./listen"));
|
|
13
|
+
var _operators = require("rxjs/operators");
|
|
14
|
+
var _rxjs = require("rxjs");
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
16
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
-
|
|
26
17
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
-
|
|
28
|
-
function
|
|
29
|
-
|
|
18
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
19
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
20
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
21
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
22
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
30
23
|
var excludeFalsey = function excludeFalsey(param, defValue) {
|
|
31
24
|
var value = typeof param === 'undefined' ? defValue : param;
|
|
32
25
|
return param === false ? undefined : value;
|
|
33
26
|
};
|
|
34
|
-
|
|
35
27
|
var getMutationQuery = function getMutationQuery() {
|
|
36
28
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
37
29
|
return {
|
|
@@ -43,29 +35,21 @@ var getMutationQuery = function getMutationQuery() {
|
|
|
43
35
|
skipCrossDatasetReferenceValidation: options.skipCrossDatasetReferenceValidation
|
|
44
36
|
};
|
|
45
37
|
};
|
|
46
|
-
|
|
47
38
|
var isResponse = function isResponse(event) {
|
|
48
39
|
return event.type === 'response';
|
|
49
40
|
};
|
|
50
|
-
|
|
51
41
|
var getBody = function getBody(event) {
|
|
52
42
|
return event.body;
|
|
53
43
|
};
|
|
54
|
-
|
|
55
44
|
var indexBy = function indexBy(docs, attr) {
|
|
56
45
|
return docs.reduce(function (indexed, doc) {
|
|
57
46
|
indexed[attr(doc)] = doc;
|
|
58
47
|
return indexed;
|
|
59
48
|
}, Object.create(null));
|
|
60
49
|
};
|
|
61
|
-
|
|
62
|
-
var toPromise = function toPromise(observable) {
|
|
63
|
-
return observable.toPromise();
|
|
64
|
-
};
|
|
65
|
-
|
|
66
50
|
var getQuerySizeLimit = 11264;
|
|
67
|
-
var
|
|
68
|
-
listen: _listen.
|
|
51
|
+
var _default = {
|
|
52
|
+
listen: _listen.default,
|
|
69
53
|
getDataUrl: function getDataUrl(operation, path) {
|
|
70
54
|
var config = this.clientConfig;
|
|
71
55
|
var catalog = validators.hasDataset(config);
|
|
@@ -80,13 +64,11 @@ var dataMethods = {
|
|
|
80
64
|
} : function (res) {
|
|
81
65
|
return res.result;
|
|
82
66
|
};
|
|
83
|
-
|
|
84
67
|
var observable = this._dataRequest('query', {
|
|
85
68
|
query: query,
|
|
86
69
|
params: params
|
|
87
|
-
}, options).pipe((0,
|
|
88
|
-
|
|
89
|
-
return this.isPromiseAPI() ? toPromise(observable) : observable;
|
|
70
|
+
}, options).pipe((0, _operators.map)(mapResponse));
|
|
71
|
+
return this.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(observable) : observable;
|
|
90
72
|
},
|
|
91
73
|
getDocument: function getDocument(id) {
|
|
92
74
|
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
@@ -95,12 +77,10 @@ var dataMethods = {
|
|
|
95
77
|
json: true,
|
|
96
78
|
tag: opts.tag
|
|
97
79
|
};
|
|
98
|
-
|
|
99
|
-
var observable = this._requestObservable(options).pipe((0, _observable.filter)(isResponse), (0, _observable.map)(function (event) {
|
|
80
|
+
var observable = this._requestObservable(options).pipe((0, _operators.filter)(isResponse), (0, _operators.map)(function (event) {
|
|
100
81
|
return event.body.documents && event.body.documents[0];
|
|
101
82
|
}));
|
|
102
|
-
|
|
103
|
-
return this.isPromiseAPI() ? toPromise(observable) : observable;
|
|
83
|
+
return this.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(observable) : observable;
|
|
104
84
|
},
|
|
105
85
|
getDocuments: function getDocuments(ids) {
|
|
106
86
|
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
@@ -109,8 +89,7 @@ var dataMethods = {
|
|
|
109
89
|
json: true,
|
|
110
90
|
tag: opts.tag
|
|
111
91
|
};
|
|
112
|
-
|
|
113
|
-
var observable = this._requestObservable(options).pipe((0, _observable.filter)(isResponse), (0, _observable.map)(function (event) {
|
|
92
|
+
var observable = this._requestObservable(options).pipe((0, _operators.filter)(isResponse), (0, _operators.map)(function (event) {
|
|
114
93
|
var indexed = indexBy(event.body.documents || [], function (doc) {
|
|
115
94
|
return doc._id;
|
|
116
95
|
});
|
|
@@ -118,8 +97,7 @@ var dataMethods = {
|
|
|
118
97
|
return indexed[id] || null;
|
|
119
98
|
});
|
|
120
99
|
}));
|
|
121
|
-
|
|
122
|
-
return this.isPromiseAPI() ? toPromise(observable) : observable;
|
|
100
|
+
return this.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(observable) : observable;
|
|
123
101
|
},
|
|
124
102
|
create: function create(doc, options) {
|
|
125
103
|
return this._create(doc, 'create', options);
|
|
@@ -133,17 +111,17 @@ var dataMethods = {
|
|
|
133
111
|
return this._create(doc, 'createOrReplace', options);
|
|
134
112
|
},
|
|
135
113
|
patch: function patch(selector, operations) {
|
|
136
|
-
return new _patch.
|
|
114
|
+
return new _patch.default(selector, operations, this);
|
|
137
115
|
},
|
|
138
116
|
delete: function _delete(selection, options) {
|
|
139
117
|
return this.dataRequest('mutate', {
|
|
140
118
|
mutations: [{
|
|
141
|
-
delete: (0, _getSelection.
|
|
119
|
+
delete: (0, _getSelection.default)(selection)
|
|
142
120
|
}]
|
|
143
121
|
}, options);
|
|
144
122
|
},
|
|
145
123
|
mutate: function mutate(mutations, options) {
|
|
146
|
-
var mut = mutations instanceof _patch.
|
|
124
|
+
var mut = mutations instanceof _patch.default || mutations instanceof _transaction.default ? mutations.serialize() : mutations;
|
|
147
125
|
var muts = Array.isArray(mut) ? mut : [mut];
|
|
148
126
|
var transactionId = options && options.transactionId;
|
|
149
127
|
return this.dataRequest('mutate', {
|
|
@@ -152,29 +130,28 @@ var dataMethods = {
|
|
|
152
130
|
}, options);
|
|
153
131
|
},
|
|
154
132
|
transaction: function transaction(operations) {
|
|
155
|
-
return new _transaction.
|
|
133
|
+
return new _transaction.default(operations, this);
|
|
156
134
|
},
|
|
157
135
|
dataRequest: function dataRequest(endpoint, body) {
|
|
158
136
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
159
|
-
|
|
160
137
|
var request = this._dataRequest(endpoint, body, options);
|
|
161
|
-
|
|
162
|
-
return this.isPromiseAPI() ? toPromise(request) : request;
|
|
138
|
+
return this.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(request) : request;
|
|
163
139
|
},
|
|
164
140
|
_dataRequest: function _dataRequest(endpoint, body) {
|
|
165
141
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
166
142
|
var isMutation = endpoint === 'mutate';
|
|
167
|
-
var isQuery = endpoint === 'query';
|
|
168
|
-
// in which case we can use GET. Otherwise, use POST.
|
|
143
|
+
var isQuery = endpoint === 'query';
|
|
169
144
|
|
|
170
|
-
|
|
145
|
+
// Check if the query string is within a configured threshold,
|
|
146
|
+
// in which case we can use GET. Otherwise, use POST.
|
|
147
|
+
var strQuery = !isMutation && (0, _encodeQueryString.default)(body);
|
|
171
148
|
var useGet = !isMutation && strQuery.length < getQuerySizeLimit;
|
|
172
149
|
var stringQuery = useGet ? strQuery : '';
|
|
173
150
|
var returnFirst = options.returnFirst;
|
|
174
151
|
var timeout = options.timeout,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
152
|
+
token = options.token,
|
|
153
|
+
tag = options.tag,
|
|
154
|
+
headers = options.headers;
|
|
178
155
|
var uri = this.getDataUrl(endpoint, stringQuery);
|
|
179
156
|
var reqOptions = {
|
|
180
157
|
method: useGet ? 'GET' : 'POST',
|
|
@@ -188,21 +165,20 @@ var dataMethods = {
|
|
|
188
165
|
tag: tag,
|
|
189
166
|
canUseCdn: isQuery
|
|
190
167
|
};
|
|
191
|
-
return this._requestObservable(reqOptions).pipe((0,
|
|
168
|
+
return this._requestObservable(reqOptions).pipe((0, _operators.filter)(isResponse), (0, _operators.map)(getBody), (0, _operators.map)(function (res) {
|
|
192
169
|
if (!isMutation) {
|
|
193
170
|
return res;
|
|
194
|
-
}
|
|
195
|
-
|
|
171
|
+
}
|
|
196
172
|
|
|
173
|
+
// Should we return documents?
|
|
197
174
|
var results = res.results || [];
|
|
198
|
-
|
|
199
175
|
if (options.returnDocuments) {
|
|
200
176
|
return returnFirst ? results[0] && results[0].document : results.map(function (mut) {
|
|
201
177
|
return mut.document;
|
|
202
178
|
});
|
|
203
|
-
}
|
|
204
|
-
|
|
179
|
+
}
|
|
205
180
|
|
|
181
|
+
// Return a reduced subset
|
|
206
182
|
var key = returnFirst ? 'documentId' : 'documentIds';
|
|
207
183
|
var ids = returnFirst ? results[0] && results[0].id : results.map(function (mut) {
|
|
208
184
|
return mut.id;
|
|
@@ -215,10 +191,8 @@ var dataMethods = {
|
|
|
215
191
|
},
|
|
216
192
|
_create: function _create(doc, op) {
|
|
217
193
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
218
|
-
|
|
219
194
|
var mutation = _defineProperty({}, op, doc);
|
|
220
|
-
|
|
221
|
-
var opts = Object.assign({
|
|
195
|
+
var opts = _extends({
|
|
222
196
|
returnFirst: true,
|
|
223
197
|
returnDocuments: true
|
|
224
198
|
}, options);
|
|
@@ -227,4 +201,5 @@ var dataMethods = {
|
|
|
227
201
|
}, opts);
|
|
228
202
|
}
|
|
229
203
|
};
|
|
230
|
-
exports.
|
|
204
|
+
exports.default = _default;
|
|
205
|
+
module.exports = exports.default;
|
|
@@ -3,26 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
var _excluded = ["tag"];
|
|
8
|
-
|
|
9
8
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
10
|
-
|
|
11
9
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
12
|
-
|
|
13
10
|
var enc = encodeURIComponent;
|
|
14
|
-
|
|
15
|
-
var encodeQueryString = function encodeQueryString(_ref) {
|
|
11
|
+
var _default = function _default(_ref) {
|
|
16
12
|
var query = _ref.query,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
_ref$params = _ref.params,
|
|
14
|
+
params = _ref$params === void 0 ? {} : _ref$params,
|
|
15
|
+
_ref$options = _ref.options,
|
|
16
|
+
options = _ref$options === void 0 ? {} : _ref$options;
|
|
22
17
|
// We generally want tag at the start of the query string
|
|
23
18
|
var tag = options.tag,
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
opts = _objectWithoutProperties(options, _excluded);
|
|
26
20
|
var q = "query=".concat(enc(query));
|
|
27
21
|
var base = tag ? "?tag=".concat(enc(tag), "&").concat(q) : "?".concat(q);
|
|
28
22
|
var qString = Object.keys(params).reduce(function (qs, param) {
|
|
@@ -33,5 +27,5 @@ var encodeQueryString = function encodeQueryString(_ref) {
|
|
|
33
27
|
return options[option] ? "".concat(qs, "&").concat(enc(option), "=").concat(enc(options[option])) : qs;
|
|
34
28
|
}, qString);
|
|
35
29
|
};
|
|
36
|
-
|
|
37
|
-
exports
|
|
30
|
+
exports.default = _default;
|
|
31
|
+
module.exports = exports.default;
|
package/lib/data/listen.js
CHANGED
|
@@ -3,26 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
|
|
8
|
-
var _observable = require("../util/observable");
|
|
9
|
-
|
|
6
|
+
exports.default = listen;
|
|
10
7
|
var _eventsource = _interopRequireDefault(require("@sanity/eventsource"));
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
var _encodeQueryString = require("./encodeQueryString");
|
|
17
|
-
|
|
8
|
+
var _pick = _interopRequireDefault(require("../util/pick"));
|
|
9
|
+
var _defaults = _interopRequireDefault(require("../util/defaults"));
|
|
10
|
+
var _encodeQueryString = _interopRequireDefault(require("./encodeQueryString"));
|
|
11
|
+
var _rxjs = require("rxjs");
|
|
18
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
13
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
14
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
20
15
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
-
|
|
22
16
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
23
|
-
|
|
24
|
-
function
|
|
25
|
-
|
|
17
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
18
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
19
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
26
20
|
// Limit is 16K for a _request_, eg including headers. Have to account for an
|
|
27
21
|
// unknown range of headers, but an average EventSource request from Chrome seems
|
|
28
22
|
// to have around 700 bytes of cruft, so let us account for 1.2K to be "safe"
|
|
@@ -32,92 +26,79 @@ var possibleOptions = ['includePreviousRevision', 'includeResult', 'visibility',
|
|
|
32
26
|
var defaultOptions = {
|
|
33
27
|
includeResult: true
|
|
34
28
|
};
|
|
35
|
-
|
|
36
29
|
function listen(query, params) {
|
|
37
30
|
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
38
31
|
var _this$clientConfig = this.clientConfig,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
url = _this$clientConfig.url,
|
|
33
|
+
token = _this$clientConfig.token,
|
|
34
|
+
withCredentials = _this$clientConfig.withCredentials,
|
|
35
|
+
requestTagPrefix = _this$clientConfig.requestTagPrefix;
|
|
43
36
|
var tag = opts.tag && requestTagPrefix ? [requestTagPrefix, opts.tag].join('.') : opts.tag;
|
|
44
|
-
|
|
45
|
-
var options = _objectSpread(_objectSpread({}, (0, _defaults.defaults)(opts, defaultOptions)), {}, {
|
|
37
|
+
var options = _objectSpread(_objectSpread({}, (0, _defaults.default)(opts, defaultOptions)), {}, {
|
|
46
38
|
tag: tag
|
|
47
39
|
});
|
|
48
|
-
|
|
49
|
-
var
|
|
50
|
-
var qs = (0, _encodeQueryString.encodeQueryString)({
|
|
40
|
+
var listenOpts = (0, _pick.default)(options, possibleOptions);
|
|
41
|
+
var qs = (0, _encodeQueryString.default)({
|
|
51
42
|
query: query,
|
|
52
43
|
params: params,
|
|
53
44
|
options: listenOpts,
|
|
54
45
|
tag: tag
|
|
55
46
|
});
|
|
56
47
|
var uri = "".concat(url).concat(this.getDataUrl('listen', qs));
|
|
57
|
-
|
|
58
48
|
if (uri.length > MAX_URL_LENGTH) {
|
|
59
|
-
return new
|
|
49
|
+
return new _rxjs.Observable(function (observer) {
|
|
60
50
|
return observer.error(new Error('Query too large for listener'));
|
|
61
51
|
});
|
|
62
52
|
}
|
|
63
|
-
|
|
64
53
|
var listenFor = options.events ? options.events : ['mutation'];
|
|
65
54
|
var shouldEmitReconnect = listenFor.indexOf('reconnect') !== -1;
|
|
66
55
|
var esOptions = {};
|
|
67
|
-
|
|
68
56
|
if (token || withCredentials) {
|
|
69
57
|
esOptions.withCredentials = true;
|
|
70
58
|
}
|
|
71
|
-
|
|
72
59
|
if (token) {
|
|
73
60
|
esOptions.headers = {
|
|
74
61
|
Authorization: "Bearer ".concat(token)
|
|
75
62
|
};
|
|
76
63
|
}
|
|
77
|
-
|
|
78
|
-
return new _observable.Observable(function (observer) {
|
|
64
|
+
return new _rxjs.Observable(function (observer) {
|
|
79
65
|
var es = getEventSource();
|
|
80
66
|
var reconnectTimer;
|
|
81
67
|
var stopped = false;
|
|
82
|
-
|
|
83
68
|
function onError() {
|
|
84
69
|
if (stopped) {
|
|
85
70
|
return;
|
|
86
71
|
}
|
|
72
|
+
emitReconnect();
|
|
87
73
|
|
|
88
|
-
|
|
89
|
-
|
|
74
|
+
// Allow event handlers of `emitReconnect` to cancel/close the reconnect attempt
|
|
90
75
|
if (stopped) {
|
|
91
76
|
return;
|
|
92
|
-
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Unless we've explicitly stopped the ES (in which case `stopped` should be true),
|
|
93
80
|
// we should never be in a disconnected state. By default, EventSource will reconnect
|
|
94
81
|
// automatically, in which case it sets readyState to `CONNECTING`, but in some cases
|
|
95
82
|
// (like when a laptop lid is closed), it closes the connection. In these cases we need
|
|
96
83
|
// to explicitly reconnect.
|
|
97
|
-
|
|
98
|
-
|
|
99
84
|
if (es.readyState === EventSource.CLOSED) {
|
|
100
85
|
unsubscribe();
|
|
101
86
|
clearTimeout(reconnectTimer);
|
|
102
87
|
reconnectTimer = setTimeout(open, 100);
|
|
103
88
|
}
|
|
104
89
|
}
|
|
105
|
-
|
|
106
90
|
function onChannelError(err) {
|
|
107
91
|
observer.error(cooerceError(err));
|
|
108
92
|
}
|
|
109
|
-
|
|
110
93
|
function onMessage(evt) {
|
|
111
94
|
var event = parseEvent(evt);
|
|
112
95
|
return event instanceof Error ? observer.error(event) : observer.next(event);
|
|
113
96
|
}
|
|
114
|
-
|
|
115
97
|
function onDisconnect(evt) {
|
|
116
98
|
stopped = true;
|
|
117
99
|
unsubscribe();
|
|
118
100
|
observer.complete();
|
|
119
101
|
}
|
|
120
|
-
|
|
121
102
|
function unsubscribe() {
|
|
122
103
|
es.removeEventListener('error', onError, false);
|
|
123
104
|
es.removeEventListener('channelError', onChannelError, false);
|
|
@@ -127,7 +108,6 @@ function listen(query, params) {
|
|
|
127
108
|
});
|
|
128
109
|
es.close();
|
|
129
110
|
}
|
|
130
|
-
|
|
131
111
|
function emitReconnect() {
|
|
132
112
|
if (shouldEmitReconnect) {
|
|
133
113
|
observer.next({
|
|
@@ -135,7 +115,6 @@ function listen(query, params) {
|
|
|
135
115
|
});
|
|
136
116
|
}
|
|
137
117
|
}
|
|
138
|
-
|
|
139
118
|
function getEventSource() {
|
|
140
119
|
var evs = new EventSource(uri, esOptions);
|
|
141
120
|
evs.addEventListener('error', onError, false);
|
|
@@ -146,48 +125,40 @@ function listen(query, params) {
|
|
|
146
125
|
});
|
|
147
126
|
return evs;
|
|
148
127
|
}
|
|
149
|
-
|
|
150
128
|
function open() {
|
|
151
129
|
es = getEventSource();
|
|
152
130
|
}
|
|
153
|
-
|
|
154
131
|
function stop() {
|
|
155
132
|
stopped = true;
|
|
156
133
|
unsubscribe();
|
|
157
134
|
}
|
|
158
|
-
|
|
159
135
|
return stop;
|
|
160
136
|
});
|
|
161
137
|
}
|
|
162
|
-
|
|
163
138
|
function parseEvent(event) {
|
|
164
139
|
try {
|
|
165
140
|
var data = event.data && JSON.parse(event.data) || {};
|
|
166
|
-
return
|
|
141
|
+
return _extends({
|
|
167
142
|
type: event.type
|
|
168
143
|
}, data);
|
|
169
144
|
} catch (err) {
|
|
170
145
|
return err;
|
|
171
146
|
}
|
|
172
147
|
}
|
|
173
|
-
|
|
174
148
|
function cooerceError(err) {
|
|
175
149
|
if (err instanceof Error) {
|
|
176
150
|
return err;
|
|
177
151
|
}
|
|
178
|
-
|
|
179
152
|
var evt = parseEvent(err);
|
|
180
153
|
return evt instanceof Error ? evt : new Error(extractErrorMessage(evt));
|
|
181
154
|
}
|
|
182
|
-
|
|
183
155
|
function extractErrorMessage(err) {
|
|
184
156
|
if (!err.error) {
|
|
185
157
|
return err.message || 'Unknown listener error';
|
|
186
158
|
}
|
|
187
|
-
|
|
188
159
|
if (err.error.description) {
|
|
189
160
|
return err.error.description;
|
|
190
161
|
}
|
|
191
|
-
|
|
192
162
|
return typeof err.error === 'string' ? err.error : JSON.stringify(err.error, null, 2);
|
|
193
|
-
}
|
|
163
|
+
}
|
|
164
|
+
module.exports = exports.default;
|