@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.
Files changed (68) hide show
  1. package/dist/index.browser.cjs +1335 -0
  2. package/dist/index.browser.cjs.map +1 -0
  3. package/dist/index.browser.js +1312 -0
  4. package/dist/index.browser.js.map +1 -0
  5. package/dist/index.cjs +1344 -0
  6. package/dist/index.cjs.js +15 -0
  7. package/dist/index.cjs.map +1 -0
  8. package/{sanityClient.d.ts → dist/index.d.ts} +991 -1117
  9. package/dist/index.js +1321 -0
  10. package/dist/index.js.map +1 -0
  11. package/package.json +81 -73
  12. package/src/SanityClient.ts +1261 -0
  13. package/src/assets/AssetsClient.ts +164 -0
  14. package/src/auth/AuthClient.ts +43 -0
  15. package/src/config.ts +95 -0
  16. package/src/data/dataMethods.ts +328 -0
  17. package/src/data/encodeQueryString.ts +28 -0
  18. package/src/data/listen.ts +195 -0
  19. package/src/data/patch.ts +353 -0
  20. package/src/data/transaction.ts +352 -0
  21. package/src/datasets/DatasetsClient.ts +97 -0
  22. package/src/generateHelpUrl.ts +5 -0
  23. package/src/http/browserMiddleware.ts +1 -0
  24. package/src/http/errors.ts +68 -0
  25. package/src/http/nodeMiddleware.ts +11 -0
  26. package/src/http/request.ts +50 -0
  27. package/src/http/requestOptions.ts +31 -0
  28. package/src/index.browser.ts +18 -0
  29. package/src/index.ts +57 -0
  30. package/src/projects/ProjectsClient.ts +45 -0
  31. package/src/types.ts +502 -0
  32. package/src/users/UsersClient.ts +46 -0
  33. package/src/util/defaults.ts +8 -0
  34. package/src/util/getSelection.ts +21 -0
  35. package/src/util/once.ts +12 -0
  36. package/src/util/pick.ts +9 -0
  37. package/src/validators.ts +76 -0
  38. package/src/warnings.ts +25 -0
  39. package/umd/sanityClient.js +5199 -5302
  40. package/umd/sanityClient.min.js +13 -13
  41. package/dist/sanityClient.browser.mjs +0 -2806
  42. package/dist/sanityClient.browser.mjs.map +0 -7
  43. package/index.js +0 -7
  44. package/lib/assets/assetsClient.js +0 -145
  45. package/lib/auth/authClient.js +0 -26
  46. package/lib/config.js +0 -88
  47. package/lib/data/dataMethods.js +0 -205
  48. package/lib/data/encodeQueryString.js +0 -31
  49. package/lib/data/listen.js +0 -164
  50. package/lib/data/patch.js +0 -121
  51. package/lib/data/transaction.js +0 -117
  52. package/lib/datasets/datasetsClient.js +0 -41
  53. package/lib/generateHelpUrl.js +0 -11
  54. package/lib/http/browserMiddleware.js +0 -9
  55. package/lib/http/errors.js +0 -56
  56. package/lib/http/nodeMiddleware.js +0 -22
  57. package/lib/http/queryString.js +0 -17
  58. package/lib/http/request.js +0 -52
  59. package/lib/http/requestOptions.js +0 -30
  60. package/lib/projects/projectsClient.js +0 -25
  61. package/lib/sanityClient.js +0 -118
  62. package/lib/users/usersClient.js +0 -20
  63. package/lib/util/defaults.js +0 -14
  64. package/lib/util/getSelection.js +0 -24
  65. package/lib/util/once.js +0 -20
  66. package/lib/util/pick.js +0 -17
  67. package/lib/validators.js +0 -76
  68. 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;
@@ -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;
@@ -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;
@@ -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;