@absolutejs/absolute 0.19.0-beta.980 → 0.19.0-beta.982

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.
@@ -1,3 +1,4 @@
1
+ import { DestroyRef } from '@angular/core';
1
2
  import type { Observable, Subscription } from 'rxjs';
2
3
  export type Observer<T> = {
3
4
  next?: (value: T) => void;
@@ -10,11 +11,16 @@ export type Observer<T> = {
10
11
  * collapsed into one call so consumers can't forget the cleanup
11
12
  * operator (the most common Angular memory-leak source).
12
13
  *
13
- * Must be called in an injection context.
14
+ * Prefer calling from an injection context (field initializer or
15
+ * constructor). When called outside one — e.g. from `ngOnInit` —
16
+ * pass the host's `DestroyRef` explicitly as the third argument
17
+ * (capture it via `destroyRef = inject(DestroyRef)` in a field
18
+ * initializer once). Otherwise auto-teardown is dropped and the
19
+ * caller owns the returned `Subscription`.
14
20
  *
15
21
  * Note: this composable handles teardown only — it does not trigger
16
22
  * change detection on emissions. If the observer mutates state that
17
23
  * drives the template, store that state in a `signal()` so updates
18
24
  * propagate in zoneless Angular. */
19
- export declare function useSubscription<T>(observable: Observable<T>, next: (value: T) => void): Subscription;
20
- export declare function useSubscription<T>(observable: Observable<T>, observer: Observer<T>): Subscription;
25
+ export declare function useSubscription<T>(observable: Observable<T>, next: (value: T) => void, destroyRef?: DestroyRef): Subscription;
26
+ export declare function useSubscription<T>(observable: Observable<T>, observer: Observer<T>, destroyRef?: DestroyRef): Subscription;
@@ -8,7 +8,25 @@ export declare const invalidateAngularJitCache: (filePath: string) => void;
8
8
  * Recursively transpiles all local imports so Bun's bundler can resolve them.
9
9
  * ~50-100ms for a tree of ~10 files vs ~500-700ms for AOT. */
10
10
  export declare const compileAngularFileJIT: (inputPath: string, outDir: string, rootDir?: string, stylePreprocessors?: StylePreprocessorConfig, cacheBuster?: string) => Promise<string[]>;
11
- export declare const compileAngular: (entryPoints: string[], outRoot: string, hmr?: boolean, stylePreprocessors?: StylePreprocessorConfig) => Promise<{
11
+ /** Build-time providers info threaded down from `runAngularHandlerScan`.
12
+ * When present, `compileAngular` injects an `export const providers = [...]`
13
+ * declaration directly into each page's compiled server output instead
14
+ * of relying on a sibling `.providers.ts` file. Injecting in-place
15
+ * avoids the circular ESM dependency that arises when a router page
16
+ * exports `routes` (`.providers.ts` would import `routes` from the
17
+ * page, the page server output would re-export `providers` from
18
+ * `.providers.ts` — circular; `provideRouter(undefined, ...)` then
19
+ * throws NG04014 at SSR bootstrap). */
20
+ export type AngularProvidersInjection = {
21
+ /** Source `.ts` path of the user's `angular.providers` binding. */
22
+ appProvidersSource: string;
23
+ /** Source `.ts` path → page metadata for every page the scanner saw. */
24
+ pagesByFile: Map<string, {
25
+ hasRoutes: boolean;
26
+ basePath: string | null;
27
+ }>;
28
+ };
29
+ export declare const compileAngular: (entryPoints: string[], outRoot: string, hmr?: boolean, stylePreprocessors?: StylePreprocessorConfig, providersInjection?: AngularProvidersInjection) => Promise<{
12
30
  clientPaths: string[];
13
31
  serverPaths: string[];
14
32
  allIndexesUnchanged?: undefined;
package/package.json CHANGED
@@ -402,5 +402,5 @@
402
402
  ]
403
403
  }
404
404
  },
405
- "version": "0.19.0-beta.980"
405
+ "version": "0.19.0-beta.982"
406
406
  }