@warp-drive/ember 0.0.0-alpha.9 → 0.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,6 +22,14 @@
22
22
  pnpm install @warp-drive/ember
23
23
  ```
24
24
 
25
+ **Tagged Releases**
26
+
27
+ - ![NPM Canary Version](https://img.shields.io/npm/v/%40warp-drive%2Fember/canary?label=@canary&color=FFBF00)
28
+ - ![NPM Beta Version](https://img.shields.io/npm/v/%40warp-drive%2Fember/bet?label=@beta&color=ff00ff)
29
+ - ![NPM Stable Version](https://img.shields.io/npm/v/%40warp-drive%2Fember/latest?label=@latest&color=90EE90)
30
+ - ![NPM LTS Version](https://img.shields.io/npm/v/%40warp-drive%2Fember/lts?label=@lts&color=0096FF)
31
+ - ![NPM LTS-4-12 Version](https://img.shields.io/npm/v/%40warp-drive%2Fember/lts-4-12?label=@lts-4-12&color=bbbbbb)
32
+
25
33
  ## About
26
34
 
27
35
  This library provides reactive utilities for working with promises and requests, building over these primitives to provide functions and components that enable you to build robust performant apps with elegant control flow
@@ -30,10 +38,10 @@ Documentation
30
38
 
31
39
  - [PromiseState](#promisestate)
32
40
  - [getPromiseState](#getpromisestate)
33
- - [\<Await />](#await)
41
+ - [\<Await />](#await-)
34
42
  - [RequestState](#requeststate)
35
43
  - [getRequestState](#getrequeststate)
36
- - [\<Request />](#request)
44
+ - [\<Request />](#request-)
37
45
 
38
46
  ---
39
47
 
@@ -210,6 +218,9 @@ import { Await } from '@warp-drive/ember';
210
218
  </template>
211
219
  ```
212
220
 
221
+ When using the Await component, if no error block is provided and the promise rejects,
222
+ the error will be thrown.
223
+
213
224
  ### RequestState
214
225
 
215
226
  RequestState extends PromiseState to provide a reactive wrapper for a request `Future` which
@@ -297,7 +308,7 @@ import { Request } from '@warp-drive/ember';
297
308
  <template>
298
309
  <Request @request={{@request}}>
299
310
  <:loading as |state|>
300
- <Spinner @percentDone={{state.completeRatio}} />
311
+ <Spinner @percentDone={{state.completedRatio}} />
301
312
  <button {{on "click" state.abort}}>Cancel</button>
302
313
  </:loading>
303
314
 
@@ -312,6 +323,10 @@ import { Request } from '@warp-drive/ember';
312
323
  </template>
313
324
  ```
314
325
 
326
+ When using the Await component, if no error block is provided and the request rejects,
327
+ the error will be thrown. Cancellation errors are not rethrown if no error block or
328
+ cancellation block is present.
329
+
315
330
  - Streaming Data
316
331
 
317
332
  The loading state exposes the download `ReadableStream` instance for consumption
@@ -357,7 +372,36 @@ import { Request } from '@warp-drive/ember';
357
372
  If a request is aborted but no cancelled block is present, the error will be given
358
373
  to the error block to handle.
359
374
 
360
- If no error block is present, the error will be rethrown.
375
+ If no error block is present, the cancellation error will be swallowed.
376
+
377
+ - retry
378
+
379
+ Cancelled and error'd requests may be retried,
380
+ retry will reuse the error, cancelled and loading
381
+ blocks as appropriate.
382
+
383
+ ```gjs
384
+ import { Request } from '@warp-drive/ember';
385
+ import { on } from '@ember/modifier';
386
+
387
+ <template>
388
+ <Request @request={{@request}}>
389
+ <:cancelled as |error state|>
390
+ <h2>The Request Cancelled</h2>
391
+ <button {{on "click" state.retry}}>Retry</button>
392
+ </:cancelled>
393
+
394
+ <:error as |error state|>
395
+ <ErrorForm @error={{error}} />
396
+ <button {{on "click" state.retry}}>Retry</button>
397
+ </:error>
398
+
399
+ <:content as |result|>
400
+ <h1>{{result.title}}</h1>
401
+ </:content>
402
+ </Request>
403
+ </template>
404
+ ```
361
405
 
362
406
  - Reloading states
363
407
 
@@ -426,21 +470,36 @@ import { Request } from '@warp-drive/ember';
426
470
  </template>
427
471
  ```
428
472
 
429
- - AutoRefresh behavior
473
+ - Autorefresh behavior
430
474
 
431
475
  Requests can be made to automatically refresh when a browser window or tab comes back to the
432
- foreground after being backgrounded.
476
+ foreground after being backgrounded or when the network reports as being online after having
477
+ been offline.
433
478
 
434
479
  ```gjs
435
480
  import { Request } from '@warp-drive/ember';
436
481
 
437
482
  <template>
438
- <Request @request={{@request}} @autoRefresh={{true}}>
483
+ <Request @request={{@request}} @autorefresh={{true}}>
439
484
  <!-- ... -->
440
485
  </Request>
441
486
  </template>
442
487
  ```
443
488
 
489
+ By default, an autorefresh will only occur if the browser was backgrounded or offline for more than
490
+ 30s before coming back available. This amount of time can be tweaked by setting the number of milliseconds
491
+ via `@autorefreshThreshold`.
492
+
493
+ The behavior of the fetch initiated by the autorefresh can also be adjusted by `@autorefreshBehavior`
494
+
495
+ Options are:
496
+
497
+ - `refresh` update while continuing to show the current state.
498
+ - `reload` update and show the loading state until update completes)
499
+ - `delegate` (**default**) trigger the request, but let the cache handler decide whether the update should occur or if the cache is still valid.
500
+
501
+ ---
502
+
444
503
  Similarly, refresh could be set up on a timer or on a websocket subscription by using the yielded
445
504
  refresh function and passing it to another component.
446
505
 
@@ -448,7 +507,7 @@ refresh function and passing it to another component.
448
507
  import { Request } from '@warp-drive/ember';
449
508
 
450
509
  <template>
451
- <Request @request={{@request}} @autoRefresh={{true}}>
510
+ <Request @request={{@request}}>
452
511
  <:content as |result state|>
453
512
  <h1>{{result.title}}</h1>
454
513
 
package/addon-main.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- const { addonV1Shim } = require('@embroider/addon-shim');
3
+ const { addonShim } = require('@warp-drive/build-config/addon-shim.cjs');
4
4
 
5
- module.exports = addonV1Shim(__dirname);
5
+ module.exports = addonShim(__dirname);
@@ -1,16 +1,17 @@
1
1
  import { tracked, cached } from '@glimmer/tracking';
2
2
  import { getPromiseResult, setPromiseResult } from '@ember-data/request';
3
- import { assert } from '@ember/debug';
4
3
  import { service } from '@ember/service';
5
4
  import Component from '@glimmer/component';
6
- import { macroCondition, moduleExists, importSync } from '@embroider/macros';
5
+ import { macroCondition, moduleExists, importSync, getGlobalConfig } from '@embroider/macros';
6
+ import { EnableHydration } from '@warp-drive/core-types/request';
7
7
  import { precompileTemplate } from '@ember/template-compilation';
8
8
  import { setComponentTemplate } from '@ember/component';
9
-
10
9
  var __defProp = Object.defineProperty;
11
10
  var __export = (target, all) => {
12
- for (var name in all)
13
- __defProp(target, name, { get: all[name], enumerable: true });
11
+ for (var name in all) __defProp(target, name, {
12
+ get: all[name],
13
+ enumerable: true
14
+ });
14
15
  };
15
16
 
16
17
  // src/runtime.ts
@@ -24,11 +25,11 @@ __export(runtime_exports, {
24
25
  n: () => decorateMethodV2,
25
26
  p: () => decoratePOJO
26
27
  });
27
- var deferred = /* @__PURE__ */ new WeakMap();
28
+ var deferred = /* @__PURE__ */new WeakMap();
28
29
  function deferDecorator(proto, prop, desc) {
29
30
  let map = deferred.get(proto);
30
31
  if (!map) {
31
- map = /* @__PURE__ */ new Map();
32
+ map = /* @__PURE__ */new Map();
32
33
  deferred.set(proto, map);
33
34
  }
34
35
  map.set(prop, desc);
@@ -65,12 +66,16 @@ function decorateFieldV2(prototype, prop, decorators, initializer) {
65
66
  deferDecorator(prototype, prop, desc);
66
67
  }
67
68
  }
