@sanity/client 6.24.0 → 6.25.0-alpha.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.
@@ -4,6 +4,21 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.SanityClient = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
+ function _mergeNamespaces(n, m) {
8
+ m.forEach(function (e) {
9
+ e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default' && !(k in n)) {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ });
19
+ return Object.freeze(n);
20
+ }
21
+
7
22
  const e=!(typeof navigator>"u")&&"ReactNative"===navigator.product,t={timeout:e?6e4:12e4},r=function(r){const a={...t,..."string"==typeof r?{url:r}:r};if(a.timeout=n$1(a.timeout),a.query){const{url:t,searchParams:r}=function(t){const r=t.indexOf("?");if(-1===r)return {url:t,searchParams:new URLSearchParams};const n=t.slice(0,r),a=t.slice(r+1);if(!e)return {url:n,searchParams:new URLSearchParams(a)};if("function"!=typeof decodeURIComponent)throw new Error("Broken `URLSearchParams` implementation, and `decodeURIComponent` is not defined");const s=new URLSearchParams;for(const e of a.split("&")){const[t,r]=e.split("=");t&&s.append(o$1(t),o$1(r||""));}return {url:n,searchParams:s}}(a.url);for(const[e,o]of Object.entries(a.query)){if(void 0!==o)if(Array.isArray(o))for(const t of o)r.append(e,t);else r.append(e,o);const n=r.toString();n&&(a.url=`${t}?${n}`);}}return a.method=a.body&&!a.method?"POST":(a.method||"GET").toUpperCase(),a};function o$1(e){return decodeURIComponent(e.replace(/\+/g," "))}function n$1(e){if(!1===e||0===e)return !1;if(e.connect||e.socket)return e;const r=Number(e);return isNaN(r)?n$1(t.timeout):{connect:r,socket:r}}const a$2=/^https?:\/\//i,s$2=function(e){if(!a$2.test(e.url))throw new Error(`"${e.url}" is not a valid URL`)};function c$3(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}
8
23
 
9
24
  const o=["request","response","progress","error","abort"],s$1=["processOptions","validateOptions","interceptRequest","finalizeOptions","onRequest","onResponse","onError","onReturn","onHeaders"];function n(r$1,a){const i=[],u=s$1.reduce(((e,t)=>(e[t]=e[t]||[],e)),{processOptions:[r],validateOptions:[s$2]});function l(e){const t=o.reduce(((e,t)=>(e[t]=function(){const e=Object.create(null);let t=0;return {publish:function(t){for(const r in e)e[r](t);},subscribe:function(r){const o=t++;return e[o]=r,function(){delete e[o];}}}}(),e)),{}),r=(e=>function(t,r,...o){const s="onError"===t;let n=r;for(let r=0;r<e[t].length&&(n=(0, e[t][r])(n,...o),!s||n);r++);return n})(u),s=r("processOptions",e);r("validateOptions",s);const n={options:s,channels:t,applyMiddleware:r};let i;const l=t.request.subscribe((e=>{i=a(e,((o,s)=>((e,o,s)=>{let n=e,a=o;if(!n)try{a=r("onResponse",o,s);}catch(e){a=null,n=e;}n=n&&r("onError",n,s),n?t.error.publish(n):a&&t.response.publish(a);})(o,s,e)));}));t.abort.subscribe((()=>{l(),i&&i.abort();}));const c=r("onReturn",t,n);return c===t&&t.request.publish(n),c}return l.use=function(e){if(!e)throw new Error("Tried to add middleware that resolved to falsey value");if("function"==typeof e)throw new Error("Tried to add middleware that was a function. It probably expects you to pass options to it.");if(e.onReturn&&u.onReturn.length>0)throw new Error("Tried to add new middleware with `onReturn` handler, but another handler has already been registered for this event");return s$1.forEach((t=>{e[t]&&u[t].push(e[t]);})),i.push(e),l},l.clone=()=>n(i,a),r$1.forEach(l.use),l}var a$1=function(e){return e.replace(/^\s+|\s+$/g,"")},i=c$3((function(e){if(!e)return {};for(var t={},r=a$1(e).split("\n"),o=0;o<r.length;o++){var s=r[o],n=s.indexOf(":"),i=a$1(s.slice(0,n)).toLowerCase(),u=a$1(s.slice(n+1));typeof t[i]>"u"?t[i]=u:(l=t[i],"[object Array]"===Object.prototype.toString.call(l)?t[i].push(u):t[i]=[t[i],u]);}var l;return t}));let u$2 = class u{onabort;onerror;onreadystatechange;ontimeout;readyState=0;response;responseText="";responseType="";status;statusText;withCredentials;#e;#t;#r;#o={};#s;#n={};#a;open(e,t,r){this.#e=e,this.#t=t,this.#r="",this.readyState=1,this.onreadystatechange?.(),this.#s=void 0;}abort(){this.#s&&this.#s.abort();}getAllResponseHeaders(){return this.#r}setRequestHeader(e,t){this.#o[e]=t;}setInit(e,t=!0){this.#n=e,this.#a=t;}send(e){const t="arraybuffer"!==this.responseType,r={...this.#n,method:this.#e,headers:this.#o,body:e};"function"==typeof AbortController&&this.#a&&(this.#s=new AbortController,typeof EventTarget<"u"&&this.#s.signal instanceof EventTarget&&(r.signal=this.#s.signal)),typeof document<"u"&&(r.credentials=this.withCredentials?"include":"omit"),fetch(this.#t,r).then((e=>(e.headers.forEach(((e,t)=>{this.#r+=`${t}: ${e}\r\n`;})),this.status=e.status,this.statusText=e.statusText,this.readyState=3,this.onreadystatechange?.(),t?e.text():e.arrayBuffer()))).then((e=>{"string"==typeof e?this.responseText=e:this.response=e,this.readyState=4,this.onreadystatechange?.();})).catch((e=>{"AbortError"!==e.name?this.onerror?.(e):this.onabort?.();}));}};const l$1="function"==typeof XMLHttpRequest?"xhr":"fetch",c$2="xhr"===l$1?XMLHttpRequest:u$2,h=(e,t)=>{const r=e.options,o=e.applyMiddleware("finalizeOptions",r),s={},n=e.applyMiddleware("interceptRequest",void 0,{adapter:l$1,context:e});if(n){const e=setTimeout(t,0,null,n);return {abort:()=>clearTimeout(e)}}let a=new c$2;a instanceof u$2&&"object"==typeof o.fetch&&a.setInit(o.fetch,o.useAbortSignal??!0);const h=o.headers,d=o.timeout;let p=!1,f=!1,b=!1;if(a.onerror=e=>{m(a instanceof u$2?e instanceof Error?e:new Error(`Request error while attempting to reach is ${o.url}`,{cause:e}):new Error(`Request error while attempting to reach is ${o.url}${e.lengthComputable?`(${e.loaded} of ${e.total} bytes transferred)`:""}`));},a.ontimeout=e=>{m(new Error(`Request timeout while attempting to reach ${o.url}${e.lengthComputable?`(${e.loaded} of ${e.total} bytes transferred)`:""}`));},a.onabort=()=>{w(!0),p=!0;},a.onreadystatechange=()=>{d&&(w(),s.socket=setTimeout((()=>y("ESOCKETTIMEDOUT")),d.socket)),!p&&4===a.readyState&&0!==a.status&&function(){if(!(p||f||b)){if(0===a.status)return void m(new Error("Unknown XHR error"));w(),f=!0,t(null,{body:a.response||(""===a.responseType||"text"===a.responseType?a.responseText:""),url:o.url,method:o.method,headers:i(a.getAllResponseHeaders()),statusCode:a.status,statusMessage:a.statusText});}}();},a.open(o.method,o.url,!0),a.withCredentials=!!o.withCredentials,h&&a.setRequestHeader)for(const e in h)h.hasOwnProperty(e)&&a.setRequestHeader(e,h[e]);return o.rawBody&&(a.responseType="arraybuffer"),e.applyMiddleware("onRequest",{options:o,adapter:l$1,request:a,context:e}),a.send(o.body||null),d&&(s.connect=setTimeout((()=>y("ETIMEDOUT")),d.connect)),{abort:function(){p=!0,a&&a.abort();}};function y(t){b=!0,a.abort();const r=new Error("ESOCKETTIMEDOUT"===t?`Socket timed out on request to ${o.url}`:`Connection timed out on request to ${o.url}`);r.code=t,e.channels.error.publish(r);}function w(e){(e||p||a.readyState>=2&&s.connect)&&clearTimeout(s.connect),s.socket&&clearTimeout(s.socket);}function m(e){if(f)return;w(!0),f=!0,a=null;const r=e||new Error(`Network error while attempting to reach ${o.url}`);r.isNetworkError=!0,r.request=o,t(r);}},d=(e=[],t=h)=>n(e,t),p$1="browser";
@@ -24,7 +39,7 @@
24
39
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
25
40
  PERFORMANCE OF THIS SOFTWARE.
26
41
  ***************************************************************************** */
27
- /* global Reflect, Promise, SuppressedError, Symbol */
42
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
28
43
 
29
44
  var extendStatics = function(d, b) {
30
45
  extendStatics = Object.setPrototypeOf ||
@@ -52,8 +67,8 @@
52
67
  }
53
68
 
54
69
  function __generator(thisArg, body) {
55
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
56
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
70
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
71
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
57
72
  function verb(n) { return function (v) { return step([n, v]); }; }
58
73
  function step(op) {
59
74
  if (f) throw new TypeError("Generator is already executing.");
@@ -125,8 +140,9 @@
125
140
  function __asyncGenerator(thisArg, _arguments, generator) {
126
141
  if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
127
142
  var g = generator.apply(thisArg, _arguments || []), i, q = [];
128
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
129
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
143
+ return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
144
+ function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
145
+ function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
130
146
  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
131
147
  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
132
148
  function fulfill(value) { resume("next", value); }
@@ -304,7 +320,7 @@
304
320
  })();
305
321
  return Subscription;
306
322
  }());
307
- Subscription.EMPTY;
323
+ var EMPTY_SUBSCRIPTION = Subscription.EMPTY;
308
324
  function isSubscription(value) {
309
325
  return (value instanceof Subscription ||
310
326
  (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));
@@ -713,12 +729,404 @@
713
729
  return OperatorSubscriber;
714
730
  }(Subscriber));
715
731
 
732
+ var ObjectUnsubscribedError = createErrorClass(function (_super) {
733
+ return function ObjectUnsubscribedErrorImpl() {
734
+ _super(this);
735
+ this.name = 'ObjectUnsubscribedError';
736
+ this.message = 'object unsubscribed';
737
+ };
738
+ });
739
+
740
+ var Subject = (function (_super) {
741
+ __extends(Subject, _super);
742
+ function Subject() {
743
+ var _this = _super.call(this) || this;
744
+ _this.closed = false;
745
+ _this.currentObservers = null;
746
+ _this.observers = [];
747
+ _this.isStopped = false;
748
+ _this.hasError = false;
749
+ _this.thrownError = null;
750
+ return _this;
751
+ }
752
+ Subject.prototype.lift = function (operator) {
753
+ var subject = new AnonymousSubject(this, this);
754
+ subject.operator = operator;
755
+ return subject;
756
+ };
757
+ Subject.prototype._throwIfClosed = function () {
758
+ if (this.closed) {
759
+ throw new ObjectUnsubscribedError();
760
+ }
761
+ };
762
+ Subject.prototype.next = function (value) {
763
+ var _this = this;
764
+ errorContext(function () {
765
+ var e_1, _a;
766
+ _this._throwIfClosed();
767
+ if (!_this.isStopped) {
768
+ if (!_this.currentObservers) {
769
+ _this.currentObservers = Array.from(_this.observers);
770
+ }
771
+ try {
772
+ for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
773
+ var observer = _c.value;
774
+ observer.next(value);
775
+ }
776
+ }
777
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
778
+ finally {
779
+ try {
780
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
781
+ }
782
+ finally { if (e_1) throw e_1.error; }
783
+ }
784
+ }
785
+ });
786
+ };
787
+ Subject.prototype.error = function (err) {
788
+ var _this = this;
789
+ errorContext(function () {
790
+ _this._throwIfClosed();
791
+ if (!_this.isStopped) {
792
+ _this.hasError = _this.isStopped = true;
793
+ _this.thrownError = err;
794
+ var observers = _this.observers;
795
+ while (observers.length) {
796
+ observers.shift().error(err);
797
+ }
798
+ }
799
+ });
800
+ };
801
+ Subject.prototype.complete = function () {
802
+ var _this = this;
803
+ errorContext(function () {
804
+ _this._throwIfClosed();
805
+ if (!_this.isStopped) {
806
+ _this.isStopped = true;
807
+ var observers = _this.observers;
808
+ while (observers.length) {
809
+ observers.shift().complete();
810
+ }
811
+ }
812
+ });
813
+ };
814
+ Subject.prototype.unsubscribe = function () {
815
+ this.isStopped = this.closed = true;
816
+ this.observers = this.currentObservers = null;
817
+ };
818
+ Object.defineProperty(Subject.prototype, "observed", {
819
+ get: function () {
820
+ var _a;
821
+ return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;
822
+ },
823
+ enumerable: false,
824
+ configurable: true
825
+ });
826
+ Subject.prototype._trySubscribe = function (subscriber) {
827
+ this._throwIfClosed();
828
+ return _super.prototype._trySubscribe.call(this, subscriber);
829
+ };
830
+ Subject.prototype._subscribe = function (subscriber) {
831
+ this._throwIfClosed();
832
+ this._checkFinalizedStatuses(subscriber);
833
+ return this._innerSubscribe(subscriber);
834
+ };
835
+ Subject.prototype._innerSubscribe = function (subscriber) {
836
+ var _this = this;
837
+ var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;
838
+ if (hasError || isStopped) {
839
+ return EMPTY_SUBSCRIPTION;
840
+ }
841
+ this.currentObservers = null;
842
+ observers.push(subscriber);
843
+ return new Subscription(function () {
844
+ _this.currentObservers = null;
845
+ arrRemove(observers, subscriber);
846
+ });
847
+ };
848
+ Subject.prototype._checkFinalizedStatuses = function (subscriber) {
849
+ var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;
850
+ if (hasError) {
851
+ subscriber.error(thrownError);
852
+ }
853
+ else if (isStopped) {
854
+ subscriber.complete();
855
+ }
856
+ };
857
+ Subject.prototype.asObservable = function () {
858
+ var observable = new Observable();
859
+ observable.source = this;
860
+ return observable;
861
+ };
862
+ Subject.create = function (destination, source) {
863
+ return new AnonymousSubject(destination, source);
864
+ };
865
+ return Subject;
866
+ }(Observable));
867
+ var AnonymousSubject = (function (_super) {
868
+ __extends(AnonymousSubject, _super);
869
+ function AnonymousSubject(destination, source) {
870
+ var _this = _super.call(this) || this;
871
+ _this.destination = destination;
872
+ _this.source = source;
873
+ return _this;
874
+ }
875
+ AnonymousSubject.prototype.next = function (value) {
876
+ var _a, _b;
877
+ (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);
878
+ };
879
+ AnonymousSubject.prototype.error = function (err) {
880
+ var _a, _b;
881
+ (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);
882
+ };
883
+ AnonymousSubject.prototype.complete = function () {
884
+ var _a, _b;
885
+ (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);
886
+ };
887
+ AnonymousSubject.prototype._subscribe = function (subscriber) {
888
+ var _a, _b;
889
+ return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
890
+ };
891
+ return AnonymousSubject;
892
+ }(Subject));
893
+
894
+ var dateTimestampProvider = {
895
+ now: function () {
896
+ return (dateTimestampProvider.delegate || Date).now();
897
+ },
898
+ delegate: undefined,
899
+ };
900
+
901
+ var ReplaySubject = (function (_super) {
902
+ __extends(ReplaySubject, _super);
903
+ function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {
904
+ if (_bufferSize === void 0) { _bufferSize = Infinity; }
905
+ if (_windowTime === void 0) { _windowTime = Infinity; }
906
+ if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }
907
+ var _this = _super.call(this) || this;
908
+ _this._bufferSize = _bufferSize;
909
+ _this._windowTime = _windowTime;
910
+ _this._timestampProvider = _timestampProvider;
911
+ _this._buffer = [];
912
+ _this._infiniteTimeWindow = true;
913
+ _this._infiniteTimeWindow = _windowTime === Infinity;
914
+ _this._bufferSize = Math.max(1, _bufferSize);
915
+ _this._windowTime = Math.max(1, _windowTime);
916
+ return _this;
917
+ }
918
+ ReplaySubject.prototype.next = function (value) {
919
+ var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;
920
+ if (!isStopped) {
921
+ _buffer.push(value);
922
+ !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
923
+ }
924
+ this._trimBuffer();
925
+ _super.prototype.next.call(this, value);
926
+ };
927
+ ReplaySubject.prototype._subscribe = function (subscriber) {
928
+ this._throwIfClosed();
929
+ this._trimBuffer();
930
+ var subscription = this._innerSubscribe(subscriber);
931
+ var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;
932
+ var copy = _buffer.slice();
933
+ for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {
934
+ subscriber.next(copy[i]);
935
+ }
936
+ this._checkFinalizedStatuses(subscriber);
937
+ return subscription;
938
+ };
939
+ ReplaySubject.prototype._trimBuffer = function () {
940
+ var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;
941
+ var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
942
+ _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
943
+ if (!_infiniteTimeWindow) {
944
+ var now = _timestampProvider.now();
945
+ var last = 0;
946
+ for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {
947
+ last = i;
948
+ }
949
+ last && _buffer.splice(0, last + 1);
950
+ }
951
+ };
952
+ return ReplaySubject;
953
+ }(Subject));
954
+
955
+ var Action = (function (_super) {
956
+ __extends(Action, _super);
957
+ function Action(scheduler, work) {
958
+ return _super.call(this) || this;
959
+ }
960
+ Action.prototype.schedule = function (state, delay) {
961
+ return this;
962
+ };
963
+ return Action;
964
+ }(Subscription));
965
+
966
+ var intervalProvider = {
967
+ setInterval: function (handler, timeout) {
968
+ var args = [];
969
+ for (var _i = 2; _i < arguments.length; _i++) {
970
+ args[_i - 2] = arguments[_i];
971
+ }
972
+ return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));
973
+ },
974
+ clearInterval: function (handle) {
975
+ return (clearInterval)(handle);
976
+ },
977
+ delegate: undefined,
978
+ };
979
+
980
+ var AsyncAction = (function (_super) {
981
+ __extends(AsyncAction, _super);
982
+ function AsyncAction(scheduler, work) {
983
+ var _this = _super.call(this, scheduler, work) || this;
984
+ _this.scheduler = scheduler;
985
+ _this.work = work;
986
+ _this.pending = false;
987
+ return _this;
988
+ }
989
+ AsyncAction.prototype.schedule = function (state, delay) {
990
+ var _a;
991
+ if (delay === void 0) { delay = 0; }
992
+ if (this.closed) {
993
+ return this;
994
+ }
995
+ this.state = state;
996
+ var id = this.id;
997
+ var scheduler = this.scheduler;
998
+ if (id != null) {
999
+ this.id = this.recycleAsyncId(scheduler, id, delay);
1000
+ }
1001
+ this.pending = true;
1002
+ this.delay = delay;
1003
+ this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);
1004
+ return this;
1005
+ };
1006
+ AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {
1007
+ if (delay === void 0) { delay = 0; }
1008
+ return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);
1009
+ };
1010
+ AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {
1011
+ if (delay === void 0) { delay = 0; }
1012
+ if (delay != null && this.delay === delay && this.pending === false) {
1013
+ return id;
1014
+ }
1015
+ if (id != null) {
1016
+ intervalProvider.clearInterval(id);
1017
+ }
1018
+ return undefined;
1019
+ };
1020
+ AsyncAction.prototype.execute = function (state, delay) {
1021
+ if (this.closed) {
1022
+ return new Error('executing a cancelled action');
1023
+ }
1024
+ this.pending = false;
1025
+ var error = this._execute(state, delay);
1026
+ if (error) {
1027
+ return error;
1028
+ }
1029
+ else if (this.pending === false && this.id != null) {
1030
+ this.id = this.recycleAsyncId(this.scheduler, this.id, null);
1031
+ }
1032
+ };
1033
+ AsyncAction.prototype._execute = function (state, _delay) {
1034
+ var errored = false;
1035
+ var errorValue;
1036
+ try {
1037
+ this.work(state);
1038
+ }
1039
+ catch (e) {
1040
+ errored = true;
1041
+ errorValue = e ? e : new Error('Scheduled action threw falsy error');
1042
+ }
1043
+ if (errored) {
1044
+ this.unsubscribe();
1045
+ return errorValue;
1046
+ }
1047
+ };
1048
+ AsyncAction.prototype.unsubscribe = function () {
1049
+ if (!this.closed) {
1050
+ var _a = this, id = _a.id, scheduler = _a.scheduler;
1051
+ var actions = scheduler.actions;
1052
+ this.work = this.state = this.scheduler = null;
1053
+ this.pending = false;
1054
+ arrRemove(actions, this);
1055
+ if (id != null) {
1056
+ this.id = this.recycleAsyncId(scheduler, id, null);
1057
+ }
1058
+ this.delay = null;
1059
+ _super.prototype.unsubscribe.call(this);
1060
+ }
1061
+ };
1062
+ return AsyncAction;
1063
+ }(Action));
1064
+
1065
+ var Scheduler = (function () {
1066
+ function Scheduler(schedulerActionCtor, now) {
1067
+ if (now === void 0) { now = Scheduler.now; }
1068
+ this.schedulerActionCtor = schedulerActionCtor;
1069
+ this.now = now;
1070
+ }
1071
+ Scheduler.prototype.schedule = function (work, delay, state) {
1072
+ if (delay === void 0) { delay = 0; }
1073
+ return new this.schedulerActionCtor(this, work).schedule(state, delay);
1074
+ };
1075
+ Scheduler.now = dateTimestampProvider.now;
1076
+ return Scheduler;
1077
+ }());
1078
+
1079
+ var AsyncScheduler = (function (_super) {
1080
+ __extends(AsyncScheduler, _super);
1081
+ function AsyncScheduler(SchedulerAction, now) {
1082
+ if (now === void 0) { now = Scheduler.now; }
1083
+ var _this = _super.call(this, SchedulerAction, now) || this;
1084
+ _this.actions = [];
1085
+ _this._active = false;
1086
+ return _this;
1087
+ }
1088
+ AsyncScheduler.prototype.flush = function (action) {
1089
+ var actions = this.actions;
1090
+ if (this._active) {
1091
+ actions.push(action);
1092
+ return;
1093
+ }
1094
+ var error;
1095
+ this._active = true;
1096
+ do {
1097
+ if ((error = action.execute(action.state, action.delay))) {
1098
+ break;
1099
+ }
1100
+ } while ((action = actions.shift()));
1101
+ this._active = false;
1102
+ if (error) {
1103
+ while ((action = actions.shift())) {
1104
+ action.unsubscribe();
1105
+ }
1106
+ throw error;
1107
+ }
1108
+ };
1109
+ return AsyncScheduler;
1110
+ }(Scheduler));
1111
+
1112
+ var asyncScheduler = new AsyncScheduler(AsyncAction);
1113
+ var async = asyncScheduler;
1114
+
1115
+ var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });
1116
+
1117
+ function isScheduler(value) {
1118
+ return value && isFunction(value.schedule);
1119
+ }
1120
+
716
1121
  function last(arr) {
717
1122
  return arr[arr.length - 1];
718
1123
  }
719
1124
  function popResultSelector(args) {
720
1125
  return isFunction(last(args)) ? args.pop() : undefined;
721
1126
  }
1127
+ function popScheduler(args) {
1128
+ return isScheduler(last(args)) ? args.pop() : undefined;
1129
+ }
722
1130
 
723
1131
  var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });
724
1132
 
@@ -917,8 +1325,161 @@
917
1325
  });
918
1326
  }
919
1327
 
1328
+ function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {
1329
+ if (delay === void 0) { delay = 0; }
1330
+ if (repeat === void 0) { repeat = false; }
1331
+ var scheduleSubscription = scheduler.schedule(function () {
1332
+ work();
1333
+ if (repeat) {
1334
+ parentSubscription.add(this.schedule(null, delay));
1335
+ }
1336
+ else {
1337
+ this.unsubscribe();
1338
+ }
1339
+ }, delay);
1340
+ parentSubscription.add(scheduleSubscription);
1341
+ if (!repeat) {
1342
+ return scheduleSubscription;
1343
+ }
1344
+ }
1345
+
1346
+ function observeOn(scheduler, delay) {
1347
+ if (delay === void 0) { delay = 0; }
1348
+ return operate(function (source, subscriber) {
1349
+ source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));
1350
+ });
1351
+ }
1352
+
1353
+ function subscribeOn(scheduler, delay) {
1354
+ if (delay === void 0) { delay = 0; }
1355
+ return operate(function (source, subscriber) {
1356
+ subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));
1357
+ });
1358
+ }
1359
+
1360
+ function scheduleObservable(input, scheduler) {
1361
+ return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
1362
+ }
1363
+
1364
+ function schedulePromise(input, scheduler) {
1365
+ return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
1366
+ }
1367
+
1368
+ function scheduleArray(input, scheduler) {
1369
+ return new Observable(function (subscriber) {
1370
+ var i = 0;
1371
+ return scheduler.schedule(function () {
1372
+ if (i === input.length) {
1373
+ subscriber.complete();
1374
+ }
1375
+ else {
1376
+ subscriber.next(input[i++]);
1377
+ if (!subscriber.closed) {
1378
+ this.schedule();
1379
+ }
1380
+ }
1381
+ });
1382
+ });
1383
+ }
1384
+
1385
+ function scheduleIterable(input, scheduler) {
1386
+ return new Observable(function (subscriber) {
1387
+ var iterator$1;
1388
+ executeSchedule(subscriber, scheduler, function () {
1389
+ iterator$1 = input[iterator]();
1390
+ executeSchedule(subscriber, scheduler, function () {
1391
+ var _a;
1392
+ var value;
1393
+ var done;
1394
+ try {
1395
+ (_a = iterator$1.next(), value = _a.value, done = _a.done);
1396
+ }
1397
+ catch (err) {
1398
+ subscriber.error(err);
1399
+ return;
1400
+ }
1401
+ if (done) {
1402
+ subscriber.complete();
1403
+ }
1404
+ else {
1405
+ subscriber.next(value);
1406
+ }
1407
+ }, 0, true);
1408
+ });
1409
+ return function () { return isFunction(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return(); };
1410
+ });
1411
+ }
1412
+
1413
+ function scheduleAsyncIterable(input, scheduler) {
1414
+ if (!input) {
1415
+ throw new Error('Iterable cannot be null');
1416
+ }
1417
+ return new Observable(function (subscriber) {
1418
+ executeSchedule(subscriber, scheduler, function () {
1419
+ var iterator = input[Symbol.asyncIterator]();
1420
+ executeSchedule(subscriber, scheduler, function () {
1421
+ iterator.next().then(function (result) {
1422
+ if (result.done) {
1423
+ subscriber.complete();
1424
+ }
1425
+ else {
1426
+ subscriber.next(result.value);
1427
+ }
1428
+ });
1429
+ }, 0, true);
1430
+ });
1431
+ });
1432
+ }
1433
+
1434
+ function scheduleReadableStreamLike(input, scheduler) {
1435
+ return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);
1436
+ }
1437
+
1438
+ function scheduled(input, scheduler) {
1439
+ if (input != null) {
1440
+ if (isInteropObservable(input)) {
1441
+ return scheduleObservable(input, scheduler);
1442
+ }
1443
+ if (isArrayLike(input)) {
1444
+ return scheduleArray(input, scheduler);
1445
+ }
1446
+ if (isPromise(input)) {
1447
+ return schedulePromise(input, scheduler);
1448
+ }
1449
+ if (isAsyncIterable(input)) {
1450
+ return scheduleAsyncIterable(input, scheduler);
1451
+ }
1452
+ if (isIterable(input)) {
1453
+ return scheduleIterable(input, scheduler);
1454
+ }
1455
+ if (isReadableStreamLike(input)) {
1456
+ return scheduleReadableStreamLike(input, scheduler);
1457
+ }
1458
+ }
1459
+ throw createInvalidObservableTypeError(input);
1460
+ }
1461
+
920
1462
  function from(input, scheduler) {
921
- return innerFrom(input);
1463
+ return scheduler ? scheduled(input, scheduler) : innerFrom(input);
1464
+ }
1465
+
1466
+ function of() {
1467
+ var args = [];
1468
+ for (var _i = 0; _i < arguments.length; _i++) {
1469
+ args[_i] = arguments[_i];
1470
+ }
1471
+ var scheduler = popScheduler(args);
1472
+ return from(args, scheduler);
1473
+ }
1474
+
1475
+ function throwError(errorOrErrorFactory, scheduler) {
1476
+ var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };
1477
+ var init = function (subscriber) { return subscriber.error(errorFactory()); };
1478
+ return new Observable(init);
1479
+ }
1480
+
1481
+ function isObservable(obj) {
1482
+ return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));
922
1483
  }
923
1484
 
924
1485
  var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {
@@ -949,6 +1510,10 @@
949
1510
  });
950
1511
  }
951
1512
 
1513
+ function isValidDate$1(value) {
1514
+ return value instanceof Date && !isNaN(value);
1515
+ }
1516
+
952
1517
  function map(project, thisArg) {
953
1518
  return operate(function (source, subscriber) {
954
1519
  var index = 0;
@@ -976,7 +1541,7 @@
976
1541
  var remainingFirstValues = length;
977
1542
  var _loop_1 = function (i) {
978
1543
  maybeSchedule(scheduler, function () {
979
- var source = from(observables[i]);
1544
+ var source = from(observables[i], scheduler);
980
1545
  var hasFirstValue = false;
981
1546
  source.subscribe(createOperatorSubscriber(subscriber, function (value) {
982
1547
  values[i] = value;
@@ -1006,6 +1571,108 @@
1006
1571
  }
1007
1572
  }
1008
1573
 
1574
+ function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {
1575
+ var buffer = [];
1576
+ var active = 0;
1577
+ var index = 0;
1578
+ var isComplete = false;
1579
+ var checkComplete = function () {
1580
+ if (isComplete && !buffer.length && !active) {
1581
+ subscriber.complete();
1582
+ }
1583
+ };
1584
+ var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };
1585
+ var doInnerSub = function (value) {
1586
+ active++;
1587
+ var innerComplete = false;
1588
+ innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {
1589
+ {
1590
+ subscriber.next(innerValue);
1591
+ }
1592
+ }, function () {
1593
+ innerComplete = true;
1594
+ }, undefined, function () {
1595
+ if (innerComplete) {
1596
+ try {
1597
+ active--;
1598
+ var _loop_1 = function () {
1599
+ var bufferedValue = buffer.shift();
1600
+ if (innerSubScheduler) ;
1601
+ else {
1602
+ doInnerSub(bufferedValue);
1603
+ }
1604
+ };
1605
+ while (buffer.length && active < concurrent) {
1606
+ _loop_1();
1607
+ }
1608
+ checkComplete();
1609
+ }
1610
+ catch (err) {
1611
+ subscriber.error(err);
1612
+ }
1613
+ }
1614
+ }));
1615
+ };
1616
+ source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {
1617
+ isComplete = true;
1618
+ checkComplete();
1619
+ }));
1620
+ return function () {
1621
+ };
1622
+ }
1623
+
1624
+ function mergeMap(project, resultSelector, concurrent) {
1625
+ if (concurrent === void 0) { concurrent = Infinity; }
1626
+ if (isFunction(resultSelector)) {
1627
+ return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);
1628
+ }
1629
+ else if (typeof resultSelector === 'number') {
1630
+ concurrent = resultSelector;
1631
+ }
1632
+ return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });
1633
+ }
1634
+
1635
+ function mergeAll(concurrent) {
1636
+ return mergeMap(identity, concurrent);
1637
+ }
1638
+
1639
+ function concatAll() {
1640
+ return mergeAll(1);
1641
+ }
1642
+
1643
+ function concat() {
1644
+ var args = [];
1645
+ for (var _i = 0; _i < arguments.length; _i++) {
1646
+ args[_i] = arguments[_i];
1647
+ }
1648
+ return concatAll()(from(args, popScheduler(args)));
1649
+ }
1650
+
1651
+ function defer(observableFactory) {
1652
+ return new Observable(function (subscriber) {
1653
+ innerFrom(observableFactory()).subscribe(subscriber);
1654
+ });
1655
+ }
1656
+
1657
+ function timer(dueTime, intervalOrScheduler, scheduler) {
1658
+ if (scheduler === void 0) { scheduler = async; }
1659
+ return new Observable(function (subscriber) {
1660
+ var due = isValidDate$1(dueTime) ? +dueTime - scheduler.now() : dueTime;
1661
+ if (due < 0) {
1662
+ due = 0;
1663
+ }
1664
+ var n = 0;
1665
+ return scheduler.schedule(function () {
1666
+ if (!subscriber.closed) {
1667
+ subscriber.next(n++);
1668
+ {
1669
+ subscriber.complete();
1670
+ }
1671
+ }
1672
+ }, due);
1673
+ });
1674
+ }
1675
+
1009
1676
  var isArray$1 = Array.isArray;
