Socket
Socket
Sign inDemoInstall

@furystack/utils

Package Overview
Dependencies
Maintainers
0
Versions
117
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@furystack/utils - npm Package Compare versions

Comparing version 7.0.2 to 8.0.0

esm/is-async-disposable.d.ts

2

esm/deep-merge.spec.js

@@ -1,2 +0,2 @@

import { describe, it, expect } from 'vitest';
import { describe, expect, it } from 'vitest';
import { deepMerge } from './deep-merge.js';

@@ -3,0 +3,0 @@ describe('DeepMerge tests', () => {

@@ -1,2 +0,1 @@

import type { Disposable } from './disposable.js';
type ListenerFunction<EventTypeMap extends Object, T extends keyof EventTypeMap> = (arg: EventTypeMap[T]) => void;

@@ -9,5 +8,5 @@ export declare class EventHub<EventTypeMap extends Object> implements Disposable {

emit<TEvent extends keyof EventTypeMap>(event: TEvent, arg: EventTypeMap[TEvent]): void;
dispose(): void;
[Symbol.dispose](): void;
}
export {};
//# sourceMappingURL=event-hub.d.ts.map

@@ -16,3 +16,3 @@ export class EventHub {

this.addListener(event, listener);
return { dispose: () => this.removeListener(event, listener) };
return { [Symbol.dispose]: () => this.removeListener(event, listener) };
}

@@ -24,3 +24,3 @@ emit(event, arg) {

}
dispose() {
[Symbol.dispose]() {
this.listeners.clear();

@@ -27,0 +27,0 @@ }

@@ -0,3 +1,3 @@

import { describe, expect, it, vi } from 'vitest';
import { EventHub } from './event-hub.js';
import { describe, expect, it, vi } from 'vitest';
describe('EventHub', () => {

@@ -54,3 +54,3 @@ it('Should fail on type errors', () => {

});
it('Should add and remove a listener with subscription', () => {
it('Should add and remove a listener with subscription', async () => {
const eventHub = new EventHub();

@@ -61,3 +61,3 @@ const numberListener = vi.fn((_val) => { });

expect(numberListener).toBeCalledWith(1);
subscription.dispose();
subscription[Symbol.dispose]();
eventHub.emit('ExampleNumberEvent', 2);

@@ -70,3 +70,3 @@ expect(numberListener).toBeCalledTimes(1);

hub.addListener('test', listener);
hub.dispose();
hub[Symbol.dispose]();
hub.emit('test', 'test');

@@ -73,0 +73,0 @@ expect(listener).not.toBeCalled();

@@ -1,12 +0,14 @@

export * from './disposable.js';
export * from './debounce.js';
export * from './deep-merge.js';
export * from './debounce.js';
export * from './event-hub.js';
export * from './is-async-disposable.js';
export * from './is-disposable.js';
export * from './observable-value.js';
export * from './value-observer.js';
export * from './path-helper.js';
export * from './sleep-async.js';
export * from './sort-by.js';
export * from './trace.js';
export * from './tuple.js';
export * from './using-async.js';
export * from './using.js';
export * from './value-observer.js';
//# sourceMappingURL=index.d.ts.map

@@ -1,12 +0,14 @@

export * from './disposable.js';
export * from './debounce.js';
export * from './deep-merge.js';
export * from './debounce.js';
export * from './event-hub.js';
export * from './is-async-disposable.js';
export * from './is-disposable.js';
export * from './observable-value.js';
export * from './value-observer.js';
export * from './path-helper.js';
export * from './sleep-async.js';
export * from './sort-by.js';
export * from './trace.js';
export * from './tuple.js';
export * from './using-async.js';
export * from './using.js';
export * from './value-observer.js';
//# sourceMappingURL=index.js.map

@@ -1,2 +0,1 @@

import type { Disposable } from './disposable.js';
import type { ValueObserverOptions } from './value-observer.js';

@@ -37,5 +36,5 @@ import { ValueObserver } from './value-observer.js';

* // if you want to dispose a single observer
* observer.dispose();
* observer[Symbol.dispose]();
* // if you want to dispose the whole observableValue with all of its observers:
* observableValue.dispose();
* observableValue[Symbol.dispose]();
* ```

@@ -50,3 +49,3 @@ * @param T Generic argument to indicate the value type

*/
dispose(): void;
[Symbol.dispose](): void;
private observers;

@@ -81,3 +80,3 @@ private currentValue;

*/
getObservers(): readonly ValueObserver<T>[];
getObservers(): ReadonlyArray<ValueObserver<T>>;
private readonly options;

@@ -84,0 +83,0 @@ /**

@@ -25,5 +25,5 @@ import { ValueObserver } from './value-observer.js';

* // if you want to dispose a single observer
* observer.dispose();
* observer[Symbol.dispose]();
* // if you want to dispose the whole observableValue with all of its observers:
* observableValue.dispose();
* observableValue[Symbol.dispose]();
* ```

@@ -40,3 +40,3 @@ * @param T Generic argument to indicate the value type

*/
dispose() {
[Symbol.dispose]() {
this.observers.clear();

@@ -43,0 +43,0 @@ this._isDisposed = true;

@@ -1,2 +0,2 @@

import { describe, it, expect, vi } from 'vitest';
import { describe, expect, it, vi } from 'vitest';
import { ObservableValue } from './observable-value.js';

@@ -65,4 +65,5 @@ /**

expect(v.getObservers().length).toBe(2);
v.dispose();
v[Symbol.dispose]();
expect(v.getObservers().length).toBe(0);
expect(v.isDisposed).toBe(true);
});

@@ -76,3 +77,3 @@ it('should remove the subscription on Observer dispose', () => {

expect(v.getObservers().length).toBe(1);
observer.dispose();
observer[Symbol.dispose]();
expect(v.getObservers().length).toBe(0);

@@ -82,3 +83,3 @@ });

const v = new ObservableValue(1);
v.dispose();
v[Symbol.dispose]();
expect(() => v.setValue(3)).toThrowError('Observable already disposed');

@@ -88,3 +89,3 @@ });

const v = new ObservableValue(1);
v.dispose();
v[Symbol.dispose]();
expect(() => v.getValue()).toThrowError('Observable already disposed');

@@ -94,3 +95,3 @@ });

const v = new ObservableValue(1);
v.dispose();
v[Symbol.dispose]();
expect(() => v.subscribe(() => {

@@ -108,6 +109,6 @@ /** */

const v = new ObservableValue(1);
const observer = v.subscribe(new Alma().Callback);
v.subscribe(new Alma().Callback);
const observer = v.subscribe(() => new Alma().Callback());
v.subscribe(() => new Alma().Callback());
expect(v.getObservers().length).toBe(2);
observer.dispose();
observer[Symbol.dispose]();
expect(v.getObservers().length).toBe(1);

@@ -114,0 +115,0 @@ v.setValue(3);

@@ -36,3 +36,3 @@ /**

static joinPaths(...args) {
return args.map(this.trimSlashes).join('/');
return args.map((path) => this.trimSlashes(path)).join('/');
}

@@ -39,0 +39,0 @@ /**

@@ -1,2 +0,2 @@

import { describe, it, expect } from 'vitest';
import { describe, expect, it } from 'vitest';
import { PathHelper } from './path-helper.js';

@@ -59,3 +59,11 @@ /**

});
describe('#normalize()', () => {
it('Should normalize the path', () => {
expect(PathHelper.normalize('Root/Example/Content')).toBe('Root/Example/Content');
expect(PathHelper.normalize('/Root/Example/Content')).toBe('Root/Example/Content');
expect(PathHelper.normalize('Root/Example/Content/')).toBe('Root/Example/Content');
expect(PathHelper.normalize('/Root/Example/Content/')).toBe('Root/Example/Content');
});
});
});
//# sourceMappingURL=path-helper.spec.js.map

@@ -12,3 +12,3 @@ declare global {

}
export declare const compareBy: <T, K extends keyof T>(entity1: T, entity2: T, field: K, direction: 'asc' | 'desc') => 1 | 0 | -1;
export declare const compareBy: <T, K extends keyof T>(entity1: T, entity2: T, field: K, direction: "asc" | "desc") => 1 | 0 | -1;
//# sourceMappingURL=sort-by.d.ts.map

@@ -1,2 +0,1 @@

import type { Disposable } from './disposable.js';
import type { ObservableValue, ValueChangeCallback } from './observable-value.js';

@@ -22,5 +21,5 @@ export type ValueObserverOptions<T> = {

* // if you want to dispose a single observer
* observer.dispose();
* observer[Symbol.dispose]();
* // if you want to dispose the whole observableValue with all of its observers:
* observableValue.dispose();
* observableValue[Symbol.dispose]();
* ```

@@ -36,3 +35,3 @@ * @param T This type parameter is the value type to observe

*/
dispose(): void;
[Symbol.dispose](): void;
/**

@@ -39,0 +38,0 @@ * @constructs ValueObserver<T> the ValueObserver instance

@@ -17,5 +17,5 @@ /**

* // if you want to dispose a single observer
* observer.dispose();
* observer[Symbol.dispose]();
* // if you want to dispose the whole observableValue with all of its observers:
* observableValue.dispose();
* observableValue[Symbol.dispose]();
* ```

@@ -31,3 +31,3 @@ * @param T This type parameter is the value type to observe

*/
dispose() {
[Symbol.dispose]() {
this.observable.unsubscribe(this);

@@ -34,0 +34,0 @@ }

{
"name": "@furystack/utils",
"version": "7.0.2",
"version": "8.0.0",
"description": "General utilities",

@@ -37,5 +37,5 @@ "type": "module",

"devDependencies": {
"typescript": "^5.4.5",
"vitest": "^1.6.0"
"typescript": "^5.5.3",
"vitest": "^2.0.0"
}
}

@@ -41,5 +41,5 @@ # @furystack/utils

// if you want to dispose a single observer
observer.dispose()
observer[Symbol.dispose]()
// if you want to dispose the whole observableValue with all of its observers:
observableValue.dispose()
observableValue[Symbol.dispose]()
```

@@ -93,3 +93,3 @@

// if you want to stop receiving events
methodTracer.dispose()
methodTracer[Symbol.dispose]()
```

@@ -1,2 +0,2 @@

import { describe, it, expect } from 'vitest'
import { describe, expect, it } from 'vitest'
import { deepMerge } from './deep-merge.js'

@@ -15,3 +15,3 @@

it('Should skip falsy sources', () => {
expect(deepMerge({ a: 1, b: 0, c: 0 }, null as any, { b: 2 }, { c: 3 })).toEqual({ a: 1, b: 2, c: 3 })
expect(deepMerge({ a: 1, b: 0, c: 0 }, null as any as {}, { b: 2 }, { c: 3 })).toEqual({ a: 1, b: 2, c: 3 })
})

@@ -18,0 +18,0 @@

@@ -0,3 +1,3 @@

import { describe, expect, it, vi } from 'vitest'
import { EventHub } from './event-hub.js'
import { describe, expect, it, vi } from 'vitest'

@@ -77,3 +77,3 @@ describe('EventHub', () => {

it('Should add and remove a listener with subscription', () => {
it('Should add and remove a listener with subscription', async () => {
const eventHub = new EventHub<{ ExampleNumberEvent: number }>()

@@ -86,3 +86,3 @@ const numberListener = vi.fn((_val: number) => {})

expect(numberListener).toBeCalledWith(1)
subscription.dispose()
subscription[Symbol.dispose]()
eventHub.emit('ExampleNumberEvent', 2)

@@ -98,3 +98,3 @@ expect(numberListener).toBeCalledTimes(1)

hub.addListener('test', listener)
hub.dispose()
hub[Symbol.dispose]()
hub.emit('test', 'test')

@@ -101,0 +101,0 @@ expect(listener).not.toBeCalled()

@@ -1,3 +0,1 @@

import type { Disposable } from './disposable.js'
type ListenerFunction<EventTypeMap extends Object, T extends keyof EventTypeMap> = (arg: EventTypeMap[T]) => void

@@ -32,3 +30,3 @@

this.addListener(event, listener)
return { dispose: () => this.removeListener(event, listener) }
return { [Symbol.dispose]: () => this.removeListener(event, listener) }
}

@@ -42,5 +40,5 @@

public dispose() {
public [Symbol.dispose]() {
this.listeners.clear()
}
}

@@ -1,11 +0,13 @@

export * from './disposable.js'
export * from './debounce.js'
export * from './deep-merge.js'
export * from './debounce.js'
export * from './event-hub.js'
export * from './is-async-disposable.js'
export * from './is-disposable.js'
export * from './observable-value.js'
export * from './value-observer.js'
export * from './path-helper.js'
export * from './sleep-async.js'
export * from './sort-by.js'
export * from './trace.js'
export * from './tuple.js'
export * from './using-async.js'
export * from './using.js'
export * from './value-observer.js'

@@ -1,2 +0,2 @@

import { describe, it, expect, vi } from 'vitest'
import { describe, expect, it, vi } from 'vitest'
import { ObservableValue } from './observable-value.js'

@@ -77,4 +77,6 @@

expect(v.getObservers().length).toBe(2)
v.dispose()
v[Symbol.dispose]()
expect(v.getObservers().length).toBe(0)
expect(v.isDisposed).toBe(true)
})

@@ -89,3 +91,3 @@

expect(v.getObservers().length).toBe(1)
observer.dispose()
observer[Symbol.dispose]()
expect(v.getObservers().length).toBe(0)

@@ -96,3 +98,3 @@ })

const v = new ObservableValue(1)
v.dispose()
v[Symbol.dispose]()
expect(() => v.setValue(3)).toThrowError('Observable already disposed')

@@ -103,3 +105,3 @@ })

const v = new ObservableValue(1)
v.dispose()
v[Symbol.dispose]()
expect(() => v.getValue()).toThrowError('Observable already disposed')

@@ -110,3 +112,3 @@ })

const v = new ObservableValue(1)
v.dispose()
v[Symbol.dispose]()
expect(() =>

@@ -128,6 +130,6 @@ v.subscribe(() => {

const v = new ObservableValue(1)
const observer = v.subscribe(new Alma().Callback)
v.subscribe(new Alma().Callback)
const observer = v.subscribe(() => new Alma().Callback())
v.subscribe(() => new Alma().Callback())
expect(v.getObservers().length).toBe(2)
observer.dispose()
observer[Symbol.dispose]()
expect(v.getObservers().length).toBe(1)

@@ -134,0 +136,0 @@ v.setValue(3)

@@ -1,2 +0,1 @@

import type { Disposable } from './disposable.js'
import type { ValueObserverOptions } from './value-observer.js'

@@ -45,5 +44,5 @@ import { ValueObserver } from './value-observer.js'

* // if you want to dispose a single observer
* observer.dispose();
* observer[Symbol.dispose]();
* // if you want to dispose the whole observableValue with all of its observers:
* observableValue.dispose();
* observableValue[Symbol.dispose]();
* ```

@@ -62,3 +61,3 @@ * @param T Generic argument to indicate the value type

*/
public dispose() {
public [Symbol.dispose]() {
this.observers.clear()

@@ -65,0 +64,0 @@ this._isDisposed = true

@@ -1,2 +0,2 @@

import { describe, it, expect } from 'vitest'
import { describe, expect, it } from 'vitest'
import { PathHelper } from './path-helper.js'

@@ -72,2 +72,11 @@

})
describe('#normalize()', () => {
it('Should normalize the path', () => {
expect(PathHelper.normalize('Root/Example/Content')).toBe('Root/Example/Content')
expect(PathHelper.normalize('/Root/Example/Content')).toBe('Root/Example/Content')
expect(PathHelper.normalize('Root/Example/Content/')).toBe('Root/Example/Content')
expect(PathHelper.normalize('/Root/Example/Content/')).toBe('Root/Example/Content')
})
})
})

@@ -38,3 +38,3 @@ /**

public static joinPaths(...args: string[]) {
return args.map(this.trimSlashes).join('/')
return args.map((path) => this.trimSlashes(path)).join('/')
}

@@ -41,0 +41,0 @@

@@ -1,2 +0,1 @@

import type { Disposable } from './disposable.js'
import type { ObservableValue, ValueChangeCallback } from './observable-value.js'

@@ -24,5 +23,5 @@

* // if you want to dispose a single observer
* observer.dispose();
* observer[Symbol.dispose]();
* // if you want to dispose the whole observableValue with all of its observers:
* observableValue.dispose();
* observableValue[Symbol.dispose]();
* ```

@@ -35,3 +34,3 @@ * @param T This type parameter is the value type to observe

*/
public dispose() {
public [Symbol.dispose]() {
this.observable.unsubscribe(this)

@@ -38,0 +37,0 @@ }

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

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

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

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

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

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

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc