@jscutlery/rx-computed 0.6.3 → 0.6.5
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jscutlery-rx-computed.mjs","sources":["../../../../packages/rx-computed/src/lib/rx-computed.ts","../../../../packages/rx-computed/src/jscutlery-rx-computed.ts"],"sourcesContent":["import {\n assertInInjectionContext,\n computed,\n effect,\n inject,\n Injector,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport { pending, Suspense, suspensify } from '@jscutlery/operators';\nimport { Observable } from 'rxjs';\n\nexport function rxComputed<T, INITIAL_VALUE = T | null | undefined>(\n fn: () => Observable<T>,\n {\n initialValue,\n injector,\n }: { initialValue?: INITIAL_VALUE; injector?: Injector } = {},\n): Signal<T | INITIAL_VALUE> {\n if (!injector) assertInInjectionContext(rxComputed);\n injector ??= inject(Injector);\n\n const sig = signal<Suspense<T | INITIAL_VALUE>>(pending);\n\n effect(\n (onCleanup) => {\n const sub = fn()\n .pipe(suspensify())\n .subscribe((value) => untracked(() => sig.set(value)));\n onCleanup(() => sub.unsubscribe());\n },\n { injector },\n );\n\n return computed(() => {\n const suspense = sig();\n if (suspense.hasError) {\n throw suspense.error;\n }\n\n if (suspense.hasValue) {\n return suspense.value;\n }\n\n return initialValue as INITIAL_VALUE;\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAaM,SAAU,UAAU,CACxB,EAAuB,EACvB,EACE,YAAY,EACZ,QAAQ,GAAA,GACiD,EAAE,EAAA;AAE7D,IAAA,IAAI,CAAC,QAAQ;QAAE,wBAAwB,CAAC,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"jscutlery-rx-computed.mjs","sources":["../../../../packages/rx-computed/src/lib/rx-computed.ts","../../../../packages/rx-computed/src/jscutlery-rx-computed.ts"],"sourcesContent":["import {\n assertInInjectionContext,\n computed,\n effect,\n inject,\n Injector,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport { pending, Suspense, suspensify } from '@jscutlery/operators';\nimport { Observable } from 'rxjs';\n\nexport function rxComputed<T, INITIAL_VALUE = T | null | undefined>(\n fn: () => Observable<T>,\n {\n initialValue,\n injector,\n }: { initialValue?: INITIAL_VALUE; injector?: Injector } = {},\n): Signal<T | INITIAL_VALUE> {\n if (!injector) assertInInjectionContext(rxComputed);\n injector ??= inject(Injector);\n\n const sig = signal<Suspense<T | INITIAL_VALUE>>(pending);\n\n effect(\n (onCleanup) => {\n const sub = fn()\n .pipe(suspensify())\n .subscribe((value) => untracked(() => sig.set(value)));\n onCleanup(() => sub.unsubscribe());\n },\n { injector },\n );\n\n return computed(() => {\n const suspense = sig();\n if (suspense.hasError) {\n throw suspense.error;\n }\n\n if (suspense.hasValue) {\n return suspense.value;\n }\n\n return initialValue as INITIAL_VALUE;\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAaM,SAAU,UAAU,CACxB,EAAuB,EACvB,EACE,YAAY,EACZ,QAAQ,GAAA,GACiD,EAAE,EAAA;AAE7D,IAAA,IAAI,CAAC,QAAQ;QAAE,wBAAwB,CAAC,UAAU,CAAC;AACnD,IAAA,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;AAE7B,IAAA,MAAM,GAAG,GAAG,MAAM,CAA8B,OAAO,CAAC;AAExD,IAAA,MAAM,CACJ,CAAC,SAAS,KAAI;QACZ,MAAM,GAAG,GAAG,EAAE;aACX,IAAI,CAAC,UAAU,EAAE;AACjB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,SAAS,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;AACpC,KAAC,EACD,EAAE,QAAQ,EAAE,CACb;IAED,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,QAAQ,GAAG,GAAG,EAAE;AACtB,QAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACrB,MAAM,QAAQ,CAAC,KAAK;;AAGtB,QAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACrB,OAAO,QAAQ,CAAC,KAAK;;AAGvB,QAAA,OAAO,YAA6B;AACtC,KAAC,CAAC;AACJ;;AC/CA;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jscutlery/rx-computed",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.5",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": ">=16.0.0 <20.0.0",
|
|
6
6
|
"@jscutlery/operators": "^2.0.0"
|
|
@@ -17,8 +17,6 @@
|
|
|
17
17
|
},
|
|
18
18
|
".": {
|
|
19
19
|
"types": "./index.d.ts",
|
|
20
|
-
"esm2022": "./esm2022/jscutlery-rx-computed.mjs",
|
|
21
|
-
"esm": "./esm2022/jscutlery-rx-computed.mjs",
|
|
22
20
|
"default": "./fesm2022/jscutlery-rx-computed.mjs"
|
|
23
21
|
}
|
|
24
22
|
}
|
package/esm2022/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { rxComputed } from './lib/rx-computed';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9yeC1jb21wdXRlZC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcnhDb21wdXRlZCB9IGZyb20gJy4vbGliL3J4LWNvbXB1dGVkJzsiXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNjdXRsZXJ5LXJ4LWNvbXB1dGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcngtY29tcHV0ZWQvc3JjL2pzY3V0bGVyeS1yeC1jb21wdXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { assertInInjectionContext, computed, effect, inject, Injector, signal, untracked, } from '@angular/core';
|
|
2
|
-
import { pending, suspensify } from '@jscutlery/operators';
|
|
3
|
-
export function rxComputed(fn, { initialValue, injector, } = {}) {
|
|
4
|
-
if (!injector)
|
|
5
|
-
assertInInjectionContext(rxComputed);
|
|
6
|
-
injector ??= inject(Injector);
|
|
7
|
-
const sig = signal(pending);
|
|
8
|
-
effect((onCleanup) => {
|
|
9
|
-
const sub = fn()
|
|
10
|
-
.pipe(suspensify())
|
|
11
|
-
.subscribe((value) => untracked(() => sig.set(value)));
|
|
12
|
-
onCleanup(() => sub.unsubscribe());
|
|
13
|
-
}, { injector });
|
|
14
|
-
return computed(() => {
|
|
15
|
-
const suspense = sig();
|
|
16
|
-
if (suspense.hasError) {
|
|
17
|
-
throw suspense.error;
|
|
18
|
-
}
|
|
19
|
-
if (suspense.hasValue) {
|
|
20
|
-
return suspense.value;
|
|
21
|
-
}
|
|
22
|
-
return initialValue;
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9yeC1jb21wdXRlZC9zcmMvbGliL3J4LWNvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBWSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUdyRSxNQUFNLFVBQVUsVUFBVSxDQUN4QixFQUF1QixFQUN2QixFQUNFLFlBQVksRUFDWixRQUFRLE1BQ2lELEVBQUU7SUFFN0QsSUFBSSxDQUFDLFFBQVE7UUFBRSx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxRQUFRLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBOEIsT0FBTyxDQUFDLENBQUM7SUFFekQsTUFBTSxDQUNKLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDWixNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUU7YUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbEIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsRUFDRCxFQUFFLFFBQVEsRUFBRSxDQUNiLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sWUFBNkIsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIHNpZ25hbCxcbiAgU2lnbmFsLFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGVuZGluZywgU3VzcGVuc2UsIHN1c3BlbnNpZnkgfSBmcm9tICdAanNjdXRsZXJ5L29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByeENvbXB1dGVkPFQsIElOSVRJQUxfVkFMVUUgPSBUIHwgbnVsbCB8IHVuZGVmaW5lZD4oXG4gIGZuOiAoKSA9PiBPYnNlcnZhYmxlPFQ+LFxuICB7XG4gICAgaW5pdGlhbFZhbHVlLFxuICAgIGluamVjdG9yLFxuICB9OiB7IGluaXRpYWxWYWx1ZT86IElOSVRJQUxfVkFMVUU7IGluamVjdG9yPzogSW5qZWN0b3IgfSA9IHt9LFxuKTogU2lnbmFsPFQgfCBJTklUSUFMX1ZBTFVFPiB7XG4gIGlmICghaW5qZWN0b3IpIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChyeENvbXB1dGVkKTtcbiAgaW5qZWN0b3IgPz89IGluamVjdChJbmplY3Rvcik7XG5cbiAgY29uc3Qgc2lnID0gc2lnbmFsPFN1c3BlbnNlPFQgfCBJTklUSUFMX1ZBTFVFPj4ocGVuZGluZyk7XG5cbiAgZWZmZWN0KFxuICAgIChvbkNsZWFudXApID0+IHtcbiAgICAgIGNvbnN0IHN1YiA9IGZuKClcbiAgICAgICAgLnBpcGUoc3VzcGVuc2lmeSgpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdW50cmFja2VkKCgpID0+IHNpZy5zZXQodmFsdWUpKSk7XG4gICAgICBvbkNsZWFudXAoKCkgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIH0sXG4gICAgeyBpbmplY3RvciB9LFxuICApO1xuXG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3VzcGVuc2UgPSBzaWcoKTtcbiAgICBpZiAoc3VzcGVuc2UuaGFzRXJyb3IpIHtcbiAgICAgIHRocm93IHN1c3BlbnNlLmVycm9yO1xuICAgIH1cblxuICAgIGlmIChzdXNwZW5zZS5oYXNWYWx1ZSkge1xuICAgICAgcmV0dXJuIHN1c3BlbnNlLnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBpbml0aWFsVmFsdWUgYXMgSU5JVElBTF9WQUxVRTtcbiAgfSk7XG59XG4iXX0=
|