@tstdl/base 0.85.2 → 0.85.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tstdl/base",
3
- "version": "0.85.2",
3
+ "version": "0.85.4",
4
4
  "author": "Patrick Hein",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -33,11 +33,11 @@
33
33
  "@types/mjml": "4.7",
34
34
  "@types/node": "20",
35
35
  "@types/nodemailer": "6.4",
36
- "@typescript-eslint/eslint-plugin": "5.60",
37
- "@typescript-eslint/parser": "5.60",
36
+ "@typescript-eslint/eslint-plugin": "5.61",
37
+ "@typescript-eslint/parser": "5.61",
38
38
  "concurrently": "8.2",
39
39
  "esbuild": "0.18",
40
- "eslint": "8.43",
40
+ "eslint": "8.44",
41
41
  "eslint-import-resolver-typescript": "3.5",
42
42
  "eslint-plugin-import": "2.27",
43
43
  "tsc-alias": "1.8",
package/signals/api.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type * as Types from './implementation/index.js';
2
- export type { CreateComputedOptions, CreateEffectOptions, CreateSignalOptions, EffectRef, Signal, WritableSignal } from './implementation/index.js';
2
+ export type { CreateComputedOptions, CreateEffectOptions, CreateSignalOptions, EffectCleanupRegisterFn, EffectRef, Signal, WritableSignal } from './implementation/index.js';
3
3
  export type SignalsConfiguration = {
4
4
  signal: typeof Types.signal;
5
5
  computed: typeof Types.computed;
@@ -0,0 +1,2 @@
1
+ import type { CreateEffectOptions, EffectCleanupRegisterFn, EffectRef, Signal } from './api.js';
2
+ export declare function effectWithDependencies(effectFn: (onCleanup: EffectCleanupRegisterFn) => void, dependencies: Signal<any>[], options?: CreateEffectOptions): EffectRef;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var effect_with_dependencies_exports = {};
20
+ __export(effect_with_dependencies_exports, {
21
+ effectWithDependencies: () => effectWithDependencies
22
+ });
23
+ module.exports = __toCommonJS(effect_with_dependencies_exports);
24
+ var import_api = require("./api.js");
25
+ function effectWithDependencies(effectFn, dependencies, options) {
26
+ function effectFnWithDependencies(onCleanup) {
27
+ for (let i = 0; i < dependencies.length; i++) {
28
+ dependencies[i]();
29
+ }
30
+ effectFn(onCleanup);
31
+ }
32
+ return (0, import_api.effect)(dependencies.length == 0 ? effectFn : effectFnWithDependencies, options);
33
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './api.js';
2
2
  export * from './computed-with-dependencies.js';
3
+ export * from './effect-with-dependencies.js';
3
4
  export * from './pipe.js';
package/signals/index.js CHANGED
@@ -17,4 +17,5 @@ var signals_exports = {};
17
17
  module.exports = __toCommonJS(signals_exports);
18
18
  __reExport(signals_exports, require("./api.js"), module.exports);
19
19
  __reExport(signals_exports, require("./computed-with-dependencies.js"), module.exports);
20
+ __reExport(signals_exports, require("./effect-with-dependencies.js"), module.exports);
20
21
  __reExport(signals_exports, require("./pipe.js"), module.exports);
package/signals/pipe.d.ts CHANGED
@@ -1,24 +1,30 @@
1
1
  import { type OperatorFunction } from 'rxjs';
2
2
  import type { Signal } from './api.js';
3
- export type SignalPipeOptions = {
4
- /**
5
- * As we need an synchronous value for the resulting signal and effect scheduling is async, use the signals value as the initial value for the pipe.
6
- * This would normally result in double emission inside the pipe, but is mitigated by using {@link SignalPipeOptions.distinctUntilChanged}
7
- * @default true
8
- */
9
- startWithSignalValue?: boolean;
10
- /**
11
- * Whether to distinctUntilChanged source values. This must be disabled if signal mutation is used.
12
- * @default startWithSignalValue
13
- */
14
- distinctUntilChanged?: boolean;
15
- };
16
- export declare function pipe<T, A>(signal: Signal<T>, op1: OperatorFunction<T, A>, options?: SignalPipeOptions): Signal<A>;
17
- export declare function pipe<T, A, B>(signal: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, options?: SignalPipeOptions): Signal<B>;
18
- export declare function pipe<T, A, B, C>(signal: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, options?: SignalPipeOptions): Signal<C>;
19
- export declare function pipe<T, A, B, C, D>(signal: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, options?: SignalPipeOptions): Signal<D>;
20
- export declare function pipe<T, A, B, C, D, E>(signal: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, options?: SignalPipeOptions): Signal<E>;
21
- export declare function pipe<T, A, B, C, D, E, F>(signal: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, options?: SignalPipeOptions): Signal<F>;
22
- export declare function pipe<T, A, B, C, D, E, F, G>(signal: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, options?: SignalPipeOptions): Signal<G>;
23
- export declare function pipe<T, A, B, C, D, E, F, G, H>(signal: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, options?: SignalPipeOptions): Signal<H>;
24
- export declare function pipe<T, A, B, C, D, E, F, G, H, I>(signal: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, options?: SignalPipeOptions): Signal<I>;
3
+ /**
4
+ * As we need an synchronous value for the resulting signal and effect scheduling is async, it uses the source signals value as the initial value for the pipe.
5
+ * This would normally result in double emission inside the pipe, but is mitigated by using {@link SignalPipeOptions.distinctUntilChanged}. Because of this, mutating source signals are not supported.
6
+ * If you have an mutating signal or require more control for whatever reason, use {@link rawPipe} instead.
7
+ */
8
+ export declare function pipe<T, A>(source: Signal<T>, op1: OperatorFunction<T, A>): Signal<A>;
9
+ export declare function pipe<T, A, B>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Signal<B>;
10
+ export declare function pipe<T, A, B, C>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Signal<C>;
11
+ export declare function pipe<T, A, B, C, D>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Signal<D>;
12
+ export declare function pipe<T, A, B, C, D, E>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Signal<E>;
13
+ export declare function pipe<T, A, B, C, D, E, F>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Signal<F>;
14
+ export declare function pipe<T, A, B, C, D, E, F, G>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Signal<G>;
15
+ export declare function pipe<T, A, B, C, D, E, F, G, H>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Signal<H>;
16
+ export declare function pipe<T, A, B, C, D, E, F, G, H, I>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Signal<I>;
17
+ export declare function pipe(source: Signal<unknown>, ...operators: OperatorFunction<unknown, unknown>[]): Signal<unknown>;
18
+ /**
19
+ * As we need an synchronous value for the resulting signal and effect scheduling is async, you have to provide an immediate value on subscription, for example via the {@link startWith} operator, otherwise an error is thrown.
20
+ */
21
+ export declare function rawPipe<T, A>(source: Signal<T>, op1: OperatorFunction<T, A>): Signal<A>;
22
+ export declare function rawPipe<T, A, B>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Signal<B>;
23
+ export declare function rawPipe<T, A, B, C>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Signal<C>;
24
+ export declare function rawPipe<T, A, B, C, D>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Signal<D>;
25
+ export declare function rawPipe<T, A, B, C, D, E>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Signal<E>;
26
+ export declare function rawPipe<T, A, B, C, D, E, F>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Signal<F>;
27
+ export declare function rawPipe<T, A, B, C, D, E, F, G>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Signal<G>;
28
+ export declare function rawPipe<T, A, B, C, D, E, F, G, H>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Signal<H>;
29
+ export declare function rawPipe<T, A, B, C, D, E, F, G, H, I>(source: Signal<T>, op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Signal<I>;
30
+ export declare function rawPipe(source: Signal<unknown>, ...operators: OperatorFunction<unknown, unknown>[]): Signal<unknown>;
package/signals/pipe.js CHANGED
@@ -18,25 +18,16 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var pipe_exports = {};
20
20
  __export(pipe_exports, {
21
- pipe: () => pipe
21
+ pipe: () => pipe,
22
+ rawPipe: () => rawPipe
22
23
  });
23
24
  module.exports = __toCommonJS(pipe_exports);
24
25
  var import_rxjs = require("rxjs");
25
- var import_type_guards = require("../utils/type-guards.js");
26
26
  var import_api = require("./api.js");
27
- function pipe(signal, ...operators) {
28
- const last = operators.at(-1);
29
- const lastIsOperator = (0, import_type_guards.isFunction)(last);
30
- const ops = lastIsOperator ? operators : operators.slice(0, -1);
31
- const { startWithSignalValue = true, distinctUntilChanged: distinct } = (lastIsOperator ? void 0 : last) ?? {};
32
- const optionOperators = [];
33
- if (startWithSignalValue) {
34
- optionOperators.push((0, import_rxjs.startWith)(signal()));
35
- }
36
- if (distinct ?? startWithSignalValue) {
37
- optionOperators.push((0, import_rxjs.distinctUntilChanged)());
38
- }
39
- const observable = (0, import_api.toObservable)(signal);
40
- const piped = observable.pipe(...optionOperators, ...ops);
27
+ function pipe(source, ...operators) {
28
+ return rawPipe(source, (0, import_rxjs.startWith)(source()), (0, import_rxjs.distinctUntilChanged)(), ...operators);
29
+ }
30
+ function rawPipe(source, ...operators) {
31
+ const piped = (0, import_api.toObservable)(source).pipe(...operators);
41
32
  return (0, import_api.toSignal)(piped, { requireSync: true });
42
33
  }