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

awai

Package Overview
Dependencies
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

awai - npm Package Compare versions

Comparing version 0.0.1-alpha-7 to 0.0.1-alpha-8

47

dist/index.d.ts

@@ -51,2 +51,17 @@ type Resolver<T> = (payload: T) => any;

interface ReadableState<T> {
events: {
changed: AwaitableEvent<T>;
};
get: () => T;
then: (resolver: Resolver<T>) => Promise<T>;
}
type FamilyState<T, Family extends Record<Id, T>, Id extends string = string> = ReadableState<Family> & {
events: {
changed: AwaitableEvent<Family>;
};
getNode: (id: Id) => T;
};
interface ReadableAsyncState<T> {

@@ -66,21 +81,6 @@ events: {

interface ReadableState<T> {
events: {
changed: AwaitableEvent<T>;
};
get: () => T;
then: (resolver: Resolver<T>) => Promise<T>;
}
type InferReadableType<T> = T extends ReadableAsyncState<infer U> ? U : T extends ReadableState<infer Q> ? Q : unknown;
type Key = string;
type FamilyState<T extends ReadableState<any> | ReadableAsyncState<any>> = ReadableState<Record<string, T>> & {
events: {
set: AwaitableEvent<T>;
};
getNode: (id: Key) => T;
set: (id: Key, value: T) => void;
};
type Setter<T> = (nextValueOrResolver: T | ((current: T) => T)) => Promise<T>;
type InferReadableType<T> = T extends ReadableAsyncState<infer U> ? U : T extends ReadableState<infer Q> ? Q : unknown;
interface WritableAsyncState<T> {

@@ -96,4 +96,2 @@ events: {

type Setter<T> = (nextValueOrResolver: T | ((current: T) => T)) => Promise<T>;
interface WritableState<T> {

@@ -112,4 +110,9 @@ events: {

declare const familyState: <T extends ReadableState<any> | ReadableAsyncState<any>>() => FamilyState<T>;
type State<T> = ReadableState<T> & WritableState<T>;
declare const state: <T>(initialValue: T) => State<T>;
type Id$1 = string;
declare const familyState: <T, Initializer extends (id: Id$1) => T | Promise<T>, NodeType extends ReturnType<Initializer> extends PromiseLike<T> ? AsyncState<T> : State<T>, Family extends Record<string, NodeType>>(initializer: Initializer) => FamilyState<NodeType, Family>;
declare const scenario: (scenarioFn: () => Promise<any>) => Promise<never>;

@@ -128,6 +131,2 @@

type State<T> = ReadableState<T> & WritableState<T>;
declare const state: <T>(initialValue: T) => State<T>;
export { AsyncSetter, AsyncState, AsyncStatus, AsyncValue, AwaitableEvent, FamilyState, InferReadableType, ReadableAsyncState, ReadableState, Setter, State, WritableAsyncState, WritableState, action, asyncState, delay, familyState, fork, isReadableAsyncState, rejectAfter, scenario, scenarioOnEvery, scenarioOnce, selector, state };

@@ -159,2 +159,19 @@ 'use strict';

const scenario = async (scenarioFn) => {
while (true) {
await scenarioFn().catch(() => void 0);
}
};
const scenarioOnEvery = async (awaitableEvent, scenarioFn) => {
while (true) {
const event = await awaitableEvent;
scenarioFn(event).catch(noop);
}
};
const scenarioOnce = (scenarioFn) => {
scenarioFn().catch(noop);
};
const state = (initialValue) => {

@@ -186,50 +203,30 @@ let value = initialValue;

const familyState = () => {
const familyState = (initializer) => {
const family = state({});
let mounted = true;
const events = {
changed: new AwaitableEvent(),
set: new AwaitableEvent()
changed: new AwaitableEvent()
};
const getNode = (id) => {
if (id in family.get()) {
return family.get()[id];
}
const initialValue = initializer(id);
const nodeState = initialValue instanceof Promise ? asyncState(initialValue) : state(initialValue);
family.set((current) => ({ ...current, [id]: nodeState }));
events.changed.emit(family.get());
scenarioOnEvery(nodeState.events.changed, async () => {
events.changed.emit(family.get());
});
return nodeState;
};
const get = () => {
return family.get();
};
const getNode = (id) => family.get()[id];
const set = (id, stateNode) => {
family.set((current) => ({ ...current, [id]: stateNode }));
events.set.emit(stateNode);
};
const then = async (resolve) => {
const result = await resolve(get());
const result = await resolve(family.get());
return result;
};
(async () => {
while (mounted) {
await Promise.race([
events.set,
...Object.values(family.get()).map((stateNode) => stateNode.events.changed)
]);
events.changed.emit(family.get());
}
})();
return { events, get, getNode, set, then };
return { events, get, getNode, then };
};
const scenario = async (scenarioFn) => {
while (true) {
await scenarioFn().catch(() => void 0);
}
};
const scenarioOnEvery = async (awaitableEvent, scenarioFn) => {
while (true) {
const event = await awaitableEvent;
scenarioFn(event).catch(noop);
}
};
const scenarioOnce = (scenarioFn) => {
scenarioFn().catch(noop);
};
const getCommonStatus = (states) => {

@@ -236,0 +233,0 @@ const asyncStates = states.filter(isReadableAsyncState);

{
"name": "awai",
"version": "0.0.1-alpha-7",
"version": "0.0.1-alpha-8",
"author": "Yuriy Yakym",

@@ -5,0 +5,0 @@ "description": "State management library",

Sorry, the diff of this file is not supported yet

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