1010
1677
  function argsOrArgArray(args) {
1011
1678
  return args.length === 1 && isArray$1(args[0]) ? args[0] : args;
@@ -1018,6 +1685,30 @@
1018
1685
  });
1019
1686
  }
1020
1687
 
1688
+ function catchError(selector) {
1689
+ return operate(function (source, subscriber) {
1690
+ var innerSub = null;
1691
+ var syncUnsub = false;
1692
+ var handledResult;
1693
+ innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, function (err) {
1694
+ handledResult = innerFrom(selector(err, catchError(selector)(source)));
1695
+ if (innerSub) {
1696
+ innerSub.unsubscribe();
1697
+ innerSub = null;
1698
+ handledResult.subscribe(subscriber);
1699
+ }
1700
+ else {
1701
+ syncUnsub = true;
1702
+ }
1703
+ }));
1704
+ if (syncUnsub) {
1705
+ innerSub.unsubscribe();
1706
+ innerSub = null;
1707
+ handledResult.subscribe(subscriber);
1708
+ }
1709
+ });
1710
+ }
1711
+
1021
1712
  function combineLatest() {
1022
1713
  var args = [];
1023
1714
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -1039,6 +1730,100 @@
1039
1730
  return combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));
1040
1731
  }
1041
1732
 
