77 */
88
99import {
10- Injector ,
11- Signal ,
12- ɵResourceImpl as ResourceImpl ,
13- inject ,
14- linkedSignal ,
1510 assertInInjectionContext ,
16- signal ,
1711 computed ,
12+ ɵencapsulateResourceError as encapsulateResourceError ,
13+ inject ,
14+ Injector ,
15+ linkedSignal ,
16+ ɵResourceImpl as ResourceImpl ,
17+ type ResourceParamsContext ,
1818 ResourceStreamItem ,
19+ Signal ,
20+ signal ,
21+ TransferState ,
1922 type ValueEqualityFn ,
2023 ɵRuntimeError ,
2124 ɵRuntimeErrorCode ,
22- ɵencapsulateResourceError as encapsulateResourceError ,
23- TransferState ,
24- untracked ,
2525} from '@angular/core' ;
2626import type { Subscription } from 'rxjs' ;
2727
28- import { HttpRequest } from './request' ;
2928import { HttpClient } from './client' ;
30- import { HttpErrorResponse , HttpEventType , HttpProgressEvent } from './response' ;
3129import { HttpHeaders } from './headers' ;
3230import { HttpParams } from './params' ;
33- import { HttpResourceRef , HttpResourceOptions , HttpResourceRequest } from './resource_api' ;
31+ import { HttpRequest } from './request' ;
32+ import { HttpResourceOptions , HttpResourceRef , HttpResourceRequest } from './resource_api' ;
33+ import { HttpErrorResponse , HttpEventType , HttpProgressEvent } from './response' ;
3434import {
3535 CACHE_OPTIONS ,
3636 HTTP_TRANSFER_CACHE_ORIGIN_MAP ,
@@ -57,7 +57,7 @@ export interface HttpResourceFn {
5757 * @experimental 19.2
5858 */
5959 < TResult = unknown > (
60- url : ( ) => string | undefined ,
60+ url : ( ctx : ResourceParamsContext ) => string | undefined ,
6161 options : HttpResourceOptions < TResult , unknown > & { defaultValue : NoInfer < TResult > } ,
6262 ) : HttpResourceRef < TResult > ;
6363
@@ -73,7 +73,7 @@ export interface HttpResourceFn {
7373 * @experimental 19.2
7474 */
7575 < TResult = unknown > (
76- url : ( ) => string | undefined ,
76+ url : ( ctx : ResourceParamsContext ) => string | undefined ,
7777 options ?: HttpResourceOptions < TResult , unknown > ,
7878 ) : HttpResourceRef < TResult | undefined > ;
7979
@@ -89,7 +89,7 @@ export interface HttpResourceFn {
8989 * @experimental 19.2
9090 */
9191 < TResult = unknown > (
92- request : ( ) => HttpResourceRequest | undefined ,
92+ request : ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ,
9393 options : HttpResourceOptions < TResult , unknown > & { defaultValue : NoInfer < TResult > } ,
9494 ) : HttpResourceRef < TResult > ;
9595
@@ -105,7 +105,7 @@ export interface HttpResourceFn {
105105 * @experimental 19.2
106106 */
107107 < TResult = unknown > (
108- request : ( ) => HttpResourceRequest | undefined ,
108+ request : ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ,
109109 options ?: HttpResourceOptions < TResult , unknown > ,
110110 ) : HttpResourceRef < TResult | undefined > ;
111111
@@ -121,22 +121,22 @@ export interface HttpResourceFn {
121121 */
122122 arrayBuffer : {
123123 < TResult = ArrayBuffer > (
124- url : ( ) => string | undefined ,
124+ url : ( ctx : ResourceParamsContext ) => string | undefined ,
125125 options : HttpResourceOptions < TResult , ArrayBuffer > & { defaultValue : NoInfer < TResult > } ,
126126 ) : HttpResourceRef < TResult > ;
127127
128128 < TResult = ArrayBuffer > (
129- url : ( ) => string | undefined ,
129+ url : ( ctx : ResourceParamsContext ) => string | undefined ,
130130 options ?: HttpResourceOptions < TResult , ArrayBuffer > ,
131131 ) : HttpResourceRef < TResult | undefined > ;
132132
133133 < TResult = ArrayBuffer > (
134- request : ( ) => HttpResourceRequest | undefined ,
134+ request : ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ,
135135 options : HttpResourceOptions < TResult , ArrayBuffer > & { defaultValue : NoInfer < TResult > } ,
136136 ) : HttpResourceRef < TResult > ;
137137
138138 < TResult = ArrayBuffer > (
139- request : ( ) => HttpResourceRequest | undefined ,
139+ request : ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ,
140140 options ?: HttpResourceOptions < TResult , ArrayBuffer > ,
141141 ) : HttpResourceRef < TResult | undefined > ;
142142 } ;
@@ -153,22 +153,22 @@ export interface HttpResourceFn {
153153 */
154154 blob : {
155155 < TResult = Blob > (
156- url : ( ) => string | undefined ,
156+ url : ( ctx : ResourceParamsContext ) => string | undefined ,
157157 options : HttpResourceOptions < TResult , Blob > & { defaultValue : NoInfer < TResult > } ,
158158 ) : HttpResourceRef < TResult > ;
159159
160160 < TResult = Blob > (
161- url : ( ) => string | undefined ,
161+ url : ( ctx : ResourceParamsContext ) => string | undefined ,
162162 options ?: HttpResourceOptions < TResult , Blob > ,
163163 ) : HttpResourceRef < TResult | undefined > ;
164164
165165 < TResult = Blob > (
166- request : ( ) => HttpResourceRequest | undefined ,
166+ request : ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ,
167167 options : HttpResourceOptions < TResult , Blob > & { defaultValue : NoInfer < TResult > } ,
168168 ) : HttpResourceRef < TResult > ;
169169
170170 < TResult = Blob > (
171- request : ( ) => HttpResourceRequest | undefined ,
171+ request : ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ,
172172 options ?: HttpResourceOptions < TResult , Blob > ,
173173 ) : HttpResourceRef < TResult | undefined > ;
174174 } ;
@@ -185,22 +185,22 @@ export interface HttpResourceFn {
185185 */
186186 text : {
187187 < TResult = string > (
188- url : ( ) => string | undefined ,
188+ url : ( ctx : ResourceParamsContext ) => string | undefined ,
189189 options : HttpResourceOptions < TResult , string > & { defaultValue : NoInfer < TResult > } ,
190190 ) : HttpResourceRef < TResult > ;
191191
192192 < TResult = string > (
193- url : ( ) => string | undefined ,
193+ url : ( ctx : ResourceParamsContext ) => string | undefined ,
194194 options ?: HttpResourceOptions < TResult , string > ,
195195 ) : HttpResourceRef < TResult | undefined > ;
196196
197197 < TResult = string > (
198- request : ( ) => HttpResourceRequest | undefined ,
198+ request : ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ,
199199 options : HttpResourceOptions < TResult , string > & { defaultValue : NoInfer < TResult > } ,
200200 ) : HttpResourceRef < TResult > ;
201201
202202 < TResult = string > (
203- request : ( ) => HttpResourceRequest | undefined ,
203+ request : ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ,
204204 options ?: HttpResourceOptions < TResult , string > ,
205205 ) : HttpResourceRef < TResult | undefined > ;
206206 } ;
@@ -230,7 +230,9 @@ export const httpResource: HttpResourceFn = (() => {
230230 * the requestee.
231231 */
232232type ResponseType = 'arraybuffer' | 'blob' | 'json' | 'text' ;
233- type RawRequestType = ( ( ) => string | undefined ) | ( ( ) => HttpResourceRequest | undefined ) ;
233+ type RawRequestType =
234+ | ( ( ctx : ResourceParamsContext ) => string | undefined )
235+ | ( ( ctx : ResourceParamsContext ) => HttpResourceRequest | undefined ) ;
234236
235237function makeHttpResourceFn < TRaw > ( responseType : ResponseType ) {
236238 return function httpResource < TResult = TRaw > (
@@ -270,8 +272,8 @@ function makeHttpResourceFn<TRaw>(responseType: ResponseType) {
270272
271273 return new HttpResourceImpl (
272274 injector ,
273- ( ) => normalizeRequest ( request , responseType ) ,
274- options ?. defaultValue as TResult ,
275+ ( ctx : ResourceParamsContext ) => normalizeRequest ( ctx , request , responseType ) ,
276+ options ?. defaultValue ,
275277 options ?. debugName ,
276278 options ?. parse as ( value : unknown ) => TResult ,
277279 options ?. equal as ValueEqualityFn < unknown > ,
@@ -281,10 +283,11 @@ function makeHttpResourceFn<TRaw>(responseType: ResponseType) {
281283}
282284
283285function normalizeRequest (
286+ ctx : ResourceParamsContext ,
284287 request : RawRequestType ,
285288 responseType : ResponseType ,
286289) : HttpRequest < unknown > | undefined {
287- let unwrappedRequest = typeof request === 'function' ? request ( ) : request ;
290+ let unwrappedRequest = typeof request === 'function' ? request ( ctx ) : request ;
288291 if ( unwrappedRequest === undefined ) {
289292 return undefined ;
290293 } else if ( typeof unwrappedRequest === 'string' ) {
@@ -356,7 +359,7 @@ class HttpResourceImpl<T>
356359
357360 constructor (
358361 injector : Injector ,
359- request : ( ) => HttpRequest < unknown > | undefined ,
362+ request : ( ctx : ResourceParamsContext ) => HttpRequest < T > | undefined ,
360363 defaultValue : T ,
361364 debugName ?: string ,
362365 parse ?: ( value : unknown ) => T ,
0 commit comments