Skip to content

Commit fc65107

Browse files
committed
Revert "refactor(core): add debug name to resource (angular#64172)" (angular#64418)
This reverts commit 6318006. PR Close angular#64418
1 parent a2d8adb commit fc65107

File tree

6 files changed

+16
-80
lines changed

6 files changed

+16
-80
lines changed

goldens/public-api/common/http/index.api.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3021,7 +3021,6 @@ export interface HttpResourceFn {
30213021

30223022
// @public
30233023
export interface HttpResourceOptions<TResult, TRaw> {
3024-
debugName?: string;
30253024
defaultValue?: NoInfer<TResult>;
30263025
equal?: ValueEqualityFn<NoInfer<TResult>>;
30273026
injector?: Injector;

goldens/public-api/core/index.api.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1640,9 +1640,7 @@ export interface ResourceLoaderParams<R> {
16401640
}
16411641

16421642
// @public (undocumented)
1643-
export type ResourceOptions<T, R> = (PromiseResourceOptions<T, R> | StreamingResourceOptions<T, R>) & {
1644-
debugName?: string;
1645-
};
1643+
export type ResourceOptions<T, R> = PromiseResourceOptions<T, R> | StreamingResourceOptions<T, R>;
16461644

16471645
// @public
16481646
export interface ResourceRef<T> extends WritableResource<T> {

packages/common/http/src/resource.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,6 @@ function makeHttpResourceFn<TRaw>(responseType: ResponseType) {
238238
injector,
239239
() => normalizeRequest(request, responseType),
240240
options?.defaultValue,
241-
options?.debugName,
242241
options?.parse as (value: unknown) => TResult,
243242
options?.equal as ValueEqualityFn<unknown>,
244243
) as HttpResourceRef<TResult>;
@@ -323,7 +322,6 @@ class HttpResourceImpl<T>
323322
injector: Injector,
324323
request: () => HttpRequest<T> | undefined,
325324
defaultValue: T,
326-
debugName?: string,
327325
parse?: (value: unknown) => T,
328326
equal?: ValueEqualityFn<unknown>,
329327
) {
@@ -391,7 +389,6 @@ class HttpResourceImpl<T>
391389
},
392390
defaultValue,
393391
equal,
394-
debugName,
395392
injector,
396393
);
397394
this.client = injector.get(HttpClient);

packages/common/http/src/resource_api.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,6 @@ export interface HttpResourceOptions<TResult, TRaw> {
171171
* A comparison function which defines equality for the response value.
172172
*/
173173
equal?: ValueEqualityFn<NoInfer<TResult>>;
174-
175-
/**
176-
* A debug name for the reactive node. Used in Angular DevTools to identify the node.
177-
*/
178-
debugName?: string;
179174
}
180175

181176
/**

packages/core/src/resource/api.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -227,15 +227,7 @@ export interface StreamingResourceOptions<T, R> extends BaseResourceOptions<T, R
227227
/**
228228
* @experimental
229229
*/
230-
export type ResourceOptions<T, R> = (
231-
| PromiseResourceOptions<T, R>
232-
| StreamingResourceOptions<T, R>
233-
) & {
234-
/**
235-
* A debug name for the reactive node. Used in Angular DevTools to identify the node.
236-
*/
237-
debugName?: string;
238-
};
230+
export type ResourceOptions<T, R> = PromiseResourceOptions<T, R> | StreamingResourceOptions<T, R>;
239231

240232
/**
241233
* @experimental

packages/core/src/resource/resource.ts

Lines changed: 14 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,11 @@ export function resource<T, R>(options: ResourceOptions<T, R>): ResourceRef<T |
7171
options as ResourceOptions<T, R> & {request: ResourceOptions<T, R>['params']}
7272
).request;
7373
const params = (options.params ?? oldNameForParams ?? (() => null)) as () => R;
74-
7574
return new ResourceImpl<T | undefined, R>(
7675
params,
7776
getLoader(options),
7877
options.defaultValue,
7978
options.equal ? wrapEqualityFn(options.equal) : undefined,
80-
options.debugName,
8179
options.injector ?? inject(Injector),
8280
RESOURCE_VALUE_THROWS_ERRORS_DEFAULT,
8381
);
@@ -113,18 +111,11 @@ abstract class BaseWritableResource<T> implements WritableResource<T> {
113111

114112
abstract reload(): boolean;
115113

116-
readonly isLoading: Signal<boolean>;
117-
118-
constructor(value: Signal<T>, debugName: string | undefined) {
114+
constructor(value: Signal<T>) {
119115
this.value = value as WritableSignal<T>;
120116
this.value.set = this.set.bind(this);
121117
this.value.update = this.update.bind(this);
122118
this.value.asReadonly = signalAsReadonlyFn;
123-
124-
this.isLoading = computed(
125-
() => this.status() === 'loading' || this.status() === 'reloading',
126-
ngDevMode ? createDebugNameObject(debugName, 'isLoading') : undefined,
127-
);
128119
}
129120

130121
abstract set(value: T): void;
@@ -135,6 +126,8 @@ abstract class BaseWritableResource<T> implements WritableResource<T> {
135126
this.set(updateFn(untracked(this.value)));
136127
}
137128

129+
readonly isLoading = computed(() => this.status() === 'loading' || this.status() === 'reloading');
130+
138131
// Use a computed here to avoid triggering reactive consumers if the value changes while staying
139132
// either defined or undefined.
140133
private readonly isValueDefined = computed(() => {
@@ -178,15 +171,11 @@ export class ResourceImpl<T, R> extends BaseWritableResource<T> implements Resou
178171
private destroyed = false;
179172
private unregisterOnDestroy: () => void;
180173

181-
override readonly status: Signal<ResourceStatus>;
182-
override readonly error: Signal<Error | undefined>;
183-
184174
constructor(
185175
request: () => R,
186176
private readonly loaderFn: ResourceStreamingLoader<T, R>,
187177
defaultValue: T,
188178
private readonly equal: ValueEqualityFn<T> | undefined,
189-
private readonly debugName: string | undefined,
190179
injector: Injector,
191180
throwErrorsFromValue: boolean = RESOURCE_VALUE_THROWS_ERRORS_DEFAULT,
192181
) {
@@ -216,16 +205,14 @@ export class ResourceImpl<T, R> extends BaseWritableResource<T> implements Resou
216205

217206
return streamValue.value;
218207
},
219-
{equal, ...(ngDevMode ? createDebugNameObject(debugName, 'value') : undefined)},
208+
{equal},
220209
),
221-
debugName,
222210
);
223211

224212
// Extend `request()` to include a writable reload signal.
225213
this.extRequest = linkedSignal({
226214
source: request,
227215
computation: (request) => ({request, reload: 0}),
228-
...(ngDevMode ? createDebugNameObject(debugName, 'extRequest') : undefined),
229216
});
230217

231218
// The main resource state is managed in a `linkedSignal`, which allows the resource to change
@@ -256,33 +243,25 @@ export class ResourceImpl<T, R> extends BaseWritableResource<T> implements Resou
256243
};
257244
}
258245
},
259-
...(ngDevMode ? createDebugNameObject(debugName, 'state') : undefined),
260246
});
261247

262248
this.effectRef = effect(this.loadEffect.bind(this), {
263249
injector,
264250
manualCleanup: true,
265-
...(ngDevMode ? createDebugNameObject(debugName, 'loadEffect') : undefined),
266251
});
267252

268253
this.pendingTasks = injector.get(PendingTasks);
269254

270255
// Cancel any pending request when the resource itself is destroyed.
271256
this.unregisterOnDestroy = injector.get(DestroyRef).onDestroy(() => this.destroy());
257+
}
272258

273-
this.status = computed(
274-
() => projectStatusOfState(this.state()),
275-
ngDevMode ? createDebugNameObject(debugName, 'status') : undefined,
276-
);
259+
override readonly status = computed(() => projectStatusOfState(this.state()));
277260

278-
this.error = computed(
279-
() => {
280-
const stream = this.state().stream?.();
281-
return stream && !isResolved(stream) ? stream.error : undefined;
282-
},
283-
ngDevMode ? createDebugNameObject(debugName, 'error') : undefined,
284-
);
285-
}
261+
override readonly error = computed(() => {
262+
const stream = this.state().stream?.();
263+
return stream && !isResolved(stream) ? stream.error : undefined;
264+
});
286265

287266
/**
288267
* Called either directly via `WritableResource.set` or via `.value.set()`.
@@ -310,10 +289,7 @@ export class ResourceImpl<T, R> extends BaseWritableResource<T> implements Resou
310289
extRequest: state.extRequest,
311290
status: 'local',
312291
previousStatus: 'local',
313-
stream: signal(
314-
{value},
315-
ngDevMode ? createDebugNameObject(this.debugName, 'stream') : undefined,
316-
),
292+
stream: signal({value}),
317293
});
318294

319295
// We're departing from whatever state the resource was in previously, so cancel any in-progress
@@ -417,10 +393,7 @@ export class ResourceImpl<T, R> extends BaseWritableResource<T> implements Resou
417393
extRequest,
418394
status: 'resolved',
419395
previousStatus: 'error',
420-
stream: signal(
421-
{error: encapsulateResourceError(err)},
422-
ngDevMode ? createDebugNameObject(this.debugName, 'stream') : undefined,
423-
),
396+
stream: signal({error: encapsulateResourceError(err)}),
424397
});
425398
} finally {
426399
// Resolve the pending task now that the resource has a value.
@@ -453,15 +426,9 @@ function getLoader<T, R>(options: ResourceOptions<T, R>): ResourceStreamingLoade
453426

454427
return async (params) => {
455428
try {
456-
return signal(
457-
{value: await options.loader(params)},
458-
ngDevMode ? createDebugNameObject(options.debugName, 'stream') : undefined,
459-
);
429+
return signal({value: await options.loader(params)});
460430
} catch (err) {
461-
return signal(
462-
{error: encapsulateResourceError(err)},
463-
ngDevMode ? createDebugNameObject(options.debugName, 'stream') : undefined,
464-
);
431+
return signal({error: encapsulateResourceError(err)});
465432
}
466433
};
467434
}
@@ -490,18 +457,6 @@ function isResolved<T>(state: ResourceStreamItem<T>): state is {value: T} {
490457
return (state as {error: unknown}).error === undefined;
491458
}
492459

493-
/**
494-
* Creates a debug name object for an internal signal.
495-
*/
496-
function createDebugNameObject(
497-
resourceDebugName: string | undefined,
498-
internalSignalDebugName: string,
499-
): {debugName?: string} {
500-
return {
501-
debugName: `Resource${resourceDebugName ? '#' + resourceDebugName : ''}.${internalSignalDebugName}`,
502-
};
503-
}
504-
505460
export function encapsulateResourceError(error: unknown): Error {
506461
if (error instanceof Error) {
507462
return error;

0 commit comments

Comments
 (0)