1733
+ function share(options) {
1734
+ if (options === void 0) { options = {}; }
1735
+ var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;
1736
+ return function (wrapperSource) {
1737
+ var connection;
1738
+ var resetConnection;
1739
+ var subject;
1740
+ var refCount = 0;
1741
+ var hasCompleted = false;
1742
+ var hasErrored = false;
1743
+ var cancelReset = function () {
1744
+ resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();
1745
+ resetConnection = undefined;
1746
+ };
1747
+ var reset = function () {
1748
+ cancelReset();
1749
+ connection = subject = undefined;
1750
+ hasCompleted = hasErrored = false;
1751
+ };
1752
+ var resetAndUnsubscribe = function () {
1753
+ var conn = connection;
1754
+ reset();
1755
+ conn === null || conn === void 0 ? void 0 : conn.unsubscribe();
1756
+ };
1757
+ return operate(function (source, subscriber) {
1758
+ refCount++;
1759
+ if (!hasErrored && !hasCompleted) {
1760
+ cancelReset();
1761
+ }
1762
+ var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());
1763
+ subscriber.add(function () {
1764
+ refCount--;
1765
+ if (refCount === 0 && !hasErrored && !hasCompleted) {
1766
+ resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);
1767
+ }
1768
+ });
1769
+ dest.subscribe(subscriber);
1770
+ if (!connection &&
1771
+ refCount > 0) {
1772
+ connection = new SafeSubscriber({
1773
+ next: function (value) { return dest.next(value); },
1774
+ error: function (err) {
1775
+ hasErrored = true;
1776
+ cancelReset();
1777
+ resetConnection = handleReset(reset, resetOnError, err);
1778
+ dest.error(err);
1779
+ },
1780
+ complete: function () {
1781
+ hasCompleted = true;
1782
+ cancelReset();
1783
+ resetConnection = handleReset(reset, resetOnComplete);
1784
+ dest.complete();
1785
+ },
1786
+ });
1787
+ innerFrom(source).subscribe(connection);
1788
+ }
1789
+ })(wrapperSource);
1790
+ };
1791
+ }
1792
+ function handleReset(reset, on) {
1793
+ var args = [];
1794
+ for (var _i = 2; _i < arguments.length; _i++) {
1795
+ args[_i - 2] = arguments[_i];
1796
+ }
1797
+ if (on === true) {
1798
+ reset();
1799
+ return;
1800
+ }
1801
+ if (on === false) {
1802
+ return;
1803
+ }
1804
+ var onSubscriber = new SafeSubscriber({
1805
+ next: function () {
1806
+ onSubscriber.unsubscribe();
1807
+ reset();
1808
+ },
1809
+ });
1810
+ return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);
1811
+ }
1812
+
1813
+ function shareReplay(configOrBufferSize, windowTime, scheduler) {
1814
+ var bufferSize;
1815
+ var refCount = false;
1816
+ {
1817
+ bufferSize = (configOrBufferSize );
1818
+ }
1819
+ return share({
1820
+ connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },
1821
+ resetOnError: true,
1822
+ resetOnComplete: false,
1823
+ resetOnRefCountZero: refCount,
1824
+ });
1825
+ }
1826
+
1042
1827
  var s = { 0: 8203, 1: 8204, 2: 8205, 3: 8290, 4: 8291, 5: 8288, 6: 65279, 7: 8289, 8: 119155, 9: 119156, a: 119157, b: 119158, c: 119159, d: 119160, e: 119161, f: 119162 }, c = { 0: 8203, 1: 8204, 2: 8205, 3: 65279 }, u = new Array(4).fill(String.fromCodePoint(c[0])).join("");