68
- function decorateMethodV1({ prototype }, prop, decorators) {
69
+ function decorateMethodV1({
70
+ prototype
71
+ }, prop, decorators) {
69
72
  return decorateMethodV2(prototype, prop, decorators);
70
73
  }
71
74
  function decorateMethodV2(prototype, prop, decorators) {
72
75
  const origDesc = Object.getOwnPropertyDescriptor(prototype, prop);
73
- let desc = { ...origDesc };
76
+ let desc = {
77
+ ...origDesc
78
+ };
74
79
  for (let decorator of decorators) {
75
80
  desc = decorator(prototype, prop, desc) || desc;
76
81
  }
@@ -92,10 +97,7 @@ function initializeDeferredDecorator(target, prop) {
92
97
  }
93
98
  }
94
99
  function decorateClass(target, decorators) {
95
- return decorators.reduce(
96
- (accum, decorator) => decorator(accum) || accum,
97
- target
98
- );
100
+ return decorators.reduce((accum, decorator) => decorator(accum) || accum, target);
99
101
  }
100
102
  function decoratePOJO(pojo, decorated) {
101
103
  for (let [type, prop, decorators] of decorated) {
@@ -123,7 +125,6 @@ function decoratePojoField(pojo, prop, decorators) {
123
125
  }
124
126
  Object.defineProperty(pojo, prop, desc);
125
127
  }
126
-
127
128
  const RequestCache = new WeakMap();
128
129
  function isAbortError(error) {
129
130
  return error instanceof DOMException && error.name === 'AbortError';
@@ -339,11 +340,11 @@ class RequestLoadingState {
339
340
  get elapsedTime() {
340
341
  return (this.endTime || this.lastPacketTime) - this.startTime;
341
342
  }
342
- get completeRatio() {
343
+ get completedRatio() {
343
344
  return this.sizeHint ? this.bytesLoaded / this.sizeHint : 0;
344
345
  }
345
346
  get remainingRatio() {
346
- return 1 - this.completeRatio;
347
+ return 1 - this.completedRatio;
347
348
  }
348
349
  get duration() {
349
350
  return this.endTime - this.startTime;
@@ -355,9 +356,9 @@ class RequestLoadingState {
355
356
  constructor(future) {
356
357
  this._future = future;
357
358
  }
358
- abort() {
359
+ abort = () => {
359
360
  this._future.abort();
360
- }
361
+ };
361
362
  }
362
363
  class RequestState {
363
364
  #request;
@@ -460,7 +461,6 @@ function getRequestState(future) {
460
461
  }
461
462
  return state;
462
463
  }
463
-
464
464
  const PromiseCache = new WeakMap();
465
465
  class PromiseState {
466
466
  static {
@@ -526,23 +526,29 @@ class PromiseState {
526
526
  }
527
527
  }
528
528
  }
529
+ const LegacyPromiseProxy = Symbol.for('LegacyPromiseProxy');
530
+ function isLegacyAwaitable(promise) {
531
+ return LegacyPromiseProxy in promise && 'promise' in promise && promise[LegacyPromiseProxy] === true;
532
+ }
533
+ function getPromise(promise) {
534
+ return isLegacyAwaitable(promise) ? promise.promise : promise;
535
+ }
529
536
  function getPromiseState(promise) {
530
- let state = PromiseCache.get(promise);
537
+ const _promise = getPromise(promise);
538
+ let state = PromiseCache.get(_promise);
531
539
  if (!state) {
532
- state = new PromiseState(promise);
533
- PromiseCache.set(promise, state);
540
+ state = new PromiseState(_promise);
541
+ PromiseCache.set(_promise, state);
534
542
  }
535
543
  return state;
536
544
  }
537
-
538
- function notNull(x1) {
539
- assert('Expected a non-null value, but got null', x1 !== null);
540
- return x1;
541
- }
542
545
  const and = (x1, y1) => Boolean(x1 && y1);
543
546
  class Throw extends Component {
544
547
  constructor(owner1, args1) {
545
548
  super(owner1, args1);
549
+ // this error is opaque (user supplied) so we don't validate it
550
+ // as an Error instance.
551
+ // eslint-disable-next-line @typescript-eslint/no-throw-literal
546
552
  throw this.args.error;
547
553
  }
548
554
  static {
@@ -555,18 +561,33 @@ class Await extends Component {
555
561
  get state() {
556
562
  return getPromiseState(this.args.promise);
557
563
  }
564
+ get error() {
565
+ return this.state.error;
566
+ }
567
+ get result() {
568
+ return this.state.result;
569
+ }
558
570
  static {
559
- setComponentTemplate(precompileTemplate("\n {{#if this.state.isPending}}\n {{yield to=\"pending\"}}\n {{else if (and this.state.isError (has-block \"error\"))}}\n {{yield (notNull this.state.error) to=\"error\"}}\n {{else if this.state.isSuccess}}\n {{yield (notNull this.state.result) to=\"success\"}}\n {{else}}\n <Throw @error={{(notNull this.state.error)}} />\n {{/if}}\n ", {
571
+ setComponentTemplate(precompileTemplate("\n {{#if this.state.isPending}}\n {{yield to=\"pending\"}}\n {{else if (and this.state.isError (has-block \"error\"))}}\n {{yield this.error to=\"error\"}}\n {{else if this.state.isSuccess}}\n {{yield this.result to=\"success\"}}\n {{else}}\n <Throw @error={{this.error}} />\n {{/if}}\n ", {
572
+ strictMode: true,
560
573
  scope: () => ({
561
574
  and,
562
- notNull,
563
575
  Throw
564
- }),
565
- strictMode: true
576
+ })
566
577
  }), this);
567
578
  }
568
579
  }
569
-
580
+ function notNull(x1) {
581
+ macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
582
+ if (!test) {
583
+ throw new Error('Expected a non-null value, but got null');
584
+ }
585
+ })(x1 !== null) : {};
586
+ return x1;
587
+ }
588
+ const not = x1 => !x1;
589
+ // default to 30 seconds unavailable before we refresh
590
+ const DEFAULT_DEADLINE = 30_000;
570
591
  let provide = service;
571
592
  if (macroCondition(moduleExists('ember-provide-consume-context'))) {
572
593
  const {
@@ -574,6 +595,9 @@ if (macroCondition(moduleExists('ember-provide-consume-context'))) {
574
595
  } = importSync('ember-provide-consume-context');
575
596
  provide = consume;
576
597
  }
598
+ function isNeverString(val1) {
599
+ return val1;
600
+ }
577
601
  class Request extends Component {
578
602
  static {
579
603
  decorateFieldV2(this.prototype, "_store", [provide('store')]);
@@ -582,19 +606,206 @@ class Request extends Component {
582
606
  /**
583
607
  * @internal
584
608
  */
585
- retry = () => {};
586
- reload = () => {};
587
- refresh = () => {};
609
+ static {
610
+ decorateFieldV2(this.prototype, "isOnline", [tracked], function () {
611
+ return true;
612
+ });
613
+ }
614
+ #isOnline = (initializeDeferredDecorator(this, "isOnline"), void 0);
615
+ static {
616
+ decorateFieldV2(this.prototype, "isHidden", [tracked], function () {
617
+ return true;
618
+ });
619
+ }
620
+ #isHidden = (initializeDeferredDecorator(this, "isHidden"), void 0);
621
+ static {
622
+ decorateFieldV2(this.prototype, "isRefreshing", [tracked], function () {
623
+ return false;
624
+ });
625
+ }
626
+ #isRefreshing = (initializeDeferredDecorator(this, "isRefreshing"), void 0);
627
+ static {
628
+ decorateFieldV2(this.prototype, "_localRequest", [tracked]);
629
+ }
630
+ #_localRequest = (initializeDeferredDecorator(this, "_localRequest"), void 0);
631
+ static {
632
+ decorateFieldV2(this.prototype, "_latestRequest", [tracked]);
633
+ }
634
+ #_latestRequest = (initializeDeferredDecorator(this, "_latestRequest"), void 0);
635
+ unavailableStart;
636
+ onlineChanged;
637
+ backgroundChanged;
638
+ _originalRequest;
639
+ _originalQuery;
640
+ constructor(owner1, args1) {
641
+ super(owner1, args1);
642
+ this.installListeners();
643
+ }
644
+ installListeners() {
645
+ if (typeof window === 'undefined') {
646
+ return;
647
+ }
648
+ this.isOnline = window.navigator.onLine;
649
+ this.unavailableStart = this.isOnline ? null : Date.now();
650
+ this.isHidden = document.visibilityState === 'hidden';
651
+ this.onlineChanged = event1 => {
652
+ this.isOnline = event1.type === 'online';
653
+ if (event1.type === 'offline' && this.unavailableStart === null) {
654
+ this.unavailableStart = Date.now();
655
+ }
656
+ this.maybeUpdate();
657
+ };
658
+ this.backgroundChanged = () => {
659
+ const isHidden1 = document.visibilityState === 'hidden';
660
+ this.isHidden = isHidden1;
661
+ if (isHidden1 && this.unavailableStart === null) {
662
+ this.unavailableStart = Date.now();
663
+ }
664
+ this.maybeUpdate();
665
+ };
666
+ window.addEventListener('online', this.onlineChanged, {
667
+ passive: true,
668
+ capture: true
669
+ });
670
+ window.addEventListener('offline', this.onlineChanged, {
671
+ passive: true,
672
+ capture: true
673
+ });
674
+ document.addEventListener('visibilitychange', this.backgroundChanged, {
675
+ passive: true,
676
+ capture: true
677
+ });
678
+ }
679
+ maybeUpdate(mode1) {
680
+ if (this.isOnline && !this.isHidden && (mode1 || this.args.autorefresh)) {
681
+ const deadline1 = typeof this.args.autorefreshThreshold === 'number' ? this.args.autorefreshThreshold : DEFAULT_DEADLINE;
682
+ const shouldAttempt1 = mode1 || this.unavailableStart && Date.now() - this.unavailableStart > deadline1;
683
+ this.unavailableStart = null;
684
+ if (shouldAttempt1) {
685
+ const request1 = Object.assign({}, this.reqState.request);
686
+ const val1 = mode1 ?? this.args.autorefreshBehavior ?? 'policy';
687
+ switch (val1) {
688
+ case 'reload':
689
+ request1.cacheOptions = Object.assign({}, request1.cacheOptions, {
690
+ reload: true
691
+ });
692
+ break;
693
+ case 'refresh':
694
+ request1.cacheOptions = Object.assign({}, request1.cacheOptions, {
695
+ backgroundReload: true
696
+ });
697
+ break;
698
+ case 'policy':
699
+ break;
700
+ default:
701
+ throw new Error(`Invalid ${mode1 ? 'update mode' : '@autorefreshBehavior'} for <Request />: ${isNeverString(val1)}`);
702
+ }
703
+ const wasStoreRequest1 = request1[EnableHydration] === true;
704
+ macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
705
+ if (!test) {
706
+ throw new Error(`Cannot supply a different store via context than was used to create the request`);
707
+ }
708
+ })(!request1.store || request1.store === this.store) : {};
709
+ this._latestRequest = wasStoreRequest1 ? this.store.request(request1) : this.store.requestManager.request(request1);
710
+ if (val1 !== 'refresh') {
711
+ this._localRequest = this._latestRequest;
712
+ }
713
+ return;
714
+ }
715
+ }
716
+ if (mode1) {
717
+ throw new Error(`Reload not available: the network is not online or the tab is hidden`);
718
+ }
719
+ }
720
+ retry = async () => {
721
+ this.maybeUpdate('reload');
722
+ await this._localRequest;
723
+ };
724
+ refresh = async () => {
725
+ this.isRefreshing = true;
726
+ this.maybeUpdate('refresh');
727
+ try {
728
+ await this._latestRequest;
729
+ } finally {
730
+ this.isRefreshing = false;
731
+ }
732
+ };
733
+ get errorFeatures() {
734
+ return {
735
+ isHidden: this.isHidden,
736
+ isOnline: this.isOnline,
737
+ retry: this.retry
738
+ };
739
+ }
740
+ static {
741
+ decorateMethodV2(this.prototype, "errorFeatures", [cached]);
742
+ }
743
+ get contentFeatures() {
744
+ const feat1 = {
745
+ isHidden: this.isHidden,
746
+ isOnline: this.isOnline,
747
+ reload: this.retry,
748
+ refresh: this.refresh,
749
+ isRefreshing: this.isRefreshing,
750
+ latestRequest: this._latestRequest
751
+ };
752
+ if (feat1.isRefreshing) {
753
+ feat1.abort = () => {
754
+ this._latestRequest?.abort();
755
+ };
756
+ }
757
+ return feat1;
758
+ }
759
+ static {
760
+ decorateMethodV2(this.prototype, "contentFeatures", [cached]);
761
+ }
762
+ willDestroy() {
763
+ if (typeof window === 'undefined') {
764
+ return;
765
+ }
766
+ window.removeEventListener('online', this.onlineChanged, {
767
+ passive: true,
768
+ capture: true
769
+ });
770
+ window.removeEventListener('offline', this.onlineChanged, {
771
+ passive: true,
772
+ capture: true
773
+ });
774
+ document.removeEventListener('visibilitychange', this.backgroundChanged, {
775
+ passive: true,
776
+ capture: true
777
+ });
778
+ }
588
779
  get request() {
589
780
  const {
590
781
  request: request1,
591
782
  query: query1
592
783
  } = this.args;
593
- assert(`Cannot use both @request and @query args with the <Request> component`, !request1 || !query1);
784
+ macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
785
+ if (!test) {
786
+ throw new Error(`Cannot use both @request and @query args with the <Request> component`);
787
+ }
788
+ })(!request1 || !query1) : {};
789
+ const {
790
+ _localRequest: _localRequest1,
791
+ _originalRequest: _originalRequest1,
792
+ _originalQuery: _originalQuery1
793
+ } = this;
794
+ const isOriginalRequest1 = request1 === _originalRequest1 && query1 === _originalQuery1;
795
+ if (_localRequest1 && isOriginalRequest1) {
796
+ return _localRequest1;
797
+ }
798
+ // update state checks for the next time
799
+ this._originalQuery = query1;
800
+ this._originalRequest = request1;
594
801
  if (request1) {
595
802
  return request1;
596
803
  }
597
- assert(`You must provide either @request or an @query arg with the <Request> component`, query1);
804
+ macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
805
+ if (!test) {
806
+ throw new Error(`You must provide either @request or an @query arg with the <Request> component`);
807
+ }
808
+ })(query1) : {};
598
809
  return this.store.request(query1);
599
810
  }
600
811
  static {
@@ -602,23 +813,29 @@ class Request extends Component {
602
813
  }
603
814
  get store() {
604
815
  const store1 = this.args.store || this._store;
605
- assert(moduleExists('ember-provide-consume-context') ? `No store was provided to the <Request> component. Either provide a store via the @store arg or via the context API provided by ember-provide-consume-context.` : `No store was provided to the <Request> component. Either provide a store via the @store arg or by registering a store service.`, store1);
816
+ macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
817
+ if (!test) {
818
+ throw new Error(moduleExists('ember-provide-consume-context') ? `No store was provided to the <Request> component. Either provide a store via the @store arg or via the context API provided by ember-provide-consume-context.` : `No store was provided to the <Request> component. Either provide a store via the @store arg or by registering a store service.`);
819
+ }
820
+ })(store1) : {};
606
821
  return store1;
607
822
  }
608
823
  get reqState() {
609
824
  return getRequestState(this.request);
610
825
  }
826
+ get result() {
827
+ return this.reqState.result;
828
+ }
611
829
  static {
612
- setComponentTemplate(precompileTemplate("\n {{#if this.reqState.isLoading}}\n {{yield this.reqState.loadingState to=\"loading\"}}\n {{else if (and this.reqState.isCancelled (has-block \"cancelled\"))}}\n {{yield (notNull this.reqState.error) to=\"cancelled\"}}\n {{else if (and this.reqState.isError (has-block \"error\"))}}\n {{yield (notNull this.reqState.error) to=\"error\"}}\n {{else if this.reqState.isSuccess}}\n {{yield (notNull this.reqState.result) to=\"content\"}}\n {{else}}\n <Throw @error={{(notNull this.reqState.error)}} />\n {{/if}}\n ", {
830
+ setComponentTemplate(precompileTemplate("\n {{#if this.reqState.isLoading}}\n {{yield this.reqState.loadingState to=\"loading\"}}\n {{else if (and this.reqState.isCancelled (has-block \"cancelled\"))}}\n {{yield (notNull this.reqState.error) this.errorFeatures to=\"cancelled\"}}\n {{else if (and this.reqState.isError (has-block \"error\"))}}\n {{yield (notNull this.reqState.error) this.errorFeatures to=\"error\"}}\n {{else if this.reqState.isSuccess}}\n {{yield this.result this.contentFeatures to=\"content\"}}\n {{else if (not this.reqState.isCancelled)}}\n <Throw @error={{(notNull this.reqState.error)}} />\n {{/if}}\n {{yield this.reqState to=\"always\"}}\n ", {
831
+ strictMode: true,
613
832
  scope: () => ({
614
833
  and,
615
834
  notNull,
835
+ not,
616
836
  Throw
617
- }),
618
- strictMode: true
837
+ })
619
838
  }), this);
620
839
  }
621
840
  }
622
-
623
- export { Await, Request, Throw, getPromiseState, getRequestState };
624
- //# sourceMappingURL=index.js.map
841
+ export { Await, Request, Throw, getPromiseState, getRequestState };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/decorator-transforms@2.0.0_@babel+core@7.24.5/node_modules/decorator-transforms/dist/chunk-3SQBS3Y5.js","../src/-private/request-state.ts","../src/-private/promise-state.ts","../src/-private/await.gts","../src/-private/request.gts"],"sourcesContent":["import {\n __export\n} from \"./chunk-CSAU5B4Q.js\";\n\n// src/runtime.ts\nvar runtime_exports = {};\n__export(runtime_exports, {\n c: () => decorateClass,\n f: () => decorateFieldV1,\n g: () => decorateFieldV2,\n i: () => initializeDeferredDecorator,\n m: () => decorateMethodV1,\n n: () => decorateMethodV2,\n p: () => decoratePOJO\n});\nvar deferred = /* @__PURE__ */ new WeakMap();\nfunction deferDecorator(proto, prop, desc) {\n let map = deferred.get(proto);\n if (!map) {\n map = /* @__PURE__ */ new Map();\n deferred.set(proto, map);\n }\n map.set(prop, desc);\n}\nfunction findDeferredDecorator(target, prop) {\n let cursor = target.prototype;\n while (cursor) {\n let desc = deferred.get(cursor)?.get(prop);\n if (desc) {\n return desc;\n }\n cursor = cursor.prototype;\n }\n}\nfunction decorateFieldV1(target, prop, decorators, initializer) {\n return decorateFieldV2(target.prototype, prop, decorators, initializer);\n}\nfunction decorateFieldV2(prototype, prop, decorators, initializer) {\n let desc = {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n };\n if (initializer) {\n desc.initializer = initializer;\n }\n for (let decorator of decorators) {\n desc = decorator(prototype, prop, desc) || desc;\n }\n if (desc.initializer === void 0) {\n Object.defineProperty(prototype, prop, desc);\n } else {\n deferDecorator(prototype, prop, desc);\n }\n}\nfunction decorateMethodV1({ prototype }, prop, decorators) {\n return decorateMethodV2(prototype, prop, decorators);\n}\nfunction decorateMethodV2(prototype, prop, decorators) {\n const origDesc = Object.getOwnPropertyDescriptor(prototype, prop);\n let desc = { ...origDesc };\n for (let decorator of decorators) {\n desc = decorator(prototype, prop, desc) || desc;\n }\n if (desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(prototype) : void 0;\n desc.initializer = void 0;\n }\n Object.defineProperty(prototype, prop, desc);\n}\nfunction initializeDeferredDecorator(target, prop) {\n let desc = findDeferredDecorator(target.constructor, prop);\n if (desc) {\n Object.defineProperty(target, prop, {\n enumerable: desc.enumerable,\n configurable: desc.configurable,\n writable: desc.writable,\n value: desc.initializer ? desc.initializer.call(target) : void 0\n });\n }\n}\nfunction decorateClass(target, decorators) {\n return decorators.reduce(\n (accum, decorator) => decorator(accum) || accum,\n target\n );\n}\nfunction decoratePOJO(pojo, decorated) {\n for (let [type, prop, decorators] of decorated) {\n if (type === \"field\") {\n decoratePojoField(pojo, prop, decorators);\n } else {\n decorateMethodV2(pojo, prop, decorators);\n }\n }\n return pojo;\n}\nfunction decoratePojoField(pojo, prop, decorators) {\n let desc = {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: () => Object.getOwnPropertyDescriptor(pojo, prop)?.value\n };\n for (let decorator of decorators) {\n desc = decorator(pojo, prop, desc) || desc;\n }\n if (desc.initializer) {\n desc.value = desc.initializer.call(pojo);\n delete desc.initializer;\n }\n Object.defineProperty(pojo, prop, desc);\n}\n\nexport {\n decorateFieldV1,\n decorateFieldV2,\n decorateMethodV1,\n decorateMethodV2,\n initializeDeferredDecorator,\n decorateClass,\n decoratePOJO,\n runtime_exports\n};\n//# sourceMappingURL=chunk-3SQBS3Y5.js.map","import { tracked } from '@glimmer/tracking';\n\nimport type {\n Future,\n ImmutableRequestInfo,\n ResponseInfo,\n StructuredDocument,\n StructuredErrorDocument,\n} from '@ember-data/request';\nimport { getPromiseResult, setPromiseResult } from '@ember-data/request';\n\nconst RequestCache = new WeakMap<Future<unknown>, RequestState>();\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === 'AbortError';\n}\n\nasync function watchStream(stream: ReadableStream<Uint8Array>, state: RequestLoadingState): Promise<void> {\n const reader = stream.getReader();\n let bytesLoaded = 0;\n let shouldForward = state._stream !== null && state._stream.readable.locked;\n let isForwarding = shouldForward;\n let writer = state._stream?.writable.getWriter();\n const buffer = [];\n\n state._isPending = false;\n state._isStarted = true;\n state._startTime = performance.now();\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n break;\n }\n bytesLoaded += value.byteLength;\n state._bytesLoaded = bytesLoaded;\n state._lastPacketTime = performance.now();\n\n shouldForward = shouldForward || (state._stream !== null && state._stream.readable.locked);\n\n if (shouldForward) {\n if (!isForwarding) {\n isForwarding = true;\n writer = state._stream!.writable.getWriter();\n for (const item of buffer) {\n await writer.ready;\n await writer.write(item);\n }\n buffer.length = 0;\n }\n await writer!.ready;\n await writer!.write(value);\n } else {\n buffer.push(value);\n }\n }\n\n // if we are still forwarding, we need to close the writer\n if (isForwarding) {\n await writer!.ready;\n await writer!.close();\n } else if (state._stream) {\n // if we are not forwarding, we need to cancel the stream\n await state._stream.readable.cancel('The Stream Has Already Ended');\n state._stream = null;\n }\n\n const endTime = performance.now();\n state._endTime = endTime;\n state._isComplete = true;\n state._isStarted = false;\n}\n\nexport class RequestLoadingState {\n _stream: TransformStream | null = null;\n _future: Future<unknown>;\n _triggered = false;\n _trigger() {\n if (this._triggered) {\n return;\n }\n this._triggered = true;\n const future = this._future;\n const promise: Promise<ReadableStream<Uint8Array> | null> & { sizeHint?: number } = future.getStream();\n if (promise.sizeHint) {\n this._sizeHint = promise.sizeHint;\n }\n this.promise = promise.then(\n (stream) => {\n if (!stream) {\n this._isPending = false;\n this._isComplete = true;\n return;\n }\n return watchStream(stream, this);\n },\n (error: Error) => {\n this._isPending = false;\n this._isStarted = false;\n if (isAbortError(error)) {\n this._isCancelled = true;\n this._isComplete = true;\n }\n this._isErrored = true;\n this._error = error;\n }\n );\n }\n\n promise: Promise<void> | null = null;\n @tracked _sizeHint = 0;\n @tracked _bytesLoaded = 0;\n\n @tracked _startTime = 0;\n @tracked _endTime = 0;\n @tracked _lastPacketTime = 0;\n\n @tracked _isPending = true;\n @tracked _isStarted = false;\n @tracked _isComplete = false;\n @tracked _isCancelled = false;\n @tracked _isErrored = false;\n @tracked _error: Error | null = null;\n\n get isPending(): boolean {\n this._trigger();\n return this._isPending;\n }\n\n get sizeHint(): number {\n this._trigger();\n return this._sizeHint;\n }\n\n get stream(): ReadableStream | null {\n this._trigger();\n if (!this._stream) {\n if (this._isComplete || this._isCancelled || this._isErrored) {\n return null;\n }\n this._stream = new TransformStream();\n }\n return this._stream.readable;\n }\n\n get isStarted(): boolean {\n this._trigger();\n return this._isStarted;\n }\n\n get bytesLoaded(): number {\n this._trigger();\n return this._bytesLoaded;\n }\n\n get startTime(): number {\n this._trigger();\n return this._startTime;\n }\n\n get endTime(): number {\n this._trigger();\n return this._endTime;\n }\n\n get lastPacketTime(): number {\n this._trigger();\n return this._lastPacketTime;\n }\n\n get isComplete(): boolean {\n this._trigger();\n return this._isComplete;\n }\n\n get isCancelled(): boolean {\n this._trigger();\n return this._isCancelled;\n }\n\n get isErrored(): boolean {\n this._trigger();\n return this._isErrored;\n }\n\n get error(): Error | null {\n this._trigger();\n return this._error;\n }\n\n get elapsedTime(): number {\n return (this.endTime || this.lastPacketTime) - this.startTime;\n }\n\n get completedRatio(): number {\n return this.sizeHint ? this.bytesLoaded / this.sizeHint : 0;\n }\n\n get remainingRatio(): number {\n return 1 - this.completedRatio;\n }\n\n get duration(): number {\n return this.endTime - this.startTime;\n }\n\n get speed(): number {\n // bytes per second\n return this.bytesLoaded / (this.elapsedTime / 1000);\n }\n\n constructor(future: Future<unknown>) {\n this._future = future;\n }\n\n abort = (): void => {\n this._future.abort();\n };\n}\n\nexport class RequestState<T = unknown, RT = unknown> {\n #request: Future<RT>;\n #loadingState: RequestLoadingState | null = null;\n\n @tracked result: RT | null = null;\n @tracked error: StructuredErrorDocument | null = null;\n @tracked isLoading = true;\n @tracked isSuccess = false;\n @tracked isError = false;\n @tracked request: ImmutableRequestInfo<T, RT> | null = null;\n @tracked response: Response | ResponseInfo | null = null;\n\n get isCancelled(): boolean {\n return this.isError && isAbortError(this.error);\n }\n\n get loadingState() {\n if (!this.#loadingState) {\n this.#loadingState = new RequestLoadingState(this.#request);\n }\n\n return this.#loadingState;\n }\n\n constructor(future: Future<RT>) {\n this.#request = future;\n const state = getPromiseResult<StructuredDocument<RT>, StructuredErrorDocument>(future);\n\n if (state) {\n this.request = state.result.request as ImmutableRequestInfo<T, RT>;\n this.response = state.result.response;\n this.isLoading = false;\n\n if (state.isError) {\n this.error = state.result;\n this.isError = true;\n } else {\n this.result = state.result.content!;\n this.isSuccess = true;\n }\n } else {\n void future.then(\n (result) => {\n setPromiseResult(future, { isError: false, result });\n this.result = result.content;\n this.isSuccess = true;\n this.isLoading = false;\n this.request = result.request as ImmutableRequestInfo<T, RT>;\n this.response = result.response;\n },\n (error: StructuredErrorDocument) => {\n setPromiseResult(future, { isError: true, result: error });\n this.error = error;\n this.isError = true;\n this.isLoading = false;\n this.request = error.request as ImmutableRequestInfo<T, RT>;\n this.response = error.response;\n }\n );\n }\n }\n}\n\nexport function getRequestState<RT, T>(future: Future<RT>): RequestState<T, RT> {\n let state = RequestCache.get(future) as RequestState<T, RT> | undefined;\n\n if (!state) {\n state = new RequestState(future);\n RequestCache.set(future, state);\n }\n\n return state;\n}\n","import { tracked } from '@glimmer/tracking';\n\nimport type { Awaitable } from '@ember-data/request';\nimport { getPromiseResult, setPromiseResult } from '@ember-data/request';\n\nconst PromiseCache = new WeakMap<Awaitable, PromiseState>();\n\nexport class PromiseState<T = unknown, E = unknown> {\n @tracked result: T | null = null;\n @tracked error: E | null = null;\n @tracked isPending = true;\n @tracked isSuccess = false;\n @tracked isError = false;\n\n constructor(promise: Promise<T> | Awaitable<T, E>) {\n const state = getPromiseResult<T, E>(promise);\n\n if (state) {\n if (state.isError) {\n this.error = state.result;\n this.isError = true;\n this.isPending = false;\n } else {\n this.result = state.result;\n this.isSuccess = true;\n this.isPending = false;\n }\n } else {\n void promise.then(\n (result) => {\n setPromiseResult(promise, { isError: false, result });\n this.result = result;\n this.isSuccess = true;\n this.isPending = false;\n },\n (error: E) => {\n setPromiseResult(promise, { isError: true, result: error });\n this.error = error;\n this.isError = true;\n this.isPending = false;\n }\n );\n }\n }\n}\n\nconst LegacyPromiseProxy = Symbol.for('LegacyPromiseProxy');\ntype LegacyAwaitable<T, E> = { promise: Promise<T> | Awaitable<T, E>; [LegacyPromiseProxy]: true };\n\nfunction isLegacyAwaitable<T, E>(promise: object): promise is LegacyAwaitable<T, E> {\n return LegacyPromiseProxy in promise && 'promise' in promise && promise[LegacyPromiseProxy] === true;\n}\n\nfunction getPromise<T, E>(promise: Promise<T> | Awaitable<T, E> | LegacyAwaitable<T, E>): Promise<T> | Awaitable<T, E> {\n return isLegacyAwaitable(promise) ? promise.promise : promise;\n}\n\nexport function getPromiseState<T = unknown, E = unknown>(promise: Promise<T> | Awaitable<T, E>): PromiseState<T, E> {\n const _promise = getPromise(promise);\n let state = PromiseCache.get(_promise) as PromiseState<T, E> | undefined;\n\n if (!state) {\n state = new PromiseState(_promise);\n PromiseCache.set(_promise, state);\n }\n\n return state;\n}\n","import { template } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport type { Awaitable } from '@ember-data/request';\nimport { getPromiseState } from './promise-state.ts';\nexport const and = (x1: unknown, y1: unknown)=>Boolean(x1 && y1);\ninterface ThrowSignature<E = Error | string | object> {\n Args: {\n error: E;\n };\n}\nexport class Throw<T> extends Component<ThrowSignature<T>> {\n constructor(owner1: unknown, args1: ThrowSignature<T>['Args']){\n super(owner1, args1);\n // this error is opaque (user supplied) so we don't validate it\n // as an Error instance.\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw this.args.error;\n }\n static{\n template(``, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\ninterface AwaitSignature<T, E = Error | string | object> {\n Args: {\n promise: Promise<T> | Awaitable<T, E>;\n };\n Blocks: {\n pending: [];\n error: [error: E];\n success: [value: T];\n };\n}\nexport class Await<T, E> extends Component<AwaitSignature<T, E>> {\n get state() {\n return getPromiseState<T, E>(this.args.promise);\n }\n get error() {\n return this.state.error as E;\n }\n get result() {\n return this.state.result as T;\n }\n static{\n template(`\n {{#if this.state.isPending}}\n {{yield to=\"pending\"}}\n {{else if (and this.state.isError (has-block \"error\"))}}\n {{yield this.error to=\"error\"}}\n {{else if this.state.isSuccess}}\n {{yield this.result to=\"success\"}}\n {{else}}\n <Throw @error={{this.error}} />\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RhdGEvZGF0YS9wYWNrYWdlcy9lbWJlci9zcmMvLXByaXZhdGUvYXdhaXQuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcblxuaW1wb3J0IHR5cGUgeyBBd2FpdGFibGUgfSBmcm9tICdAZW1iZXItZGF0YS9yZXF1ZXN0JztcblxuaW1wb3J0IHsgZ2V0UHJvbWlzZVN0YXRlIH0gZnJvbSAnLi9wcm9taXNlLXN0YXRlLnRzJztcblxuZXhwb3J0IGNvbnN0IGFuZCA9ICh4OiB1bmtub3duLCB5OiB1bmtub3duKSA9PiBCb29sZWFuKHggJiYgeSk7XG5pbnRlcmZhY2UgVGhyb3dTaWduYXR1cmU8RSA9IEVycm9yIHwgc3RyaW5nIHwgb2JqZWN0PiB7XG4gIEFyZ3M6IHtcbiAgICBlcnJvcjogRTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFRocm93PFQ-IGV4dGVuZHMgQ29tcG9uZW50PFRocm93U2lnbmF0dXJlPFQ-PiB7XG4gIGNvbnN0cnVjdG9yKG93bmVyOiB1bmtub3duLCBhcmdzOiBUaHJvd1NpZ25hdHVyZTxUPlsnQXJncyddKSB7XG4gICAgc3VwZXIob3duZXIsIGFyZ3MpO1xuICAgIC8vIHRoaXMgZXJyb3IgaXMgb3BhcXVlICh1c2VyIHN1cHBsaWVkKSBzbyB3ZSBkb24ndCB2YWxpZGF0ZSBpdFxuICAgIC8vIGFzIGFuIEVycm9yIGluc3RhbmNlLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhyb3ctbGl0ZXJhbFxuICAgIHRocm93IHRoaXMuYXJncy5lcnJvcjtcbiAgfVxuICA8dGVtcGxhdGU-PC90ZW1wbGF0ZT5cbn1cblxuaW50ZXJmYWNlIEF3YWl0U2lnbmF0dXJlPFQsIEUgPSBFcnJvciB8IHN0cmluZyB8IG9iamVjdD4ge1xuICBBcmdzOiB7XG4gICAgcHJvbWlzZTogUHJvbWlzZTxUPiB8IEF3YWl0YWJsZTxULCBFPjtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgcGVuZGluZzogW107XG4gICAgZXJyb3I6IFtlcnJvcjogRV07XG4gICAgc3VjY2VzczogW3ZhbHVlOiBUXTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEF3YWl0PFQsIEU-IGV4dGVuZHMgQ29tcG9uZW50PEF3YWl0U2lnbmF0dXJlPFQsIEU-PiB7XG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gZ2V0UHJvbWlzZVN0YXRlPFQsIEU-KHRoaXMuYXJncy5wcm9taXNlKTtcbiAgfVxuXG4gIGdldCBlcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5lcnJvciBhcyBFO1xuICB9XG5cbiAgZ2V0IHJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5yZXN1bHQgYXMgVDtcbiAgfVxuXG4gIDx0ZW1wbGF0ZT5cbiAgICB7eyNpZiB0aGlzLnN0YXRlLmlzUGVuZGluZ319XG4gICAgICB7e3lpZWxkIHRvPVwicGVuZGluZ1wifX1cbiAgICB7e2Vsc2UgaWYgKGFuZCB0aGlzLnN0YXRlLmlzRXJyb3IgKGhhcy1ibG9jayBcImVycm9yXCIpKX19XG4gICAgICB7e3lpZWxkIHRoaXMuZXJyb3IgdG89XCJlcnJvclwifX1cbiAgICB7e2Vsc2UgaWYgdGhpcy5zdGF0ZS5pc1N1Y2Nlc3N9fVxuICAgICAge3t5aWVsZCB0aGlzLnJlc3VsdCB0bz1cInN1Y2Nlc3NcIn19XG4gICAge3tlbHNlfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3t0aGlzLmVycm9yfX0gLz5cbiAgICB7ey9pZn19XG4gIDwvdGVtcGxhdGU-XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sZUFBZSxxQkFBcUI7QUFFM0MsY0FBYyxTQUFTLFFBQVEsc0JBQXNCO0FBRXJELFNBQVMsZUFBZSxRQUFRLHFCQUFxQjtBQUVyRCxPQUFPLE1BQU0sTUFBTSxDQUFDLElBQUcsT0FBTyxFQUFFLElBQUcsT0FBTyxHQUFLLFFBQVEsTUFBSyxJQUFHO1VBQ3JELGVBQWUsSUFBSSxRQUFRLE1BQU0sR0FBRyxNQUFNO0lBQ2xEO1FBQ0UsT0FBTzs7O0FBSVgsT0FBTyxNQUFNLE1BQU0sV0FBVyxVQUFVLGVBQWU7SUFDckQsWUFBWSxRQUFPLE9BQU8sRUFBRSxPQUFNLGVBQWUsR0FBRyxPQUFPLENBQUU7UUFDM0QsS0FBSyxDQUFDLFFBQU87UUFDYiwrREFBK0Q7UUFDL0Qsd0JBQXdCO1FBQ3hCLCtEQUErRDtRQUMvRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztJQUN2QjtJQUNBLE1BQUE7UUFBQSxTQUFVLENBQUEsQ0FBQSxFQUFBO1lBQUEsV0FBQSxJQUFXO1lBQVg7Z0JBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO1lBQUQ7UUFBQTtJQUFBLENBQVY7QUFDWjtVQUVVLGVBQWUsR0FBRyxJQUFJLFFBQVEsTUFBTSxHQUFHLE1BQU07SUFDckQ7UUFDRSxTQUFTLFFBQVEsS0FBSyxVQUFVLEdBQUc7O0lBRXJDO1FBQ0U7UUFDQSxRQUFRLE9BQU87UUFDZixVQUFVLE9BQU87OztBQUlyQixPQUFPLE1BQU0sTUFBTSxHQUFHLFdBQVcsVUFBVSxlQUFlLEdBQUc7SUFDM0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxnQkFBZ0IsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztJQUNoRDtJQUVBLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUk7SUFDN0I7SUFFQSxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJO0lBQzlCO0lBRUEsTUFBQTtRQUFBLFNBQVUsQ0FBQTs7Ozs7Ozs7OztFQVVWLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQVZBO0FBV1oifQ","import { template } from \"@ember/template-compiler\";\nimport { service } from '@ember/service';\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { importSync, macroCondition, moduleExists } from '@embroider/macros';\nimport type { Future, StructuredErrorDocument } from '@ember-data/request';\nimport type { StoreRequestInput } from '@ember-data/store';\nimport type Store from '@ember-data/store';\nimport { assert } from '@warp-drive/build-config/macros';\nimport { EnableHydration, type RequestInfo } from '@warp-drive/core-types/request';\nimport { and, Throw } from './await.gts';\nimport type { RequestLoadingState, RequestState } from './request-state.ts';\nimport { getRequestState } from './request-state.ts';\nfunction notNull(x1: null): never;\nfunction notNull<T>(x1: T): Exclude<T, null>;\nfunction notNull<T>(x1: T | null) {\n assert('Expected a non-null value, but got null', x1 !== null);\n return x1;\n}\nconst not = (x1: unknown)=>!x1;\n// default to 30 seconds unavailable before we refresh\nconst DEFAULT_DEADLINE = 30_000;\nlet provide = service;\nif (macroCondition(moduleExists('ember-provide-consume-context'))) {\n const { consume } = importSync('ember-provide-consume-context') as {\n consume: typeof service;\n };\n provide = consume;\n}\nfunction isNeverString(val1: never): string {\n return val1;\n}\ntype ContentFeatures<RT> = {\n isOnline: boolean;\n isHidden: boolean;\n isRefreshing: boolean;\n refresh: () => Promise<void>;\n reload: () => Promise<void>;\n abort?: () => void;\n latestRequest?: Future<RT>;\n};\ninterface RequestSignature<T, RT> {\n Args: {\n request?: Future<RT>;\n query?: StoreRequestInput<T, RT>;\n store?: Store;\n autorefresh?: boolean;\n autorefreshThreshold?: number;\n autorefreshBehavior?: 'refresh' | 'reload' | 'policy';\n };\n Blocks: {\n loading: [state: RequestLoadingState];\n cancelled: [error: StructuredErrorDocument, features: {\n isOnline: boolean;\n isHidden: boolean;\n retry: () => Promise<void>;\n }];\n error: [error: StructuredErrorDocument, features: {\n isOnline: boolean;\n isHidden: boolean;\n retry: () => Promise<void>;\n }];\n content: [value: RT, features: ContentFeatures<RT>];\n always: [state: RequestState<T, RT>];\n };\n}\nexport class Request<T, RT> extends Component<RequestSignature<T, RT>> {\n /**\n * @internal\n */ @provide('store')\n _store: Store;\n @tracked\n isOnline = true;\n @tracked\n isHidden = true;\n @tracked\n isRefreshing = false;\n @tracked\n _localRequest: Future<RT> | undefined;\n @tracked\n _latestRequest: Future<RT> | undefined;\n unavailableStart: number | null;\n onlineChanged: (event: Event) => void;\n backgroundChanged: (event: Event) => void;\n _originalRequest: Future<RT> | undefined;\n _originalQuery: StoreRequestInput<T, RT> | undefined;\n constructor(owner1: unknown, args1: RequestSignature<T, RT>['Args']){\n super(owner1, args1);\n this.installListeners();\n }\n installListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n this.isOnline = window.navigator.onLine;\n this.unavailableStart = this.isOnline ? null : Date.now();\n this.isHidden = document.visibilityState === 'hidden';\n this.onlineChanged = (event1: Event)=>{\n this.isOnline = event1.type === 'online';\n if (event1.type === 'offline' && this.unavailableStart === null) {\n this.unavailableStart = Date.now();\n }\n this.maybeUpdate();\n };\n this.backgroundChanged = ()=>{\n const isHidden1 = document.visibilityState === 'hidden';\n this.isHidden = isHidden1;\n if (isHidden1 && this.unavailableStart === null) {\n this.unavailableStart = Date.now();\n }\n this.maybeUpdate();\n };\n window.addEventListener('online', this.onlineChanged, {\n passive: true,\n capture: true\n });\n window.addEventListener('offline', this.onlineChanged, {\n passive: true,\n capture: true\n });\n document.addEventListener('visibilitychange', this.backgroundChanged, {\n passive: true,\n capture: true\n });\n }\n maybeUpdate(mode1?: 'reload' | 'refresh' | 'policy'): void {\n if (this.isOnline && !this.isHidden && (mode1 || this.args.autorefresh)) {\n const deadline1 = typeof this.args.autorefreshThreshold === 'number' ? this.args.autorefreshThreshold : DEFAULT_DEADLINE;\n const shouldAttempt1 = mode1 || (this.unavailableStart && Date.now() - this.unavailableStart > deadline1);\n this.unavailableStart = null;\n if (shouldAttempt1) {\n const request1 = Object.assign({}, this.reqState.request as unknown as RequestInfo<T, RT>);\n const val1 = mode1 ?? this.args.autorefreshBehavior ?? 'policy';\n switch(val1){\n case 'reload':\n request1.cacheOptions = Object.assign({}, request1.cacheOptions, {\n reload: true\n });\n break;\n case 'refresh':\n request1.cacheOptions = Object.assign({}, request1.cacheOptions, {\n backgroundReload: true\n });\n break;\n case 'policy':\n break;\n default:\n throw new Error(`Invalid ${mode1 ? 'update mode' : '@autorefreshBehavior'} for <Request />: ${isNeverString(val1)}`);\n }\n const wasStoreRequest1 = (request1 as {\n [EnableHydration]: boolean;\n })[EnableHydration] === true;\n assert(`Cannot supply a different store via context than was used to create the request`, !request1.store || request1.store === this.store);\n this._latestRequest = wasStoreRequest1 ? this.store.request(request1) : this.store.requestManager.request(request1);\n if (val1 !== 'refresh') {\n this._localRequest = this._latestRequest;\n }\n return;\n }\n }\n if (mode1) {\n throw new Error(`Reload not available: the network is not online or the tab is hidden`);\n }\n }\n retry = async ()=>{\n this.maybeUpdate('reload');\n await this._localRequest;\n };\n refresh = async ()=>{\n this.isRefreshing = true;\n this.maybeUpdate('refresh');\n try {\n await this._latestRequest;\n } finally{\n this.isRefreshing = false;\n }\n };\n @cached\n get errorFeatures() {\n return {\n isHidden: this.isHidden,\n isOnline: this.isOnline,\n retry: this.retry\n };\n }\n @cached\n get contentFeatures() {\n const feat1: ContentFeatures<RT> = {\n isHidden: this.isHidden,\n isOnline: this.isOnline,\n reload: this.retry,\n refresh: this.refresh,\n isRefreshing: this.isRefreshing,\n latestRequest: this._latestRequest\n };\n if (feat1.isRefreshing) {\n feat1.abort = ()=>{\n this._latestRequest?.abort();\n };\n }\n return feat1;\n }\n willDestroy() {\n if (typeof window === 'undefined') {\n return;\n }\n window.removeEventListener('online', this.onlineChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n window.removeEventListener('offline', this.onlineChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n document.removeEventListener('visibilitychange', this.backgroundChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n }\n @cached\n get request() {\n const { request: request1, query: query1 } = this.args;\n assert(`Cannot use both @request and @query args with the <Request> component`, !request1 || !query1);\n const { _localRequest: _localRequest1, _originalRequest: _originalRequest1, _originalQuery: _originalQuery1 } = this;\n const isOriginalRequest1 = request1 === _originalRequest1 && query1 === _originalQuery1;\n if (_localRequest1 && isOriginalRequest1) {\n return _localRequest1;\n }\n // update state checks for the next time\n this._originalQuery = query1;\n this._originalRequest = request1;\n if (request1) {\n return request1;\n }\n assert(`You must provide either @request or an @query arg with the <Request> component`, query1);\n return this.store.request<RT, T>(query1);\n }\n get store(): Store {\n const store1 = this.args.store || this._store;\n assert(moduleExists('ember-provide-consume-context') ? `No store was provided to the <Request> component. Either provide a store via the @store arg or via the context API provided by ember-provide-consume-context.` : `No store was provided to the <Request> component. Either provide a store via the @store arg or by registering a store service.`, store1);\n return store1;\n }\n get reqState() {\n return getRequestState<RT, T>(this.request);\n }\n get result() {\n return this.reqState.result as RT;\n }\n static{\n template(`\n {{#if this.reqState.isLoading}}\n {{yield this.reqState.loadingState to=\"loading\"}}\n {{else if (and this.reqState.isCancelled (has-block \"cancelled\"))}}\n {{yield (notNull this.reqState.error) this.errorFeatures to=\"cancelled\"}}\n {{else if (and this.reqState.isError (has-block \"error\"))}}\n {{yield (notNull this.reqState.error) this.errorFeatures to=\"error\"}}\n {{else if this.reqState.isSuccess}}\n {{yield this.result this.contentFeatures to=\"content\"}}\n {{else if (not this.reqState.isCancelled)}}\n <Throw @error={{(notNull this.reqState.error)}} />\n {{/if}}\n {{yield this.reqState to=\"always\"}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RhdGEvZGF0YS9wYWNrYWdlcy9lbWJlci9zcmMvLXByaXZhdGUvcmVxdWVzdC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2VydmljZSB9IGZyb20gJ0BlbWJlci9zZXJ2aWNlJztcbmltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGNhY2hlZCwgdHJhY2tlZCB9IGZyb20gJ0BnbGltbWVyL3RyYWNraW5nJztcblxuaW1wb3J0IHsgaW1wb3J0U3luYywgbWFjcm9Db25kaXRpb24sIG1vZHVsZUV4aXN0cyB9IGZyb20gJ0BlbWJyb2lkZXIvbWFjcm9zJztcblxuaW1wb3J0IHR5cGUgeyBGdXR1cmUsIFN0cnVjdHVyZWRFcnJvckRvY3VtZW50IH0gZnJvbSAnQGVtYmVyLWRhdGEvcmVxdWVzdCc7XG5pbXBvcnQgdHlwZSB7IFN0b3JlUmVxdWVzdElucHV0IH0gZnJvbSAnQGVtYmVyLWRhdGEvc3RvcmUnO1xuaW1wb3J0IHR5cGUgU3RvcmUgZnJvbSAnQGVtYmVyLWRhdGEvc3RvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQHdhcnAtZHJpdmUvYnVpbGQtY29uZmlnL21hY3Jvcyc7XG5pbXBvcnQgeyBFbmFibGVIeWRyYXRpb24sIHR5cGUgUmVxdWVzdEluZm8gfSBmcm9tICdAd2FycC1kcml2ZS9jb3JlLXR5cGVzL3JlcXVlc3QnO1xuXG5pbXBvcnQgeyBhbmQsIFRocm93IH0gZnJvbSAnLi9hd2FpdC5ndHMnO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0TG9hZGluZ1N0YXRlLCBSZXF1ZXN0U3RhdGUgfSBmcm9tICcuL3JlcXVlc3Qtc3RhdGUudHMnO1xuaW1wb3J0IHsgZ2V0UmVxdWVzdFN0YXRlIH0gZnJvbSAnLi9yZXF1ZXN0LXN0YXRlLnRzJztcblxuZnVuY3Rpb24gbm90TnVsbCh4OiBudWxsKTogbmV2ZXI7XG5mdW5jdGlvbiBub3ROdWxsPFQ-KHg6IFQpOiBFeGNsdWRlPFQsIG51bGw-O1xuZnVuY3Rpb24gbm90TnVsbDxUPih4OiBUIHwgbnVsbCkge1xuICBhc3NlcnQoJ0V4cGVjdGVkIGEgbm9uLW51bGwgdmFsdWUsIGJ1dCBnb3QgbnVsbCcsIHggIT09IG51bGwpO1xuICByZXR1cm4geDtcbn1cblxuY29uc3Qgbm90ID0gKHg6IHVua25vd24pID0-ICF4O1xuLy8gZGVmYXVsdCB0byAzMCBzZWNvbmRzIHVuYXZhaWxhYmxlIGJlZm9yZSB3ZSByZWZyZXNoXG5jb25zdCBERUZBVUxUX0RFQURMSU5FID0gMzBfMDAwO1xuXG5sZXQgcHJvdmlkZSA9IHNlcnZpY2U7XG5pZiAobWFjcm9Db25kaXRpb24obW9kdWxlRXhpc3RzKCdlbWJlci1wcm92aWRlLWNvbnN1bWUtY29udGV4dCcpKSkge1xuICBjb25zdCB7IGNvbnN1bWUgfSA9IGltcG9ydFN5bmMoJ2VtYmVyLXByb3ZpZGUtY29uc3VtZS1jb250ZXh0JykgYXMgeyBjb25zdW1lOiB0eXBlb2Ygc2VydmljZSB9O1xuICBwcm92aWRlID0gY29uc3VtZTtcbn1cblxuZnVuY3Rpb24gaXNOZXZlclN0cmluZyh2YWw6IG5ldmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbDtcbn1cblxudHlwZSBDb250ZW50RmVhdHVyZXM8UlQ-ID0ge1xuICBpc09ubGluZTogYm9vbGVhbjtcbiAgaXNIaWRkZW46IGJvb2xlYW47XG4gIGlzUmVmcmVzaGluZzogYm9vbGVhbjtcbiAgcmVmcmVzaDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVsb2FkOiAoKSA9PiBQcm9taXNlPHZvaWQ-O1xuICBhYm9ydD86ICgpID0-IHZvaWQ7XG4gIGxhdGVzdFJlcXVlc3Q_OiBGdXR1cmU8UlQ-O1xufTtcblxuaW50ZXJmYWNlIFJlcXVlc3RTaWduYXR1cmU8VCwgUlQ-IHtcbiAgQXJnczoge1xuICAgIHJlcXVlc3Q_OiBGdXR1cmU8UlQ-O1xuICAgIHF1ZXJ5PzogU3RvcmVSZXF1ZXN0SW5wdXQ8VCwgUlQ-O1xuICAgIHN0b3JlPzogU3RvcmU7XG4gICAgYXV0b3JlZnJlc2g_OiBib29sZWFuO1xuICAgIGF1dG9yZWZyZXNoVGhyZXNob2xkPzogbnVtYmVyO1xuICAgIGF1dG9yZWZyZXNoQmVoYXZpb3I_OiAncmVmcmVzaCcgfCAncmVsb2FkJyB8ICdwb2xpY3knO1xuICB9O1xuICBCbG9ja3M6IHtcbiAgICBsb2FkaW5nOiBbc3RhdGU6IFJlcXVlc3RMb2FkaW5nU3RhdGVdO1xuICAgIGNhbmNlbGxlZDogW1xuICAgICAgZXJyb3I6IFN0cnVjdHVyZWRFcnJvckRvY3VtZW50LFxuICAgICAgZmVhdHVyZXM6IHsgaXNPbmxpbmU6IGJvb2xlYW47IGlzSGlkZGVuOiBib29sZWFuOyByZXRyeTogKCkgPT4gUHJvbWlzZTx2b2lkPiB9LFxuICAgIF07XG4gICAgZXJyb3I6IFtcbiAgICAgIGVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JEb2N1bWVudCxcbiAgICAgIGZlYXR1cmVzOiB7IGlzT25saW5lOiBib29sZWFuOyBpc0hpZGRlbjogYm9vbGVhbjsgcmV0cnk6ICgpID0-IFByb21pc2U8dm9pZD4gfSxcbiAgICBdO1xuICAgIGNvbnRlbnQ6IFt2YWx1ZTogUlQsIGZlYXR1cmVzOiBDb250ZW50RmVhdHVyZXM8UlQ-XTtcbiAgICBhbHdheXM6IFtzdGF0ZTogUmVxdWVzdFN0YXRlPFQsIFJUPl07XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0PFQsIFJUPiBleHRlbmRzIENvbXBvbmVudDxSZXF1ZXN0U2lnbmF0dXJlPFQsIFJUPj4ge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAcHJvdmlkZSgnc3RvcmUnKSBkZWNsYXJlIF9zdG9yZTogU3RvcmU7XG4gIEB0cmFja2VkIGlzT25saW5lID0gdHJ1ZTtcbiAgQHRyYWNrZWQgaXNIaWRkZW4gPSB0cnVlO1xuICBAdHJhY2tlZCBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgQHRyYWNrZWQgX2xvY2FsUmVxdWVzdDogRnV0dXJlPFJUPiB8IHVuZGVmaW5lZDtcbiAgQHRyYWNrZWQgX2xhdGVzdFJlcXVlc3Q6IEZ1dHVyZTxSVD4gfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgdW5hdmFpbGFibGVTdGFydDogbnVtYmVyIHwgbnVsbDtcbiAgZGVjbGFyZSBvbmxpbmVDaGFuZ2VkOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICBkZWNsYXJlIGJhY2tncm91bmRDaGFuZ2VkOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICBkZWNsYXJlIF9vcmlnaW5hbFJlcXVlc3Q6IEZ1dHVyZTxSVD4gfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgX29yaWdpbmFsUXVlcnk6IFN0b3JlUmVxdWVzdElucHV0PFQsIFJUPiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihvd25lcjogdW5rbm93biwgYXJnczogUmVxdWVzdFNpZ25hdHVyZTxULCBSVD5bJ0FyZ3MnXSkge1xuICAgIHN1cGVyKG93bmVyLCBhcmdzKTtcbiAgICB0aGlzLmluc3RhbGxMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIGluc3RhbGxMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc09ubGluZSA9IHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lO1xuICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IHRoaXMuaXNPbmxpbmUgPyBudWxsIDogRGF0ZS5ub3coKTtcbiAgICB0aGlzLmlzSGlkZGVuID0gZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJztcblxuICAgIHRoaXMub25saW5lQ2hhbmdlZCA9IChldmVudDogRXZlbnQpID0-IHtcbiAgICAgIHRoaXMuaXNPbmxpbmUgPSBldmVudC50eXBlID09PSAnb25saW5lJztcbiAgICAgIGlmIChldmVudC50eXBlID09PSAnb2ZmbGluZScgJiYgdGhpcy51bmF2YWlsYWJsZVN0YXJ0ID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IERhdGUubm93KCk7XG4gICAgICB9XG4gICAgICB0aGlzLm1heWJlVXBkYXRlKCk7XG4gICAgfTtcbiAgICB0aGlzLmJhY2tncm91bmRDaGFuZ2VkID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNIaWRkZW4gPSBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nO1xuICAgICAgdGhpcy5pc0hpZGRlbiA9IGlzSGlkZGVuO1xuXG4gICAgICBpZiAoaXNIaWRkZW4gJiYgdGhpcy51bmF2YWlsYWJsZVN0YXJ0ID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IERhdGUubm93KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWF5YmVVcGRhdGUoKTtcbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIHRoaXMub25saW5lQ2hhbmdlZCwgeyBwYXNzaXZlOiB0cnVlLCBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdGhpcy5vbmxpbmVDaGFuZ2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWUgfSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHRoaXMuYmFja2dyb3VuZENoYW5nZWQsIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIG1heWJlVXBkYXRlKG1vZGU_OiAncmVsb2FkJyB8ICdyZWZyZXNoJyB8ICdwb2xpY3knKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPbmxpbmUgJiYgIXRoaXMuaXNIaWRkZW4gJiYgKG1vZGUgfHwgdGhpcy5hcmdzLmF1dG9yZWZyZXNoKSkge1xuICAgICAgY29uc3QgZGVhZGxpbmUgPVxuICAgICAgICB0eXBlb2YgdGhpcy5hcmdzLmF1dG9yZWZyZXNoVGhyZXNob2xkID09PSAnbnVtYmVyJyA_IHRoaXMuYXJncy5hdXRvcmVmcmVzaFRocmVzaG9sZCA6IERFRkFVTFRfREVBRExJTkU7XG4gICAgICBjb25zdCBzaG91bGRBdHRlbXB0ID0gbW9kZSB8fCAodGhpcy51bmF2YWlsYWJsZVN0YXJ0ICYmIERhdGUubm93KCkgLSB0aGlzLnVuYXZhaWxhYmxlU3RhcnQgPiBkZWFkbGluZSk7XG4gICAgICB0aGlzLnVuYXZhaWxhYmxlU3RhcnQgPSBudWxsO1xuXG4gICAgICBpZiAoc2hvdWxkQXR0ZW1wdCkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZXFTdGF0ZS5yZXF1ZXN0IGFzIHVua25vd24gYXMgUmVxdWVzdEluZm88VCwgUlQ-KTtcbiAgICAgICAgY29uc3QgdmFsID0gbW9kZSA_PyB0aGlzLmFyZ3MuYXV0b3JlZnJlc2hCZWhhdmlvciA_PyAncG9saWN5JztcbiAgICAgICAgc3dpdGNoICh2YWwpIHtcbiAgICAgICAgICBjYXNlICdyZWxvYWQnOlxuICAgICAgICAgICAgcmVxdWVzdC5jYWNoZU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCByZXF1ZXN0LmNhY2hlT3B0aW9ucywgeyByZWxvYWQ6IHRydWUgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdyZWZyZXNoJzpcbiAgICAgICAgICAgIHJlcXVlc3QuY2FjaGVPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgcmVxdWVzdC5jYWNoZU9wdGlvbnMsIHsgYmFja2dyb3VuZFJlbG9hZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3BvbGljeSc6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgSW52YWxpZCAke21vZGUgPyAndXBkYXRlIG1vZGUnIDogJ0BhdXRvcmVmcmVzaEJlaGF2aW9yJ30gZm9yIDxSZXF1ZXN0IC8-OiAke2lzTmV2ZXJTdHJpbmcodmFsKX1gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2FzU3RvcmVSZXF1ZXN0ID0gKHJlcXVlc3QgYXMgeyBbRW5hYmxlSHlkcmF0aW9uXTogYm9vbGVhbiB9KVtFbmFibGVIeWRyYXRpb25dID09PSB0cnVlO1xuICAgICAgICBhc3NlcnQoXG4gICAgICAgICAgYENhbm5vdCBzdXBwbHkgYSBkaWZmZXJlbnQgc3RvcmUgdmlhIGNvbnRleHQgdGhhbiB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHJlcXVlc3RgLFxuICAgICAgICAgICFyZXF1ZXN0LnN0b3JlIHx8IHJlcXVlc3Quc3RvcmUgPT09IHRoaXMuc3RvcmVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9sYXRlc3RSZXF1ZXN0ID0gd2FzU3RvcmVSZXF1ZXN0XG4gICAgICAgICAgPyB0aGlzLnN0b3JlLnJlcXVlc3QocmVxdWVzdClcbiAgICAgICAgICA6IHRoaXMuc3RvcmUucmVxdWVzdE1hbmFnZXIucmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgICBpZiAodmFsICE9PSAncmVmcmVzaCcpIHtcbiAgICAgICAgICB0aGlzLl9sb2NhbFJlcXVlc3QgPSB0aGlzLl9sYXRlc3RSZXF1ZXN0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlbG9hZCBub3QgYXZhaWxhYmxlOiB0aGUgbmV0d29yayBpcyBub3Qgb25saW5lIG9yIHRoZSB0YWIgaXMgaGlkZGVuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0cnkgPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5tYXliZVVwZGF0ZSgncmVsb2FkJyk7XG4gICAgYXdhaXQgdGhpcy5fbG9jYWxSZXF1ZXN0O1xuICB9O1xuXG4gIHJlZnJlc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5pc1JlZnJlc2hpbmcgPSB0cnVlO1xuICAgIHRoaXMubWF5YmVVcGRhdGUoJ3JlZnJlc2gnKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fbGF0ZXN0UmVxdWVzdDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgQGNhY2hlZFxuICBnZXQgZXJyb3JGZWF0dXJlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNIaWRkZW46IHRoaXMuaXNIaWRkZW4sXG4gICAgICBpc09ubGluZTogdGhpcy5pc09ubGluZSxcbiAgICAgIHJldHJ5OiB0aGlzLnJldHJ5LFxuICAgIH07XG4gIH1cblxuICBAY2FjaGVkXG4gIGdldCBjb250ZW50RmVhdHVyZXMoKSB7XG4gICAgY29uc3QgZmVhdDogQ29udGVudEZlYXR1cmVzPFJUPiA9IHtcbiAgICAgIGlzSGlkZGVuOiB0aGlzLmlzSGlkZGVuLFxuICAgICAgaXNPbmxpbmU6IHRoaXMuaXNPbmxpbmUsXG4gICAgICByZWxvYWQ6IHRoaXMucmV0cnksXG4gICAgICByZWZyZXNoOiB0aGlzLnJlZnJlc2gsXG4gICAgICBpc1JlZnJlc2hpbmc6IHRoaXMuaXNSZWZyZXNoaW5nLFxuICAgICAgbGF0ZXN0UmVxdWVzdDogdGhpcy5fbGF0ZXN0UmVxdWVzdCxcbiAgICB9O1xuXG4gICAgaWYgKGZlYXQuaXNSZWZyZXNoaW5nKSB7XG4gICAgICBmZWF0LmFib3J0ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLl9sYXRlc3RSZXF1ZXN0Py5hYm9ydCgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmVhdDtcbiAgfVxuXG4gIHdpbGxEZXN0cm95KCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvbmxpbmUnLCB0aGlzLm9ubGluZUNoYW5nZWQsIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogdHJ1ZSB9IGFzIHVua25vd24gYXMgYm9vbGVhbik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29mZmxpbmUnLCB0aGlzLm9ubGluZUNoYW5nZWQsIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogdHJ1ZSB9IGFzIHVua25vd24gYXMgYm9vbGVhbik7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHRoaXMuYmFja2dyb3VuZENoYW5nZWQsIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBjYXB0dXJlOiB0cnVlLFxuICAgIH0gYXMgdW5rbm93biBhcyBib29sZWFuKTtcbiAgfVxuXG4gIEBjYWNoZWRcbiAgZ2V0IHJlcXVlc3QoKSB7XG4gICAgY29uc3QgeyByZXF1ZXN0LCBxdWVyeSB9ID0gdGhpcy5hcmdzO1xuICAgIGFzc2VydChgQ2Fubm90IHVzZSBib3RoIEByZXF1ZXN0IGFuZCBAcXVlcnkgYXJncyB3aXRoIHRoZSA8UmVxdWVzdD4gY29tcG9uZW50YCwgIXJlcXVlc3QgfHwgIXF1ZXJ5KTtcbiAgICBjb25zdCB7IF9sb2NhbFJlcXVlc3QsIF9vcmlnaW5hbFJlcXVlc3QsIF9vcmlnaW5hbFF1ZXJ5IH0gPSB0aGlzO1xuICAgIGNvbnN0IGlzT3JpZ2luYWxSZXF1ZXN0ID0gcmVxdWVzdCA9PT0gX29yaWdpbmFsUmVxdWVzdCAmJiBxdWVyeSA9PT0gX29yaWdpbmFsUXVlcnk7XG5cbiAgICBpZiAoX2xvY2FsUmVxdWVzdCAmJiBpc09yaWdpbmFsUmVxdWVzdCkge1xuICAgICAgcmV0dXJuIF9sb2NhbFJlcXVlc3Q7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlIGNoZWNrcyBmb3IgdGhlIG5leHQgdGltZVxuICAgIHRoaXMuX29yaWdpbmFsUXVlcnkgPSBxdWVyeTtcbiAgICB0aGlzLl9vcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0O1xuXG4gICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgIHJldHVybiByZXF1ZXN0O1xuICAgIH1cbiAgICBhc3NlcnQoYFlvdSBtdXN0IHByb3ZpZGUgZWl0aGVyIEByZXF1ZXN0IG9yIGFuIEBxdWVyeSBhcmcgd2l0aCB0aGUgPFJlcXVlc3Q-IGNvbXBvbmVudGAsIHF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5yZXF1ZXN0PFJULCBUPihxdWVyeSk7XG4gIH1cblxuICBnZXQgc3RvcmUoKTogU3RvcmUge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5hcmdzLnN0b3JlIHx8IHRoaXMuX3N0b3JlO1xuICAgIGFzc2VydChcbiAgICAgIG1vZHVsZUV4aXN0cygnZW1iZXItcHJvdmlkZS1jb25zdW1lLWNvbnRleHQnKVxuICAgICAgICA_IGBObyBzdG9yZSB3YXMgcHJvdmlkZWQgdG8gdGhlIDxSZXF1ZXN0PiBjb21wb25lbnQuIEVpdGhlciBwcm92aWRlIGEgc3RvcmUgdmlhIHRoZSBAc3RvcmUgYXJnIG9yIHZpYSB0aGUgY29udGV4dCBBUEkgcHJvdmlkZWQgYnkgZW1iZXItcHJvdmlkZS1jb25zdW1lLWNvbnRleHQuYFxuICAgICAgICA6IGBObyBzdG9yZSB3YXMgcHJvdmlkZWQgdG8gdGhlIDxSZXF1ZXN0PiBjb21wb25lbnQuIEVpdGhlciBwcm92aWRlIGEgc3RvcmUgdmlhIHRoZSBAc3RvcmUgYXJnIG9yIGJ5IHJlZ2lzdGVyaW5nIGEgc3RvcmUgc2VydmljZS5gLFxuICAgICAgc3RvcmVcbiAgICApO1xuICAgIHJldHVybiBzdG9yZTtcbiAgfVxuXG4gIGdldCByZXFTdGF0ZSgpIHtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdFN0YXRlPFJULCBUPih0aGlzLnJlcXVlc3QpO1xuICB9XG5cbiAgZ2V0IHJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXFTdGF0ZS5yZXN1bHQgYXMgUlQ7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjaWYgdGhpcy5yZXFTdGF0ZS5pc0xvYWRpbmd9fVxuICAgICAge3t5aWVsZCB0aGlzLnJlcVN0YXRlLmxvYWRpbmdTdGF0ZSB0bz1cImxvYWRpbmdcIn19XG4gICAge3tlbHNlIGlmIChhbmQgdGhpcy5yZXFTdGF0ZS5pc0NhbmNlbGxlZCAoaGFzLWJsb2NrIFwiY2FuY2VsbGVkXCIpKX19XG4gICAgICB7e3lpZWxkIChub3ROdWxsIHRoaXMucmVxU3RhdGUuZXJyb3IpIHRoaXMuZXJyb3JGZWF0dXJlcyB0bz1cImNhbmNlbGxlZFwifX1cbiAgICB7e2Vsc2UgaWYgKGFuZCB0aGlzLnJlcVN0YXRlLmlzRXJyb3IgKGhhcy1ibG9jayBcImVycm9yXCIpKX19XG4gICAgICB7e3lpZWxkIChub3ROdWxsIHRoaXMucmVxU3RhdGUuZXJyb3IpIHRoaXMuZXJyb3JGZWF0dXJlcyB0bz1cImVycm9yXCJ9fVxuICAgIHt7ZWxzZSBpZiB0aGlzLnJlcVN0YXRlLmlzU3VjY2Vzc319XG4gICAgICB7e3lpZWxkIHRoaXMucmVzdWx0IHRoaXMuY29udGVudEZlYXR1cmVzIHRvPVwiY29udGVudFwifX1cbiAgICB7e2Vsc2UgaWYgKG5vdCB0aGlzLnJlcVN0YXRlLmlzQ2FuY2VsbGVkKX19XG4gICAgICA8VGhyb3cgQGVycm9yPXt7KG5vdE51bGwgdGhpcy5yZXFTdGF0ZS5lcnJvcil9fSAvPlxuICAgIHt7L2lmfX1cbiAgICB7e3lpZWxkIHRoaXMucmVxU3RhdGUgdG89XCJhbHdheXNcIn19XG4gIDwvdGVtcGxhdGU-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"],"names":["runtime_exports","__export","c","decorateClass","f","decorateFieldV1","g","decorateFieldV2","i","initializeDeferredDecorator","m","decorateMethodV1","n","decorateMethodV2","p","decoratePOJO","deferred","WeakMap","deferDecorator","proto","prop","desc","map","get","Map","set","findDeferredDecorator","target","cursor","prototype","decorators","initializer","configurable","enumerable","writable","decorator","Object","defineProperty","origDesc","getOwnPropertyDescriptor","value","call","constructor","reduce","accum","pojo","decorated","type","decoratePojoField","RequestCache","isAbortError","error","DOMException","name","watchStream","stream","state","reader","getReader","bytesLoaded","shouldForward","_stream","readable","locked","isForwarding","writer","getWriter","buffer","_isPending","_isStarted","_startTime","performance","now","done","read","byteLength","_bytesLoaded","_lastPacketTime","item","ready","write","length","push","close","cancel","endTime","_endTime","_isComplete","RequestLoadingState","_future","_triggered","_trigger","future","promise","getStream","sizeHint","_sizeHint","then","_isCancelled","_isErrored","_error","tracked","void 0","isPending","TransformStream","isStarted","startTime","lastPacketTime","isComplete","isCancelled","isErrored","elapsedTime","completedRatio","remainingRatio","duration","speed","abort","RequestState","isError","loadingState","getPromiseResult","request","result","response","isLoading","content","isSuccess","setPromiseResult","getRequestState","PromiseCache","PromiseState","LegacyPromiseProxy","Symbol","for","isLegacyAwaitable","getPromise","getPromiseState","_promise","and","x1","y1","Boolean","Throw","Component","owner1","args1","args","setComponentTemplate","precompileTemplate","strictMode","Await","scope","notNull","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","not","DEFAULT_DEADLINE","provide","service","moduleExists","consume","importSync","isNeverString","val1","Request","unavailableStart","onlineChanged","backgroundChanged","_originalRequest","_originalQuery","installListeners","window","isOnline","navigator","onLine","Date","isHidden","document","visibilityState","event1","maybeUpdate","isHidden1","addEventListener","passive","capture","mode1","autorefresh","deadline1","autorefreshThreshold","shouldAttempt1","request1","assign","reqState","autorefreshBehavior","cacheOptions","reload","backgroundReload","wasStoreRequest1","EnableHydration","store","_latestRequest","requestManager","_localRequest","retry","refresh","isRefreshing","errorFeatures","cached","contentFeatures","feat1","latestRequest","willDestroy","removeEventListener","query","query1","_localRequest1","_originalRequest1","_originalQuery1","isOriginalRequest1","store1","_store"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@warp-drive/ember",
3
3
  "description": "Data bindings and utilities for Ember applications using WarpDrive",
4
- "version": "0.0.0-alpha.9",
4
+ "version": "0.0.0-beta.0",
5
5
  "license": "MIT",
6
6
  "author": "Chris Thoburn <runspired@users.noreply.github.com>",
7
7
  "repository": {
@@ -15,17 +15,15 @@
15
15
  "ember-addon"
16
16
  ],
17
17
  "scripts": {
18
- "lint": "eslint . --quiet --cache --cache-strategy=content --ext .js,.ts,.mjs,.cjs --report-unused-disable-directives",
19
- "build:types": "glint --build",
20
- "check:types": "glint",
21
- "build:client": "rollup --config",
22
- "_build": "bun run build:client && bun run build:types",
23
- "_syncPnpm": "bun run sync-dependencies-meta-injected"
18
+ "_lint": "eslint . --quiet --cache --cache-strategy=content --report-unused-disable-directives",
19
+ "build:glint": "glint --build",
20
+ "build:pkg": "vite build;",
21
+ "sync-hardlinks": "bun run sync-dependencies-meta-injected"
24
22
  },
25
23
  "files": [
26
24
  "unstable-preview-types",
27
25
  "addon-main.cjs",
28
- "addon",
26
+ "dist",
29
27
  "README.md",
30
28
  "LICENSE.md",
31
29
  "ember-data-logo-dark.svg",
@@ -33,24 +31,24 @@
33
31
  ],
34
32
  "exports": {
35
33
  ".": {
36
- "default": "./addon/index.js"
34
+ "default": "./dist/index.js"
37
35
  },
38
36
  "./*": {
39
- "default": "./addon/*.js"
37
+ "default": "./dist/*.js"
40
38
  }
41
39
  },
42
40
  "peerDependencies": {
43
41
  "@ember-data/store": "^4.12.7 || > 5.3.3",
44
42
  "@ember-data/request": "^4.12.7 || > 5.3.3",
45
- "@warp-drive/core-types": "0.0.0-alpha.33",
43
+ "@ember-data/request-utils": "^4.12.7 || > 5.3.3",
44
+ "@warp-drive/core-types": "0.0.0-beta.5",
46
45
  "ember-provide-consume-context": "^0.3.1",
47
- "@ember-data/tracking": "^4.12.7 ||| > 5.3.3",
48
- "@ember/string": "^3.1.1"
46
+ "@ember-data/tracking": "^4.12.7 || > 5.3.3"
49
47
  },
50
48
  "dependencies": {
51
49
  "@ember/test-waiters": "^3.1.0",
52
- "@embroider/macros": "^1.15.0",
53
- "@embroider/addon-shim": "^1.8.7"
50
+ "@embroider/macros": "^1.16.1",
51
+ "@warp-drive/build-config": "0.0.0-beta.0"
54
52
  },
55
53
  "dependenciesMeta": {
56
54
  "@ember-data/store": {
@@ -59,11 +57,17 @@
59
57
  "@ember-data/request": {
60
58
  "injected": true
61
59
  },
60
+ "@ember-data/request-utils": {
61
+ "injected": true
62
+ },
62
63
  "@warp-drive/core-types": {
63
64
  "injected": true
64
65
  },
65
66
  "@ember-data/tracking": {
66
67
  "injected": true
68
+ },
69
+ "@warp-drive/build-config": {
70
+ "injected": true
67
71
  }
68
72
  },
69
73
  "peerDependenciesMeta": {
@@ -72,43 +76,38 @@
72
76
  }
73
77
  },
74
78
  "devDependencies": {
75
- "@babel/cli": "^7.24.1",
76
- "@babel/core": "^7.24.3",
77
- "@babel/plugin-proposal-decorators": "^7.24.1",
78
- "@babel/plugin-transform-class-properties": "^7.24.1",
79
- "@babel/plugin-transform-private-methods": "^7.24.1",
80
- "@babel/plugin-transform-runtime": "^7.24.3",
81
- "@babel/plugin-transform-typescript": "^7.24.1",
82
- "@babel/preset-env": "^7.24.3",
79
+ "@babel/core": "^7.24.5",
80
+ "@babel/plugin-transform-typescript": "^7.24.5",
81
+ "@babel/preset-env": "^7.24.5",
83
82
  "@babel/preset-typescript": "^7.24.1",
84
- "@babel/runtime": "^7.24.1",
85
- "@embroider/addon-dev": "^4.2.1",
83
+ "@babel/runtime": "^7.24.5",
86
84
  "@glimmer/component": "^1.1.2",
87
85
  "@glimmer/tracking": "^1.1.2",
88
- "@glimmer/validator": "^0.90.1",
86
+ "@glimmer/validator": "^0.92.0",
89
87
  "@glint/core": "^1.4.0",
90
88
  "@glint/environment-ember-loose": "^1.4.0",
91
89
  "@glint/environment-ember-template-imports": "^1.4.0",
92
90
  "@glint/template": "^1.4.0",
93
- "@rollup/plugin-babel": "^6.0.4",
94
- "@rollup/plugin-node-resolve": "^15.2.3",
95
- "decorator-transforms": "1.1.0",
96
- "@ember-data/request": "5.4.0-alpha.47",
97
- "@ember-data/store": "5.4.0-alpha.47",
98
- "@ember-data/tracking": "5.4.0-alpha.47",
99
- "@ember/string": "^3.1.1",
100
- "@warp-drive/core-types": "0.0.0-alpha.33",
101
- "@warp-drive/internal-config": "5.4.0-alpha.47",
102
- "babel-plugin-ember-template-compilation": "^2.2.1",
91
+ "decorator-transforms": "^2.0.0",
92
+ "@embroider/addon-dev": "^4.3.1",
93
+ "@ember-data/request": "5.4.0-beta.5",
94
+ "@ember-data/request-utils": "5.4.0-beta.5",
95
+ "@ember-data/store": "5.4.0-beta.5",
96
+ "@ember-data/tracking": "5.4.0-beta.5",
97
+ "@ember/test-helpers": "^3.3.0",
98
+ "@warp-drive/core-types": "0.0.0-beta.5",
99
+ "@warp-drive/internal-config": "5.4.0-beta.5",
100
+ "babel-plugin-ember-template-compilation": "^2.2.5",
103
101
  "ember-template-imports": "^4.1.0",
104
- "ember-source": "~5.7.0",
105
- "pnpm-sync-dependencies-meta-injected": "0.0.10",
106
- "rollup": "^4.13.0",
107
- "typescript": "^5.4.3",
108
- "walk-sync": "^3.0.0"
102
+ "ember-source": "~5.8.0",
103
+ "pnpm-sync-dependencies-meta-injected": "0.0.14",
104
+ "rollup": "^4.17.2",
105
+ "typescript": "^5.4.5",
106
+ "vite": "^5.2.11",
107
+ "ember-provide-consume-context": "^0.3.1"
109
108
  },
110
109
  "engines": {
111
- "node": ">= 18.19.1"
110
+ "node": ">= 22.1.0"
112
111
  },
113
112
  "volta": {
114
113
  "extends": "../../package.json"
@@ -116,6 +115,7 @@
116
115
  "ember-addon": {
117
116
  "main": "addon-main.cjs",
118
117
  "type": "addon",
118
+ "preventDownleveling": true,
119
119
  "version": 2
120
120
  },
121
121
  "ember": {
@@ -1,8 +1,6 @@
1
1
  declare module '@warp-drive/ember/-private/await' {
2
2
  import Component from '@glimmer/component';
3
- import { Awaitable } from '@ember-data/request';
4
- export function notNull<T>(x: null): never;
5
- export function notNull<T>(x: T): Exclude<T, null>;
3
+ import type { Awaitable } from '@ember-data/request';
6
4
  export const and: (x: unknown, y: unknown) => boolean;
7
5
  interface ThrowSignature<E = Error | string | object> {
8
6
  Args: {
@@ -24,6 +22,8 @@ declare module '@warp-drive/ember/-private/await' {
24
22
  }
25
23
  export class Await<T, E> extends Component<AwaitSignature<T, E>> {
26
24
  get state(): import("@warp-drive/ember/-private/promise-state.ts").PromiseState<T, E>;
25
+ get error(): E;
26
+ get result(): T;
27
27
  }
28
28
  export {};
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"await.d.ts","sourceRoot":"","sources":["../../src/-private/await.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;AAC3C,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAKnD,eAAO,MAAM,GAAG,MAAO,OAAO,KAAK,OAAO,YAAoB,CAAC;AAE/D,UAAU,cAAc,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM;IAClD,IAAI,EAAE;QACJ,KAAK,EAAE,CAAC,CAAC;KACV,CAAC;CACH;AAED,qBAAa,KAAK,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC5C,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CAO5D;AAED,UAAU,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM;IACrD,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;QACZ,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,KAAK,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK,oDAER;CAqBF"}
1
+ {"version":3,"file":"await.d.ts","sourceRoot":"","sources":["../../src/-private/await.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,eAAO,MAAM,GAAG,MAAO,OAAO,KAAK,OAAO,YAAoB,CAAC;AAC/D,UAAU,cAAc,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM;IAClD,IAAI,EAAE;QACJ,KAAK,EAAE,CAAC,CAAC;KACV,CAAC;CACH;AAED,qBAAa,KAAK,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC5C,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CAU5D;AAED,UAAU,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM;IACrD,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACvC,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,CAAC;QACZ,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,KAAK,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK,oDAER;IAED,IAAI,KAAK,MAER;IAED,IAAI,MAAM,MAET;CAqBF"}
@@ -1 +1 @@
1
- {"version":3,"file":"promise-state.d.ts","sourceRoot":"","sources":["../../src/-private/promise-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKrD,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAQ;IACxB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IACvB,SAAS,UAAQ;IACjB,SAAS,UAAS;IAClB,OAAO,UAAS;gBAEb,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;CA8BlD;AAED,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CASnH"}
1
+ {"version":3,"file":"promise-state.d.ts","sourceRoot":"","sources":["../../src/-private/promise-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKrD,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAQ;IACxB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IACvB,SAAS,UAAQ;IACjB,SAAS,UAAS;IAClB,OAAO,UAAS;gBAEb,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;CA8BlD;AAaD,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAUnH"}
@@ -30,26 +30,26 @@ declare module '@warp-drive/ember/-private/request-state' {
30
30
  get isErrored(): boolean;
31
31
  get error(): Error | null;
32
32
  get elapsedTime(): number;
33
- get completeRatio(): number;
33
+ get completedRatio(): number;
34
34
  get remainingRatio(): number;
35
35
  get duration(): number;
36
36
  get speed(): number;
37
37
  constructor(future: Future<unknown>);
38
- abort(): void;
38
+ abort: () => void;
39
39
  }
40
- export class RequestState<T = unknown> {
40
+ export class RequestState<T = unknown, RT = unknown> {
41
41
  #private;
42
- result: T | null;
42
+ result: RT | null;
43
43
  error: StructuredErrorDocument | null;
44
44
  isLoading: boolean;
45
45
  isSuccess: boolean;
46
46
  isError: boolean;
47
- request: ImmutableRequestInfo | null;
47
+ request: ImmutableRequestInfo<T, RT> | null;
48
48
  response: Response | ResponseInfo | null;
49
49
  get isCancelled(): boolean;
50
50
  get loadingState(): RequestLoadingState;
51
- constructor(future: Future<T>);
51
+ constructor(future: Future<RT>);
52
52
  }
53
- export function getRequestState<T>(future: Future<T>): RequestState<T>;
53
+ export function getRequestState<RT, T>(future: Future<RT>): RequestState<T, RT>;
54
54
  }
55
55
  //# sourceMappingURL=request-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-state.d.ts","sourceRoot":"","sources":["../../src/-private/request-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,oBAAoB,EACpB,YAAY,EAEZ,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAkE7B,qBAAa,mBAAmB;IAC9B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAQ;IACvC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,UAAU,UAAS;IACnB,QAAQ;IAgCR,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC5B,SAAS,SAAK;IACd,YAAY,SAAK;IAEjB,UAAU,SAAK;IACf,QAAQ,SAAK;IACb,eAAe,SAAK;IAEpB,UAAU,UAAQ;IAClB,UAAU,UAAS;IACnB,WAAW,UAAS;IACpB,YAAY,UAAS;IACrB,UAAU,UAAS;IACnB,MAAM,EAAE,KAAK,GAAG,IAAI,CAAQ;IAErC,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED,IAAI,MAAM,IAAI,cAAc,GAAG,IAAI,CASlC;IAED,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED,IAAI,SAAS,IAAI,MAAM,CAGtB;IAED,IAAI,OAAO,IAAI,MAAM,CAGpB;IAED,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED,IAAI,UAAU,IAAI,OAAO,CAGxB;IAED,IAAI,WAAW,IAAI,OAAO,CAGzB;IAED,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAGxB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,KAAK,IAAI,MAAM,CAGlB;gBAEW,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;IAInC,KAAK,IAAI,IAAI;CAGd;AAED,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO;;IAI1B,MAAM,EAAE,CAAC,GAAG,IAAI,CAAQ;IACxB,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IAC7C,SAAS,UAAQ;IACjB,SAAS,UAAS;IAClB,OAAO,UAAS;IAChB,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAC5C,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAQ;IAEzD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,YAAY,wBAMf;gBAEW,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAqC9B;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CASrE"}
1
+ {"version":3,"file":"request-state.d.ts","sourceRoot":"","sources":["../../src/-private/request-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,oBAAoB,EACpB,YAAY,EAEZ,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAkE7B,qBAAa,mBAAmB;IAC9B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAQ;IACvC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,UAAU,UAAS;IACnB,QAAQ;IAgCR,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC5B,SAAS,SAAK;IACd,YAAY,SAAK;IAEjB,UAAU,SAAK;IACf,QAAQ,SAAK;IACb,eAAe,SAAK;IAEpB,UAAU,UAAQ;IAClB,UAAU,UAAS;IACnB,WAAW,UAAS;IACpB,YAAY,UAAS;IACrB,UAAU,UAAS;IACnB,MAAM,EAAE,KAAK,GAAG,IAAI,CAAQ;IAErC,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED,IAAI,MAAM,IAAI,cAAc,GAAG,IAAI,CASlC;IAED,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED,IAAI,SAAS,IAAI,MAAM,CAGtB;IAED,IAAI,OAAO,IAAI,MAAM,CAGpB;IAED,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED,IAAI,UAAU,IAAI,OAAO,CAGxB;IAED,IAAI,WAAW,IAAI,OAAO,CAGzB;IAED,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAGxB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,KAAK,IAAI,MAAM,CAGlB;gBAEW,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;IAInC,KAAK,QAAO,IAAI,CAEd;CACH;AAED,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,GAAG,OAAO;;IAIxC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAQ;IACzB,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IAC7C,SAAS,UAAQ;IACjB,SAAS,UAAS;IAClB,OAAO,UAAS;IAChB,OAAO,EAAE,oBAAoB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAQ;IACnD,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAQ;IAEzD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,YAAY,wBAMf;gBAEW,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAqC/B;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CAS9E"}
@@ -3,31 +3,78 @@ declare module '@warp-drive/ember/-private/request' {
3
3
  import type { Future, StructuredErrorDocument } from '@ember-data/request';
4
4
  import type { StoreRequestInput } from '@ember-data/store';
5
5
  import type Store from '@ember-data/store';
6
- import type { RequestLoadingState } from '@warp-drive/ember/-private/request-state.ts';
7
- interface RequestSignature<T> {
6
+ import type { RequestLoadingState, RequestState } from '@warp-drive/ember/-private/request-state.ts';
7
+ type ContentFeatures<RT> = {
8
+ isOnline: boolean;
9
+ isHidden: boolean;
10
+ isRefreshing: boolean;
11
+ refresh: () => Promise<void>;
12
+ reload: () => Promise<void>;
13
+ abort?: () => void;
14
+ latestRequest?: Future<RT>;
15
+ };
16
+ interface RequestSignature<T, RT> {
8
17
  Args: {
9
- request?: Future<T>;
10
- query?: StoreRequestInput;
18
+ request?: Future<RT>;
19
+ query?: StoreRequestInput<T, RT>;
11
20
  store?: Store;
21
+ autorefresh?: boolean;
22
+ autorefreshThreshold?: number;
23
+ autorefreshBehavior?: 'refresh' | 'reload' | 'policy';
12
24
  };
13
25
  Blocks: {
14
26
  loading: [state: RequestLoadingState];
15
- cancelled: [error: StructuredErrorDocument];
16
- error: [error: StructuredErrorDocument];
17
- content: [value: T];
27
+ cancelled: [
28
+ error: StructuredErrorDocument,
29
+ features: {
30
+ isOnline: boolean;
31
+ isHidden: boolean;
32
+ retry: () => Promise<void>;
33
+ }
34
+ ];
35
+ error: [
36
+ error: StructuredErrorDocument,
37
+ features: {
38
+ isOnline: boolean;
39
+ isHidden: boolean;
40
+ retry: () => Promise<void>;
41
+ }
42
+ ];
43
+ content: [value: RT, features: ContentFeatures<RT>];
44
+ always: [state: RequestState<T, RT>];
18
45
  };
19
46
  }
20
- export class Request<T> extends Component<RequestSignature<T>> {
47
+ export class Request<T, RT> extends Component<RequestSignature<T, RT>> {
21
48
  /**
22
49
  * @internal
23
50
  */
24
51
  _store: Store;
25
- retry: () => void;
26
- reload: () => void;
27
- refresh: () => void;
28
- get request(): Future<T>;
52
+ isOnline: boolean;
53
+ isHidden: boolean;
54
+ isRefreshing: boolean;
55
+ _localRequest: Future<RT> | undefined;
56
+ _latestRequest: Future<RT> | undefined;
57
+ unavailableStart: number | null;
58
+ onlineChanged: (event: Event) => void;
59
+ backgroundChanged: (event: Event) => void;
60
+ _originalRequest: Future<RT> | undefined;
61
+ _originalQuery: StoreRequestInput<T, RT> | undefined;
62
+ constructor(owner: unknown, args: RequestSignature<T, RT>['Args']);
63
+ installListeners(): void;
64
+ maybeUpdate(mode?: 'reload' | 'refresh' | 'policy'): void;
65
+ retry: () => Promise<void>;
66
+ refresh: () => Promise<void>;
67
+ get errorFeatures(): {
68
+ isHidden: boolean;
69
+ isOnline: boolean;
70
+ retry: () => Promise<void>;
71
+ };
72
+ get contentFeatures(): ContentFeatures<RT>;
73
+ willDestroy(): void;
74
+ get request(): Future<RT>;
29
75
  get store(): Store;
30
- get reqState(): import("@warp-drive/ember/-private/request-state.ts").RequestState<T>;
76
+ get reqState(): RequestState<T, RT>;
77
+ get result(): RT;
31
78
  }
32
79
  export {};
33
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/-private/request.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAI3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAS9D,UAAU,gBAAgB,CAAC,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACtC,SAAS,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,OAAO,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5D;;OAEG;IACuB,MAAM,EAAE,KAAK,CAAC;IAExC,KAAK,aAAY;IACjB,MAAM,aAAY;IAClB,OAAO,aAAY;IAEnB,IACI,OAAO,cAQV;IAED,IAAI,KAAK,IAAI,KAAK,CASjB;IAED,IAAI,QAAQ,iDAEX;CAyBF"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/-private/request.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
+ /// <reference path="./-private/request.d.ts" />
1
2
  /// <reference path="./-private/promise-state.d.ts" />
2
3
  /// <reference path="./-private/request-state.d.ts" />
3
- /// <reference path="./-private/request.d.ts" />
4
4
  /// <reference path="./-private/await.d.ts" />
5
5
  declare module '@warp-drive/ember' {
6
- export { getRequestState } from '@warp-drive/ember/-private/request-state.ts';
7
- export { getPromiseState } from '@warp-drive/ember/-private/promise-state.ts';
6
+ export { getRequestState } from '@warp-drive/ember/-private/request-state';
7
+ export { getPromiseState } from '@warp-drive/ember/-private/promise-state';
8
8
  export { Request } from '@warp-drive/ember/-private/request.gts';
9
9
  export { Await, Throw } from '@warp-drive/ember/-private/await.gts';
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/decorator-transforms@1.1.0_@babel+core@7.24.3/node_modules/decorator-transforms/dist/chunk-CSAU5B4Q.js","../../../node_modules/.pnpm/decorator-transforms@1.1.0_@babel+core@7.24.3/node_modules/decorator-transforms/dist/chunk-3SQBS3Y5.js","../src/-private/request-state.ts","../src/-private/promise-state.ts","../src/-private/await.gts","../src/-private/request.gts"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\nexport {\n __export\n};\n//# sourceMappingURL=chunk-CSAU5B4Q.js.map","import {\n __export\n} from \"./chunk-CSAU5B4Q.js\";\n\n// src/runtime.ts\nvar runtime_exports = {};\n__export(runtime_exports, {\n c: () => decorateClass,\n f: () => decorateFieldV1,\n g: () => decorateFieldV2,\n i: () => initializeDeferredDecorator,\n m: () => decorateMethodV1,\n n: () => decorateMethodV2,\n p: () => decoratePOJO\n});\nvar deferred = /* @__PURE__ */ new WeakMap();\nfunction deferDecorator(proto, prop, desc) {\n let map = deferred.get(proto);\n if (!map) {\n map = /* @__PURE__ */ new Map();\n deferred.set(proto, map);\n }\n map.set(prop, desc);\n}\nfunction findDeferredDecorator(target, prop) {\n let cursor = target.prototype;\n while (cursor) {\n let desc = deferred.get(cursor)?.get(prop);\n if (desc) {\n return desc;\n }\n cursor = cursor.prototype;\n }\n}\nfunction decorateFieldV1(target, prop, decorators, initializer) {\n return decorateFieldV2(target.prototype, prop, decorators, initializer);\n}\nfunction decorateFieldV2(prototype, prop, decorators, initializer) {\n let desc = {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n };\n if (initializer) {\n desc.initializer = initializer;\n }\n for (let decorator of decorators) {\n desc = decorator(prototype, prop, desc) || desc;\n }\n if (desc.initializer === void 0) {\n Object.defineProperty(prototype, prop, desc);\n } else {\n deferDecorator(prototype, prop, desc);\n }\n}\nfunction decorateMethodV1({ prototype }, prop, decorators) {\n return decorateMethodV2(prototype, prop, decorators);\n}\nfunction decorateMethodV2(prototype, prop, decorators) {\n const origDesc = Object.getOwnPropertyDescriptor(prototype, prop);\n let desc = { ...origDesc };\n for (let decorator of decorators) {\n desc = decorator(prototype, prop, desc) || desc;\n }\n if (desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(prototype) : void 0;\n desc.initializer = void 0;\n }\n Object.defineProperty(prototype, prop, desc);\n}\nfunction initializeDeferredDecorator(target, prop) {\n let desc = findDeferredDecorator(target.constructor, prop);\n if (desc) {\n Object.defineProperty(target, prop, {\n enumerable: desc.enumerable,\n configurable: desc.configurable,\n writable: desc.writable,\n value: desc.initializer ? desc.initializer.call(target) : void 0\n });\n }\n}\nfunction decorateClass(target, decorators) {\n return decorators.reduce(\n (accum, decorator) => decorator(accum) || accum,\n target\n );\n}\nfunction decoratePOJO(pojo, decorated) {\n for (let [type, prop, decorators] of decorated) {\n if (type === \"field\") {\n decoratePojoField(pojo, prop, decorators);\n } else {\n decorateMethodV2(pojo, prop, decorators);\n }\n }\n return pojo;\n}\nfunction decoratePojoField(pojo, prop, decorators) {\n let desc = {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: () => Object.getOwnPropertyDescriptor(pojo, prop)?.value\n };\n for (let decorator of decorators) {\n desc = decorator(pojo, prop, desc) || desc;\n }\n if (desc.initializer) {\n desc.value = desc.initializer.call(pojo);\n delete desc.initializer;\n }\n Object.defineProperty(pojo, prop, desc);\n}\n\nexport {\n decorateFieldV1,\n decorateFieldV2,\n decorateMethodV1,\n decorateMethodV2,\n initializeDeferredDecorator,\n decorateClass,\n decoratePOJO,\n runtime_exports\n};\n//# sourceMappingURL=chunk-3SQBS3Y5.js.map","import { tracked } from '@glimmer/tracking';\n\nimport type {\n Future,\n ImmutableRequestInfo,\n ResponseInfo,\n StructuredDocument,\n StructuredErrorDocument,\n} from '@ember-data/request';\nimport { getPromiseResult, setPromiseResult } from '@ember-data/request';\n\nconst RequestCache = new WeakMap<Future<unknown>, RequestState>();\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === 'AbortError';\n}\n\nasync function watchStream(stream: ReadableStream<Uint8Array>, state: RequestLoadingState): Promise<void> {\n const reader = stream.getReader();\n let bytesLoaded = 0;\n let shouldForward = state._stream !== null && state._stream.readable.locked;\n let isForwarding = shouldForward;\n let writer = state._stream?.writable.getWriter();\n const buffer = [];\n\n state._isPending = false;\n state._isStarted = true;\n state._startTime = performance.now();\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n break;\n }\n bytesLoaded += value.byteLength;\n state._bytesLoaded = bytesLoaded;\n state._lastPacketTime = performance.now();\n\n shouldForward = shouldForward || (state._stream !== null && state._stream.readable.locked);\n\n if (shouldForward) {\n if (!isForwarding) {\n isForwarding = true;\n writer = state._stream!.writable.getWriter();\n for (const item of buffer) {\n await writer.ready;\n await writer.write(item);\n }\n buffer.length = 0;\n }\n await writer!.ready;\n await writer!.write(value);\n } else {\n buffer.push(value);\n }\n }\n\n // if we are still forwarding, we need to close the writer\n if (isForwarding) {\n await writer!.ready;\n await writer!.close();\n } else if (state._stream) {\n // if we are not forwarding, we need to cancel the stream\n await state._stream.readable.cancel('The Stream Has Already Ended');\n state._stream = null;\n }\n\n const endTime = performance.now();\n state._endTime = endTime;\n state._isComplete = true;\n state._isStarted = false;\n}\n\nexport class RequestLoadingState {\n _stream: TransformStream | null = null;\n _future: Future<unknown>;\n _triggered = false;\n _trigger() {\n if (this._triggered) {\n return;\n }\n this._triggered = true;\n const future = this._future;\n const promise: Promise<ReadableStream<Uint8Array> | null> & { sizeHint?: number } = future.getStream();\n if (promise.sizeHint) {\n this._sizeHint = promise.sizeHint;\n }\n this.promise = promise.then(\n (stream) => {\n if (!stream) {\n this._isPending = false;\n this._isComplete = true;\n return;\n }\n return watchStream(stream, this);\n },\n (error: Error) => {\n this._isPending = false;\n this._isStarted = false;\n if (isAbortError(error)) {\n this._isCancelled = true;\n this._isComplete = true;\n }\n this._isErrored = true;\n this._error = error;\n }\n );\n }\n\n promise: Promise<void> | null = null;\n @tracked _sizeHint = 0;\n @tracked _bytesLoaded = 0;\n\n @tracked _startTime = 0;\n @tracked _endTime = 0;\n @tracked _lastPacketTime = 0;\n\n @tracked _isPending = true;\n @tracked _isStarted = false;\n @tracked _isComplete = false;\n @tracked _isCancelled = false;\n @tracked _isErrored = false;\n @tracked _error: Error | null = null;\n\n get isPending(): boolean {\n this._trigger();\n return this._isPending;\n }\n\n get sizeHint(): number {\n this._trigger();\n return this._sizeHint;\n }\n\n get stream(): ReadableStream | null {\n this._trigger();\n if (!this._stream) {\n if (this._isComplete || this._isCancelled || this._isErrored) {\n return null;\n }\n this._stream = new TransformStream();\n }\n return this._stream.readable;\n }\n\n get isStarted(): boolean {\n this._trigger();\n return this._isStarted;\n }\n\n get bytesLoaded(): number {\n this._trigger();\n return this._bytesLoaded;\n }\n\n get startTime(): number {\n this._trigger();\n return this._startTime;\n }\n\n get endTime(): number {\n this._trigger();\n return this._endTime;\n }\n\n get lastPacketTime(): number {\n this._trigger();\n return this._lastPacketTime;\n }\n\n get isComplete(): boolean {\n this._trigger();\n return this._isComplete;\n }\n\n get isCancelled(): boolean {\n this._trigger();\n return this._isCancelled;\n }\n\n get isErrored(): boolean {\n this._trigger();\n return this._isErrored;\n }\n\n get error(): Error | null {\n this._trigger();\n return this._error;\n }\n\n get elapsedTime(): number {\n return (this.endTime || this.lastPacketTime) - this.startTime;\n }\n\n get completeRatio(): number {\n return this.sizeHint ? this.bytesLoaded / this.sizeHint : 0;\n }\n\n get remainingRatio(): number {\n return 1 - this.completeRatio;\n }\n\n get duration(): number {\n return this.endTime - this.startTime;\n }\n\n get speed(): number {\n // bytes per second\n return this.bytesLoaded / (this.elapsedTime / 1000);\n }\n\n constructor(future: Future<unknown>) {\n this._future = future;\n }\n\n abort(): void {\n this._future.abort();\n }\n}\n\nexport class RequestState<T = unknown> {\n #request: Future<T>;\n #loadingState: RequestLoadingState | null = null;\n\n @tracked result: T | null = null;\n @tracked error: StructuredErrorDocument | null = null;\n @tracked isLoading = true;\n @tracked isSuccess = false;\n @tracked isError = false;\n @tracked request: ImmutableRequestInfo | null = null;\n @tracked response: Response | ResponseInfo | null = null;\n\n get isCancelled(): boolean {\n return this.isError && isAbortError(this.error);\n }\n\n get loadingState() {\n if (!this.#loadingState) {\n this.#loadingState = new RequestLoadingState(this.#request);\n }\n\n return this.#loadingState;\n }\n\n constructor(future: Future<T>) {\n this.#request = future;\n const state = getPromiseResult<StructuredDocument<T>, StructuredErrorDocument>(future);\n\n if (state) {\n this.request = state.result.request;\n this.response = state.result.response;\n this.isLoading = false;\n\n if (state.isError) {\n this.error = state.result;\n this.isError = true;\n } else {\n this.result = state.result.content!;\n this.isSuccess = true;\n }\n } else {\n void future.then(\n (result) => {\n setPromiseResult(future, { isError: false, result });\n this.result = result.content;\n this.isSuccess = true;\n this.isLoading = false;\n this.request = result.request;\n this.response = result.response;\n },\n (error: StructuredErrorDocument) => {\n setPromiseResult(future, { isError: true, result: error });\n this.error = error;\n this.isError = true;\n this.isLoading = false;\n this.request = error.request;\n this.response = error.response;\n }\n );\n }\n }\n}\n\nexport function getRequestState<T>(future: Future<T>): RequestState<T> {\n let state = RequestCache.get(future) as RequestState<T> | undefined;\n\n if (!state) {\n state = new RequestState(future);\n RequestCache.set(future, state);\n }\n\n return state;\n}\n","import { tracked } from '@glimmer/tracking';\n\nimport type { Awaitable } from '@ember-data/request';\nimport { getPromiseResult, setPromiseResult } from '@ember-data/request';\n\nconst PromiseCache = new WeakMap<Awaitable, PromiseState>();\n\nexport class PromiseState<T = unknown, E = unknown> {\n @tracked result: T | null = null;\n @tracked error: E | null = null;\n @tracked isPending = true;\n @tracked isSuccess = false;\n @tracked isError = false;\n\n constructor(promise: Promise<T> | Awaitable<T, E>) {\n const state = getPromiseResult<T, E>(promise);\n\n if (state) {\n if (state.isError) {\n this.error = state.result;\n this.isError = true;\n this.isPending = false;\n } else {\n this.result = state.result;\n this.isSuccess = true;\n this.isPending = false;\n }\n } else {\n void promise.then(\n (result) => {\n setPromiseResult(promise, { isError: false, result });\n this.result = result;\n this.isSuccess = true;\n this.isPending = false;\n },\n (error: E) => {\n setPromiseResult(promise, { isError: true, result: error });\n this.error = error;\n this.isError = true;\n this.isPending = false;\n }\n );\n }\n }\n}\n\nexport function getPromiseState<T = unknown, E = unknown>(promise: Promise<T> | Awaitable<T, E>): PromiseState<T, E> {\n let state = PromiseCache.get(promise) as PromiseState<T, E> | undefined;\n\n if (!state) {\n state = new PromiseState(promise);\n PromiseCache.set(promise, state);\n }\n\n return state;\n}\n","import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport Component from '@glimmer/component';\nimport { getPromiseState } from './promise-state.ts';\nimport { Awaitable } from '@ember-data/request';\nexport function notNull<T>(x1: null): never;\nexport function notNull<T>(x1: T): Exclude<T, null>;\nexport function notNull<T>(x1: T | null) {\n assert('Expected a non-null value, but got null', x1 !== null);\n return x1;\n}\nexport const and = (x1: unknown, y1: unknown)=>Boolean(x1 && y1);\ninterface ThrowSignature<E = Error | string | object> {\n Args: {\n error: E;\n };\n}\nexport class Throw<T> extends Component<ThrowSignature<T>> {\n constructor(owner1: unknown, args1: ThrowSignature<T>['Args']){\n super(owner1, args1);\n throw this.args.error;\n }\n static{\n template(``, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\ninterface AwaitSignature<T, E = Error | string | object> {\n Args: {\n promise: Promise<T> | Awaitable<T, E>;\n };\n Blocks: {\n pending: [];\n error: [error: E];\n success: [value: T];\n };\n}\nexport class Await<T, E> extends Component<AwaitSignature<T, E>> {\n get state() {\n return getPromiseState<T, E>(this.args.promise);\n }\n static{\n template(`\n {{#if this.state.isPending}}\n {{yield to=\"pending\"}}\n {{else if (and this.state.isError (has-block \"error\"))}}\n {{yield (notNull this.state.error) to=\"error\"}}\n {{else if this.state.isSuccess}}\n {{yield (notNull this.state.result) to=\"success\"}}\n {{else}}\n <Throw @error={{(notNull this.state.error)}} />\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RhdGEvZGF0YS9wYWNrYWdlcy9lbWJlci9zcmMvLXByaXZhdGUvYXdhaXQuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BlbWJlci9kZWJ1Zyc7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRQcm9taXNlU3RhdGUgfSBmcm9tICcuL3Byb21pc2Utc3RhdGUudHMnO1xuaW1wb3J0IHsgQXdhaXRhYmxlIH0gZnJvbSAnQGVtYmVyLWRhdGEvcmVxdWVzdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3ROdWxsPFQ-KHg6IG51bGwpOiBuZXZlcjtcbmV4cG9ydCBmdW5jdGlvbiBub3ROdWxsPFQ-KHg6IFQpOiBFeGNsdWRlPFQsIG51bGw-O1xuZXhwb3J0IGZ1bmN0aW9uIG5vdE51bGw8VD4oeDogVCB8IG51bGwpIHtcbiAgYXNzZXJ0KCdFeHBlY3RlZCBhIG5vbi1udWxsIHZhbHVlLCBidXQgZ290IG51bGwnLCB4ICE9PSBudWxsKTtcbiAgcmV0dXJuIHg7XG59XG5leHBvcnQgY29uc3QgYW5kID0gKHg6IHVua25vd24sIHk6IHVua25vd24pID0-IEJvb2xlYW4oeCAmJiB5KTtcblxuaW50ZXJmYWNlIFRocm93U2lnbmF0dXJlPEUgPSBFcnJvciB8IHN0cmluZyB8IG9iamVjdD4ge1xuICBBcmdzOiB7XG4gICAgZXJyb3I6IEU7XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBUaHJvdzxUPiBleHRlbmRzIENvbXBvbmVudDxUaHJvd1NpZ25hdHVyZTxUPj4ge1xuICBjb25zdHJ1Y3Rvcihvd25lcjogdW5rbm93biwgYXJnczogVGhyb3dTaWduYXR1cmU8VD5bJ0FyZ3MnXSkge1xuICAgIHN1cGVyKG93bmVyLCBhcmdzKTtcbiAgICB0aHJvdyB0aGlzLmFyZ3MuZXJyb3I7XG4gIH1cbiAgPHRlbXBsYXRlPjwvdGVtcGxhdGU-XG59XG5cbmludGVyZmFjZSBBd2FpdFNpZ25hdHVyZTxULCBFID0gRXJyb3IgfCBzdHJpbmcgfCBvYmplY3Q-IHtcbiAgQXJnczoge1xuICAgIHByb21pc2U6IFByb21pc2U8VD4gfCBBd2FpdGFibGU8VCwgRT47XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIHBlbmRpbmc6IFtdO1xuICAgIGVycm9yOiBbZXJyb3I6IEVdO1xuICAgIHN1Y2Nlc3M6IFt2YWx1ZTogVF07XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBd2FpdDxULCBFPiBleHRlbmRzIENvbXBvbmVudDxBd2FpdFNpZ25hdHVyZTxULCBFPj4ge1xuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIGdldFByb21pc2VTdGF0ZTxULCBFPih0aGlzLmFyZ3MucHJvbWlzZSk7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjaWYgdGhpcy5zdGF0ZS5pc1BlbmRpbmd9fVxuICAgICAge3t5aWVsZCB0bz1cInBlbmRpbmdcIn19XG4gICAge3tlbHNlIGlmIChhbmQgdGhpcy5zdGF0ZS5pc0Vycm9yIChoYXMtYmxvY2sgXCJlcnJvclwiKSl9fVxuICAgICAge3t5aWVsZCAobm90TnVsbCB0aGlzLnN0YXRlLmVycm9yKSB0bz1cImVycm9yXCJ9fVxuICAgIHt7ZWxzZSBpZiB0aGlzLnN0YXRlLmlzU3VjY2Vzc319XG4gICAgICB7e3lpZWxkIChub3ROdWxsIHRoaXMuc3RhdGUucmVzdWx0KSB0bz1cInN1Y2Nlc3NcIn19XG4gICAge3tlbHNlfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3sobm90TnVsbCB0aGlzLnN0YXRlLmVycm9yKX19IC8-XG4gICAge3svaWZ9fVxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTLE1BQU0sUUFBUSxlQUFlO0FBQ3RDLE9BQU8sZUFBZSxxQkFBcUI7QUFDM0MsU0FBUyxlQUFlLFFBQVEscUJBQXFCO0FBQ3JELFNBQVMsU0FBUyxRQUFRLHNCQUFzQjtBQUVoRCxPQUFPLFNBQVMsUUFBUSxHQUFHLElBQUcsSUFBSSxHQUFHLEtBQUs7QUFDMUMsT0FBTyxTQUFTLFFBQVEsR0FBRyxJQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsSUFBSTtBQUNqRCxPQUFPLFNBQVMsUUFBUSxHQUFHLElBQUcsSUFBSSxJQUFJO0lBQ3BDLE9BQU8sMkNBQTJDLE9BQU07SUFDeEQsT0FBTztBQUNUO0FBQ0EsT0FBTyxNQUFNLE1BQU0sQ0FBQyxJQUFHLE9BQU8sRUFBRSxJQUFHLE9BQU8sR0FBSyxRQUFRLE1BQUssSUFBRztVQUVyRCxlQUFlLElBQUksUUFBUSxNQUFNLEdBQUcsTUFBTTtJQUNsRDtRQUNFLE9BQU87OztBQUlYLE9BQU8sTUFBTSxNQUFNLFdBQVcsVUFBVSxlQUFlO0lBQ3JELFlBQVksUUFBTyxPQUFPLEVBQUUsT0FBTSxlQUFlLEdBQUcsT0FBTyxDQUFFO1FBQzNELEtBQUssQ0FBQyxRQUFPO1FBQ2IsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7SUFDdkI7SUFDQSxNQUFBO1FBQUEsU0FBVSxDQUFBLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQUFWO0FBQ1o7VUFFVSxlQUFlLEdBQUcsSUFBSSxRQUFRLE1BQU0sR0FBRyxNQUFNO0lBQ3JEO1FBQ0UsU0FBUyxRQUFRLEtBQUssVUFBVSxHQUFHOztJQUVyQztRQUNFO1FBQ0EsUUFBUSxPQUFPO1FBQ2YsVUFBVSxPQUFPOzs7QUFJckIsT0FBTyxNQUFNLE1BQU0sR0FBRyxXQUFXLFVBQVUsZUFBZSxHQUFHO0lBQzNELElBQUksUUFBUTtRQUNWLE9BQU8sZ0JBQWdCLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87SUFDaEQ7SUFFQSxNQUFBO1FBQUEsU0FBVSxDQUFBOzs7Ozs7Ozs7O0VBVVYsQ0FBQSxFQUFBO1lBQUEsV0FBQSxJQUFXO1lBQVg7Z0JBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO1lBQUQ7UUFBQTtJQUFBLENBVkE7QUFXWiJ9","import { template } from \"@ember/template-compiler\";\nimport { assert } from '@ember/debug';\nimport { service } from '@ember/service';\nimport Component from '@glimmer/component';\nimport { cached } from '@glimmer/tracking';\nimport type { Future, StructuredErrorDocument } from '@ember-data/request';\nimport { importSync, macroCondition, moduleExists } from '@embroider/macros';\nimport type { StoreRequestInput } from '@ember-data/store';\nimport type Store from '@ember-data/store';\nimport { getRequestState } from './request-state.ts';\nimport type { RequestLoadingState } from './request-state.ts';\nimport { and, notNull, Throw } from './await.gts';\nlet provide = service;\nif (macroCondition(moduleExists('ember-provide-consume-context'))) {\n const { consume } = importSync('ember-provide-consume-context') as {\n consume: typeof service;\n };\n provide = consume;\n}\ninterface RequestSignature<T> {\n Args: {\n request?: Future<T>;\n query?: StoreRequestInput;\n store?: Store;\n };\n Blocks: {\n loading: [state: RequestLoadingState];\n cancelled: [error: StructuredErrorDocument];\n error: [error: StructuredErrorDocument];\n content: [value: T];\n };\n}\nexport class Request<T> extends Component<RequestSignature<T>> {\n /**\n * @internal\n */ @provide('store')\n _store: Store;\n retry = ()=>{};\n reload = ()=>{};\n refresh = ()=>{};\n @cached\n get request() {\n const { request: request1, query: query1 } = this.args;\n assert(`Cannot use both @request and @query args with the <Request> component`, !request1 || !query1);\n if (request1) {\n return request1;\n }\n assert(`You must provide either @request or an @query arg with the <Request> component`, query1);\n return this.store.request<T>(query1);\n }\n get store(): Store {\n const store1 = this.args.store || this._store;\n assert(moduleExists('ember-provide-consume-context') ? `No store was provided to the <Request> component. Either provide a store via the @store arg or via the context API provided by ember-provide-consume-context.` : `No store was provided to the <Request> component. Either provide a store via the @store arg or by registering a store service.`, store1);\n return store1;\n }\n get reqState() {\n return getRequestState<T>(this.request);\n }\n static{\n template(`\n {{#if this.reqState.isLoading}}\n {{yield this.reqState.loadingState to=\"loading\"}}\n {{else if (and this.reqState.isCancelled (has-block \"cancelled\"))}}\n {{yield (notNull this.reqState.error) to=\"cancelled\"}}\n {{else if (and this.reqState.isError (has-block \"error\"))}}\n {{yield (notNull this.reqState.error) to=\"error\"}}\n {{else if this.reqState.isSuccess}}\n {{yield (notNull this.reqState.result) to=\"content\"}}\n {{else}}\n <Throw @error={{(notNull this.reqState.error)}} />\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RhdGEvZGF0YS9wYWNrYWdlcy9lbWJlci9zcmMvLXByaXZhdGUvcmVxdWVzdC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGVtYmVyL2RlYnVnJztcbmltcG9ydCB7IHNlcnZpY2UgfSBmcm9tICdAZW1iZXIvc2VydmljZSc7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBjYWNoZWQgfSBmcm9tICdAZ2xpbW1lci90cmFja2luZyc7XG5pbXBvcnQgdHlwZSB7IEZ1dHVyZSwgU3RydWN0dXJlZEVycm9yRG9jdW1lbnQgfSBmcm9tICdAZW1iZXItZGF0YS9yZXF1ZXN0JztcblxuaW1wb3J0IHsgaW1wb3J0U3luYywgbWFjcm9Db25kaXRpb24sIG1vZHVsZUV4aXN0cyB9IGZyb20gJ0BlbWJyb2lkZXIvbWFjcm9zJztcblxuaW1wb3J0IHR5cGUgeyBTdG9yZVJlcXVlc3RJbnB1dCB9IGZyb20gJ0BlbWJlci1kYXRhL3N0b3JlJztcbmltcG9ydCB0eXBlIFN0b3JlIGZyb20gJ0BlbWJlci1kYXRhL3N0b3JlJztcblxuaW1wb3J0IHsgZ2V0UmVxdWVzdFN0YXRlIH0gZnJvbSAnLi9yZXF1ZXN0LXN0YXRlLnRzJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdExvYWRpbmdTdGF0ZSB9IGZyb20gJy4vcmVxdWVzdC1zdGF0ZS50cyc7XG5pbXBvcnQgeyBhbmQsIG5vdE51bGwsIFRocm93IH0gZnJvbSAnLi9hd2FpdC5ndHMnO1xuXG5sZXQgcHJvdmlkZSA9IHNlcnZpY2U7XG5pZiAobWFjcm9Db25kaXRpb24obW9kdWxlRXhpc3RzKCdlbWJlci1wcm92aWRlLWNvbnN1bWUtY29udGV4dCcpKSkge1xuICBjb25zdCB7IGNvbnN1bWUgfSA9IGltcG9ydFN5bmMoJ2VtYmVyLXByb3ZpZGUtY29uc3VtZS1jb250ZXh0JykgYXMgeyBjb25zdW1lOiB0eXBlb2Ygc2VydmljZSB9O1xuICBwcm92aWRlID0gY29uc3VtZTtcbn1cblxuaW50ZXJmYWNlIFJlcXVlc3RTaWduYXR1cmU8VD4ge1xuICBBcmdzOiB7XG4gICAgcmVxdWVzdD86IEZ1dHVyZTxUPjtcbiAgICBxdWVyeT86IFN0b3JlUmVxdWVzdElucHV0O1xuICAgIHN0b3JlPzogU3RvcmU7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGxvYWRpbmc6IFtzdGF0ZTogUmVxdWVzdExvYWRpbmdTdGF0ZV07XG4gICAgY2FuY2VsbGVkOiBbZXJyb3I6IFN0cnVjdHVyZWRFcnJvckRvY3VtZW50XTtcbiAgICBlcnJvcjogW2Vycm9yOiBTdHJ1Y3R1cmVkRXJyb3JEb2N1bWVudF07XG4gICAgY29udGVudDogW3ZhbHVlOiBUXTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlcXVlc3Q8VD4gZXh0ZW5kcyBDb21wb25lbnQ8UmVxdWVzdFNpZ25hdHVyZTxUPj4ge1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAcHJvdmlkZSgnc3RvcmUnKSBkZWNsYXJlIF9zdG9yZTogU3RvcmU7XG5cbiAgcmV0cnkgPSAoKSA9PiB7fTtcbiAgcmVsb2FkID0gKCkgPT4ge307XG4gIHJlZnJlc2ggPSAoKSA9PiB7fTtcblxuICBAY2FjaGVkXG4gIGdldCByZXF1ZXN0KCkge1xuICAgIGNvbnN0IHsgcmVxdWVzdCwgcXVlcnkgfSA9IHRoaXMuYXJncztcbiAgICBhc3NlcnQoYENhbm5vdCB1c2UgYm90aCBAcmVxdWVzdCBhbmQgQHF1ZXJ5IGFyZ3Mgd2l0aCB0aGUgPFJlcXVlc3Q-IGNvbXBvbmVudGAsICFyZXF1ZXN0IHx8ICFxdWVyeSk7XG4gICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgIHJldHVybiByZXF1ZXN0O1xuICAgIH1cbiAgICBhc3NlcnQoYFlvdSBtdXN0IHByb3ZpZGUgZWl0aGVyIEByZXF1ZXN0IG9yIGFuIEBxdWVyeSBhcmcgd2l0aCB0aGUgPFJlcXVlc3Q-IGNvbXBvbmVudGAsIHF1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5yZXF1ZXN0PFQ-KHF1ZXJ5KTtcbiAgfVxuXG4gIGdldCBzdG9yZSgpOiBTdG9yZSB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLmFyZ3Muc3RvcmUgfHwgdGhpcy5fc3RvcmU7XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kdWxlRXhpc3RzKCdlbWJlci1wcm92aWRlLWNvbnN1bWUtY29udGV4dCcpXG4gICAgICAgID8gYE5vIHN0b3JlIHdhcyBwcm92aWRlZCB0byB0aGUgPFJlcXVlc3Q-IGNvbXBvbmVudC4gRWl0aGVyIHByb3ZpZGUgYSBzdG9yZSB2aWEgdGhlIEBzdG9yZSBhcmcgb3IgdmlhIHRoZSBjb250ZXh0IEFQSSBwcm92aWRlZCBieSBlbWJlci1wcm92aWRlLWNvbnN1bWUtY29udGV4dC5gXG4gICAgICAgIDogYE5vIHN0b3JlIHdhcyBwcm92aWRlZCB0byB0aGUgPFJlcXVlc3Q-IGNvbXBvbmVudC4gRWl0aGVyIHByb3ZpZGUgYSBzdG9yZSB2aWEgdGhlIEBzdG9yZSBhcmcgb3IgYnkgcmVnaXN0ZXJpbmcgYSBzdG9yZSBzZXJ2aWNlLmAsXG4gICAgICBzdG9yZVxuICAgICk7XG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG5cbiAgZ2V0IHJlcVN0YXRlKCkge1xuICAgIHJldHVybiBnZXRSZXF1ZXN0U3RhdGU8VD4odGhpcy5yZXF1ZXN0KTtcbiAgfVxuXG4gIDx0ZW1wbGF0ZT5cbiAgICB7eyNpZiB0aGlzLnJlcVN0YXRlLmlzTG9hZGluZ319XG4gICAgICB7e3lpZWxkIHRoaXMucmVxU3RhdGUubG9hZGluZ1N0YXRlIHRvPVwibG9hZGluZ1wifX1cbiAgICB7e2Vsc2UgaWYgKGFuZCB0aGlzLnJlcVN0YXRlLmlzQ2FuY2VsbGVkIChoYXMtYmxvY2sgXCJjYW5jZWxsZWRcIikpfX1cbiAgICAgIHt7eWllbGQgKG5vdE51bGwgdGhpcy5yZXFTdGF0ZS5lcnJvcikgdG89XCJjYW5jZWxsZWRcIn19XG4gICAge3tlbHNlIGlmIChhbmQgdGhpcy5yZXFTdGF0ZS5pc0Vycm9yIChoYXMtYmxvY2sgXCJlcnJvclwiKSl9fVxuICAgICAge3t5aWVsZCAobm90TnVsbCB0aGlzLnJlcVN0YXRlLmVycm9yKSB0bz1cImVycm9yXCJ9fVxuICAgIHt7ZWxzZSBpZiB0aGlzLnJlcVN0YXRlLmlzU3VjY2Vzc319XG4gICAgICB7e3lpZWxkIChub3ROdWxsIHRoaXMucmVxU3RhdGUucmVzdWx0KSB0bz1cImNvbnRlbnRcIn19XG4gICAge3tlbHNlfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3sobm90TnVsbCB0aGlzLnJlcVN0YXRlLmVycm9yKX19IC8-XG4gICAge3svaWZ9fVxuICA8L3RlbXBsYXRlPlxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTLE1BQU0sUUFBUSxlQUFlO0FBQ3RDLFNBQVMsT0FBTyxRQUFRLGlCQUFpQjtBQUN6QyxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLFNBQVMsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxjQUFjLE1BQU0sRUFBRSx1QkFBdUIsUUFBUSxzQkFBc0I7QUFFM0UsU0FBUyxVQUFVLEVBQUUsY0FBYyxFQUFFLFlBQVksUUFBUSxvQkFBb0I7QUFFN0UsY0FBYyxpQkFBaUIsUUFBUSxvQkFBb0I7QUFDM0QsWUFBWSxXQUFXLG9CQUFvQjtBQUUzQyxTQUFTLGVBQWUsUUFBUSxxQkFBcUI7QUFDckQsY0FBYyxtQkFBbUIsUUFBUSxxQkFBcUI7QUFDOUQsU0FBUyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssUUFBUSxjQUFjO0FBRWxELElBQUksVUFBVTtBQUNkLElBQUksZUFBZSxhQUFhLG1DQUFtQztJQUNqRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsV0FBVztRQUFzQyxnQkFBZ0I7O0lBQ3JGLFVBQVU7QUFDWjtVQUVVLGlCQUFpQjtJQUN6QjtRQUNFLFVBQVUsT0FBTztRQUNqQixRQUFRO1FBQ1IsUUFBUTs7SUFFVjtRQUNFLFVBQVUsT0FBTztRQUNqQixZQUFZLE9BQU87UUFDbkIsUUFBUSxPQUFPO1FBQ2YsVUFBVSxPQUFPOzs7QUFJckIsT0FBTyxNQUFNLFFBQVEsV0FBVyxVQUFVLGlCQUFpQjtJQUN6RDs7R0FFQyxHQUNELENBQUMsUUFBUTtJQUFpQixRQUFRLE1BQU07SUFFeEMsUUFBUSxLQUFPLEVBQUU7SUFDakIsU0FBUyxLQUFPLEVBQUU7SUFDbEIsVUFBVSxLQUFPLEVBQUU7SUFFbkIsQ0FBQztJQUFNLElBQ0gsVUFBVTtRQUNaLE1BQU0sRUFBRSxTQUFBLFFBQU8sRUFBRSxPQUFBLE1BQUssRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJO1FBQ3BDLE9BQU8sQ0FBQyxxRUFBcUUsQ0FBQyxFQUFFLENBQUMsWUFBVyxDQUFDO1FBQzdGLElBQUksVUFBUztZQUNYLE9BQU87UUFDVDtRQUNBLE9BQU8sQ0FBQyw4RUFBOEUsQ0FBQyxFQUFFO1FBQ3pGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRztJQUMvQjtJQUVBLElBQUksU0FBUyxNQUFNO1FBQ2pCLE1BQU0sU0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTTtRQUM1QyxPQUNFLGFBQWEsbUNBQ1QsQ0FBQyw2SkFBNkosQ0FBQyxHQUMvSixDQUFDLDhIQUE4SCxDQUFDLEVBQ3BJO1FBRUYsT0FBTztJQUNUO0lBRUEsSUFBSSxXQUFXO1FBQ2IsT0FBTyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTztJQUN4QztJQUVBLE1BQUE7UUFBQSxTQUFVLENBQUE7Ozs7Ozs7Ozs7OztFQVlWLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQVpBO0FBYVoifQ"],"names":["RequestCache","WeakMap","isAbortError","error","DOMException","name","watchStream","stream","state","reader","getReader","bytesLoaded","shouldForward","_stream","readable","locked","isForwarding","writer","writable","getWriter","buffer","_isPending","_isStarted","_startTime","performance","now","value","done","read","byteLength","_bytesLoaded","_lastPacketTime","item","ready","write","length","push","close","cancel","endTime","_endTime","_isComplete","RequestLoadingState","_future","_triggered","_trigger","future","promise","getStream","sizeHint","_sizeHint","then","_isCancelled","_isErrored","_error","g","this","prototype","tracked","i","void 0","isPending","TransformStream","isStarted","startTime","lastPacketTime","isComplete","isCancelled","isErrored","elapsedTime","completeRatio","remainingRatio","duration","speed","constructor","abort","RequestState","isError","loadingState","getPromiseResult","request","result","response","isLoading","content","isSuccess","setPromiseResult","getRequestState","get","set","PromiseCache","PromiseState","getPromiseState","notNull","x1","assert","and","y1","Boolean","Throw","Component","owner1","args1","args","setComponentTemplate","precompileTemplate","strictMode","Await","scope","provide","service","macroCondition","moduleExists","consume","importSync","Request","retry","reload","refresh","request1","query","query1","store","n","cached","store1","_store","reqState"],"mappings":"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","x_google_ignoreList":[0,1]}