New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

async-signals

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

async-signals - npm Package Compare versions

Comparing version 0.1.9 to 0.1.10

1

dist/pipe.d.ts

@@ -37,2 +37,1 @@ import { Signal } from "signal-polyfill";

export declare function pipe<T, U, V, W, X, Y>(signal: PipeInput<T>, fn1: (arg: T) => PipeStep<U>, fn2: (arg: U, prevArg: T) => PipeStep<V>, fn3: (arg: V, prevArg0: U, prevArg1: T) => PipeStep<W>, fn4: (arg: W, prevArg0: V, prevArg1: U, prevArg2: T) => PipeStep<X>, fn5: (arg: X, prevArg0: W, prevArg1: V, prevArg2: U, prevArg3: T) => PipeStep<Y>): AsyncSignal<Y>;
export declare function pipe<T, U, V, W, X, Y, Z>(signal: PipeInput<T>, fn1: (arg: T) => PipeStep<U>, fn2: (arg: U, prevArg: T) => PipeStep<V>, fn3: (arg: V, prevArg0: U, prevArg1: T) => PipeStep<W>, fn4: (arg: W, prevArg0: V, prevArg1: U, prevArg2: T) => PipeStep<X>, fn5: (arg: X, prevArg0: W, prevArg1: V, prevArg2: U, prevArg3: T) => PipeStep<Y>, fn6: (arg: Y, prevArg0: X, prevArg1: W, prevArg2: V, prevArg3: U, prevArg4: T) => PipeStep<Z>): AsyncSignal<Z>;

5

dist/pipe.js

@@ -45,3 +45,6 @@ import { Signal } from "signal-polyfill";