1043
1828
  function E(t) {
1044
1829
  let e = JSON.stringify(t);
@@ -1264,7 +2049,7 @@
1264
2049
  if (!(/^\d{4}-\d{2}-\d{2}$/.test(apiVersion) && apiDate instanceof Date && apiDate.getTime() > 0))
1265
2050
  throw new Error("Invalid API version string, expected `1` or date in format `YYYY-MM-DD`");
1266
2051
  }
1267
- const validateApiPerspective = function(perspective) {
2052
+ function validateApiPerspective(perspective) {
1268
2053
  if (Array.isArray(perspective)) {
1269
2054
  for (const perspectiveValue of perspective)
1270
2055
  if (perspectiveValue !== "published" && perspectiveValue !== "drafts" && !(typeof perspectiveValue == "string" && perspectiveValue.startsWith("r") && perspectiveValue !== "raw"))
@@ -1284,7 +2069,8 @@
1284
2069
  "Invalid API perspective string, expected `published`, `previewDrafts` or `raw`"
1285
2070
  );
1286
2071
  }
1287
- }, initConfig = (config, prevConfig) => {
2072
+ }
2073
+ const initConfig = (config, prevConfig) => {
1288
2074
  const specifiedConfig = {
1289
2075
  ...prevConfig,
1290
2076
  ...config,
@@ -1325,6 +2111,112 @@
1325
2111
  const hostParts = newConfig.apiHost.split("://", 2), protocol = hostParts[0], host = hostParts[1], cdnHost = newConfig.isDefaultApi ? defaultCdnHost : host;
1326
2112
  return newConfig.useProjectHostname ? (newConfig.url = `${protocol}://${newConfig.projectId}.${host}/v${newConfig.apiVersion}`, newConfig.cdnUrl = `${protocol}://${newConfig.projectId}.${cdnHost}/v${newConfig.apiVersion}`) : (newConfig.url = `${newConfig.apiHost}/v${newConfig.apiVersion}`, newConfig.cdnUrl = newConfig.url), newConfig;
1327
2113
  };
2114
+ class ConnectionFailedError extends Error {
2115
+ name = "ConnectionFailedError";
2116
+ }
2117
+ class DisconnectError extends Error {
2118
+ name = "DisconnectError";
2119
+ reason;
2120
+ constructor(message, reason, options = {}) {
2121
+ super(message, options), this.reason = reason;
2122
+ }
2123
+ }
2124
+ class ChannelError extends Error {
2125
+ name = "ChannelError";
2126
+ data;
2127
+ constructor(message, data) {
2128
+ super(message), this.data = data;
2129
+ }
2130
+ }
2131
+ class MessageError extends Error {
2132
+ name = "MessageError";
2133
+ data;
2134
+ constructor(message, data, options = {}) {
2135
+ super(message, options), this.data = data;
2136
+ }
2137
+ }
2138
+ class MessageParseError extends Error {
2139
+ name = "MessageParseError";
2140
+ }
2141
+ const REQUIRED_EVENTS = ["channelError", "disconnect"];
2142
+ function connectEventSource(initEventSource, events) {
2143
+ return defer(() => {
2144
+ const es = initEventSource();
2145
+ return isObservable(es) ? es : of(es);
2146
+ }).pipe(mergeMap((es) => connectWithESInstance(es, events)));
2147
+ }
2148
+ function connectWithESInstance(es, events) {
2149
+ return new Observable((observer) => {
2150
+ const emitOpen = events.includes("open"), emitReconnect = events.includes("reconnect");
2151
+ function onError(evt) {
2152
+ if ("data" in evt) {
2153
+ const [parseError, event] = parseEvent(evt);
2154
+ observer.error(
2155
+ parseError ? new MessageParseError("Unable to parse EventSource error message", { cause: event }) : new MessageError((event?.data).message, event)
2156
+ );
2157
+ return;
2158
+ }
2159
+ es.readyState === es.CLOSED ? observer.error(new ConnectionFailedError("EventSource connection failed")) : emitReconnect && observer.next({ type: "reconnect" });
2160
+ }
2161
+ function onOpen() {
2162
+ observer.next({ type: "open" });
2163
+ }
2164
+ function onMessage(message) {
2165
+ const [parseError, event] = parseEvent(message);
2166
+ if (parseError) {
2167
+ observer.error(
2168
+ new MessageParseError("Unable to parse EventSource message", { cause: parseError })
2169
+ );
2170
+ return;
2171
+ }
2172
+ if (message.type === "channelError") {
2173
+ observer.error(new ChannelError(extractErrorMessage(event?.data), event.data));
2174
+ return;
2175
+ }
2176
+ if (message.type === "disconnect") {
2177
+ observer.error(
2178
+ new DisconnectError(
2179
+ `Server disconnected client: ${event.data?.reason || "unknown error"}`
2180
+ )
2181
+ );
2182
+ return;
2183
+ }
2184
+ observer.next({
2185
+ type: message.type,
2186
+ id: message.lastEventId,
2187
+ ...event.data ? { data: event.data } : {}
2188
+ });
2189
+ }
2190
+ es.addEventListener("error", onError), emitOpen && es.addEventListener("open", onOpen);
2191
+ const cleanedEvents = [.../* @__PURE__ */ new Set([...REQUIRED_EVENTS, ...events])].filter((type) => type !== "error" && type !== "open" && type !== "reconnect");
2192
+ return cleanedEvents.forEach((type) => es.addEventListener(type, onMessage)), () => {
2193
+ es.removeEventListener("error", onError), emitOpen && es.removeEventListener("open", onOpen), cleanedEvents.forEach((type) => es.removeEventListener(type, onMessage)), es.close();
2194
+ };
2195
+ });
2196
+ }
2197
+ function parseEvent(message) {
2198
+ try {
2199
+ const data = typeof message.data == "string" && JSON.parse(message.data);
2200
+ return [
2201
+ null,
2202
+ {
2203
+ type: message.type,
2204
+ id: message.lastEventId,
2205
+ ...isEmptyObject(data) ? {} : { data }
2206
+ }
2207
+ ];
2208
+ } catch (err) {
2209
+ return [err, null];
2210
+ }
2211
+ }
2212
+ function extractErrorMessage(err) {
2213
+ return err.error ? err.error.description ? err.error.description : typeof err.error == "string" ? err.error : JSON.stringify(err.error, null, 2) : err.message || "Unknown listener error";
2214
+ }
2215
+ function isEmptyObject(data) {
2216
+ for (const _ in data)
2217
+ return !1;
2218
+ return !0;
2219
+ }
1328
2220
  function getSelection(sel) {
1329
2221
  if (typeof sel == "string")
1330
2222
  return { id: sel };
@@ -1941,7 +2833,18 @@ ${selectionOpts}`);
1941
2833
  );
1942
2834
  }
1943
2835
  var defaults = (obj, defaults2) => Object.keys(defaults2).concat(Object.keys(obj)).reduce((target, prop) => (target[prop] = typeof obj[prop] > "u" ? defaults2[prop] : obj[prop], target), {});
1944
- const pick = (obj, props) => props.reduce((selection, prop) => (typeof obj[prop] > "u" || (selection[prop] = obj[prop]), selection), {}), MAX_URL_LENGTH = 14800, possibleOptions = [
2836
+ const pick = (obj, props) => props.reduce((selection, prop) => (typeof obj[prop] > "u" || (selection[prop] = obj[prop]), selection), {}), eventSourcePolyfill = defer(() => Promise.resolve().then(function () { return browser$1; })).pipe(
2837
+ map(({ default: EventSource2 }) => EventSource2),
2838
+ shareReplay(1)
2839
+ );
2840
+ function reconnectOnConnectionFailure() {
2841
+ return function(source) {
2842
+ return source.pipe(
2843
+ catchError((err, caught) => err instanceof ConnectionFailedError ? concat(of({ type: "reconnect" }), timer(1e3).pipe(mergeMap(() => caught))) : throwError(() => err))
2844
+ );
2845
+ };
2846
+ }
2847
+ const MAX_URL_LENGTH = 14800, possibleOptions = [
1945
2848
  "includePreviousRevision",
1946
2849
  "includeResult",
1947
2850
  "includeMutations",
@@ -1954,68 +2857,23 @@ ${selectionOpts}`);
1954
2857
  function _listen(query, params, opts = {}) {
1955
2858
  const { url, token, withCredentials, requestTagPrefix } = this.config(), tag = opts.tag && requestTagPrefix ? [requestTagPrefix, opts.tag].join(".") : opts.tag, options = { ...defaults(opts, defaultOptions), tag }, listenOpts = pick(options, possibleOptions), qs = encodeQueryString({ query, params, options: { tag, ...listenOpts } }), uri = `${url}${_getDataUrl(this, "listen", qs)}`;
1956
2859
  if (uri.length > MAX_URL_LENGTH)
1957
- return new Observable((observer) => observer.error(new Error("Query too large for listener")));
1958
- const listenFor = options.events ? options.events : ["mutation"], shouldEmitReconnect = listenFor.indexOf("reconnect") !== -1, esOptions = {};
2860
+ return throwError(() => new Error("Query too large for listener"));
2861
+ const listenFor = options.events ? options.events : ["mutation"], esOptions = {};
1959
2862
  return (token || withCredentials) && (esOptions.withCredentials = !0), token && (esOptions.headers = {
1960
2863
  Authorization: `Bearer ${token}`
1961
- }), new Observable((observer) => {
1962
- let es, reconnectTimer, stopped = !1, unsubscribed = !1;
1963
- open();
1964
- function onError() {
1965
- stopped || (emitReconnect(), !stopped && es.readyState === es.CLOSED && (unsubscribe(), clearTimeout(reconnectTimer), reconnectTimer = setTimeout(open, 100)));
1966
- }
1967
- function onChannelError(err) {
1968
- observer.error(cooerceError(err));
1969
- }
1970
- function onMessage(evt) {
1971
- const event = parseEvent$1(evt);
1972
- return event instanceof Error ? observer.error(event) : observer.next(event);
1973
- }
1974
- function onDisconnect() {
1975
- stopped = !0, unsubscribe(), observer.complete();
1976
- }
1977
- function unsubscribe() {
1978
- es && (es.removeEventListener("error", onError), es.removeEventListener("channelError", onChannelError), es.removeEventListener("disconnect", onDisconnect), listenFor.forEach((type) => es.removeEventListener(type, onMessage)), es.close());
1979
- }
1980
- function emitReconnect() {
1981
- shouldEmitReconnect && observer.next({ type: "reconnect" });
1982
- }
1983
- async function getEventSource() {
1984
- const { default: EventSource2 } = await Promise.resolve().then(function () { return browser$1; });
1985
- if (unsubscribed)
1986
- return;
1987
- const evs = new EventSource2(uri, esOptions);
1988
- return evs.addEventListener("error", onError), evs.addEventListener("channelError", onChannelError), evs.addEventListener("disconnect", onDisconnect), listenFor.forEach((type) => evs.addEventListener(type, onMessage)), evs;
1989
- }
1990
- function open() {
1991
- getEventSource().then((eventSource) => {
1992
- eventSource && (es = eventSource, unsubscribed && unsubscribe());
1993
- }).catch((reason) => {
1994
- observer.error(reason), stop();
1995
- });
1996
- }
1997
- function stop() {
1998
- stopped = !0, unsubscribe(), unsubscribed = !0;
1999
- }
2000
- return stop;
2001
- });
2002
- }
2003
- function parseEvent$1(event) {
2004
- try {
2005
- const data = event.data && JSON.parse(event.data) || {};
2006
- return Object.assign({ type: event.type }, data);
2007
- } catch (err) {
2008
- return err;
2009
- }
2010
- }
2011
- function cooerceError(err) {
2012
- if (err instanceof Error)
2013
- return err;
2014
- const evt = parseEvent$1(err);
2015
- return evt instanceof Error ? evt : new Error(extractErrorMessage(evt));
2016
- }
2017
- function extractErrorMessage(err) {
2018
- return err.error ? err.error.description ? err.error.description : typeof err.error == "string" ? err.error : JSON.stringify(err.error, null, 2) : err.message || "Unknown listener error";
2864
+ }), connectEventSource(() => (
2865
+ // use polyfill if there is no global EventSource or if we need to set headers
2866
+ (typeof EventSource > "u" || esOptions.headers ? eventSourcePolyfill : of(EventSource)).pipe(map((EventSource2) => new EventSource2(uri, esOptions)))
2867
+ ), listenFor).pipe(
2868
+ reconnectOnConnectionFailure(),
2869
+ filter((event) => listenFor.includes(event.type)),
2870
+ map(
2871
+ (event) => ({
2872
+ type: event.type,
2873
+ ..."data" in event ? event.data : {}
2874
+ })
2875
+ )
2876
+ );
2019
2877
  }
