@tanstack/angular-query-experimental 5.34.1 → 5.35.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 +19 -2
- package/build/README.md +19 -2
- package/build/esm2022/create-base-query.mjs +3 -3
- package/build/esm2022/index.mjs +2 -2
- package/build/esm2022/infinite-query-options.mjs +9 -1
- package/build/esm2022/inject-infinite-query.mjs +11 -3
- package/build/esm2022/inject-is-fetching.mjs +11 -1
- package/build/esm2022/inject-is-mutating.mjs +10 -1
- package/build/esm2022/inject-mutation-state.mjs +8 -1
- package/build/esm2022/inject-mutation.mjs +13 -4
- package/build/esm2022/inject-queries.mjs +4 -1
- package/build/esm2022/inject-query-client.mjs +21 -3
- package/build/esm2022/inject-query.mjs +36 -3
- package/build/esm2022/providers.mjs +40 -1
- package/build/esm2022/query-options.mjs +23 -1
- package/build/esm2022/signal-proxy.mjs +2 -4
- package/build/esm2022/types.mjs +1 -1
- package/build/fesm2022/tanstack-angular-query-experimental.mjs +179 -14
- package/build/fesm2022/tanstack-angular-query-experimental.mjs.map +1 -1
- package/build/rollup.d.ts +591 -0
- package/package.json +10 -6
- package/build/create-base-query.d.ts +0 -6
- package/build/index.d.ts +0 -14
- package/build/infinite-query-options.d.ts +0 -18
- package/build/inject-infinite-query.d.ts +0 -7
- package/build/inject-is-fetching.d.ts +0 -3
- package/build/inject-is-mutating.d.ts +0 -3
- package/build/inject-mutation-state.d.ts +0 -11
- package/build/inject-mutation.d.ts +0 -4
- package/build/inject-queries.d.ts +0 -71
- package/build/inject-query-client.d.ts +0 -13
- package/build/inject-query.d.ts +0 -7
- package/build/providers.d.ts +0 -3
- package/build/query-options.d.ts +0 -16
- package/build/signal-proxy.d.ts +0 -13
- package/build/types.d.ts +0 -44
- package/build/util/assert-injector/assert-injector.d.ts +0 -54
- package/build/util/create-injection-token/create-injection-token.d.ts +0 -52
- package/build/util/index.d.ts +0 -2
- package/build/util/lazy-init/lazy-init.d.ts +0 -1
- package/build/util/lazy-signal-initializer/lazy-signal-initializer.d.ts +0 -4
- package/src/__tests__/inject-infinite-query.test.ts +0 -64
- package/src/__tests__/inject-is-fetching.test.ts +0 -35
- package/src/__tests__/inject-is-mutating.test.ts +0 -39
- package/src/__tests__/inject-mutation-state.test-d.ts +0 -22
- package/src/__tests__/inject-mutation-state.test.ts +0 -177
- package/src/__tests__/inject-mutation.test-d.ts +0 -71
- package/src/__tests__/inject-mutation.test.ts +0 -458
- package/src/__tests__/inject-query.test-d.ts +0 -59
- package/src/__tests__/inject-query.test.ts +0 -349
- package/src/__tests__/query-options.test-d.ts +0 -127
- package/src/__tests__/signal-proxy.test.ts +0 -27
- package/src/__tests__/test-utils.ts +0 -131
- package/src/__tests__/util/lazy-init/lazy-init.test.ts +0 -126
- package/src/__tests__/util/lazy-signal-initializer/lazy-signal-initializer.test.ts +0 -130
- package/src/create-base-query.ts +0 -116
- package/src/index.ts +0 -28
- package/src/infinite-query-options.ts +0 -94
- package/src/inject-infinite-query.ts +0 -93
- package/src/inject-is-fetching.ts +0 -39
- package/src/inject-is-mutating.ts +0 -39
- package/src/inject-mutation-state.ts +0 -97
- package/src/inject-mutation.ts +0 -109
- package/src/inject-queries.ts +0 -260
- package/src/inject-query-client.ts +0 -7
- package/src/inject-query.ts +0 -68
- package/src/providers.ts +0 -26
- package/src/query-options.ts +0 -50
- package/src/signal-proxy.ts +0 -48
- package/src/test-setup.ts +0 -12
- package/src/types.ts +0 -260
- package/src/util/assert-injector/assert-injector.test.ts +0 -74
- package/src/util/assert-injector/assert-injector.ts +0 -81
- package/src/util/create-injection-token/create-injection-token.test.ts +0 -32
- package/src/util/create-injection-token/create-injection-token.ts +0 -185
- package/src/util/index.ts +0 -13
- package/src/util/lazy-init/lazy-init.ts +0 -34
- package/src/util/lazy-signal-initializer/lazy-signal-initializer.ts +0 -28
|
@@ -3,11 +3,44 @@ import { runInInjectionContext } from '@angular/core';
|
|
|
3
3
|
import { assertInjector } from './util/assert-injector/assert-injector';
|
|
4
4
|
import { injectQueryClient } from './inject-query-client';
|
|
5
5
|
import { createBaseQuery } from './create-base-query';
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Injects a query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
|
|
8
|
+
*
|
|
9
|
+
* **Basic example**
|
|
10
|
+
* ```ts
|
|
11
|
+
* class ServiceOrComponent {
|
|
12
|
+
* query = injectQuery(() => ({
|
|
13
|
+
* queryKey: ['repoData'],
|
|
14
|
+
* queryFn: () =>
|
|
15
|
+
* this.#http.get<Response>('https://api.github.com/repos/tanstack/query'),
|
|
16
|
+
* }))
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* **The options function can utilize signals**
|
|
21
|
+
* ```ts
|
|
22
|
+
* class ServiceOrComponent {
|
|
23
|
+
* filter = signal('')
|
|
24
|
+
*
|
|
25
|
+
* todosQuery = injectQuery(() => ({
|
|
26
|
+
* queryKey: ['todos', this.filter()],
|
|
27
|
+
* queryFn: () => fetchTodos(this.filter()),
|
|
28
|
+
* // Signals can be combined with expressions
|
|
29
|
+
* enabled: !!this.filter(),
|
|
30
|
+
* }))
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
* @param optionsFn - A function that returns query options.
|
|
34
|
+
* @param injector - The Angular injector to use.
|
|
35
|
+
* @returns The query result.
|
|
36
|
+
* @public
|
|
37
|
+
* @see https://tanstack.com/query/latest/docs/framework/angular/guides/queries
|
|
38
|
+
*/
|
|
39
|
+
export function injectQuery(optionsFn, injector) {
|
|
7
40
|
const assertedInjector = assertInjector(injectQuery, injector);
|
|
8
41
|
return assertInjector(injectQuery, injector, () => {
|
|
9
42
|
const queryClient = injectQueryClient();
|
|
10
|
-
return createBaseQuery((client) => runInInjectionContext(assertedInjector, () =>
|
|
43
|
+
return createBaseQuery((client) => runInInjectionContext(assertedInjector, () => optionsFn(client)), QueryObserver, queryClient);
|
|
11
44
|
});
|
|
12
45
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXF1ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luamVjdC1xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFvSnJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQ3pCLFNBQXNELEVBQ3RELFFBQW1CO0lBRW5CLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUM5RCxPQUFPLGNBQWMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUNoRCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO1FBQ3ZDLE9BQU8sZUFBZSxDQUNwQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ2xFLGFBQWEsRUFDYixXQUFXLENBQ1osQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5T2JzZXJ2ZXIgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktY29yZSdcbmltcG9ydCB7IHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJy4vdXRpbC9hc3NlcnQtaW5qZWN0b3IvYXNzZXJ0LWluamVjdG9yJ1xuaW1wb3J0IHsgaW5qZWN0UXVlcnlDbGllbnQgfSBmcm9tICcuL2luamVjdC1xdWVyeS1jbGllbnQnXG5pbXBvcnQgeyBjcmVhdGVCYXNlUXVlcnkgfSBmcm9tICcuL2NyZWF0ZS1iYXNlLXF1ZXJ5J1xuaW1wb3J0IHR5cGUgeyBEZWZhdWx0RXJyb3IsIFF1ZXJ5Q2xpZW50LCBRdWVyeUtleSB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgdHlwZSB7XG4gIENyZWF0ZVF1ZXJ5T3B0aW9ucyxcbiAgQ3JlYXRlUXVlcnlSZXN1bHQsXG4gIERlZmluZWRDcmVhdGVRdWVyeVJlc3VsdCxcbn0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgRGVmaW5lZEluaXRpYWxEYXRhT3B0aW9ucyxcbiAgVW5kZWZpbmVkSW5pdGlhbERhdGFPcHRpb25zLFxufSBmcm9tICcuL3F1ZXJ5LW9wdGlvbnMnXG5cbi8qKlxuICogSW5qZWN0cyBhIHF1ZXJ5OiBhIGRlY2xhcmF0aXZlIGRlcGVuZGVuY3kgb24gYW4gYXN5bmNocm9ub3VzIHNvdXJjZSBvZiBkYXRhIHRoYXQgaXMgdGllZCB0byBhIHVuaXF1ZSBrZXkuXG4gKlxuICogKipCYXNpYyBleGFtcGxlKipcbiAqIGBgYHRzXG4gKiBjbGFzcyBTZXJ2aWNlT3JDb21wb25lbnQge1xuICogICBxdWVyeSA9IGluamVjdFF1ZXJ5KCgpID0+ICh7XG4gKiAgICAgcXVlcnlLZXk6IFsncmVwb0RhdGEnXSxcbiAqICAgICBxdWVyeUZuOiAoKSA9PlxuICogICAgICAgdGhpcy4jaHR0cC5nZXQ8UmVzcG9uc2U+KCdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3RhbnN0YWNrL3F1ZXJ5JyksXG4gKiAgIH0pKVxuICogfVxuICogYGBgXG4gKlxuICogKipUaGUgb3B0aW9ucyBmdW5jdGlvbiBjYW4gdXRpbGl6ZSBzaWduYWxzKipcbiAqIGBgYHRzXG4gKiBjbGFzcyBTZXJ2aWNlT3JDb21wb25lbnQge1xuICogICBmaWx0ZXIgPSBzaWduYWwoJycpXG4gKlxuICogICB0b2Rvc1F1ZXJ5ID0gaW5qZWN0UXVlcnkoKCkgPT4gKHtcbiAqICAgICBxdWVyeUtleTogWyd0b2RvcycsIHRoaXMuZmlsdGVyKCldLFxuICogICAgIHF1ZXJ5Rm46ICgpID0+IGZldGNoVG9kb3ModGhpcy5maWx0ZXIoKSksXG4gKiAgICAgLy8gU2lnbmFscyBjYW4gYmUgY29tYmluZWQgd2l0aCBleHByZXNzaW9uc1xuICogICAgIGVuYWJsZWQ6ICEhdGhpcy5maWx0ZXIoKSxcbiAqICAgfSkpXG4gKiB9XG4gKiBgYGBcbiAqIEBwYXJhbSBvcHRpb25zRm4gLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBvcHRpb25zLlxuICogQHBhcmFtIGluamVjdG9yIC0gVGhlIEFuZ3VsYXIgaW5qZWN0b3IgdG8gdXNlLlxuICogQHJldHVybnMgVGhlIHF1ZXJ5IHJlc3VsdC5cbiAqIEBwdWJsaWNcbiAqIEBzZWUgaHR0cHM6Ly90YW5zdGFjay5jb20vcXVlcnkvbGF0ZXN0L2RvY3MvZnJhbWV3b3JrL2FuZ3VsYXIvZ3VpZGVzL3F1ZXJpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFF1ZXJ5PFxuICBUUXVlcnlGbkRhdGEgPSB1bmtub3duLFxuICBURXJyb3IgPSBEZWZhdWx0RXJyb3IsXG4gIFREYXRhID0gVFF1ZXJ5Rm5EYXRhLFxuICBUUXVlcnlLZXkgZXh0ZW5kcyBRdWVyeUtleSA9IFF1ZXJ5S2V5LFxuPihcbiAgb3B0aW9uc0ZuOiAoXG4gICAgY2xpZW50OiBRdWVyeUNsaWVudCxcbiAgKSA9PiBEZWZpbmVkSW5pdGlhbERhdGFPcHRpb25zPFRRdWVyeUZuRGF0YSwgVEVycm9yLCBURGF0YSwgVFF1ZXJ5S2V5PixcbiAgaW5qZWN0b3I/OiBJbmplY3Rvcixcbik6IERlZmluZWRDcmVhdGVRdWVyeVJlc3VsdDxURGF0YSwgVEVycm9yPlxuXG4vKipcbiAqIEluamVjdHMgYSBxdWVyeTogYSBkZWNsYXJhdGl2ZSBkZXBlbmRlbmN5IG9uIGFuIGFzeW5jaHJvbm91cyBzb3VyY2Ugb2YgZGF0YSB0aGF0IGlzIHRpZWQgdG8gYSB1bmlxdWUga2V5LlxuICpcbiAqICoqQmFzaWMgZXhhbXBsZSoqXG4gKiBgYGB0c1xuICogY2xhc3MgU2VydmljZU9yQ29tcG9uZW50IHtcbiAqICAgcXVlcnkgPSBpbmplY3RRdWVyeSgoKSA9PiAoe1xuICogICAgIHF1ZXJ5S2V5OiBbJ3JlcG9EYXRhJ10sXG4gKiAgICAgcXVlcnlGbjogKCkgPT5cbiAqICAgICAgIHRoaXMuI2h0dHAuZ2V0PFJlc3BvbnNlPignaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy90YW5zdGFjay9xdWVyeScpLFxuICogICB9KSlcbiAqIH1cbiAqIGBgYFxuICpcbiAqICoqVGhlIG9wdGlvbnMgZnVuY3Rpb24gY2FuIHV0aWxpemUgc2lnbmFscyoqXG4gKiBgYGB0c1xuICogY2xhc3MgU2VydmljZU9yQ29tcG9uZW50IHtcbiAqICAgZmlsdGVyID0gc2lnbmFsKCcnKVxuICpcbiAqICAgdG9kb3NRdWVyeSA9IGluamVjdFF1ZXJ5KCgpID0+ICh7XG4gKiAgICAgcXVlcnlLZXk6IFsndG9kb3MnLCB0aGlzLmZpbHRlcigpXSxcbiAqICAgICBxdWVyeUZuOiAoKSA9PiBmZXRjaFRvZG9zKHRoaXMuZmlsdGVyKCkpLFxuICogICAgIC8vIFNpZ25hbHMgY2FuIGJlIGNvbWJpbmVkIHdpdGggZXhwcmVzc2lvbnNcbiAqICAgICBlbmFibGVkOiAhIXRoaXMuZmlsdGVyKCksXG4gKiAgIH0pKVxuICogfVxuICogYGBgXG4gKiBAcGFyYW0gb3B0aW9uc0ZuIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgb3B0aW9ucy5cbiAqIEBwYXJhbSBpbmplY3RvciAtIFRoZSBBbmd1bGFyIGluamVjdG9yIHRvIHVzZS5cbiAqIEByZXR1cm5zIFRoZSBxdWVyeSByZXN1bHQuXG4gKiBAcHVibGljXG4gKiBAc2VlIGh0dHBzOi8vdGFuc3RhY2suY29tL3F1ZXJ5L2xhdGVzdC9kb2NzL2ZyYW1ld29yay9hbmd1bGFyL2d1aWRlcy9xdWVyaWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RRdWVyeTxcbiAgVFF1ZXJ5Rm5EYXRhID0gdW5rbm93bixcbiAgVEVycm9yID0gRGVmYXVsdEVycm9yLFxuICBURGF0YSA9IFRRdWVyeUZuRGF0YSxcbiAgVFF1ZXJ5S2V5IGV4dGVuZHMgUXVlcnlLZXkgPSBRdWVyeUtleSxcbj4oXG4gIG9wdGlvbnNGbjogKFxuICAgIGNsaWVudDogUXVlcnlDbGllbnQsXG4gICkgPT4gVW5kZWZpbmVkSW5pdGlhbERhdGFPcHRpb25zPFRRdWVyeUZuRGF0YSwgVEVycm9yLCBURGF0YSwgVFF1ZXJ5S2V5PixcbiAgaW5qZWN0b3I/OiBJbmplY3Rvcixcbik6IENyZWF0ZVF1ZXJ5UmVzdWx0PFREYXRhLCBURXJyb3I+XG5cbi8qKlxuICogSW5qZWN0cyBhIHF1ZXJ5OiBhIGRlY2xhcmF0aXZlIGRlcGVuZGVuY3kgb24gYW4gYXN5bmNocm9ub3VzIHNvdXJjZSBvZiBkYXRhIHRoYXQgaXMgdGllZCB0byBhIHVuaXF1ZSBrZXkuXG4gKlxuICogKipCYXNpYyBleGFtcGxlKipcbiAqIGBgYHRzXG4gKiBjbGFzcyBTZXJ2aWNlT3JDb21wb25lbnQge1xuICogICBxdWVyeSA9IGluamVjdFF1ZXJ5KCgpID0+ICh7XG4gKiAgICAgcXVlcnlLZXk6IFsncmVwb0RhdGEnXSxcbiAqICAgICBxdWVyeUZuOiAoKSA9PlxuICogICAgICAgdGhpcy4jaHR0cC5nZXQ8UmVzcG9uc2U+KCdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3RhbnN0YWNrL3F1ZXJ5JyksXG4gKiAgIH0pKVxuICogfVxuICogYGBgXG4gKlxuICogKipUaGUgb3B0aW9ucyBmdW5jdGlvbiBjYW4gdXRpbGl6ZSBzaWduYWxzKipcbiAqIGBgYHRzXG4gKiBjbGFzcyBTZXJ2aWNlT3JDb21wb25lbnQge1xuICogICBmaWx0ZXIgPSBzaWduYWwoJycpXG4gKlxuICogICB0b2Rvc1F1ZXJ5ID0gaW5qZWN0UXVlcnkoKCkgPT4gKHtcbiAqICAgICBxdWVyeUtleTogWyd0b2RvcycsIHRoaXMuZmlsdGVyKCldLFxuICogICAgIHF1ZXJ5Rm46ICgpID0+IGZldGNoVG9kb3ModGhpcy5maWx0ZXIoKSksXG4gKiAgICAgLy8gU2lnbmFscyBjYW4gYmUgY29tYmluZWQgd2l0aCBleHByZXNzaW9uc1xuICogICAgIGVuYWJsZWQ6ICEhdGhpcy5maWx0ZXIoKSxcbiAqICAgfSkpXG4gKiB9XG4gKiBgYGBcbiAqIEBwYXJhbSBvcHRpb25zRm4gLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBvcHRpb25zLlxuICogQHBhcmFtIGluamVjdG9yIC0gVGhlIEFuZ3VsYXIgaW5qZWN0b3IgdG8gdXNlLlxuICogQHJldHVybnMgVGhlIHF1ZXJ5IHJlc3VsdC5cbiAqIEBwdWJsaWNcbiAqIEBzZWUgaHR0cHM6Ly90YW5zdGFjay5jb20vcXVlcnkvbGF0ZXN0L2RvY3MvZnJhbWV3b3JrL2FuZ3VsYXIvZ3VpZGVzL3F1ZXJpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFF1ZXJ5PFxuICBUUXVlcnlGbkRhdGEgPSB1bmtub3duLFxuICBURXJyb3IgPSBEZWZhdWx0RXJyb3IsXG4gIFREYXRhID0gVFF1ZXJ5Rm5EYXRhLFxuICBUUXVlcnlLZXkgZXh0ZW5kcyBRdWVyeUtleSA9IFF1ZXJ5S2V5LFxuPihcbiAgb3B0aW9uc0ZuOiAoXG4gICAgY2xpZW50OiBRdWVyeUNsaWVudCxcbiAgKSA9PiBDcmVhdGVRdWVyeU9wdGlvbnM8VFF1ZXJ5Rm5EYXRhLCBURXJyb3IsIFREYXRhLCBUUXVlcnlLZXk+LFxuICBpbmplY3Rvcj86IEluamVjdG9yLFxuKTogQ3JlYXRlUXVlcnlSZXN1bHQ8VERhdGEsIFRFcnJvcj5cblxuLyoqXG4gKiBJbmplY3RzIGEgcXVlcnk6IGEgZGVjbGFyYXRpdmUgZGVwZW5kZW5jeSBvbiBhbiBhc3luY2hyb25vdXMgc291cmNlIG9mIGRhdGEgdGhhdCBpcyB0aWVkIHRvIGEgdW5pcXVlIGtleS5cbiAqXG4gKiAqKkJhc2ljIGV4YW1wbGUqKlxuICogYGBgdHNcbiAqIGNsYXNzIFNlcnZpY2VPckNvbXBvbmVudCB7XG4gKiAgIHF1ZXJ5ID0gaW5qZWN0UXVlcnkoKCkgPT4gKHtcbiAqICAgICBxdWVyeUtleTogWydyZXBvRGF0YSddLFxuICogICAgIHF1ZXJ5Rm46ICgpID0+XG4gKiAgICAgICB0aGlzLiNodHRwLmdldDxSZXNwb25zZT4oJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvdGFuc3RhY2svcXVlcnknKSxcbiAqICAgfSkpXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAqKlRoZSBvcHRpb25zIGZ1bmN0aW9uIGNhbiB1dGlsaXplIHNpZ25hbHMqKlxuICogYGBgdHNcbiAqIGNsYXNzIFNlcnZpY2VPckNvbXBvbmVudCB7XG4gKiAgIGZpbHRlciA9IHNpZ25hbCgnJylcbiAqXG4gKiAgIHRvZG9zUXVlcnkgPSBpbmplY3RRdWVyeSgoKSA9PiAoe1xuICogICAgIHF1ZXJ5S2V5OiBbJ3RvZG9zJywgdGhpcy5maWx0ZXIoKV0sXG4gKiAgICAgcXVlcnlGbjogKCkgPT4gZmV0Y2hUb2Rvcyh0aGlzLmZpbHRlcigpKSxcbiAqICAgICAvLyBTaWduYWxzIGNhbiBiZSBjb21iaW5lZCB3aXRoIGV4cHJlc3Npb25zXG4gKiAgICAgZW5hYmxlZDogISF0aGlzLmZpbHRlcigpLFxuICogICB9KSlcbiAqIH1cbiAqIGBgYFxuICogQHBhcmFtIG9wdGlvbnNGbiAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHF1ZXJ5IG9wdGlvbnMuXG4gKiBAcGFyYW0gaW5qZWN0b3IgLSBUaGUgQW5ndWxhciBpbmplY3RvciB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgcXVlcnkgcmVzdWx0LlxuICogQHB1YmxpY1xuICogQHNlZSBodHRwczovL3RhbnN0YWNrLmNvbS9xdWVyeS9sYXRlc3QvZG9jcy9mcmFtZXdvcmsvYW5ndWxhci9ndWlkZXMvcXVlcmllc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UXVlcnkoXG4gIG9wdGlvbnNGbjogKGNsaWVudDogUXVlcnlDbGllbnQpID0+IENyZWF0ZVF1ZXJ5T3B0aW9ucyxcbiAgaW5qZWN0b3I/OiBJbmplY3Rvcixcbikge1xuICBjb25zdCBhc3NlcnRlZEluamVjdG9yID0gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0UXVlcnksIGluamVjdG9yKVxuICByZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0UXVlcnksIGluamVjdG9yLCAoKSA9PiB7XG4gICAgY29uc3QgcXVlcnlDbGllbnQgPSBpbmplY3RRdWVyeUNsaWVudCgpXG4gICAgcmV0dXJuIGNyZWF0ZUJhc2VRdWVyeShcbiAgICAgIChjbGllbnQpID0+XG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dChhc3NlcnRlZEluamVjdG9yLCAoKSA9PiBvcHRpb25zRm4oY2xpZW50KSksXG4gICAgICBRdWVyeU9ic2VydmVyLFxuICAgICAgcXVlcnlDbGllbnQsXG4gICAgKVxuICB9KVxufVxuIl19
|
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
import { DestroyRef, ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders, } from '@angular/core';
|
|
2
2
|
import { provideQueryClient } from './inject-query-client';
|
|
3
|
+
/**
|
|
4
|
+
* Sets up providers necessary to enable TanStack Query functionality for Angular applications.
|
|
5
|
+
*
|
|
6
|
+
* Allows to configure a `QueryClient`.
|
|
7
|
+
*
|
|
8
|
+
* **Example - standalone**
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import {
|
|
12
|
+
* provideAngularQuery,
|
|
13
|
+
* QueryClient,
|
|
14
|
+
* } from '@tanstack/angular-query-experimental'
|
|
15
|
+
*
|
|
16
|
+
* bootstrapApplication(AppComponent, {
|
|
17
|
+
* providers: [provideAngularQuery(new QueryClient())],
|
|
18
|
+
* })
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* **Example - NgModule-based**
|
|
22
|
+
*
|
|
23
|
+
* ```ts
|
|
24
|
+
* import {
|
|
25
|
+
* provideAngularQuery,
|
|
26
|
+
* QueryClient,
|
|
27
|
+
* } from '@tanstack/angular-query-experimental'
|
|
28
|
+
*
|
|
29
|
+
* @NgModule({
|
|
30
|
+
* declarations: [AppComponent],
|
|
31
|
+
* imports: [BrowserModule],
|
|
32
|
+
* providers: [provideAngularQuery(new QueryClient())],
|
|
33
|
+
* bootstrap: [AppComponent],
|
|
34
|
+
* })
|
|
35
|
+
* export class AppModule {}
|
|
36
|
+
* ```
|
|
37
|
+
* @param queryClient - A `QueryClient` instance.
|
|
38
|
+
* @returns A set of providers to set up TanStack Query.
|
|
39
|
+
* @public
|
|
40
|
+
* @see https://tanstack.com/query/v5/docs/framework/angular/quick-start
|
|
41
|
+
*/
|
|
3
42
|
export function provideAngularQuery(queryClient) {
|
|
4
43
|
return makeEnvironmentProviders([
|
|
5
44
|
provideQueryClient(queryClient),
|
|
@@ -14,4 +53,4 @@ export function provideAngularQuery(queryClient) {
|
|
|
14
53
|
},
|
|
15
54
|
]);
|
|
16
55
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLHVCQUF1QixFQUN2QixNQUFNLEVBQ04sd0JBQXdCLEdBQ3pCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBSTFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNDRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsV0FBd0I7SUFFeEIsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixrQkFBa0IsQ0FBQyxXQUFXLENBQUM7UUFDL0I7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEtBQUssRUFBRSxJQUFJO1lBQ1gsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUE7Z0JBQ25CLGtEQUFrRDtnQkFDbEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUMzRCxDQUFDO1NBQ0Y7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGVzdHJveVJlZixcbiAgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gIGluamVjdCxcbiAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgcHJvdmlkZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnLi9pbmplY3QtcXVlcnktY2xpZW50J1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWNvcmUnXG5cbi8qKlxuICogU2V0cyB1cCBwcm92aWRlcnMgbmVjZXNzYXJ5IHRvIGVuYWJsZSBUYW5TdGFjayBRdWVyeSBmdW5jdGlvbmFsaXR5IGZvciBBbmd1bGFyIGFwcGxpY2F0aW9ucy5cbiAqXG4gKiBBbGxvd3MgdG8gY29uZmlndXJlIGEgYFF1ZXJ5Q2xpZW50YC5cbiAqXG4gKiAqKkV4YW1wbGUgLSBzdGFuZGFsb25lKipcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHtcbiAqICAgcHJvdmlkZUFuZ3VsYXJRdWVyeSxcbiAqICAgUXVlcnlDbGllbnQsXG4gKiB9IGZyb20gJ0B0YW5zdGFjay9hbmd1bGFyLXF1ZXJ5LWV4cGVyaW1lbnRhbCdcbiAqXG4gKiBib290c3RyYXBBcHBsaWNhdGlvbihBcHBDb21wb25lbnQsIHtcbiAqICAgcHJvdmlkZXJzOiBbcHJvdmlkZUFuZ3VsYXJRdWVyeShuZXcgUXVlcnlDbGllbnQoKSldLFxuICogfSlcbiAqIGBgYFxuICpcbiAqICoqRXhhbXBsZSAtIE5nTW9kdWxlLWJhc2VkKipcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHtcbiAqICAgcHJvdmlkZUFuZ3VsYXJRdWVyeSxcbiAqICAgUXVlcnlDbGllbnQsXG4gKiB9IGZyb20gJ0B0YW5zdGFjay9hbmd1bGFyLXF1ZXJ5LWV4cGVyaW1lbnRhbCdcbiAqXG4gKiBATmdNb2R1bGUoe1xuICogICBkZWNsYXJhdGlvbnM6IFtBcHBDb21wb25lbnRdLFxuICogICBpbXBvcnRzOiBbQnJvd3Nlck1vZHVsZV0sXG4gKiAgIHByb3ZpZGVyczogW3Byb3ZpZGVBbmd1bGFyUXVlcnkobmV3IFF1ZXJ5Q2xpZW50KCkpXSxcbiAqICAgYm9vdHN0cmFwOiBbQXBwQ29tcG9uZW50XSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqIEBwYXJhbSBxdWVyeUNsaWVudCAtIEEgYFF1ZXJ5Q2xpZW50YCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEgc2V0IG9mIHByb3ZpZGVycyB0byBzZXQgdXAgVGFuU3RhY2sgUXVlcnkuXG4gKiBAcHVibGljXG4gKiBAc2VlIGh0dHBzOi8vdGFuc3RhY2suY29tL3F1ZXJ5L3Y1L2RvY3MvZnJhbWV3b3JrL2FuZ3VsYXIvcXVpY2stc3RhcnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBbmd1bGFyUXVlcnkoXG4gIHF1ZXJ5Q2xpZW50OiBRdWVyeUNsaWVudCxcbik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgcHJvdmlkZVF1ZXJ5Q2xpZW50KHF1ZXJ5Q2xpZW50KSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlVmFsdWU6ICgpID0+IHtcbiAgICAgICAgcXVlcnlDbGllbnQubW91bnQoKVxuICAgICAgICAvLyBVbm1vdW50IHRoZSBxdWVyeSBjbGllbnQgb24gYXBwbGljYXRpb24gZGVzdHJveVxuICAgICAgICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHF1ZXJ5Q2xpZW50LnVubW91bnQoKSlcbiAgICAgIH0sXG4gICAgfSxcbiAgXSlcbn1cbiJdfQ==
|
|
@@ -1,4 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allows to share and re-use query options in a type-safe way.
|
|
3
|
+
*
|
|
4
|
+
* The `queryKey` will be tagged with the type from `queryFn`.
|
|
5
|
+
*
|
|
6
|
+
* **Example**
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* const { queryKey } = queryOptions({
|
|
10
|
+
* queryKey: ['key'],
|
|
11
|
+
* queryFn: () => Promise.resolve(5),
|
|
12
|
+
* // ^? Promise<number>
|
|
13
|
+
* })
|
|
14
|
+
*
|
|
15
|
+
* const queryClient = new QueryClient()
|
|
16
|
+
* const data = queryClient.getQueryData(queryKey)
|
|
17
|
+
* // ^? number | undefined
|
|
18
|
+
* ```
|
|
19
|
+
* @param options - The query options to tag with the type from `queryFn`.
|
|
20
|
+
* @returns The tagged query options.
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
1
23
|
export function queryOptions(options) {
|
|
2
24
|
return options;
|
|
3
25
|
}
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyeS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFnQjtJQUMzQyxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEYXRhVGFnLCBEZWZhdWx0RXJyb3IsIFF1ZXJ5S2V5IH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWNvcmUnXG5pbXBvcnQgdHlwZSB7IENyZWF0ZVF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBVbmRlZmluZWRJbml0aWFsRGF0YU9wdGlvbnM8XG4gIFRRdWVyeUZuRGF0YSA9IHVua25vd24sXG4gIFRFcnJvciA9IERlZmF1bHRFcnJvcixcbiAgVERhdGEgPSBUUXVlcnlGbkRhdGEsXG4gIFRRdWVyeUtleSBleHRlbmRzIFF1ZXJ5S2V5ID0gUXVlcnlLZXksXG4+ID0gQ3JlYXRlUXVlcnlPcHRpb25zPFRRdWVyeUZuRGF0YSwgVEVycm9yLCBURGF0YSwgVFF1ZXJ5S2V5PiAmIHtcbiAgaW5pdGlhbERhdGE/OiB1bmRlZmluZWRcbn1cblxudHlwZSBOb25VbmRlZmluZWRHdWFyZDxUPiA9IFQgZXh0ZW5kcyB1bmRlZmluZWQgPyBuZXZlciA6IFRcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIERlZmluZWRJbml0aWFsRGF0YU9wdGlvbnM8XG4gIFRRdWVyeUZuRGF0YSA9IHVua25vd24sXG4gIFRFcnJvciA9IERlZmF1bHRFcnJvcixcbiAgVERhdGEgPSBUUXVlcnlGbkRhdGEsXG4gIFRRdWVyeUtleSBleHRlbmRzIFF1ZXJ5S2V5ID0gUXVlcnlLZXksXG4+ID0gQ3JlYXRlUXVlcnlPcHRpb25zPFRRdWVyeUZuRGF0YSwgVEVycm9yLCBURGF0YSwgVFF1ZXJ5S2V5PiAmIHtcbiAgaW5pdGlhbERhdGE6XG4gICAgfCBOb25VbmRlZmluZWRHdWFyZDxUUXVlcnlGbkRhdGE+XG4gICAgfCAoKCkgPT4gTm9uVW5kZWZpbmVkR3VhcmQ8VFF1ZXJ5Rm5EYXRhPilcbn1cblxuLyoqXG4gKiBBbGxvd3MgdG8gc2hhcmUgYW5kIHJlLXVzZSBxdWVyeSBvcHRpb25zIGluIGEgdHlwZS1zYWZlIHdheS5cbiAqXG4gKiBUaGUgYHF1ZXJ5S2V5YCB3aWxsIGJlIHRhZ2dlZCB3aXRoIHRoZSB0eXBlIGZyb20gYHF1ZXJ5Rm5gLlxuICpcbiAqICoqRXhhbXBsZSoqXG4gKlxuICogYGBgdHNcbiAqICBjb25zdCB7IHF1ZXJ5S2V5IH0gPSBxdWVyeU9wdGlvbnMoe1xuICogICAgIHF1ZXJ5S2V5OiBbJ2tleSddLFxuICogICAgIHF1ZXJ5Rm46ICgpID0+IFByb21pc2UucmVzb2x2ZSg1KSxcbiAqICAgICAvLyAgXj8gIFByb21pc2U8bnVtYmVyPlxuICogICB9KVxuICpcbiAqICAgY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKVxuICogICBjb25zdCBkYXRhID0gcXVlcnlDbGllbnQuZ2V0UXVlcnlEYXRhKHF1ZXJ5S2V5KVxuICogICAvLyAgICBePyAgbnVtYmVyIHwgdW5kZWZpbmVkXG4gKiBgYGBcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHF1ZXJ5IG9wdGlvbnMgdG8gdGFnIHdpdGggdGhlIHR5cGUgZnJvbSBgcXVlcnlGbmAuXG4gKiBAcmV0dXJucyBUaGUgdGFnZ2VkIHF1ZXJ5IG9wdGlvbnMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeU9wdGlvbnM8XG4gIFRRdWVyeUZuRGF0YSA9IHVua25vd24sXG4gIFRFcnJvciA9IERlZmF1bHRFcnJvcixcbiAgVERhdGEgPSBUUXVlcnlGbkRhdGEsXG4gIFRRdWVyeUtleSBleHRlbmRzIFF1ZXJ5S2V5ID0gUXVlcnlLZXksXG4+KFxuICBvcHRpb25zOiBVbmRlZmluZWRJbml0aWFsRGF0YU9wdGlvbnM8VFF1ZXJ5Rm5EYXRhLCBURXJyb3IsIFREYXRhLCBUUXVlcnlLZXk+LFxuKTogVW5kZWZpbmVkSW5pdGlhbERhdGFPcHRpb25zPFRRdWVyeUZuRGF0YSwgVEVycm9yLCBURGF0YSwgVFF1ZXJ5S2V5PiAmIHtcbiAgcXVlcnlLZXk6IERhdGFUYWc8VFF1ZXJ5S2V5LCBUUXVlcnlGbkRhdGE+XG59XG5cbi8qKlxuICogQWxsb3dzIHRvIHNoYXJlIGFuZCByZS11c2UgcXVlcnkgb3B0aW9ucyBpbiBhIHR5cGUtc2FmZSB3YXkuXG4gKlxuICogVGhlIGBxdWVyeUtleWAgd2lsbCBiZSB0YWdnZWQgd2l0aCB0aGUgdHlwZSBmcm9tIGBxdWVyeUZuYC5cbiAqXG4gKiAqKkV4YW1wbGUqKlxuICpcbiAqIGBgYHRzXG4gKiAgY29uc3QgeyBxdWVyeUtleSB9ID0gcXVlcnlPcHRpb25zKHtcbiAqICAgICBxdWVyeUtleTogWydrZXknXSxcbiAqICAgICBxdWVyeUZuOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoNSksXG4gKiAgICAgLy8gIF4/ICBQcm9taXNlPG51bWJlcj5cbiAqICAgfSlcbiAqXG4gKiAgIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KClcbiAqICAgY29uc3QgZGF0YSA9IHF1ZXJ5Q2xpZW50LmdldFF1ZXJ5RGF0YShxdWVyeUtleSlcbiAqICAgLy8gICAgXj8gIG51bWJlciB8IHVuZGVmaW5lZFxuICogYGBgXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBxdWVyeSBvcHRpb25zIHRvIHRhZyB3aXRoIHRoZSB0eXBlIGZyb20gYHF1ZXJ5Rm5gLlxuICogQHJldHVybnMgVGhlIHRhZ2dlZCBxdWVyeSBvcHRpb25zLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlPcHRpb25zPFxuICBUUXVlcnlGbkRhdGEgPSB1bmtub3duLFxuICBURXJyb3IgPSBEZWZhdWx0RXJyb3IsXG4gIFREYXRhID0gVFF1ZXJ5Rm5EYXRhLFxuICBUUXVlcnlLZXkgZXh0ZW5kcyBRdWVyeUtleSA9IFF1ZXJ5S2V5LFxuPihcbiAgb3B0aW9uczogRGVmaW5lZEluaXRpYWxEYXRhT3B0aW9uczxUUXVlcnlGbkRhdGEsIFRFcnJvciwgVERhdGEsIFRRdWVyeUtleT4sXG4pOiBEZWZpbmVkSW5pdGlhbERhdGFPcHRpb25zPFRRdWVyeUZuRGF0YSwgVEVycm9yLCBURGF0YSwgVFF1ZXJ5S2V5PiAmIHtcbiAgcXVlcnlLZXk6IERhdGFUYWc8VFF1ZXJ5S2V5LCBUUXVlcnlGbkRhdGE+XG59XG5cbi8qKlxuICogQWxsb3dzIHRvIHNoYXJlIGFuZCByZS11c2UgcXVlcnkgb3B0aW9ucyBpbiBhIHR5cGUtc2FmZSB3YXkuXG4gKlxuICogVGhlIGBxdWVyeUtleWAgd2lsbCBiZSB0YWdnZWQgd2l0aCB0aGUgdHlwZSBmcm9tIGBxdWVyeUZuYC5cbiAqXG4gKiAqKkV4YW1wbGUqKlxuICpcbiAqIGBgYHRzXG4gKiAgY29uc3QgeyBxdWVyeUtleSB9ID0gcXVlcnlPcHRpb25zKHtcbiAqICAgICBxdWVyeUtleTogWydrZXknXSxcbiAqICAgICBxdWVyeUZuOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoNSksXG4gKiAgICAgLy8gIF4/ICBQcm9taXNlPG51bWJlcj5cbiAqICAgfSlcbiAqXG4gKiAgIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KClcbiAqICAgY29uc3QgZGF0YSA9IHF1ZXJ5Q2xpZW50LmdldFF1ZXJ5RGF0YShxdWVyeUtleSlcbiAqICAgLy8gICAgXj8gIG51bWJlciB8IHVuZGVmaW5lZFxuICogYGBgXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBxdWVyeSBvcHRpb25zIHRvIHRhZyB3aXRoIHRoZSB0eXBlIGZyb20gYHF1ZXJ5Rm5gLlxuICogQHJldHVybnMgVGhlIHRhZ2dlZCBxdWVyeSBvcHRpb25zLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlPcHRpb25zKG9wdGlvbnM6IHVua25vd24pIHtcbiAgcmV0dXJuIG9wdGlvbnNcbn1cbiJdfQ==
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { computed, untracked } from '@angular/core';
|
|
2
2
|
/**
|
|
3
3
|
* Exposes fields of an object passed via an Angular `Signal` as `Computed` signals.
|
|
4
|
-
*
|
|
5
4
|
* Functions on the object are passed through as-is.
|
|
6
|
-
*
|
|
7
5
|
* @param inputSignal - `Signal` that must return an object.
|
|
8
|
-
*
|
|
6
|
+
* @returns A proxy object with the same fields as the input object, but with each field wrapped in a `Computed` signal.
|
|
9
7
|
*/
|
|
10
8
|
export function signalProxy(inputSignal) {
|
|
11
9
|
const internalState = {};
|
|
@@ -37,4 +35,4 @@ export function signalProxy(inputSignal) {
|
|
|
37
35
|
},
|
|
38
36
|
});
|
|
39
37
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXByb3h5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NpZ25hbC1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQU9uRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQ3pCLFdBQTJCO0lBRTNCLE1BQU0sYUFBYSxHQUFHLEVBQTBCLENBQUE7SUFFaEQsT0FBTyxJQUFJLEtBQUssQ0FBdUIsYUFBYSxFQUFFO1FBQ3BELEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSTtZQUNkLGdFQUFnRTtZQUNoRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbEMsSUFBSSxhQUFhO2dCQUFFLE9BQU8sYUFBYSxDQUFBO1lBRXZDLGtFQUFrRTtZQUNsRSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDaEQsSUFBSSxPQUFPLFdBQVcsS0FBSyxVQUFVO2dCQUFFLE9BQU8sV0FBVyxDQUFBO1lBRXpELDJEQUEyRDtZQUMzRCxtQkFBbUI7WUFDbkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzdELENBQUM7UUFDRCxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUk7WUFDVCxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE9BQU87WUFDTCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDaEQsQ0FBQztRQUNELHdCQUF3QjtZQUN0QixPQUFPO2dCQUNMLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFBO1FBQ0gsQ0FBQztLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB0eXBlIHsgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuZXhwb3J0IHR5cGUgTWFwVG9TaWduYWxzPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEZ1bmN0aW9uID8gVFtLXSA6IFNpZ25hbDxUW0tdPlxufVxuXG4vKipcbiAqIEV4cG9zZXMgZmllbGRzIG9mIGFuIG9iamVjdCBwYXNzZWQgdmlhIGFuIEFuZ3VsYXIgYFNpZ25hbGAgYXMgYENvbXB1dGVkYCBzaWduYWxzLlxuICogRnVuY3Rpb25zIG9uIHRoZSBvYmplY3QgYXJlIHBhc3NlZCB0aHJvdWdoIGFzLWlzLlxuICogQHBhcmFtIGlucHV0U2lnbmFsIC0gYFNpZ25hbGAgdGhhdCBtdXN0IHJldHVybiBhbiBvYmplY3QuXG4gKiBAcmV0dXJucyBBIHByb3h5IG9iamVjdCB3aXRoIHRoZSBzYW1lIGZpZWxkcyBhcyB0aGUgaW5wdXQgb2JqZWN0LCBidXQgd2l0aCBlYWNoIGZpZWxkIHdyYXBwZWQgaW4gYSBgQ29tcHV0ZWRgIHNpZ25hbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFByb3h5PFRJbnB1dCBleHRlbmRzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIGFueT4+KFxuICBpbnB1dFNpZ25hbDogU2lnbmFsPFRJbnB1dD4sXG4pIHtcbiAgY29uc3QgaW50ZXJuYWxTdGF0ZSA9IHt9IGFzIE1hcFRvU2lnbmFsczxUSW5wdXQ+XG5cbiAgcmV0dXJuIG5ldyBQcm94eTxNYXBUb1NpZ25hbHM8VElucHV0Pj4oaW50ZXJuYWxTdGF0ZSwge1xuICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgIC8vIGZpcnN0IGNoZWNrIGlmIHdlIGhhdmUgaXQgaW4gb3VyIGludGVybmFsIHN0YXRlIGFuZCByZXR1cm4gaXRcbiAgICAgIGNvbnN0IGNvbXB1dGVkRmllbGQgPSB0YXJnZXRbcHJvcF1cbiAgICAgIGlmIChjb21wdXRlZEZpZWxkKSByZXR1cm4gY29tcHV0ZWRGaWVsZFxuXG4gICAgICAvLyB0aGVuLCBjaGVjayBpZiBpdCdzIGEgZnVuY3Rpb24gb24gdGhlIHJlc3VsdFN0YXRlIGFuZCByZXR1cm4gaXRcbiAgICAgIGNvbnN0IHRhcmdldEZpZWxkID0gdW50cmFja2VkKGlucHV0U2lnbmFsKVtwcm9wXVxuICAgICAgaWYgKHR5cGVvZiB0YXJnZXRGaWVsZCA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHRhcmdldEZpZWxkXG5cbiAgICAgIC8vIGZpbmFsbHksIGNyZWF0ZSBhIGNvbXB1dGVkIGZpZWxkLCBzdG9yZSBpdCBhbmQgcmV0dXJuIGl0XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4gKHRhcmdldFtwcm9wXSA9IGNvbXB1dGVkKCgpID0+IGlucHV0U2lnbmFsKClbcHJvcF0pKVxuICAgIH0sXG4gICAgaGFzKF8sIHByb3ApIHtcbiAgICAgIHJldHVybiAhIXVudHJhY2tlZChpbnB1dFNpZ25hbClbcHJvcF1cbiAgICB9LFxuICAgIG93bktleXMoKSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHVudHJhY2tlZChpbnB1dFNpZ25hbCkpXG4gICAgfSxcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9XG4gICAgfSxcbiAgfSlcbn1cbiJdfQ==
|
package/build/esm2022/types.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/* istanbul ignore file */
|
|
2
2
|
export {};
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cblxuaW1wb3J0IHR5cGUge1xuICBEZWZhdWx0RXJyb3IsXG4gIERlZmluZWRJbmZpbml0ZVF1ZXJ5T2JzZXJ2ZXJSZXN1bHQsXG4gIERlZmluZWRRdWVyeU9ic2VydmVyUmVzdWx0LFxuICBJbmZpbml0ZVF1ZXJ5T2JzZXJ2ZXJPcHRpb25zLFxuICBJbmZpbml0ZVF1ZXJ5T2JzZXJ2ZXJSZXN1bHQsXG4gIE11dGF0ZUZ1bmN0aW9uLFxuICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyxcbiAgTXV0YXRpb25PYnNlcnZlclJlc3VsdCxcbiAgT21pdEtleW9mLFxuICBRdWVyeUtleSxcbiAgUXVlcnlPYnNlcnZlck9wdGlvbnMsXG4gIFF1ZXJ5T2JzZXJ2ZXJSZXN1bHQsXG59IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBNYXBUb1NpZ25hbHMgfSBmcm9tICcuL3NpZ25hbC1wcm94eSdcblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQmFzZVF1ZXJ5T3B0aW9uczxcbiAgVFF1ZXJ5Rm5EYXRhID0gdW5rbm93bixcbiAgVEVycm9yID0gRGVmYXVsdEVycm9yLFxuICBURGF0YSA9IFRRdWVyeUZuRGF0YSxcbiAgVFF1ZXJ5RGF0YSA9IFRRdWVyeUZuRGF0YSxcbiAgVFF1ZXJ5S2V5IGV4dGVuZHMgUXVlcnlLZXkgPSBRdWVyeUtleSxcbj4gZXh0ZW5kcyBRdWVyeU9ic2VydmVyT3B0aW9uczxcbiAgICBUUXVlcnlGbkRhdGEsXG4gICAgVEVycm9yLFxuICAgIFREYXRhLFxuICAgIFRRdWVyeURhdGEsXG4gICAgVFF1ZXJ5S2V5XG4gID4ge31cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUXVlcnlPcHRpb25zPFxuICBUUXVlcnlGbkRhdGEgPSB1bmtub3duLFxuICBURXJyb3IgPSBEZWZhdWx0RXJyb3IsXG4gIFREYXRhID0gVFF1ZXJ5Rm5EYXRhLFxuICBUUXVlcnlLZXkgZXh0ZW5kcyBRdWVyeUtleSA9IFF1ZXJ5S2V5LFxuPiBleHRlbmRzIE9taXRLZXlvZjxcbiAgICBDcmVhdGVCYXNlUXVlcnlPcHRpb25zPFxuICAgICAgVFF1ZXJ5Rm5EYXRhLFxuICAgICAgVEVycm9yLFxuICAgICAgVERhdGEsXG4gICAgICBUUXVlcnlGbkRhdGEsXG4gICAgICBUUXVlcnlLZXlcbiAgICA+LFxuICAgICdzdXNwZW5zZSdcbiAgPiB7fVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xudHlwZSBDcmVhdGVTdGF0dXNCYXNlZFF1ZXJ5UmVzdWx0PFxuICBUU3RhdHVzIGV4dGVuZHMgUXVlcnlPYnNlcnZlclJlc3VsdFsnc3RhdHVzJ10sXG4gIFREYXRhID0gdW5rbm93bixcbiAgVEVycm9yID0gRGVmYXVsdEVycm9yLFxuPiA9IEV4dHJhY3Q8UXVlcnlPYnNlcnZlclJlc3VsdDxURGF0YSwgVEVycm9yPiwgeyBzdGF0dXM6IFRTdGF0dXMgfT5cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVF1ZXJ5TmFycm93aW5nPFREYXRhID0gdW5rbm93biwgVEVycm9yID0gRGVmYXVsdEVycm9yPiB7XG4gIGlzU3VjY2VzczogKFxuICAgIHRoaXM6IENyZWF0ZUJhc2VRdWVyeVJlc3VsdDxURGF0YSwgVEVycm9yPixcbiAgKSA9PiB0aGlzIGlzIENyZWF0ZUJhc2VRdWVyeVJlc3VsdDxcbiAgICBURGF0YSxcbiAgICBURXJyb3IsXG4gICAgQ3JlYXRlU3RhdHVzQmFzZWRRdWVyeVJlc3VsdDwnc3VjY2VzcycsIFREYXRhLCBURXJyb3I+XG4gID5cbiAgaXNFcnJvcjogKFxuICAgIHRoaXM6IENyZWF0ZUJhc2VRdWVyeVJlc3VsdDxURGF0YSwgVEVycm9yPixcbiAgKSA9PiB0aGlzIGlzIENyZWF0ZUJhc2VRdWVyeVJlc3VsdDxcbiAgICBURGF0YSxcbiAgICBURXJyb3IsXG4gICAgQ3JlYXRlU3RhdHVzQmFzZWRRdWVyeVJlc3VsdDwnZXJyb3InLCBURGF0YSwgVEVycm9yPlxuICA+XG4gIGlzUGVuZGluZzogKFxuICAgIHRoaXM6IENyZWF0ZUJhc2VRdWVyeVJlc3VsdDxURGF0YSwgVEVycm9yPixcbiAgKSA9PiB0aGlzIGlzIENyZWF0ZUJhc2VRdWVyeVJlc3VsdDxcbiAgICBURGF0YSxcbiAgICBURXJyb3IsXG4gICAgQ3JlYXRlU3RhdHVzQmFzZWRRdWVyeVJlc3VsdDwncGVuZGluZycsIFREYXRhLCBURXJyb3I+XG4gID5cbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlSW5maW5pdGVRdWVyeU9wdGlvbnM8XG4gIFRRdWVyeUZuRGF0YSA9IHVua25vd24sXG4gIFRFcnJvciA9IERlZmF1bHRFcnJvcixcbiAgVERhdGEgPSBUUXVlcnlGbkRhdGEsXG4gIFRRdWVyeURhdGEgPSBUUXVlcnlGbkRhdGEsXG4gIFRRdWVyeUtleSBleHRlbmRzIFF1ZXJ5S2V5ID0gUXVlcnlLZXksXG4gIFRQYWdlUGFyYW0gPSB1bmtub3duLFxuPiBleHRlbmRzIE9taXRLZXlvZjxcbiAgICBJbmZpbml0ZVF1ZXJ5T2JzZXJ2ZXJPcHRpb25zPFxuICAgICAgVFF1ZXJ5Rm5EYXRhLFxuICAgICAgVEVycm9yLFxuICAgICAgVERhdGEsXG4gICAgICBUUXVlcnlEYXRhLFxuICAgICAgVFF1ZXJ5S2V5LFxuICAgICAgVFBhZ2VQYXJhbVxuICAgID4sXG4gICAgJ3N1c3BlbnNlJ1xuICA+IHt9XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBDcmVhdGVCYXNlUXVlcnlSZXN1bHQ8XG4gIFREYXRhID0gdW5rbm93bixcbiAgVEVycm9yID0gRGVmYXVsdEVycm9yLFxuICBUU3RhdGUgPSBRdWVyeU9ic2VydmVyUmVzdWx0PFREYXRhLCBURXJyb3I+LFxuPiA9IEJhc2VRdWVyeU5hcnJvd2luZzxURGF0YSwgVEVycm9yPiAmXG4gIE1hcFRvU2lnbmFsczxPbWl0S2V5b2Y8VFN0YXRlLCBrZXlvZiBCYXNlUXVlcnlOYXJyb3dpbmcsICdzYWZlbHknPj5cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZVF1ZXJ5UmVzdWx0PFxuICBURGF0YSA9IHVua25vd24sXG4gIFRFcnJvciA9IERlZmF1bHRFcnJvcixcbj4gPSBDcmVhdGVCYXNlUXVlcnlSZXN1bHQ8VERhdGEsIFRFcnJvcj5cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIERlZmluZWRDcmVhdGVRdWVyeVJlc3VsdDxcbiAgVERhdGEgPSB1bmtub3duLFxuICBURXJyb3IgPSBEZWZhdWx0RXJyb3IsXG4gIFREZWZpbmVkUXVlcnlPYnNlcnZlciA9IERlZmluZWRRdWVyeU9ic2VydmVyUmVzdWx0PFREYXRhLCBURXJyb3I+LFxuPiA9IE1hcFRvU2lnbmFsczxURGVmaW5lZFF1ZXJ5T2JzZXJ2ZXI+XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBDcmVhdGVJbmZpbml0ZVF1ZXJ5UmVzdWx0PFxuICBURGF0YSA9IHVua25vd24sXG4gIFRFcnJvciA9IERlZmF1bHRFcnJvcixcbj4gPSBNYXBUb1NpZ25hbHM8SW5maW5pdGVRdWVyeU9ic2VydmVyUmVzdWx0PFREYXRhLCBURXJyb3I+PlxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgRGVmaW5lZENyZWF0ZUluZmluaXRlUXVlcnlSZXN1bHQ8XG4gIFREYXRhID0gdW5rbm93bixcbiAgVEVycm9yID0gRGVmYXVsdEVycm9yLFxuICBURGVmaW5lZEluZmluaXRlUXVlcnlPYnNlcnZlciA9IERlZmluZWRJbmZpbml0ZVF1ZXJ5T2JzZXJ2ZXJSZXN1bHQ8XG4gICAgVERhdGEsXG4gICAgVEVycm9yXG4gID4sXG4+ID0gTWFwVG9TaWduYWxzPFREZWZpbmVkSW5maW5pdGVRdWVyeU9ic2VydmVyPlxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVNdXRhdGlvbk9wdGlvbnM8XG4gIFREYXRhID0gdW5rbm93bixcbiAgVEVycm9yID0gRGVmYXVsdEVycm9yLFxuICBUVmFyaWFibGVzID0gdm9pZCxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPiBleHRlbmRzIE9taXRLZXlvZjxcbiAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9uczxURGF0YSwgVEVycm9yLCBUVmFyaWFibGVzLCBUQ29udGV4dD4sXG4gICAgJ19kZWZhdWx0ZWQnXG4gID4ge31cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZU11dGF0ZUZ1bmN0aW9uPFxuICBURGF0YSA9IHVua25vd24sXG4gIFRFcnJvciA9IERlZmF1bHRFcnJvcixcbiAgVFZhcmlhYmxlcyA9IHZvaWQsXG4gIFRDb250ZXh0ID0gdW5rbm93bixcbj4gPSAoXG4gIC4uLmFyZ3M6IFBhcmFtZXRlcnM8TXV0YXRlRnVuY3Rpb248VERhdGEsIFRFcnJvciwgVFZhcmlhYmxlcywgVENvbnRleHQ+PlxuKSA9PiB2b2lkXG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBDcmVhdGVNdXRhdGVBc3luY0Z1bmN0aW9uPFxuICBURGF0YSA9IHVua25vd24sXG4gIFRFcnJvciA9IERlZmF1bHRFcnJvcixcbiAgVFZhcmlhYmxlcyA9IHZvaWQsXG4gIFRDb250ZXh0ID0gdW5rbm93bixcbj4gPSBNdXRhdGVGdW5jdGlvbjxURGF0YSwgVEVycm9yLCBUVmFyaWFibGVzLCBUQ29udGV4dD5cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZUJhc2VNdXRhdGlvblJlc3VsdDxcbiAgVERhdGEgPSB1bmtub3duLFxuICBURXJyb3IgPSBEZWZhdWx0RXJyb3IsXG4gIFRWYXJpYWJsZXMgPSB1bmtub3duLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4+ID0gT3ZlcnJpZGU8XG4gIE11dGF0aW9uT2JzZXJ2ZXJSZXN1bHQ8VERhdGEsIFRFcnJvciwgVFZhcmlhYmxlcywgVENvbnRleHQ+LFxuICB7IG11dGF0ZTogQ3JlYXRlTXV0YXRlRnVuY3Rpb248VERhdGEsIFRFcnJvciwgVFZhcmlhYmxlcywgVENvbnRleHQ+IH1cbj4gJiB7XG4gIG11dGF0ZUFzeW5jOiBDcmVhdGVNdXRhdGVBc3luY0Z1bmN0aW9uPFREYXRhLCBURXJyb3IsIFRWYXJpYWJsZXMsIFRDb250ZXh0PlxufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xudHlwZSBDcmVhdGVTdGF0dXNCYXNlZE11dGF0aW9uUmVzdWx0PFxuICBUU3RhdHVzIGV4dGVuZHMgQ3JlYXRlQmFzZU11dGF0aW9uUmVzdWx0WydzdGF0dXMnXSxcbiAgVERhdGEgPSB1bmtub3duLFxuICBURXJyb3IgPSBEZWZhdWx0RXJyb3IsXG4gIFRWYXJpYWJsZXMgPSB1bmtub3duLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4+ID0gRXh0cmFjdDxcbiAgQ3JlYXRlQmFzZU11dGF0aW9uUmVzdWx0PFREYXRhLCBURXJyb3IsIFRWYXJpYWJsZXMsIFRDb250ZXh0PixcbiAgeyBzdGF0dXM6IFRTdGF0dXMgfVxuPlxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlTXV0YXRpb25OYXJyb3dpbmc8XG4gIFREYXRhID0gdW5rbm93bixcbiAgVEVycm9yID0gRGVmYXVsdEVycm9yLFxuICBUVmFyaWFibGVzID0gdW5rbm93bixcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPiB7XG4gIGlzU3VjY2VzczogKFxuICAgIHRoaXM6IENyZWF0ZU11dGF0aW9uUmVzdWx0PFREYXRhLCBURXJyb3IsIFRWYXJpYWJsZXMsIFRDb250ZXh0PixcbiAgKSA9PiB0aGlzIGlzIENyZWF0ZU11dGF0aW9uUmVzdWx0PFxuICAgIFREYXRhLFxuICAgIFRFcnJvcixcbiAgICBUVmFyaWFibGVzLFxuICAgIFRDb250ZXh0LFxuICAgIENyZWF0ZVN0YXR1c0Jhc2VkTXV0YXRpb25SZXN1bHQ8XG4gICAgICAnc3VjY2VzcycsXG4gICAgICBURGF0YSxcbiAgICAgIFRFcnJvcixcbiAgICAgIFRWYXJpYWJsZXMsXG4gICAgICBUQ29udGV4dFxuICAgID5cbiAgPlxuICBpc0Vycm9yOiAoXG4gICAgdGhpczogQ3JlYXRlTXV0YXRpb25SZXN1bHQ8VERhdGEsIFRFcnJvciwgVFZhcmlhYmxlcywgVENvbnRleHQ+LFxuICApID0+IHRoaXMgaXMgQ3JlYXRlTXV0YXRpb25SZXN1bHQ8XG4gICAgVERhdGEsXG4gICAgVEVycm9yLFxuICAgIFRWYXJpYWJsZXMsXG4gICAgVENvbnRleHQsXG4gICAgQ3JlYXRlU3RhdHVzQmFzZWRNdXRhdGlvblJlc3VsdDxcbiAgICAgICdlcnJvcicsXG4gICAgICBURGF0YSxcbiAgICAgIFRFcnJvcixcbiAgICAgIFRWYXJpYWJsZXMsXG4gICAgICBUQ29udGV4dFxuICAgID5cbiAgPlxuICBpc1BlbmRpbmc6IChcbiAgICB0aGlzOiBDcmVhdGVNdXRhdGlvblJlc3VsdDxURGF0YSwgVEVycm9yLCBUVmFyaWFibGVzLCBUQ29udGV4dD4sXG4gICkgPT4gdGhpcyBpcyBDcmVhdGVNdXRhdGlvblJlc3VsdDxcbiAgICBURGF0YSxcbiAgICBURXJyb3IsXG4gICAgVFZhcmlhYmxlcyxcbiAgICBUQ29udGV4dCxcbiAgICBDcmVhdGVTdGF0dXNCYXNlZE11dGF0aW9uUmVzdWx0PFxuICAgICAgJ3BlbmRpbmcnLFxuICAgICAgVERhdGEsXG4gICAgICBURXJyb3IsXG4gICAgICBUVmFyaWFibGVzLFxuICAgICAgVENvbnRleHRcbiAgICA+XG4gID5cbiAgaXNJZGxlOiAoXG4gICAgdGhpczogQ3JlYXRlTXV0YXRpb25SZXN1bHQ8VERhdGEsIFRFcnJvciwgVFZhcmlhYmxlcywgVENvbnRleHQ+LFxuICApID0+IHRoaXMgaXMgQ3JlYXRlTXV0YXRpb25SZXN1bHQ8XG4gICAgVERhdGEsXG4gICAgVEVycm9yLFxuICAgIFRWYXJpYWJsZXMsXG4gICAgVENvbnRleHQsXG4gICAgQ3JlYXRlU3RhdHVzQmFzZWRNdXRhdGlvblJlc3VsdDwnaWRsZScsIFREYXRhLCBURXJyb3IsIFRWYXJpYWJsZXMsIFRDb250ZXh0PlxuICA+XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBDcmVhdGVNdXRhdGlvblJlc3VsdDxcbiAgVERhdGEgPSB1bmtub3duLFxuICBURXJyb3IgPSBEZWZhdWx0RXJyb3IsXG4gIFRWYXJpYWJsZXMgPSB1bmtub3duLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4gIFRTdGF0ZSA9IENyZWF0ZVN0YXR1c0Jhc2VkTXV0YXRpb25SZXN1bHQ8XG4gICAgQ3JlYXRlQmFzZU11dGF0aW9uUmVzdWx0WydzdGF0dXMnXSxcbiAgICBURGF0YSxcbiAgICBURXJyb3IsXG4gICAgVFZhcmlhYmxlcyxcbiAgICBUQ29udGV4dFxuICA+LFxuPiA9IEJhc2VNdXRhdGlvbk5hcnJvd2luZzxURGF0YSwgVEVycm9yLCBUVmFyaWFibGVzLCBUQ29udGV4dD4gJlxuICBNYXBUb1NpZ25hbHM8T21pdEtleW9mPFRTdGF0ZSwga2V5b2YgQmFzZU11dGF0aW9uTmFycm93aW5nLCAnc2FmZWx5Jz4+XG5cbnR5cGUgT3ZlcnJpZGU8VFRhcmdldEEsIFRUYXJnZXRCPiA9IHtcbiAgW0FLZXkgaW4ga2V5b2YgVFRhcmdldEFdOiBBS2V5IGV4dGVuZHMga2V5b2YgVFRhcmdldEJcbiAgICA/IFRUYXJnZXRCW0FLZXldXG4gICAgOiBUVGFyZ2V0QVtBS2V5XVxufVxuIl19
|
|
@@ -4,21 +4,49 @@ import { untracked, computed, inject, Injector, NgZone, runInInjectionContext, D
|
|
|
4
4
|
|
|
5
5
|
/* istanbul ignore file */
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Allows to share and re-use query options in a type-safe way.
|
|
9
|
+
*
|
|
10
|
+
* The `queryKey` will be tagged with the type from `queryFn`.
|
|
11
|
+
*
|
|
12
|
+
* **Example**
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* const { queryKey } = queryOptions({
|
|
16
|
+
* queryKey: ['key'],
|
|
17
|
+
* queryFn: () => Promise.resolve(5),
|
|
18
|
+
* // ^? Promise<number>
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* const queryClient = new QueryClient()
|
|
22
|
+
* const data = queryClient.getQueryData(queryKey)
|
|
23
|
+
* // ^? number | undefined
|
|
24
|
+
* ```
|
|
25
|
+
* @param options - The query options to tag with the type from `queryFn`.
|
|
26
|
+
* @returns The tagged query options.
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
7
29
|
function queryOptions(options) {
|
|
8
30
|
return options;
|
|
9
31
|
}
|
|
10
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Allows to share and re-use infinite query options in a type-safe way.
|
|
35
|
+
*
|
|
36
|
+
* The `queryKey` will be tagged with the type from `queryFn`.
|
|
37
|
+
* @param options - The infinite query options to tag with the type from `queryFn`.
|
|
38
|
+
* @returns The tagged infinite query options.
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
11
41
|
function infiniteQueryOptions(options) {
|
|
12
42
|
return options;
|
|
13
43
|
}
|
|
14
44
|
|
|
15
45
|
/**
|
|
16
46
|
* Exposes fields of an object passed via an Angular `Signal` as `Computed` signals.
|
|
17
|
-
*
|
|
18
47
|
* Functions on the object are passed through as-is.
|
|
19
|
-
*
|
|
20
48
|
* @param inputSignal - `Signal` that must return an object.
|
|
21
|
-
*
|
|
49
|
+
* @returns A proxy object with the same fields as the input object, but with each field wrapped in a `Computed` signal.
|
|
22
50
|
*/
|
|
23
51
|
function signalProxy(inputSignal) {
|
|
24
52
|
const internalState = {};
|
|
@@ -93,7 +121,7 @@ function lazyInit(initializer) {
|
|
|
93
121
|
/**
|
|
94
122
|
* Base implementation for `injectQuery` and `injectInfiniteQuery`.
|
|
95
123
|
*/
|
|
96
|
-
function createBaseQuery(
|
|
124
|
+
function createBaseQuery(optionsFn, Observer, queryClient) {
|
|
97
125
|
const injector = inject(Injector);
|
|
98
126
|
const ngZone = inject(NgZone);
|
|
99
127
|
return lazyInit(() => {
|
|
@@ -106,7 +134,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
106
134
|
* are preserved and can keep being applied after signal changes
|
|
107
135
|
*/
|
|
108
136
|
const defaultedOptionsSignal = computed(() => {
|
|
109
|
-
const defaultedOptions = queryClient.defaultQueryOptions(
|
|
137
|
+
const defaultedOptions = queryClient.defaultQueryOptions(optionsFn(queryClient));
|
|
110
138
|
defaultedOptions._optimisticResults = 'optimistic';
|
|
111
139
|
return defaultedOptions;
|
|
112
140
|
});
|
|
@@ -223,15 +251,52 @@ function createNoopInjectionToken(description, options) {
|
|
|
223
251
|
];
|
|
224
252
|
}
|
|
225
253
|
|
|
226
|
-
const
|
|
254
|
+
const tokens = createNoopInjectionToken('QueryClientToken');
|
|
255
|
+
/**
|
|
256
|
+
* Injects the `QueryClient` instance into the component or service.
|
|
257
|
+
*
|
|
258
|
+
* **Example**
|
|
259
|
+
* ```ts
|
|
260
|
+
* const queryClient = injectQueryClient();
|
|
261
|
+
* ```
|
|
262
|
+
* @returns The `QueryClient` instance.
|
|
263
|
+
* @public
|
|
264
|
+
*/
|
|
265
|
+
const injectQueryClient = tokens[0];
|
|
266
|
+
/**
|
|
267
|
+
* Usually {@link provideAngularQuery} is used once to set up TanStack Query and the
|
|
268
|
+
* {@link https://tanstack.com/query/latest/docs/reference/QueryClient|QueryClient}
|
|
269
|
+
* for the entire application. You can use `provideQueryClient` to provide a
|
|
270
|
+
* different `QueryClient` instance for a part of the application.
|
|
271
|
+
* @public
|
|
272
|
+
*/
|
|
273
|
+
const provideQueryClient = tokens[1];
|
|
227
274
|
|
|
228
|
-
|
|
275
|
+
/**
|
|
276
|
+
* Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
|
|
277
|
+
* Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll"
|
|
278
|
+
* @param optionsFn - A function that returns infinite query options.
|
|
279
|
+
* @param injector - The Angular injector to use.
|
|
280
|
+
* @returns The infinite query result.
|
|
281
|
+
* @public
|
|
282
|
+
*/
|
|
283
|
+
function injectInfiniteQuery(optionsFn, injector) {
|
|
229
284
|
return assertInjector(injectInfiniteQuery, injector, () => {
|
|
230
285
|
const queryClient = injectQueryClient();
|
|
231
|
-
return createBaseQuery(
|
|
286
|
+
return createBaseQuery(optionsFn, InfiniteQueryObserver, queryClient);
|
|
232
287
|
});
|
|
233
288
|
}
|
|
234
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Injects a signal that tracks the number of queries that your application is loading or
|
|
292
|
+
* fetching in the background.
|
|
293
|
+
*
|
|
294
|
+
* Can be used for app-wide loading indicators
|
|
295
|
+
* @param filters - The filters to apply to the query.
|
|
296
|
+
* @param injector - The Angular injector to use.
|
|
297
|
+
* @returns signal with number of loading or fetching queries.
|
|
298
|
+
* @public
|
|
299
|
+
*/
|
|
235
300
|
function injectIsFetching(filters, injector) {
|
|
236
301
|
return assertInjector(injectIsFetching, injector, () => {
|
|
237
302
|
const queryClient = injectQueryClient();
|
|
@@ -256,6 +321,15 @@ function injectIsFetching(filters, injector) {
|
|
|
256
321
|
});
|
|
257
322
|
}
|
|
258
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Injects a signal that tracks the number of mutations that your application is fetching.
|
|
326
|
+
*
|
|
327
|
+
* Can be used for app-wide loading indicators
|
|
328
|
+
* @param filters - The filters to apply to the query.
|
|
329
|
+
* @param injector - The Angular injector to use.
|
|
330
|
+
* @returns signal with number of fetching mutations.
|
|
331
|
+
* @public
|
|
332
|
+
*/
|
|
259
333
|
function injectIsMutating(filters, injector) {
|
|
260
334
|
return assertInjector(injectIsMutating, injector, () => {
|
|
261
335
|
const queryClient = injectQueryClient();
|
|
@@ -280,19 +354,28 @@ function injectIsMutating(filters, injector) {
|
|
|
280
354
|
});
|
|
281
355
|
}
|
|
282
356
|
|
|
283
|
-
|
|
357
|
+
/**
|
|
358
|
+
* Injects a mutation: an imperative function that can be invoked which typically performs server side effects.
|
|
359
|
+
*
|
|
360
|
+
* Unlike queries, mutations are not run automatically.
|
|
361
|
+
* @param optionsFn - A function that returns mutation options.
|
|
362
|
+
* @param injector - The Angular injector to use.
|
|
363
|
+
* @returns The mutation.
|
|
364
|
+
* @public
|
|
365
|
+
*/
|
|
366
|
+
function injectMutation(optionsFn, injector) {
|
|
284
367
|
return assertInjector(injectMutation, injector, () => {
|
|
285
368
|
const queryClient = injectQueryClient();
|
|
286
369
|
const currentInjector = inject(Injector);
|
|
287
370
|
const destroyRef = inject(DestroyRef);
|
|
288
371
|
const ngZone = inject(NgZone);
|
|
289
372
|
return lazyInit(() => runInInjectionContext(currentInjector, () => {
|
|
290
|
-
const observer = new MutationObserver(queryClient,
|
|
373
|
+
const observer = new MutationObserver(queryClient, optionsFn(queryClient));
|
|
291
374
|
const mutate = (variables, mutateOptions) => {
|
|
292
375
|
observer.mutate(variables, mutateOptions).catch(noop);
|
|
293
376
|
};
|
|
294
377
|
effect(() => {
|
|
295
|
-
observer.setOptions(
|
|
378
|
+
observer.setOptions(optionsFn(queryClient));
|
|
296
379
|
});
|
|
297
380
|
const result = signal(observer.getCurrentResult());
|
|
298
381
|
const unsubscribe = observer.subscribe(notifyManager.batchCalls((state) => {
|
|
@@ -335,6 +418,13 @@ function getResult(mutationCache, options) {
|
|
|
335
418
|
? options.select(mutation)
|
|
336
419
|
: mutation.state));
|
|
337
420
|
}
|
|
421
|
+
/**
|
|
422
|
+
* Injects a signal that tracks the state of all mutations.
|
|
423
|
+
* @param mutationStateOptionsFn - A function that returns mutation state options.
|
|
424
|
+
* @param options - The Angular injector to use.
|
|
425
|
+
* @returns The signal that tracks the state of all mutations.
|
|
426
|
+
* @public
|
|
427
|
+
*/
|
|
338
428
|
function injectMutationState(mutationStateOptionsFn = () => ({}), options) {
|
|
339
429
|
return assertInjector(injectMutationState, options?.injector, () => {
|
|
340
430
|
const destroyRef = inject(DestroyRef);
|
|
@@ -365,6 +455,9 @@ function injectMutationState(mutationStateOptionsFn = () => ({}), options) {
|
|
|
365
455
|
});
|
|
366
456
|
}
|
|
367
457
|
|
|
458
|
+
/**
|
|
459
|
+
* @public
|
|
460
|
+
*/
|
|
368
461
|
function injectQueries({ queries, ...options }, injector) {
|
|
369
462
|
return assertInjector(injectQueries, injector, () => {
|
|
370
463
|
const queryClient = injectQueryClient();
|
|
@@ -391,14 +484,86 @@ function injectQueries({ queries, ...options }, injector) {
|
|
|
391
484
|
});
|
|
392
485
|
}
|
|
393
486
|
|
|
394
|
-
|
|
487
|
+
/**
|
|
488
|
+
* Injects a query: a declarative dependency on an asynchronous source of data that is tied to a unique key.
|
|
489
|
+
*
|
|
490
|
+
* **Basic example**
|
|
491
|
+
* ```ts
|
|
492
|
+
* class ServiceOrComponent {
|
|
493
|
+
* query = injectQuery(() => ({
|
|
494
|
+
* queryKey: ['repoData'],
|
|
495
|
+
* queryFn: () =>
|
|
496
|
+
* this.#http.get<Response>('https://api.github.com/repos/tanstack/query'),
|
|
497
|
+
* }))
|
|
498
|
+
* }
|
|
499
|
+
* ```
|
|
500
|
+
*
|
|
501
|
+
* **The options function can utilize signals**
|
|
502
|
+
* ```ts
|
|
503
|
+
* class ServiceOrComponent {
|
|
504
|
+
* filter = signal('')
|
|
505
|
+
*
|
|
506
|
+
* todosQuery = injectQuery(() => ({
|
|
507
|
+
* queryKey: ['todos', this.filter()],
|
|
508
|
+
* queryFn: () => fetchTodos(this.filter()),
|
|
509
|
+
* // Signals can be combined with expressions
|
|
510
|
+
* enabled: !!this.filter(),
|
|
511
|
+
* }))
|
|
512
|
+
* }
|
|
513
|
+
* ```
|
|
514
|
+
* @param optionsFn - A function that returns query options.
|
|
515
|
+
* @param injector - The Angular injector to use.
|
|
516
|
+
* @returns The query result.
|
|
517
|
+
* @public
|
|
518
|
+
* @see https://tanstack.com/query/latest/docs/framework/angular/guides/queries
|
|
519
|
+
*/
|
|
520
|
+
function injectQuery(optionsFn, injector) {
|
|
395
521
|
const assertedInjector = assertInjector(injectQuery, injector);
|
|
396
522
|
return assertInjector(injectQuery, injector, () => {
|
|
397
523
|
const queryClient = injectQueryClient();
|
|
398
|
-
return createBaseQuery((client) => runInInjectionContext(assertedInjector, () =>
|
|
524
|
+
return createBaseQuery((client) => runInInjectionContext(assertedInjector, () => optionsFn(client)), QueryObserver, queryClient);
|
|
399
525
|
});
|
|
400
526
|
}
|
|
401
527
|
|
|
528
|
+
/**
|
|
529
|
+
* Sets up providers necessary to enable TanStack Query functionality for Angular applications.
|
|
530
|
+
*
|
|
531
|
+
* Allows to configure a `QueryClient`.
|
|
532
|
+
*
|
|
533
|
+
* **Example - standalone**
|
|
534
|
+
*
|
|
535
|
+
* ```ts
|
|
536
|
+
* import {
|
|
537
|
+
* provideAngularQuery,
|
|
538
|
+
* QueryClient,
|
|
539
|
+
* } from '@tanstack/angular-query-experimental'
|
|
540
|
+
*
|
|
541
|
+
* bootstrapApplication(AppComponent, {
|
|
542
|
+
* providers: [provideAngularQuery(new QueryClient())],
|
|
543
|
+
* })
|
|
544
|
+
* ```
|
|
545
|
+
*
|
|
546
|
+
* **Example - NgModule-based**
|
|
547
|
+
*
|
|
548
|
+
* ```ts
|
|
549
|
+
* import {
|
|
550
|
+
* provideAngularQuery,
|
|
551
|
+
* QueryClient,
|
|
552
|
+
* } from '@tanstack/angular-query-experimental'
|
|
553
|
+
*
|
|
554
|
+
* @NgModule({
|
|
555
|
+
* declarations: [AppComponent],
|
|
556
|
+
* imports: [BrowserModule],
|
|
557
|
+
* providers: [provideAngularQuery(new QueryClient())],
|
|
558
|
+
* bootstrap: [AppComponent],
|
|
559
|
+
* })
|
|
560
|
+
* export class AppModule {}
|
|
561
|
+
* ```
|
|
562
|
+
* @param queryClient - A `QueryClient` instance.
|
|
563
|
+
* @returns A set of providers to set up TanStack Query.
|
|
564
|
+
* @public
|
|
565
|
+
* @see https://tanstack.com/query/v5/docs/framework/angular/quick-start
|
|
566
|
+
*/
|
|
402
567
|
function provideAngularQuery(queryClient) {
|
|
403
568
|
return makeEnvironmentProviders([
|
|
404
569
|
provideQueryClient(queryClient),
|
|
@@ -421,5 +586,5 @@ function provideAngularQuery(queryClient) {
|
|
|
421
586
|
* Generated bundle index. Do not edit.
|
|
422
587
|
*/
|
|
423
588
|
|
|
424
|
-
export {
|
|
589
|
+
export { infiniteQueryOptions, injectInfiniteQuery, injectIsFetching, injectIsMutating, injectMutation, injectMutationState, injectQueries, injectQuery, injectQueryClient, provideAngularQuery, provideQueryClient, queryOptions };
|
|
425
590
|
//# sourceMappingURL=tanstack-angular-query-experimental.mjs.map
|