@ethlete/query 4.11.0 → 4.12.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/esm2022/lib/query-creator/query-creator.mjs +8 -3
- package/esm2022/lib/utils/data.utils.mjs +39 -0
- package/esm2022/lib/utils/index.mjs +2 -1
- package/fesm2022/ethlete-query.mjs +70 -28
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/query-creator/query-creator.d.ts +7 -2
- package/lib/utils/data.utils.d.ts +15 -0
- package/lib/utils/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { BehaviorSubject } from 'rxjs';
|
|
2
1
|
import { Query, computeQueryQueryParams, isGqlQueryConfig } from '../query';
|
|
3
2
|
import { buildGqlCacheKey, shouldCacheQuery } from '../query-client';
|
|
4
3
|
import { buildRoute } from '../request';
|
|
4
|
+
import { QuerySubject, querySignal } from '../utils';
|
|
5
5
|
export class QueryCreator {
|
|
6
6
|
constructor(_queryConfig, _client, _store) {
|
|
7
7
|
this._queryConfig = _queryConfig;
|
|
@@ -31,7 +31,12 @@ export class QueryCreator {
|
|
|
31
31
|
this._store._dispatchQueryCreated(query);
|
|
32
32
|
return query;
|
|
33
33
|
};
|
|
34
|
-
this.
|
|
34
|
+
this.createSubject = (initialValue, config) => new QuerySubject(initialValue ?? null, config);
|
|
35
|
+
this.createSignal = (initialValue, config) => querySignal(initialValue ?? null, config);
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated Use `myQuery.createSubject()` or `myQuery.createSignal()` instead. Will be removed in v5.
|
|
38
|
+
*/
|
|
39
|
+
this.behaviorSubject = (initialValue, config) => new QuerySubject(initialValue ?? null, config);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY3JlYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1jcmVhdG9yL3F1ZXJ5LWNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RSxPQUFPLEVBQWUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBd0IsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUczRSxNQUFNLE9BQU8sWUFBWTtJQVF2QixZQUNVLFlBRXVELEVBQ3ZELE9BQW9CLEVBQ3BCLE1BQWtCO1FBSmxCLGlCQUFZLEdBQVosWUFBWSxDQUUyQztRQUN2RCxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFHNUIsNkRBQTZEO1FBQzdELGFBQWE7UUFDYixZQUFPLEdBQWdFLENBQUMsSUFBOEIsRUFBRSxFQUFFO1lBQ3hHLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQztnQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVM7Z0JBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQzlCLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVTtnQkFDNUIsV0FBVyxFQUFFLHVCQUF1QixDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQy9GLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxXQUFXO2FBQzNELENBQVUsQ0FBQztZQUVaLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBRXpHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQXFELFFBQVEsQ0FBQyxDQUFDO2dCQUVwRyxJQUFJLGFBQWEsRUFBRTtvQkFDakIsT0FBTyxhQUFhLENBQUM7aUJBQ3RCO2FBQ0Y7WUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FDckIsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsWUFBWSxFQUNqQixLQUFLLEVBQ0wsSUFBSSxJQUFLLEVBQWdCLENBQzFCLENBQUM7WUFFRixJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNsQztZQUVELElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFekMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7UUFFRixrQkFBYSxHQUFHLENBQUMsWUFBcUQsRUFBRSxNQUE2QixFQUFFLEVBQUUsQ0FDdkcsSUFBSSxZQUFZLENBQXlDLFlBQVksSUFBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFekYsaUJBQVksR0FBRyxDQUFDLFlBQXFELEVBQUUsTUFBNkIsRUFBRSxFQUFFLENBQ3RHLFdBQVcsQ0FBeUMsWUFBWSxJQUFJLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwRjs7V0FFRztRQUNILG9CQUFlLEdBQUcsQ0FBQyxZQUFxRCxFQUFFLE1BQTZCLEVBQUUsRUFBRSxDQUN6RyxJQUFJLFlBQVksQ0FBeUMsWUFBWSxJQUFJLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQWpEdEYsQ0FBQztDQWtETCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi4vZW50aXR5JztcbmltcG9ydCB7IFF1ZXJ5LCBjb21wdXRlUXVlcnlRdWVyeVBhcmFtcywgaXNHcWxRdWVyeUNvbmZpZyB9IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBidWlsZEdxbENhY2hlS2V5LCBzaG91bGRDYWNoZVF1ZXJ5IH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IFF1ZXJ5U3RvcmUgfSBmcm9tICcuLi9xdWVyeS1zdG9yZSc7XG5pbXBvcnQgeyBCYXNlQXJndW1lbnRzLCBHcWxRdWVyeUNvbmZpZywgUmVzdFF1ZXJ5Q29uZmlnLCBSb3V0ZVR5cGUsIFdpdGhIZWFkZXJzIH0gZnJvbSAnLi4vcXVlcnkvcXVlcnkudHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRSb3V0ZSB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnlDb250YWluZXJDb25maWcsIFF1ZXJ5U3ViamVjdCwgcXVlcnlTaWduYWwgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBRdWVyeVByZXBhcmVGbiB9IGZyb20gJy4vcXVlcnktY3JlYXRvci50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUNyZWF0b3I8XG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlLFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9xdWVyeUNvbmZpZzpcbiAgICAgIHwgUmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+XG4gICAgICB8IEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICAgIHByaXZhdGUgX2NsaWVudDogUXVlcnlDbGllbnQsXG4gICAgcHJpdmF0ZSBfc3RvcmU6IFF1ZXJ5U3RvcmUsXG4gICkge31cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgcHJlcGFyZTogUXVlcnlQcmVwYXJlRm48QXJndW1lbnRzLCBSZXNwb25zZSwgUm91dGUsIFN0b3JlLCBEYXRhLCBJZD4gPSAoYXJncz86IEFyZ3VtZW50cyAmIFdpdGhIZWFkZXJzKSA9PiB7XG4gICAgY29uc3Qgcm91dGUgPSBidWlsZFJvdXRlKHtcbiAgICAgIGJhc2U6IHRoaXMuX2NsaWVudC5jb25maWcuYmFzZVJvdXRlLFxuICAgICAgcm91dGU6IHRoaXMuX3F1ZXJ5Q29uZmlnLnJvdXRlLFxuICAgICAgcGF0aFBhcmFtczogYXJncz8ucGF0aFBhcmFtcyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBjb21wdXRlUXVlcnlRdWVyeVBhcmFtcyh7IGNvbmZpZzogdGhpcy5fcXVlcnlDb25maWcsIGNsaWVudDogdGhpcy5fY2xpZW50LCBhcmdzIH0pLFxuICAgICAgcXVlcnlQYXJhbUNvbmZpZzogdGhpcy5fY2xpZW50LmNvbmZpZy5yZXF1ZXN0Py5xdWVyeVBhcmFtcyxcbiAgICB9KSBhcyBSb3V0ZTtcblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gaXNHcWxRdWVyeUNvbmZpZyh0aGlzLl9xdWVyeUNvbmZpZykgPyBidWlsZEdxbENhY2hlS2V5KHRoaXMuX3F1ZXJ5Q29uZmlnLCBhcmdzKSA6IHJvdXRlO1xuXG4gICAgaWYgKHNob3VsZENhY2hlUXVlcnkodGhpcy5fcXVlcnlDb25maWcubWV0aG9kKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdRdWVyeSA9IHRoaXMuX3N0b3JlLmdldDxRdWVyeTxSZXNwb25zZSwgQXJndW1lbnRzLCBSb3V0ZSwgU3RvcmUsIERhdGEsIElkPj4oY2FjaGVLZXkpO1xuXG4gICAgICBpZiAoZXhpc3RpbmdRdWVyeSkge1xuICAgICAgICByZXR1cm4gZXhpc3RpbmdRdWVyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBRdWVyeTxSZXNwb25zZSwgQXJndW1lbnRzLCBSb3V0ZSwgU3RvcmUsIERhdGEsIElkPihcbiAgICAgIHRoaXMuX2NsaWVudCxcbiAgICAgIHRoaXMuX3F1ZXJ5Q29uZmlnLFxuICAgICAgcm91dGUsXG4gICAgICBhcmdzID8/ICh7fSBhcyBBcmd1bWVudHMpLFxuICAgICk7XG5cbiAgICBpZiAoc2hvdWxkQ2FjaGVRdWVyeSh0aGlzLl9xdWVyeUNvbmZpZy5tZXRob2QpKSB7XG4gICAgICB0aGlzLl9zdG9yZS5hZGQoY2FjaGVLZXksIHF1ZXJ5KTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdG9yZS5fZGlzcGF0Y2hRdWVyeUNyZWF0ZWQocXVlcnkpO1xuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9O1xuXG4gIGNyZWF0ZVN1YmplY3QgPSAoaW5pdGlhbFZhbHVlPzogUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGwsIGNvbmZpZz86IFF1ZXJ5Q29udGFpbmVyQ29uZmlnKSA9PlxuICAgIG5ldyBRdWVyeVN1YmplY3Q8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGw+KGluaXRpYWxWYWx1ZSA/PyBudWxsLCBjb25maWcpO1xuXG4gIGNyZWF0ZVNpZ25hbCA9IChpbml0aWFsVmFsdWU/OiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLnByZXBhcmU+IHwgbnVsbCwgY29uZmlnPzogUXVlcnlDb250YWluZXJDb25maWcpID0+XG4gICAgcXVlcnlTaWduYWw8UmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5wcmVwYXJlPiB8IG51bGw+KGluaXRpYWxWYWx1ZSA/PyBudWxsLCBjb25maWcpO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYG15UXVlcnkuY3JlYXRlU3ViamVjdCgpYCBvciBgbXlRdWVyeS5jcmVhdGVTaWduYWwoKWAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LlxuICAgKi9cbiAgYmVoYXZpb3JTdWJqZWN0ID0gKGluaXRpYWxWYWx1ZT86IFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsLCBjb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZykgPT5cbiAgICBuZXcgUXVlcnlTdWJqZWN0PFJldHVyblR5cGU8dHlwZW9mIHRoaXMucHJlcGFyZT4gfCBudWxsPihpbml0aWFsVmFsdWUgPz8gbnVsbCwgY29uZmlnKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { signal } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
export class QuerySubject extends BehaviorSubject {
|
|
4
|
+
constructor(initialValue = null, _config) {
|
|
5
|
+
super(initialValue);
|
|
6
|
+
this._config = _config;
|
|
7
|
+
}
|
|
8
|
+
next(value) {
|
|
9
|
+
if (this._config?.abortPrevious) {
|
|
10
|
+
this.value?.abort();
|
|
11
|
+
}
|
|
12
|
+
super.next(value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export const querySignal = (initialValue = null, config) => {
|
|
16
|
+
const _signal = signal(initialValue);
|
|
17
|
+
const origMutate = _signal.mutate;
|
|
18
|
+
const origUpdate = _signal.update;
|
|
19
|
+
const origSet = _signal.set;
|
|
20
|
+
_signal.mutate = (mutatorFn) => {
|
|
21
|
+
if (config?.abortPrevious) {
|
|
22
|
+
_signal()?.abort();
|
|
23
|
+
}
|
|
24
|
+
origMutate(mutatorFn);
|
|
25
|
+
};
|
|
26
|
+
_signal.update = (updateFn) => {
|
|
27
|
+
if (config?.abortPrevious) {
|
|
28
|
+
_signal()?.abort();
|
|
29
|
+
}
|
|
30
|
+
origUpdate(updateFn);
|
|
31
|
+
};
|
|
32
|
+
_signal.set = (value) => {
|
|
33
|
+
if (config?.abortPrevious) {
|
|
34
|
+
_signal()?.abort();
|
|
35
|
+
}
|
|
36
|
+
origSet(value);
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi91dGlscy9kYXRhLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVd2QyxNQUFNLE9BQU8sWUFBd0MsU0FBUSxlQUFrQjtJQUM3RSxZQUNFLGVBQWtCLElBQVMsRUFDbkIsT0FBOEI7UUFFdEMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRlosWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFHeEMsQ0FBQztJQUVRLElBQUksQ0FBQyxLQUFRO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNyQjtRQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQTRCLGVBQWtCLElBQVMsRUFBRSxNQUE2QixFQUFFLEVBQUU7SUFDbkgsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFJLFlBQVksQ0FBQyxDQUFDO0lBRXhDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDbEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNsQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRTVCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxTQUE2QixFQUFFLEVBQUU7UUFDakQsSUFBSSxNQUFNLEVBQUUsYUFBYSxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3BCO1FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxRQUF5QixFQUFFLEVBQUU7UUFDN0MsSUFBSSxNQUFNLEVBQUUsYUFBYSxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3BCO1FBRUQsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFRLEVBQUUsRUFBRTtRQUN6QixJQUFJLE1BQU0sRUFBRSxhQUFhLEVBQUU7WUFDekIsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDcEI7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFueVF1ZXJ5IH0gZnJvbSAnLi4vcXVlcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5Q29udGFpbmVyQ29uZmlnIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHByZXZpb3VzIHF1ZXJ5IHdpbGwgYmUgYWJvcnRlZCB3aGVuIGEgbmV3IHF1ZXJ5IGlzIHB1c2hlZCBpbnRvIHRoZSBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhYm9ydFByZXZpb3VzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFF1ZXJ5U3ViamVjdDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPiBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxUPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGluaXRpYWxWYWx1ZTogVCA9IG51bGwgYXMgVCxcbiAgICBwcml2YXRlIF9jb25maWc/OiBRdWVyeUNvbnRhaW5lckNvbmZpZyxcbiAgKSB7XG4gICAgc3VwZXIoaW5pdGlhbFZhbHVlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5leHQodmFsdWU6IFQpIHtcbiAgICBpZiAodGhpcy5fY29uZmlnPy5hYm9ydFByZXZpb3VzKSB7XG4gICAgICB0aGlzLnZhbHVlPy5hYm9ydCgpO1xuICAgIH1cblxuICAgIHN1cGVyLm5leHQodmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBxdWVyeVNpZ25hbCA9IDxUIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPihpbml0aWFsVmFsdWU6IFQgPSBudWxsIGFzIFQsIGNvbmZpZz86IFF1ZXJ5Q29udGFpbmVyQ29uZmlnKSA9PiB7XG4gIGNvbnN0IF9zaWduYWwgPSBzaWduYWw8VD4oaW5pdGlhbFZhbHVlKTtcblxuICBjb25zdCBvcmlnTXV0YXRlID0gX3NpZ25hbC5tdXRhdGU7XG4gIGNvbnN0IG9yaWdVcGRhdGUgPSBfc2lnbmFsLnVwZGF0ZTtcbiAgY29uc3Qgb3JpZ1NldCA9IF9zaWduYWwuc2V0O1xuXG4gIF9zaWduYWwubXV0YXRlID0gKG11dGF0b3JGbjogKHZhbHVlOiBUKSA9PiB2b2lkKSA9PiB7XG4gICAgaWYgKGNvbmZpZz8uYWJvcnRQcmV2aW91cykge1xuICAgICAgX3NpZ25hbCgpPy5hYm9ydCgpO1xuICAgIH1cblxuICAgIG9yaWdNdXRhdGUobXV0YXRvckZuKTtcbiAgfTtcblxuICBfc2lnbmFsLnVwZGF0ZSA9ICh1cGRhdGVGbjogKHZhbHVlOiBUKSA9PiBUKSA9PiB7XG4gICAgaWYgKGNvbmZpZz8uYWJvcnRQcmV2aW91cykge1xuICAgICAgX3NpZ25hbCgpPy5hYm9ydCgpO1xuICAgIH1cblxuICAgIG9yaWdVcGRhdGUodXBkYXRlRm4pO1xuICB9O1xuXG4gIF9zaWduYWwuc2V0ID0gKHZhbHVlOiBUKSA9PiB7XG4gICAgaWYgKGNvbmZpZz8uYWJvcnRQcmV2aW91cykge1xuICAgICAgX3NpZ25hbCgpPy5hYm9ydCgpO1xuICAgIH1cblxuICAgIG9yaWdTZXQodmFsdWUpO1xuICB9O1xufTtcbiJdfQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './data.utils';
|
|
1
2
|
export * from './deep-freeze.util';
|
|
2
3
|
export * from './def.util';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0YS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2RlZXAtZnJlZXplLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWYudXRpbCc7XG4iXX0=
|
|
@@ -2,7 +2,7 @@ import * as i1$1 from '@ethlete/core';
|
|
|
2
2
|
import { getCookie, setCookie, deleteCookie, createDestroy, nextFrame, DelayableDirective, RouterStateService, clone, equal, ET_PROPERTY_REMOVED } from '@ethlete/core';
|
|
3
3
|
import { Observable, BehaviorSubject, Subject, fromEvent, timer, takeUntil, take, filter, takeWhile, switchMap, of, tap, shareReplay, interval, skip, map, startWith, combineLatest, withLatestFrom, debounceTime, merge } from 'rxjs';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { isDevMode, Pipe, InjectionToken, inject, ChangeDetectorRef,
|
|
5
|
+
import { signal, isDevMode, Pipe, InjectionToken, inject, ChangeDetectorRef, computed, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, TemplateRef, ViewContainerRef, ErrorHandler, Directive, Input, ElementRef, NgZone, assertInInjectionContext } from '@angular/core';
|
|
6
6
|
import { NgIf, NgFor, AsyncPipe, JsonPipe, NgClass } from '@angular/common';
|
|
7
7
|
import { toSignal, toObservable } from '@angular/core/rxjs-interop';
|
|
8
8
|
import * as i1 from '@angular/forms';
|
|
@@ -512,6 +512,68 @@ const request = (config) => {
|
|
|
512
512
|
});
|
|
513
513
|
};
|
|
514
514
|
|
|
515
|
+
class QuerySubject extends BehaviorSubject {
|
|
516
|
+
constructor(initialValue = null, _config) {
|
|
517
|
+
super(initialValue);
|
|
518
|
+
this._config = _config;
|
|
519
|
+
}
|
|
520
|
+
next(value) {
|
|
521
|
+
if (this._config?.abortPrevious) {
|
|
522
|
+
this.value?.abort();
|
|
523
|
+
}
|
|
524
|
+
super.next(value);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
const querySignal = (initialValue = null, config) => {
|
|
528
|
+
const _signal = signal(initialValue);
|
|
529
|
+
const origMutate = _signal.mutate;
|
|
530
|
+
const origUpdate = _signal.update;
|
|
531
|
+
const origSet = _signal.set;
|
|
532
|
+
_signal.mutate = (mutatorFn) => {
|
|
533
|
+
if (config?.abortPrevious) {
|
|
534
|
+
_signal()?.abort();
|
|
535
|
+
}
|
|
536
|
+
origMutate(mutatorFn);
|
|
537
|
+
};
|
|
538
|
+
_signal.update = (updateFn) => {
|
|
539
|
+
if (config?.abortPrevious) {
|
|
540
|
+
_signal()?.abort();
|
|
541
|
+
}
|
|
542
|
+
origUpdate(updateFn);
|
|
543
|
+
};
|
|
544
|
+
_signal.set = (value) => {
|
|
545
|
+
if (config?.abortPrevious) {
|
|
546
|
+
_signal()?.abort();
|
|
547
|
+
}
|
|
548
|
+
origSet(value);
|
|
549
|
+
};
|
|
550
|
+
};
|
|
551
|
+
|
|
552
|
+
const deepFreeze = (object) => {
|
|
553
|
+
// check if object is actually an object or frozen
|
|
554
|
+
if (!object || typeof object !== 'object' || Object.isFrozen(object)) {
|
|
555
|
+
return object;
|
|
556
|
+
}
|
|
557
|
+
// Retrieve the property names defined on object
|
|
558
|
+
const propNames = Object.getOwnPropertyNames(object);
|
|
559
|
+
// Freeze properties before freezing self
|
|
560
|
+
for (const name of propNames) {
|
|
561
|
+
const value = object[name];
|
|
562
|
+
if (value && typeof value === 'object') {
|
|
563
|
+
deepFreeze(value);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
return Object.freeze(object);
|
|
567
|
+
};
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Dummy function for providing types while not breaking inference.
|
|
571
|
+
* **This function always returns null.**
|
|
572
|
+
* @see https://github.com/microsoft/TypeScript/issues/26242
|
|
573
|
+
* @returns null
|
|
574
|
+
*/
|
|
575
|
+
const def = () => null;
|
|
576
|
+
|
|
515
577
|
class QueryCreator {
|
|
516
578
|
constructor(_queryConfig, _client, _store) {
|
|
517
579
|
this._queryConfig = _queryConfig;
|
|
@@ -541,7 +603,12 @@ class QueryCreator {
|
|
|
541
603
|
this._store._dispatchQueryCreated(query);
|
|
542
604
|
return query;
|
|
543
605
|
};
|
|
544
|
-
this.
|
|
606
|
+
this.createSubject = (initialValue, config) => new QuerySubject(initialValue ?? null, config);
|
|
607
|
+
this.createSignal = (initialValue, config) => querySignal(initialValue ?? null, config);
|
|
608
|
+
/**
|
|
609
|
+
* @deprecated Use `myQuery.createSubject()` or `myQuery.createSignal()` instead. Will be removed in v5.
|
|
610
|
+
*/
|
|
611
|
+
this.behaviorSubject = (initialValue, config) => new QuerySubject(initialValue ?? null, config);
|
|
545
612
|
}
|
|
546
613
|
}
|
|
547
614
|
|
|
@@ -2708,34 +2775,9 @@ class QueryForm {
|
|
|
2708
2775
|
}
|
|
2709
2776
|
}
|
|
2710
2777
|
|
|
2711
|
-
const deepFreeze = (object) => {
|
|
2712
|
-
// check if object is actually an object or frozen
|
|
2713
|
-
if (!object || typeof object !== 'object' || Object.isFrozen(object)) {
|
|
2714
|
-
return object;
|
|
2715
|
-
}
|
|
2716
|
-
// Retrieve the property names defined on object
|
|
2717
|
-
const propNames = Object.getOwnPropertyNames(object);
|
|
2718
|
-
// Freeze properties before freezing self
|
|
2719
|
-
for (const name of propNames) {
|
|
2720
|
-
const value = object[name];
|
|
2721
|
-
if (value && typeof value === 'object') {
|
|
2722
|
-
deepFreeze(value);
|
|
2723
|
-
}
|
|
2724
|
-
}
|
|
2725
|
-
return Object.freeze(object);
|
|
2726
|
-
};
|
|
2727
|
-
|
|
2728
|
-
/**
|
|
2729
|
-
* Dummy function for providing types while not breaking inference.
|
|
2730
|
-
* **This function always returns null.**
|
|
2731
|
-
* @see https://github.com/microsoft/TypeScript/issues/26242
|
|
2732
|
-
* @returns null
|
|
2733
|
-
*/
|
|
2734
|
-
const def = () => null;
|
|
2735
|
-
|
|
2736
2778
|
/**
|
|
2737
2779
|
* Generated bundle index. Do not edit.
|
|
2738
2780
|
*/
|
|
2739
2781
|
|
|
2740
|
-
export { BasicAuthProvider, BearerAuthProvider, CustomHeaderAuthProvider, EntityStore, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, QUERY_CLIENT_DEVTOOLS_TOKEN, Query, QueryClient, QueryCreator, QueryDevtoolsComponent, QueryDirective, QueryError, QueryField, QueryForm, QueryShortNamePipe, QueryStore, buildErrorMessage, buildGqlCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, createInfinityQueryConfig, createQueryCollection, decryptBearer, deepFreeze, def, detectContentTypeHeader, extractExpiresInSeconds, extractQuery, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, getDefaultHeaders, getResponseUrl, gql, hasHeader, ignoreAutoRefresh, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCustomHeaderAuthProvider, isEmptyString, isGqlQueryConfig, isNaN$1 as isNaN, isQuery, isQueryCollection, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyPagerfantaOutOfRangeError, mapToPaginated, mergeHeaders, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, pathParamsMissingInRouteFunctionError, provideQueryClientForDevtools, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, removeFrom, request, resetPageOnError, serializeBody, shouldCacheQuery, shouldRetryRequest, skipPaginationPageParamCalculator, switchQueryCollectionState, switchQueryState, takeUntilResponse, transformGql, transformMethod, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray };
|
|
2782
|
+
export { BasicAuthProvider, BearerAuthProvider, CustomHeaderAuthProvider, EntityStore, INFINITY_QUERY_TOKEN, InfinityQuery, InfinityQueryDirective, InfinityQueryTriggerDirective, QUERY_CLIENT_DEVTOOLS_TOKEN, Query, QueryClient, QueryCreator, QueryDevtoolsComponent, QueryDirective, QueryError, QueryField, QueryForm, QueryShortNamePipe, QueryStore, QuerySubject, buildErrorMessage, buildGqlCacheKey, buildQueryString, buildRoute, buildTimestampFromSeconds, castQueryCreatorTypes, computeQueryAuthHeader, computeQueryBody, computeQueryHeaders, computeQueryMethod, computeQueryQueryParams, createInfinityQueryConfig, createQueryCollection, decryptBearer, deepFreeze, def, detectContentTypeHeader, extractExpiresInSeconds, extractQuery, filterFailure, filterNull, filterQueryStates, filterSuccess, forEachHeader, getDefaultHeaders, getResponseUrl, gql, hasHeader, ignoreAutoRefresh, insertFrom, invalidBaseRouteError, invalidBodyError, invalidRouteError, isAutoRefresh, isBasicAuthProvider, isBearerAuthProvider, isClassValidatorError, isCustomHeaderAuthProvider, isEmptyString, isGqlQueryConfig, isNaN$1 as isNaN, isQuery, isQueryCollection, isQueryStateCancelled, isQueryStateFailure, isQueryStateLoading, isQueryStatePrepared, isQueryStateSuccess, isRequestError, isSymfonyError, isSymfonyFormViolationListError, isSymfonyPagerfantaOutOfRangeError, mapToPaginated, mergeHeaders, paginatedEntityValueUpdater, parseAllXhrResponseHeaders, pathParamsMissingInRouteFunctionError, provideQueryClientForDevtools, querySignal, queryStateAlreadyHasKeyError, queryStateCannotTransformError, queryStateDoesNotContainKeyError, removeFrom, request, resetPageOnError, serializeBody, shouldCacheQuery, shouldRetryRequest, skipPaginationPageParamCalculator, switchQueryCollectionState, switchQueryState, takeUntilResponse, transformGql, transformMethod, transformToBoolean, transformToBooleanArray, transformToDate, transformToDateArray, transformToNumber, transformToNumberArray, transformToSort, transformToSortQueryParam, transformToString, transformToStringArray };
|
|
2741
2783
|
//# sourceMappingURL=ethlete-query.mjs.map
|