2020
2878
  const requiredApiVersion = "2021-03-26";
2021
2879
  class LiveClient {
@@ -2051,75 +2909,53 @@ ${selectionOpts}`);
2051
2909
  );
2052
2910
  const path = _getDataUrl(this.#client, "live/events"), url = new URL(this.#client.getUrl(path, !1)), tag = _tag && requestTagPrefix ? [requestTagPrefix, _tag].join(".") : _tag;
2053
2911
  tag && url.searchParams.set("tag", tag), includeDrafts && url.searchParams.set("includeDrafts", "true");
2054
- const listenFor = ["restart", "message", "welcome", "reconnect"], esOptions = {};
2055
- return includeDrafts && token && (esOptions.headers = {
2912
+ const esOptions = {};
2913
+ includeDrafts && token && (esOptions.headers = {
2056
2914
  Authorization: `Bearer ${token}`
2057
- }), includeDrafts && withCredentials && (esOptions.withCredentials = !0), new Observable((observer) => {
2058
- let es, reconnectTimer, stopped = !1, unsubscribed = !1;
2059
- open();
2060
- function onError(evt) {
2061
- if (!stopped) {
2062
- if ("data" in evt) {
2063
- const event = parseEvent(evt);
2064
- observer.error(new Error(event.message, { cause: event }));
2065
- }
2066
- es.readyState === es.CLOSED && (unsubscribe(), clearTimeout(reconnectTimer), reconnectTimer = setTimeout(open, 100));
2067
- }
2068
- }
2069
- function onMessage(evt) {
2070
- const event = parseEvent(evt);
2071
- return event instanceof Error ? observer.error(event) : observer.next(event);
2072
- }
2073
- function unsubscribe() {
2074
- if (es) {
2075
- es.removeEventListener("error", onError);
2076
- for (const type of listenFor)
2077
- es.removeEventListener(type, onMessage);
2078
- es.close();
2915
+ }), includeDrafts && withCredentials && (esOptions.withCredentials = !0);
2916
+ const events = connectEventSource(() => (
2917
+ // use polyfill if there is no global EventSource or if we need to set headers
2918
+ (typeof EventSource > "u" || esOptions.headers ? eventSourcePolyfill : of(EventSource)).pipe(map((EventSource2) => new EventSource2(url.href, esOptions)))
2919
+ ), [
2920
+ "message",
2921
+ "restart",
2922
+ "welcome",
2923
+ "reconnect"
2924
+ ]).pipe(
2925
+ reconnectOnConnectionFailure(),
2926
+ map((event) => {
2927
+ if (event.type === "message") {
2928
+ const { data, ...rest } = event;
2929
+ return { ...rest, tags: data.tags };
2079
2930
  }
2931
+ return event;
2932
+ })
2933
+ ), checkCors = fetchObservable(url, {
2934
+ method: "OPTIONS",
2935
+ mode: "cors",
2936
+ credentials: esOptions.withCredentials ? "include" : "omit",
2937
+ headers: esOptions.headers
2938
+ }).pipe(
2939
+ mergeMap(() => EMPTY),
2940
+ catchError(() => {
2941
+ throw new CorsOriginError({ projectId: projectId2 });
2942
+ })
2943
+ );
2944
+ return concat(checkCors, events);
2945
+ }
2946
+ }
2947
+ function fetchObservable(url, init) {
2948
+ return new Observable((observer) => {
2949
+ const controller = new AbortController(), signal = controller.signal;
2950
+ return fetch(url, { ...init, signal: controller.signal }).then(
2951
+ (response) => {
2952
+ observer.next(response), observer.complete();
2953
+ },
2954
+ (err) => {
2955
+ signal.aborted || observer.error(err);
2080
2956
  }
2081
- async function getEventSource() {
2082
- const EventSourceImplementation = typeof EventSource > "u" || esOptions.headers || esOptions.withCredentials ? (await Promise.resolve().then(function () { return browser$1; })).default : EventSource;
2083
- if (unsubscribed)
2084
- return;
2085
- try {
2086
- if (await fetch(url, {
2087
- method: "OPTIONS",
2088
- mode: "cors",
2089
- credentials: esOptions.withCredentials ? "include" : "omit",
2090
- headers: esOptions.headers
2091
- }), unsubscribed)
2092
- return;
2093
- } catch {
2094
- throw new CorsOriginError({ projectId: projectId2 });
2095
- }
2096
- const evs = new EventSourceImplementation(url.toString(), esOptions);
2097
- evs.addEventListener("error", onError);
2098
- for (const type of listenFor)
2099
- evs.addEventListener(type, onMessage);
2100
- return evs;
2101
- }
2102
- function open() {
2103
- getEventSource().then((eventSource) => {
2104
- eventSource && (es = eventSource, unsubscribed && unsubscribe());
2105
- }).catch((reason) => {
2106
- observer.error(reason), stop();
2107
- });
2108
- }
2109
- function stop() {
2110
- stopped = !0, unsubscribe(), unsubscribed = !0;
2111
- }
2112
- return stop;
2113
- });
2114
- }
2115
- }
2116
- function parseEvent(event) {
2117
- try {
2118
- const data = event.data && JSON.parse(event.data) || {};
2119
- return { type: event.type, id: event.lastEventId, ...data };
2120
- } catch (err) {
2121
- return err;
2122
- }
2957
+ ), () => controller.abort();
2958
+ });
2123
2959
  }
2124
2960
  class ObservableDatasetsClient {
2125
2961
  #client;
@@ -4053,15 +4889,20 @@ ${selectionOpts}`);
4053
4889
  var browserExports = /*@__PURE__*/ requireBrowser();