const result = stepResult.get();
if (!!result && result.get) {
// TODO: improve check of whether this result is a signal or not
if (!!result &&
result.get &&
!result.has) {
const value = result.get();

@@ -48,0 +51,0 @@ if (!!value && value.status) {

@@ -74,18 +74,10 @@ import { Signal } from "signal-polyfill";

[Signal.subtle.watched]: () => {
try {
task()
.then((value) => {
signal.set({
status: "completed",
value,
});
})
.catch((error) => {
signal.set({
status: "error",
error,
});
task()
.then((value) => {
signal.set({
status: "completed",
value,
});
}
catch (error) {
})
.catch((error) => {
signal.set({

@@ -95,3 +87,3 @@ status: "error",

});
}
});
},

@@ -98,0 +90,0 @@ [Signal.subtle.unwatched]: () => {

{
"name": "async-signals",
"version": "0.1.9",
"version": "0.1.10",
"description": "Synthatic sugar and utilities to support async tasks on top of signal-polyfill",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -6,5 +6,3 @@ import { Signal } from "signal-polyfill";

export type AnySignal<T> = Signal.State<T> | Signal.Computed<T>;
export type PipeInput<T> = AsyncSignal<T> | AnySignal<T>;
export type PipeStep<T> =

@@ -17,8 +15,8 @@ | AsyncSignal<T>

function isPromise(p: unknown): boolean {
function isPromise(p) {
return (
p != undefined &&
typeof p === "object" &&
"then" in (p as any) &&
typeof (p as any).then === "function"
"then" in p &&
typeof p.then === "function"
);

@@ -29,3 +27,3 @@ }

signal: AsyncSignal<T>,
stepFn: (arg: T, ...args: any[]) => PipeStep<U>,
stepFn: (arg: T, ...previousValue: any[]) => PipeStep<U>,
previoussignals: Array<AsyncSignal<any>>,

@@ -36,9 +34,6 @@ ): AsyncSignal<U> {

let value = values[0];
if (!!value && (value as AsyncResult<any>).status) {
if ((value as AsyncResult<any>).status === "error")
return value as AsyncResult<U>;
else if ((value as AsyncResult<any>).status === "pending")
return value as AsyncResult<U>;
else value = (value as any).value;
if (!!value && value.status) {
if (value.status === "error") return value;
else if (value.status === "pending") return value;
else value = value.value;
}

@@ -53,3 +48,2 @@ try {

);
return v;

@@ -63,4 +57,3 @@ } catch (e) {

});
let cachedSignal: AsyncSignal<U> | undefined;
let cachedSignal;
const c = new AsyncComputed(() => {

@@ -74,9 +67,13 @@ const v = signal.get();

const result = stepResult.get();
if (!!result && (result as AsyncSignal<any>).get) {
const value = (result as AsyncSignal<any>).get();
// TODO: improve check of whether this result is a signal or not
if (
!!result &&
(result as AnySignal<any>).get &&
!(result as Map<any, any>).has
) {
const value = (result as AnySignal<U>).get();
if (!!value && (value as AsyncResult<U>).status) {
return value;
} else {
return { status: "completed", value } as AsyncResult<U>;
return { status: "completed", value };
}

@@ -88,6 +85,6 @@ } else if (isPromise(result)) {

return cachedSignal.get();
} else if (!!result && (result as AsyncResult<any>).status) {
return result as AsyncResult<U>;
} else if (!!result && (result as AsyncResult<U>).status) {
return result;
} else {
return { status: "completed", value: result as U } as AsyncResult<U>;
return { status: "completed", value: result };
}

@@ -162,6 +159,6 @@ });

fn1: (arg: T) => PipeStep<U>,
fn2: (arg: U, prevArg: T) => PipeStep<V>,
fn3: (arg: V, prevArg0: U, prevArg1: T) => PipeStep<W>,
fn4: (arg: W, prevArg0: V, prevArg1: U, prevArg2: T) => PipeStep<X>,
fn5: (
fn2?: (arg: U, prevArg: T) => PipeStep<V>,
fn3?: (arg: V, prevArg0: U, prevArg1: T) => PipeStep<W>,
fn4?: (arg: W, prevArg0: V, prevArg1: U, prevArg2: T) => PipeStep<X>,
fn5?: (
arg: X,

@@ -173,3 +170,3 @@ prevArg0: W,

) => PipeStep<Y>,
fn6: (
fn6?: (
arg: Y,

@@ -182,49 +179,21 @@ prevArg0: X,

) => PipeStep<Z>,
): AsyncSignal<Z>;
export function pipe<T, U, V, W, X, Y, Z>(
signal: AnySignal<T>,
fn1: (arg: T) => PipeInput<U>,
fn2?: (arg: U, prevArg: T) => PipeInput<V>,
fn3?: (arg: V, prevArg0: U, prevArg1: T) => PipeInput<W>,
fn4?: (arg: W, prevArg0: V, prevArg1: U, prevArg2: T) => PipeInput<X>,
fn5?: (
arg: X,
prevArg0: W,
prevArg1: V,
prevArg2: U,
prevArg3: T,
) => PipeInput<Y>,
fn6?: (
arg: Y,
prevArg0: X,
prevArg1: W,
prevArg2: V,
prevArg3: U,
prevArg4: T,
) => PipeInput<Z>,
): AsyncSignal<Z> {
let firstSignal: AsyncSignal<T> = signal as any;
const value = firstSignal.get();
if (!value || !(typeof value === "object" && "status" in (value as any))) {
if (!value || !(typeof value === "object" && "status" in value)) {
firstSignal = new AsyncComputed(() => {
const v = signal.get();
const v = signal.get() as T;
return {
status: "completed",
value: v as T,
value: v,
};
});
}
const s1: AsyncSignal<U> = pipeStep(firstSignal, fn1, []);
const s1 = pipeStep(firstSignal, fn1, []);
if (!fn2) return s1 as any;
const s2 = pipeStep(s1, fn2, [firstSignal]);
if (!fn3) return s2 as any;
const s3 = pipeStep(s2, fn3, [firstSignal, s1]);
if (!fn4) return s3 as any;
const s4 = pipeStep(s3, fn4, [firstSignal, s1, s2]);
if (!fn5) return s4 as any;

@@ -234,4 +203,3 @@ const s5 = pipeStep(s4, fn5, [firstSignal, s1, s2, s3]);

const s6 = pipeStep(s5, fn6, [firstSignal, s1, s2, s3, s4]);
return s6;
return s6 as any;
}

@@ -80,22 +80,15 @@ import { Signal } from "signal-polyfill";

[Signal.subtle.watched]: () => {
try {
task()
.then((value) => {
signal.set({
status: "completed",
value,
});
})
.catch((error) => {
signal.set({
status: "error",
error,
});
task()
.then((value) => {
signal.set({
status: "completed",
value,
});
} catch (error) {
signal.set({
status: "error",
error,
})
.catch((error) => {
signal.set({
status: "error",
error,
});
});
}
},

@@ -102,0 +95,0 @@ [Signal.subtle.unwatched]: () => {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc