@sanity/client 4.0.1-1 → 5.0.0-esm.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/dist/index.browser.cjs +1335 -0
- package/dist/index.browser.cjs.map +1 -0
- package/dist/index.browser.js +1312 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/index.cjs +1344 -0
- package/dist/index.cjs.js +15 -0
- package/dist/index.cjs.map +1 -0
- package/{sanityClient.d.ts → dist/index.d.ts} +991 -1117
- package/dist/index.js +1321 -0
- package/dist/index.js.map +1 -0
- package/package.json +81 -73
- package/src/SanityClient.ts +1261 -0
- package/src/assets/AssetsClient.ts +164 -0
- package/src/auth/AuthClient.ts +43 -0
- package/src/config.ts +95 -0
- package/src/data/dataMethods.ts +328 -0
- package/src/data/encodeQueryString.ts +28 -0
- package/src/data/listen.ts +195 -0
- package/src/data/patch.ts +353 -0
- package/src/data/transaction.ts +352 -0
- package/src/datasets/DatasetsClient.ts +97 -0
- package/src/generateHelpUrl.ts +5 -0
- package/src/http/browserMiddleware.ts +1 -0
- package/src/http/errors.ts +68 -0
- package/src/http/nodeMiddleware.ts +11 -0
- package/src/http/request.ts +50 -0
- package/src/http/requestOptions.ts +31 -0
- package/src/index.browser.ts +18 -0
- package/src/index.ts +57 -0
- package/src/projects/ProjectsClient.ts +45 -0
- package/src/types.ts +502 -0
- package/src/users/UsersClient.ts +46 -0
- package/src/util/defaults.ts +8 -0
- package/src/util/getSelection.ts +21 -0
- package/src/util/once.ts +12 -0
- package/src/util/pick.ts +9 -0
- package/src/validators.ts +76 -0
- package/src/warnings.ts +25 -0
- package/umd/sanityClient.js +5199 -5302
- package/umd/sanityClient.min.js +13 -13
- package/dist/sanityClient.browser.mjs +0 -2806
- package/dist/sanityClient.browser.mjs.map +0 -7
- package/index.js +0 -7
- package/lib/assets/assetsClient.js +0 -145
- package/lib/auth/authClient.js +0 -26
- package/lib/config.js +0 -88
- package/lib/data/dataMethods.js +0 -205
- package/lib/data/encodeQueryString.js +0 -31
- package/lib/data/listen.js +0 -164
- package/lib/data/patch.js +0 -121
- package/lib/data/transaction.js +0 -117
- package/lib/datasets/datasetsClient.js +0 -41
- package/lib/generateHelpUrl.js +0 -11
- package/lib/http/browserMiddleware.js +0 -9
- package/lib/http/errors.js +0 -56
- package/lib/http/nodeMiddleware.js +0 -22
- package/lib/http/queryString.js +0 -17
- package/lib/http/request.js +0 -52
- package/lib/http/requestOptions.js +0 -30
- package/lib/projects/projectsClient.js +0 -25
- package/lib/sanityClient.js +0 -118
- package/lib/users/usersClient.js +0 -20
- package/lib/util/defaults.js +0 -14
- package/lib/util/getSelection.js +0 -24
- package/lib/util/once.js +0 -20
- package/lib/util/pick.js +0 -17
- package/lib/validators.js +0 -76
- package/lib/warnings.js +0 -27
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _queryString = _interopRequireDefault(require("../http/queryString"));
|
|
9
|
-
var validators = _interopRequireWildcard(require("../validators"));
|
|
10
|
-
var _operators = require("rxjs/operators");
|
|
11
|
-
var _rxjs = require("rxjs");
|
|
12
|
-
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); }
|
|
13
|
-
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; }
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
16
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
18
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
19
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
20
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
21
|
-
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); }
|
|
22
|
-
function AssetsClient(client) {
|
|
23
|
-
this.client = client;
|
|
24
|
-
}
|
|
25
|
-
function optionsFromFile(opts, file) {
|
|
26
|
-
if (typeof window === 'undefined' || !(file instanceof window.File)) {
|
|
27
|
-
return opts;
|
|
28
|
-
}
|
|
29
|
-
return _extends({
|
|
30
|
-
filename: opts.preserveFilename === false ? undefined : file.name,
|
|
31
|
-
contentType: file.type
|
|
32
|
-
}, opts);
|
|
33
|
-
}
|
|
34
|
-
_extends(AssetsClient.prototype, {
|
|
35
|
-
/**
|
|
36
|
-
* Upload an asset
|
|
37
|
-
*
|
|
38
|
-
* @param {String} assetType `image` or `file`
|
|
39
|
-
* @param {File|Blob|Buffer|ReadableStream} body File to upload
|
|
40
|
-
* @param {Object} opts Options for the upload
|
|
41
|
-
* @param {Boolean} opts.preserveFilename Whether or not to preserve the original filename (default: true)
|
|
42
|
-
* @param {String} opts.filename Filename for this file (optional)
|
|
43
|
-
* @param {Number} opts.timeout Milliseconds to wait before timing the request out (default: 0)
|
|
44
|
-
* @param {String} opts.contentType Mime type of the file
|
|
45
|
-
* @param {Array} opts.extract Array of metadata parts to extract from image.
|
|
46
|
-
* Possible values: `location`, `exif`, `image`, `palette`
|
|
47
|
-
* @param {String} opts.label Label
|
|
48
|
-
* @param {String} opts.title Title
|
|
49
|
-
* @param {String} opts.description Description
|
|
50
|
-
* @param {String} opts.creditLine The credit to person(s) and/or organization(s) required by the supplier of the image to be used when published
|
|
51
|
-
* @param {Object} opts.source Source data (when the asset is from an external service)
|
|
52
|
-
* @param {String} opts.source.id The (u)id of the asset within the source, i.e. 'i-f323r1E'
|
|
53
|
-
* Required if source is defined
|
|
54
|
-
* @param {String} opts.source.name The name of the source, i.e. 'unsplash'
|
|
55
|
-
* Required if source is defined
|
|
56
|
-
* @param {String} opts.source.url A url to where to find the asset, or get more info about it in the source
|
|
57
|
-
* Optional
|
|
58
|
-
* @return {Promise} Resolves with the created asset document
|
|
59
|
-
*/
|
|
60
|
-
upload: function upload(assetType, body) {
|
|
61
|
-
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
62
|
-
validators.validateAssetType(assetType);
|
|
63
|
-
|
|
64
|
-
// If an empty array is given, explicitly set `none` to override API defaults
|
|
65
|
-
var meta = opts.extract || undefined;
|
|
66
|
-
if (meta && !meta.length) {
|
|
67
|
-
meta = ['none'];
|
|
68
|
-
}
|
|
69
|
-
var dataset = validators.hasDataset(this.client.clientConfig);
|
|
70
|
-
var assetEndpoint = assetType === 'image' ? 'images' : 'files';
|
|
71
|
-
var options = optionsFromFile(opts, body);
|
|
72
|
-
var tag = options.tag,
|
|
73
|
-
label = options.label,
|
|
74
|
-
title = options.title,
|
|
75
|
-
description = options.description,
|
|
76
|
-
creditLine = options.creditLine,
|
|
77
|
-
filename = options.filename,
|
|
78
|
-
source = options.source;
|
|
79
|
-
var query = {
|
|
80
|
-
label: label,
|
|
81
|
-
title: title,
|
|
82
|
-
description: description,
|
|
83
|
-
filename: filename,
|
|
84
|
-
meta: meta,
|
|
85
|
-
creditLine: creditLine
|
|
86
|
-
};
|
|
87
|
-
if (source) {
|
|
88
|
-
query.sourceId = source.id;
|
|
89
|
-
query.sourceName = source.name;
|
|
90
|
-
query.sourceUrl = source.url;
|
|
91
|
-
}
|
|
92
|
-
var observable = this.client._requestObservable({
|
|
93
|
-
tag: tag,
|
|
94
|
-
method: 'POST',
|
|
95
|
-
timeout: options.timeout || 0,
|
|
96
|
-
uri: "/assets/".concat(assetEndpoint, "/").concat(dataset),
|
|
97
|
-
headers: options.contentType ? {
|
|
98
|
-
'Content-Type': options.contentType
|
|
99
|
-
} : {},
|
|
100
|
-
query: query,
|
|
101
|
-
body: body
|
|
102
|
-
});
|
|
103
|
-
return this.client.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(observable.pipe((0, _operators.filter)(function (event) {
|
|
104
|
-
return event.type === 'response';
|
|
105
|
-
}), (0, _operators.map)(function (event) {
|
|
106
|
-
return event.body.document;
|
|
107
|
-
}))) : observable;
|
|
108
|
-
},
|
|
109
|
-
delete: function _delete(type, id) {
|
|
110
|
-
// eslint-disable-next-line no-console
|
|
111
|
-
console.warn('client.assets.delete() is deprecated, please use client.delete(<document-id>)');
|
|
112
|
-
var docId = id || '';
|
|
113
|
-
if (!/^(image|file)-/.test(docId)) {
|
|
114
|
-
docId = "".concat(type, "-").concat(docId);
|
|
115
|
-
} else if (type._id) {
|
|
116
|
-
// We could be passing an entire asset document instead of an ID
|
|
117
|
-
docId = type._id;
|
|
118
|
-
}
|
|
119
|
-
validators.hasDataset(this.client.clientConfig);
|
|
120
|
-
return this.client.delete(docId);
|
|
121
|
-
},
|
|
122
|
-
getImageUrl: function getImageUrl(ref, query) {
|
|
123
|
-
var id = ref._ref || ref;
|
|
124
|
-
if (typeof id !== 'string') {
|
|
125
|
-
throw new Error('getImageUrl() needs either an object with a _ref, or a string with an asset document ID');
|
|
126
|
-
}
|
|
127
|
-
if (!/^image-[A-Za-z0-9_]+-\d+x\d+-[a-z]{1,5}$/.test(id)) {
|
|
128
|
-
throw new Error("Unsupported asset ID \"".concat(id, "\". URL generation only works for auto-generated IDs."));
|
|
129
|
-
}
|
|
130
|
-
var _id$split = id.split('-'),
|
|
131
|
-
_id$split2 = _slicedToArray(_id$split, 4),
|
|
132
|
-
assetId = _id$split2[1],
|
|
133
|
-
size = _id$split2[2],
|
|
134
|
-
format = _id$split2[3];
|
|
135
|
-
validators.hasDataset(this.client.clientConfig);
|
|
136
|
-
var _this$client$clientCo = this.client.clientConfig,
|
|
137
|
-
projectId = _this$client$clientCo.projectId,
|
|
138
|
-
dataset = _this$client$clientCo.dataset;
|
|
139
|
-
var qs = query ? (0, _queryString.default)(query) : '';
|
|
140
|
-
return "https://cdn.sanity.io/images/".concat(projectId, "/").concat(dataset, "/").concat(assetId, "-").concat(size, ".").concat(format).concat(qs);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
var _default = AssetsClient;
|
|
144
|
-
exports.default = _default;
|
|
145
|
-
module.exports = exports.default;
|
package/lib/auth/authClient.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
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); }
|
|
8
|
-
function AuthClient(client) {
|
|
9
|
-
this.client = client;
|
|
10
|
-
}
|
|
11
|
-
_extends(AuthClient.prototype, {
|
|
12
|
-
getLoginProviders: function getLoginProviders() {
|
|
13
|
-
return this.client.request({
|
|
14
|
-
uri: '/auth/providers'
|
|
15
|
-
});
|
|
16
|
-
},
|
|
17
|
-
logout: function logout() {
|
|
18
|
-
return this.client.request({
|
|
19
|
-
uri: '/auth/logout',
|
|
20
|
-
method: 'POST'
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
var _default = AuthClient;
|
|
25
|
-
exports.default = _default;
|
|
26
|
-
module.exports = exports.default;
|
package/lib/config.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.validateApiVersion = exports.initConfig = exports.defaultConfig = void 0;
|
|
8
|
-
var _generateHelpUrl = _interopRequireDefault(require("./generateHelpUrl"));
|
|
9
|
-
var validate = _interopRequireWildcard(require("./validators"));
|
|
10
|
-
var warnings = _interopRequireWildcard(require("./warnings"));
|
|
11
|
-
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); }
|
|
12
|
-
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; }
|
|
13
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: 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); }
|
|
15
|
-
var defaultCdnHost = 'apicdn.sanity.io';
|
|
16
|
-
var defaultConfig = {
|
|
17
|
-
apiHost: 'https://api.sanity.io',
|
|
18
|
-
apiVersion: '1',
|
|
19
|
-
useProjectHostname: true,
|
|
20
|
-
isPromiseAPI: true
|
|
21
|
-
};
|
|
22
|
-
exports.defaultConfig = defaultConfig;
|
|
23
|
-
var LOCALHOSTS = ['localhost', '127.0.0.1', '0.0.0.0'];
|
|
24
|
-
var isLocal = function isLocal(host) {
|
|
25
|
-
return LOCALHOSTS.indexOf(host) !== -1;
|
|
26
|
-
};
|
|
27
|
-
var validateApiVersion = function validateApiVersion(apiVersion) {
|
|
28
|
-
if (apiVersion === '1' || apiVersion === 'X') {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
var apiDate = new Date(apiVersion);
|
|
32
|
-
var apiVersionValid = /^\d{4}-\d{2}-\d{2}$/.test(apiVersion) && apiDate instanceof Date && apiDate.getTime() > 0;
|
|
33
|
-
if (!apiVersionValid) {
|
|
34
|
-
throw new Error('Invalid API version string, expected `1` or date in format `YYYY-MM-DD`');
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
// eslint-disable-next-line complexity
|
|
39
|
-
exports.validateApiVersion = validateApiVersion;
|
|
40
|
-
var initConfig = function initConfig(config, prevConfig) {
|
|
41
|
-
var specifiedConfig = _extends({}, prevConfig, config);
|
|
42
|
-
if (!specifiedConfig.apiVersion) {
|
|
43
|
-
warnings.printNoApiVersionSpecifiedWarning();
|
|
44
|
-
}
|
|
45
|
-
var newConfig = _extends({}, defaultConfig, specifiedConfig);
|
|
46
|
-
var projectBased = newConfig.useProjectHostname;
|
|
47
|
-
if (typeof Promise === 'undefined') {
|
|
48
|
-
var helpUrl = (0, _generateHelpUrl.default)('js-client-promise-polyfill');
|
|
49
|
-
throw new Error("No native Promise-implementation found, polyfill needed - see ".concat(helpUrl));
|
|
50
|
-
}
|
|
51
|
-
if (projectBased && !newConfig.projectId) {
|
|
52
|
-
throw new Error('Configuration must contain `projectId`');
|
|
53
|
-
}
|
|
54
|
-
var isBrowser = typeof window !== 'undefined' && window.location && window.location.hostname;
|
|
55
|
-
var isLocalhost = isBrowser && isLocal(window.location.hostname);
|
|
56
|
-
if (isBrowser && isLocalhost && newConfig.token && newConfig.ignoreBrowserTokenWarning !== true) {
|
|
57
|
-
warnings.printBrowserTokenWarning();
|
|
58
|
-
} else if (typeof newConfig.useCdn === 'undefined') {
|
|
59
|
-
warnings.printCdnWarning();
|
|
60
|
-
}
|
|
61
|
-
if (projectBased) {
|
|
62
|
-
validate.projectId(newConfig.projectId);
|
|
63
|
-
}
|
|
64
|
-
if (newConfig.dataset) {
|
|
65
|
-
validate.dataset(newConfig.dataset);
|
|
66
|
-
}
|
|
67
|
-
if ('requestTagPrefix' in newConfig) {
|
|
68
|
-
// Allow setting and unsetting request tag prefix
|
|
69
|
-
newConfig.requestTagPrefix = newConfig.requestTagPrefix ? validate.requestTag(newConfig.requestTagPrefix).replace(/\.+$/, '') : undefined;
|
|
70
|
-
}
|
|
71
|
-
newConfig.apiVersion = "".concat(newConfig.apiVersion).replace(/^v/, '');
|
|
72
|
-
newConfig.isDefaultApi = newConfig.apiHost === defaultConfig.apiHost;
|
|
73
|
-
newConfig.useCdn = Boolean(newConfig.useCdn) && !newConfig.withCredentials;
|
|
74
|
-
validateApiVersion(newConfig.apiVersion);
|
|
75
|
-
var hostParts = newConfig.apiHost.split('://', 2);
|
|
76
|
-
var protocol = hostParts[0];
|
|
77
|
-
var host = hostParts[1];
|
|
78
|
-
var cdnHost = newConfig.isDefaultApi ? defaultCdnHost : host;
|
|
79
|
-
if (newConfig.useProjectHostname) {
|
|
80
|
-
newConfig.url = "".concat(protocol, "://").concat(newConfig.projectId, ".").concat(host, "/v").concat(newConfig.apiVersion);
|
|
81
|
-
newConfig.cdnUrl = "".concat(protocol, "://").concat(newConfig.projectId, ".").concat(cdnHost, "/v").concat(newConfig.apiVersion);
|
|
82
|
-
} else {
|
|
83
|
-
newConfig.url = "".concat(newConfig.apiHost, "/v").concat(newConfig.apiVersion);
|
|
84
|
-
newConfig.cdnUrl = newConfig.url;
|
|
85
|
-
}
|
|
86
|
-
return newConfig;
|
|
87
|
-
};
|
|
88
|
-
exports.initConfig = initConfig;
|
package/lib/data/dataMethods.js
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var validators = _interopRequireWildcard(require("../validators"));
|
|
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 }; }
|
|
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); }
|
|
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; }
|
|
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); }
|
|
23
|
-
var excludeFalsey = function excludeFalsey(param, defValue) {
|
|
24
|
-
var value = typeof param === 'undefined' ? defValue : param;
|
|
25
|
-
return param === false ? undefined : value;
|
|
26
|
-
};
|
|
27
|
-
var getMutationQuery = function getMutationQuery() {
|
|
28
|
-
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
29
|
-
return {
|
|
30
|
-
dryRun: options.dryRun,
|
|
31
|
-
returnIds: true,
|
|
32
|
-
returnDocuments: excludeFalsey(options.returnDocuments, true),
|
|
33
|
-
visibility: options.visibility || 'sync',
|
|
34
|
-
autoGenerateArrayKeys: options.autoGenerateArrayKeys,
|
|
35
|
-
skipCrossDatasetReferenceValidation: options.skipCrossDatasetReferenceValidation
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
var isResponse = function isResponse(event) {
|
|
39
|
-
return event.type === 'response';
|
|
40
|
-
};
|
|
41
|
-
var getBody = function getBody(event) {
|
|
42
|
-
return event.body;
|
|
43
|
-
};
|
|
44
|
-
var indexBy = function indexBy(docs, attr) {
|
|
45
|
-
return docs.reduce(function (indexed, doc) {
|
|
46
|
-
indexed[attr(doc)] = doc;
|
|
47
|
-
return indexed;
|
|
48
|
-
}, Object.create(null));
|
|
49
|
-
};
|
|
50
|
-
var getQuerySizeLimit = 11264;
|
|
51
|
-
var _default = {
|
|
52
|
-
listen: _listen.default,
|
|
53
|
-
getDataUrl: function getDataUrl(operation, path) {
|
|
54
|
-
var config = this.clientConfig;
|
|
55
|
-
var catalog = validators.hasDataset(config);
|
|
56
|
-
var baseUri = "/".concat(operation, "/").concat(catalog);
|
|
57
|
-
var uri = path ? "".concat(baseUri, "/").concat(path) : baseUri;
|
|
58
|
-
return "/data".concat(uri).replace(/\/($|\?)/, '$1');
|
|
59
|
-
},
|
|
60
|
-
fetch: function fetch(query, params) {
|
|
61
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
62
|
-
var mapResponse = options.filterResponse === false ? function (res) {
|
|
63
|
-
return res;
|
|
64
|
-
} : function (res) {
|
|
65
|
-
return res.result;
|
|
66
|
-
};
|
|
67
|
-
var observable = this._dataRequest('query', {
|
|
68
|
-
query: query,
|
|
69
|
-
params: params
|
|
70
|
-
}, options).pipe((0, _operators.map)(mapResponse));
|
|
71
|
-
return this.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(observable) : observable;
|
|
72
|
-
},
|
|
73
|
-
getDocument: function getDocument(id) {
|
|
74
|
-
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
75
|
-
var options = {
|
|
76
|
-
uri: this.getDataUrl('doc', id),
|
|
77
|
-
json: true,
|
|
78
|
-
tag: opts.tag
|
|
79
|
-
};
|
|
80
|
-
var observable = this._requestObservable(options).pipe((0, _operators.filter)(isResponse), (0, _operators.map)(function (event) {
|
|
81
|
-
return event.body.documents && event.body.documents[0];
|
|
82
|
-
}));
|
|
83
|
-
return this.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(observable) : observable;
|
|
84
|
-
},
|
|
85
|
-
getDocuments: function getDocuments(ids) {
|
|
86
|
-
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
87
|
-
var options = {
|
|
88
|
-
uri: this.getDataUrl('doc', ids.join(',')),
|
|
89
|
-
json: true,
|
|
90
|
-
tag: opts.tag
|
|
91
|
-
};
|
|
92
|
-
var observable = this._requestObservable(options).pipe((0, _operators.filter)(isResponse), (0, _operators.map)(function (event) {
|
|
93
|
-
var indexed = indexBy(event.body.documents || [], function (doc) {
|
|
94
|
-
return doc._id;
|
|
95
|
-
});
|
|
96
|
-
return ids.map(function (id) {
|
|
97
|
-
return indexed[id] || null;
|
|
98
|
-
});
|
|
99
|
-
}));
|
|
100
|
-
return this.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(observable) : observable;
|
|
101
|
-
},
|
|
102
|
-
create: function create(doc, options) {
|
|
103
|
-
return this._create(doc, 'create', options);
|
|
104
|
-
},
|
|
105
|
-
createIfNotExists: function createIfNotExists(doc, options) {
|
|
106
|
-
validators.requireDocumentId('createIfNotExists', doc);
|
|
107
|
-
return this._create(doc, 'createIfNotExists', options);
|
|
108
|
-
},
|
|
109
|
-
createOrReplace: function createOrReplace(doc, options) {
|
|
110
|
-
validators.requireDocumentId('createOrReplace', doc);
|
|
111
|
-
return this._create(doc, 'createOrReplace', options);
|
|
112
|
-
},
|
|
113
|
-
patch: function patch(selector, operations) {
|
|
114
|
-
return new _patch.default(selector, operations, this);
|
|
115
|
-
},
|
|
116
|
-
delete: function _delete(selection, options) {
|
|
117
|
-
return this.dataRequest('mutate', {
|
|
118
|
-
mutations: [{
|
|
119
|
-
delete: (0, _getSelection.default)(selection)
|
|
120
|
-
}]
|
|
121
|
-
}, options);
|
|
122
|
-
},
|
|
123
|
-
mutate: function mutate(mutations, options) {
|
|
124
|
-
var mut = mutations instanceof _patch.default || mutations instanceof _transaction.default ? mutations.serialize() : mutations;
|
|
125
|
-
var muts = Array.isArray(mut) ? mut : [mut];
|
|
126
|
-
var transactionId = options && options.transactionId;
|
|
127
|
-
return this.dataRequest('mutate', {
|
|
128
|
-
mutations: muts,
|
|
129
|
-
transactionId: transactionId
|
|
130
|
-
}, options);
|
|
131
|
-
},
|
|
132
|
-
transaction: function transaction(operations) {
|
|
133
|
-
return new _transaction.default(operations, this);
|
|
134
|
-
},
|
|
135
|
-
dataRequest: function dataRequest(endpoint, body) {
|
|
136
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
137
|
-
var request = this._dataRequest(endpoint, body, options);
|
|
138
|
-
return this.isPromiseAPI() ? (0, _rxjs.lastValueFrom)(request) : request;
|
|
139
|
-
},
|
|
140
|
-
_dataRequest: function _dataRequest(endpoint, body) {
|
|
141
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
142
|
-
var isMutation = endpoint === 'mutate';
|
|
143
|
-
var isQuery = endpoint === 'query';
|
|
144
|
-
|
|
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);
|
|
148
|
-
var useGet = !isMutation && strQuery.length < getQuerySizeLimit;
|
|
149
|
-
var stringQuery = useGet ? strQuery : '';
|
|
150
|
-
var returnFirst = options.returnFirst;
|
|
151
|
-
var timeout = options.timeout,
|
|
152
|
-
token = options.token,
|
|
153
|
-
tag = options.tag,
|
|
154
|
-
headers = options.headers;
|
|
155
|
-
var uri = this.getDataUrl(endpoint, stringQuery);
|
|
156
|
-
var reqOptions = {
|
|
157
|
-
method: useGet ? 'GET' : 'POST',
|
|
158
|
-
uri: uri,
|
|
159
|
-
json: true,
|
|
160
|
-
body: useGet ? undefined : body,
|
|
161
|
-
query: isMutation && getMutationQuery(options),
|
|
162
|
-
timeout: timeout,
|
|
163
|
-
headers: headers,
|
|
164
|
-
token: token,
|
|
165
|
-
tag: tag,
|
|
166
|
-
canUseCdn: isQuery
|
|
167
|
-
};
|
|
168
|
-
return this._requestObservable(reqOptions).pipe((0, _operators.filter)(isResponse), (0, _operators.map)(getBody), (0, _operators.map)(function (res) {
|
|
169
|
-
if (!isMutation) {
|
|
170
|
-
return res;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Should we return documents?
|
|
174
|
-
var results = res.results || [];
|
|
175
|
-
if (options.returnDocuments) {
|
|
176
|
-
return returnFirst ? results[0] && results[0].document : results.map(function (mut) {
|
|
177
|
-
return mut.document;
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// Return a reduced subset
|
|
182
|
-
var key = returnFirst ? 'documentId' : 'documentIds';
|
|
183
|
-
var ids = returnFirst ? results[0] && results[0].id : results.map(function (mut) {
|
|
184
|
-
return mut.id;
|
|
185
|
-
});
|
|
186
|
-
return _defineProperty({
|
|
187
|
-
transactionId: res.transactionId,
|
|
188
|
-
results: results
|
|
189
|
-
}, key, ids);
|
|
190
|
-
}));
|
|
191
|
-
},
|
|
192
|
-
_create: function _create(doc, op) {
|
|
193
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
194
|
-
var mutation = _defineProperty({}, op, doc);
|
|
195
|
-
var opts = _extends({
|
|
196
|
-
returnFirst: true,
|
|
197
|
-
returnDocuments: true
|
|
198
|
-
}, options);
|
|
199
|
-
return this.dataRequest('mutate', {
|
|
200
|
-
mutations: [mutation]
|
|
201
|
-
}, opts);
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
|
-
exports.default = _default;
|
|
205
|
-
module.exports = exports.default;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _excluded = ["tag"];
|
|
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; }
|
|
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; }
|
|
10
|
-
var enc = encodeURIComponent;
|
|
11
|
-
var _default = function _default(_ref) {
|
|
12
|
-
var query = _ref.query,
|
|
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;
|
|
17
|
-
// We generally want tag at the start of the query string
|
|
18
|
-
var tag = options.tag,
|
|
19
|
-
opts = _objectWithoutProperties(options, _excluded);
|
|
20
|
-
var q = "query=".concat(enc(query));
|
|
21
|
-
var base = tag ? "?tag=".concat(enc(tag), "&").concat(q) : "?".concat(q);
|
|
22
|
-
var qString = Object.keys(params).reduce(function (qs, param) {
|
|
23
|
-
return "".concat(qs, "&").concat(enc("$".concat(param)), "=").concat(enc(JSON.stringify(params[param])));
|
|
24
|
-
}, base);
|
|
25
|
-
return Object.keys(opts).reduce(function (qs, option) {
|
|
26
|
-
// Only include the option if it is truthy
|
|
27
|
-
return options[option] ? "".concat(qs, "&").concat(enc(option), "=").concat(enc(options[option])) : qs;
|
|
28
|
-
}, qString);
|
|
29
|
-
};
|
|
30
|
-
exports.default = _default;
|
|
31
|
-
module.exports = exports.default;
|
package/lib/data/listen.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = listen;
|
|
7
|
-
var _eventsource = _interopRequireDefault(require("@sanity/eventsource"));
|
|
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");
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
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); }
|
|
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; }
|
|
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; }
|
|
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); }
|
|
20
|
-
// Limit is 16K for a _request_, eg including headers. Have to account for an
|
|
21
|
-
// unknown range of headers, but an average EventSource request from Chrome seems
|
|
22
|
-
// to have around 700 bytes of cruft, so let us account for 1.2K to be "safe"
|
|
23
|
-
var MAX_URL_LENGTH = 16000 - 1200;
|
|
24
|
-
var EventSource = _eventsource.default;
|
|
25
|
-
var possibleOptions = ['includePreviousRevision', 'includeResult', 'visibility', 'effectFormat', 'tag'];
|
|
26
|
-
var defaultOptions = {
|
|
27
|
-
includeResult: true
|
|
28
|
-
};
|
|
29
|
-
function listen(query, params) {
|
|
30
|
-
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
31
|
-
var _this$clientConfig = this.clientConfig,
|
|
32
|
-
url = _this$clientConfig.url,
|
|
33
|
-
token = _this$clientConfig.token,
|
|
34
|
-
withCredentials = _this$clientConfig.withCredentials,
|
|
35
|
-
requestTagPrefix = _this$clientConfig.requestTagPrefix;
|
|
36
|
-
var tag = opts.tag && requestTagPrefix ? [requestTagPrefix, opts.tag].join('.') : opts.tag;
|
|
37
|
-
var options = _objectSpread(_objectSpread({}, (0, _defaults.default)(opts, defaultOptions)), {}, {
|
|
38
|
-
tag: tag
|
|
39
|
-
});
|
|
40
|
-
var listenOpts = (0, _pick.default)(options, possibleOptions);
|
|
41
|
-
var qs = (0, _encodeQueryString.default)({
|
|
42
|
-
query: query,
|
|
43
|
-
params: params,
|
|
44
|
-
options: listenOpts,
|
|
45
|
-
tag: tag
|
|
46
|
-
});
|
|
47
|
-
var uri = "".concat(url).concat(this.getDataUrl('listen', qs));
|
|
48
|
-
if (uri.length > MAX_URL_LENGTH) {
|
|
49
|
-
return new _rxjs.Observable(function (observer) {
|
|
50
|
-
return observer.error(new Error('Query too large for listener'));
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
var listenFor = options.events ? options.events : ['mutation'];
|
|
54
|
-
var shouldEmitReconnect = listenFor.indexOf('reconnect') !== -1;
|
|
55
|
-
var esOptions = {};
|
|
56
|
-
if (token || withCredentials) {
|
|
57
|
-
esOptions.withCredentials = true;
|
|
58
|
-
}
|
|
59
|
-
if (token) {
|
|
60
|
-
esOptions.headers = {
|
|
61
|
-
Authorization: "Bearer ".concat(token)
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
return new _rxjs.Observable(function (observer) {
|
|
65
|
-
var es = getEventSource();
|
|
66
|
-
var reconnectTimer;
|
|
67
|
-
var stopped = false;
|
|
68
|
-
function onError() {
|
|
69
|
-
if (stopped) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
emitReconnect();
|
|
73
|
-
|
|
74
|
-
// Allow event handlers of `emitReconnect` to cancel/close the reconnect attempt
|
|
75
|
-
if (stopped) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Unless we've explicitly stopped the ES (in which case `stopped` should be true),
|
|
80
|
-
// we should never be in a disconnected state. By default, EventSource will reconnect
|
|
81
|
-
// automatically, in which case it sets readyState to `CONNECTING`, but in some cases
|
|
82
|
-
// (like when a laptop lid is closed), it closes the connection. In these cases we need
|
|
83
|
-
// to explicitly reconnect.
|
|
84
|
-
if (es.readyState === EventSource.CLOSED) {
|
|
85
|
-
unsubscribe();
|
|
86
|
-
clearTimeout(reconnectTimer);
|
|
87
|
-
reconnectTimer = setTimeout(open, 100);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function onChannelError(err) {
|
|
91
|
-
observer.error(cooerceError(err));
|
|
92
|
-
}
|
|
93
|
-
function onMessage(evt) {
|
|
94
|
-
var event = parseEvent(evt);
|
|
95
|
-
return event instanceof Error ? observer.error(event) : observer.next(event);
|
|
96
|
-
}
|
|
97
|
-
function onDisconnect(evt) {
|
|
98
|
-
stopped = true;
|
|
99
|
-
unsubscribe();
|
|
100
|
-
observer.complete();
|
|
101
|
-
}
|
|
102
|
-
function unsubscribe() {
|
|
103
|
-
es.removeEventListener('error', onError, false);
|
|
104
|
-
es.removeEventListener('channelError', onChannelError, false);
|
|
105
|
-
es.removeEventListener('disconnect', onDisconnect, false);
|
|
106
|
-
listenFor.forEach(function (type) {
|
|
107
|
-
return es.removeEventListener(type, onMessage, false);
|
|
108
|
-
});
|
|
109
|
-
es.close();
|
|
110
|
-
}
|
|
111
|
-
function emitReconnect() {
|
|
112
|
-
if (shouldEmitReconnect) {
|
|
113
|
-
observer.next({
|
|
114
|
-
type: 'reconnect'
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
function getEventSource() {
|
|
119
|
-
var evs = new EventSource(uri, esOptions);
|
|
120
|
-
evs.addEventListener('error', onError, false);
|
|
121
|
-
evs.addEventListener('channelError', onChannelError, false);
|
|
122
|
-
evs.addEventListener('disconnect', onDisconnect, false);
|
|
123
|
-
listenFor.forEach(function (type) {
|
|
124
|
-
return evs.addEventListener(type, onMessage, false);
|
|
125
|
-
});
|
|
126
|
-
return evs;
|
|
127
|
-
}
|
|
128
|
-
function open() {
|
|
129
|
-
es = getEventSource();
|
|
130
|
-
}
|
|
131
|
-
function stop() {
|
|
132
|
-
stopped = true;
|
|
133
|
-
unsubscribe();
|
|
134
|
-
}
|
|
135
|
-
return stop;
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
function parseEvent(event) {
|
|
139
|
-
try {
|
|
140
|
-
var data = event.data && JSON.parse(event.data) || {};
|
|
141
|
-
return _extends({
|
|
142
|
-
type: event.type
|
|
143
|
-
}, data);
|
|
144
|
-
} catch (err) {
|
|
145
|
-
return err;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
function cooerceError(err) {
|
|
149
|
-
if (err instanceof Error) {
|
|
150
|
-
return err;
|
|
151
|
-
}
|
|
152
|
-
var evt = parseEvent(err);
|
|
153
|
-
return evt instanceof Error ? evt : new Error(extractErrorMessage(evt));
|
|
154
|
-
}
|
|
155
|
-
function extractErrorMessage(err) {
|
|
156
|
-
if (!err.error) {
|
|
157
|
-
return err.message || 'Unknown listener error';
|
|
158
|
-
}
|
|
159
|
-
if (err.error.description) {
|
|
160
|
-
return err.error.description;
|
|
161
|
-
}
|
|
162
|
-
return typeof err.error === 'string' ? err.error : JSON.stringify(err.error, null, 2);
|
|
163
|
-
}
|
|
164
|
-
module.exports = exports.default;
|