4054
4890
  var browser = /*@__PURE__*/getDefaultExportFromCjs(browserExports);
4055
4891
 
4056
- var browser$1 = /*#__PURE__*/Object.freeze({
4892
+ var browser$1 = /*#__PURE__*/_mergeNamespaces({
4057
4893
  __proto__: null,
4058
4894
  default: browser
4059
- });
4895
+ }, [browserExports]);
4060
4896
 
4061
4897
  exports.BasePatch = BasePatch;
4062
4898
  exports.BaseTransaction = BaseTransaction;
4899
+ exports.ChannelError = ChannelError;
4063
4900
  exports.ClientError = ClientError;
4901
+ exports.ConnectionFailedError = ConnectionFailedError;
4064
4902
  exports.CorsOriginError = CorsOriginError;
4903
+ exports.DisconnectError = DisconnectError;
4904
+ exports.MessageError = MessageError;
4905
+ exports.MessageParseError = MessageParseError;
4065
4906
  exports.ObservablePatch = ObservablePatch;
4066
4907
  exports.ObservableSanityClient = ObservableSanityClient;
4067
4908
  exports.ObservableTransaction = ObservableTransaction;
@@ -4069,6 +4910,7 @@ ${selectionOpts}`);
4069
4910
  exports.SanityClient = SanityClient;
4070
4911
  exports.ServerError = ServerError;
4071
4912
  exports.Transaction = Transaction;
4913
+ exports.connectEventSource = connectEventSource;
4072
4914
  exports.createClient = createClient;
4073
4915
  exports.default = deprecatedCreateClient;
4074
4916
  exports.requester = requester;