@naturalcycles/js-lib 15.55.0 → 15.56.0
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/dist/browser/topbar.js +1 -1
- package/dist/decorators/asyncMemo.decorator.js +1 -1
- package/dist/decorators/swarmSafe.decorator.js +1 -1
- package/dist/http/fetcher.js +2 -1
- package/dist/object/object.util.d.ts +10 -1
- package/dist/object/object.util.js +13 -0
- package/dist/promise/pDefer.js +1 -1
- package/dist/promise/pDelay.js +1 -1
- package/dist/string/lodash/unicodeWords.js +1 -1
- package/dist/types.js +0 -1
- package/package.json +1 -1
- package/src/browser/topbar.ts +1 -1
- package/src/decorators/asyncMemo.decorator.ts +1 -1
- package/src/decorators/swarmSafe.decorator.ts +1 -1
- package/src/http/fetcher.ts +2 -1
- package/src/object/object.util.ts +15 -0
- package/src/promise/pDefer.ts +1 -1
- package/src/promise/pDelay.ts +1 -1
- package/src/string/lodash/unicodeWords.ts +1 -1
- package/src/types.ts +3 -3
package/dist/browser/topbar.js
CHANGED
|
@@ -24,7 +24,7 @@ export const _AsyncMemo = (opt) => (target, key, descriptor) => {
|
|
|
24
24
|
const { logger = console, cacheFactory, cacheKeyFn = jsonMemoSerializer } = opt;
|
|
25
25
|
const keyStr = String(key);
|
|
26
26
|
const methodSignature = _getTargetMethodSignature(target, keyStr);
|
|
27
|
-
//
|
|
27
|
+
// oxlint-disable-next-line @typescript-eslint/promise-function-async
|
|
28
28
|
descriptor.value = function (...args) {
|
|
29
29
|
const ctx = this;
|
|
30
30
|
const cacheKey = cacheKeyFn(args);
|
|
@@ -17,7 +17,7 @@ export const _SwarmSafe = () => (target, key, descriptor) => {
|
|
|
17
17
|
const methodSignature = _getTargetMethodSignature(target, keyStr);
|
|
18
18
|
const instanceCache = new Map();
|
|
19
19
|
console.log('SwarmSafe constructor called', { key, methodSignature });
|
|
20
|
-
//
|
|
20
|
+
// oxlint-disable-next-line @typescript-eslint/promise-function-async
|
|
21
21
|
descriptor.value = function (...args) {
|
|
22
22
|
console.log('SwarmSafe method called', { key, methodSignature, args });
|
|
23
23
|
const ctx = this;
|
package/dist/http/fetcher.js
CHANGED
|
@@ -9,6 +9,7 @@ import { _clamp } from '../number/number.util.js';
|
|
|
9
9
|
import { _filterFalsyValues, _filterNullishValues, _filterUndefinedValues, _mapKeys, _merge, _omit, _pick, } from '../object/object.util.js';
|
|
10
10
|
import { pDelay } from '../promise/pDelay.js';
|
|
11
11
|
import { pTimeout } from '../promise/pTimeout.js';
|
|
12
|
+
import { _toUrlOrNull } from '../string/index.js';
|
|
12
13
|
import { _jsonParse, _jsonParseIfPossible } from '../string/json.util.js';
|
|
13
14
|
import { _stringify } from '../string/stringify.js';
|
|
14
15
|
import { HTTP_METHODS } from './http.model.js';
|
|
@@ -630,7 +631,7 @@ export class Fetcher {
|
|
|
630
631
|
let { name } = cfg;
|
|
631
632
|
if (!name && cfg.baseUrl) {
|
|
632
633
|
// derive FetcherName from baseUrl
|
|
633
|
-
const url =
|
|
634
|
+
const url = _toUrlOrNull(cfg.baseUrl);
|
|
634
635
|
if (url) {
|
|
635
636
|
name = url.hostname;
|
|
636
637
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnyObject, KeyValueTuple, MutateOptions, ObjectMapper, ObjectPredicate, Reviver, StringMap, ValueOf } from '../types.js';
|
|
1
|
+
import type { AnyObject, KeyValueTuple, MutateOptions, ObjectMapper, ObjectPredicate, RequiredProp, Reviver, StringMap, ValueOf } from '../types.js';
|
|
2
2
|
import { SKIP } from '../types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Returns clone of `obj` with only `props` preserved.
|
|
@@ -228,4 +228,13 @@ export declare function _deepFreeze(o: any): void;
|
|
|
228
228
|
* To make mutation extra clear - function returns void (unlike Object.assign).
|
|
229
229
|
*/
|
|
230
230
|
export declare function _objectAssignExact<T extends AnyObject>(target: T, source: T): void;
|
|
231
|
+
/**
|
|
232
|
+
* type MyObj = { a?: string, b?: string }
|
|
233
|
+
*
|
|
234
|
+
* const collection: MyObj[] = [...]
|
|
235
|
+
*
|
|
236
|
+
* const collectionA = collection.filter(_hasProp('a'))
|
|
237
|
+
* --> collectionA is now RequiredProp<MyObj, 'a'>[], i.e. { a: string, b?: string }[]
|
|
238
|
+
*/
|
|
239
|
+
export declare function _hasProp<T, Prop extends keyof T>(prop: Prop): (object: T) => object is RequiredProp<T, Prop>;
|
|
231
240
|
export {};
|
|
@@ -446,3 +446,16 @@ export function _objectAssignExact(target, source) {
|
|
|
446
446
|
}
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
|
+
/**
|
|
450
|
+
* type MyObj = { a?: string, b?: string }
|
|
451
|
+
*
|
|
452
|
+
* const collection: MyObj[] = [...]
|
|
453
|
+
*
|
|
454
|
+
* const collectionA = collection.filter(_hasProp('a'))
|
|
455
|
+
* --> collectionA is now RequiredProp<MyObj, 'a'>[], i.e. { a: string, b?: string }[]
|
|
456
|
+
*/
|
|
457
|
+
export function _hasProp(prop) {
|
|
458
|
+
return function (object) {
|
|
459
|
+
return typeof object[prop] !== 'undefined';
|
|
460
|
+
};
|
|
461
|
+
}
|
package/dist/promise/pDefer.js
CHANGED
package/dist/promise/pDelay.js
CHANGED
|
@@ -8,7 +8,7 @@ import { pDefer } from './pDefer.js';
|
|
|
8
8
|
export async function pDelay(ms = 0, value) {
|
|
9
9
|
return await new Promise((resolve, reject) => setTimeout(value instanceof Error ? reject : resolve, ms, value));
|
|
10
10
|
}
|
|
11
|
-
/*
|
|
11
|
+
/* oxlint-disable @typescript-eslint/promise-function-async */
|
|
12
12
|
/**
|
|
13
13
|
* Promisified version of setTimeout.
|
|
14
14
|
*
|
package/dist/types.js
CHANGED
package/package.json
CHANGED
package/src/browser/topbar.ts
CHANGED
|
@@ -69,7 +69,7 @@ export const _AsyncMemo =
|
|
|
69
69
|
const keyStr = String(key)
|
|
70
70
|
const methodSignature = _getTargetMethodSignature(target, keyStr)
|
|
71
71
|
|
|
72
|
-
//
|
|
72
|
+
// oxlint-disable-next-line @typescript-eslint/promise-function-async
|
|
73
73
|
descriptor.value = function (this: typeof target, ...args: MaybeParameters<FN>): Promise<any> {
|
|
74
74
|
const ctx = this
|
|
75
75
|
const cacheKey = cacheKeyFn(args)
|
|
@@ -22,7 +22,7 @@ export const _SwarmSafe = (): MethodDecorator => (target, key, descriptor) => {
|
|
|
22
22
|
|
|
23
23
|
console.log('SwarmSafe constructor called', { key, methodSignature })
|
|
24
24
|
|
|
25
|
-
//
|
|
25
|
+
// oxlint-disable-next-line @typescript-eslint/promise-function-async
|
|
26
26
|
descriptor.value = function (this: typeof target, ...args: any[]): Promise<any> {
|
|
27
27
|
console.log('SwarmSafe method called', { key, methodSignature, args })
|
|
28
28
|
const ctx = this
|
package/src/http/fetcher.ts
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
} from '../object/object.util.js'
|
|
29
29
|
import { pDelay } from '../promise/pDelay.js'
|
|
30
30
|
import { pTimeout } from '../promise/pTimeout.js'
|
|
31
|
+
import { _toUrlOrNull } from '../string/index.js'
|
|
31
32
|
import { _jsonParse, _jsonParseIfPossible } from '../string/json.util.js'
|
|
32
33
|
import { _stringify } from '../string/stringify.js'
|
|
33
34
|
import type {
|
|
@@ -770,7 +771,7 @@ export class Fetcher {
|
|
|
770
771
|
let { name } = cfg
|
|
771
772
|
if (!name && cfg.baseUrl) {
|
|
772
773
|
// derive FetcherName from baseUrl
|
|
773
|
-
const url =
|
|
774
|
+
const url = _toUrlOrNull(cfg.baseUrl)
|
|
774
775
|
if (url) {
|
|
775
776
|
name = url.hostname
|
|
776
777
|
}
|
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
MutateOptions,
|
|
6
6
|
ObjectMapper,
|
|
7
7
|
ObjectPredicate,
|
|
8
|
+
RequiredProp,
|
|
8
9
|
Reviver,
|
|
9
10
|
StringMap,
|
|
10
11
|
ValueOf,
|
|
@@ -527,3 +528,17 @@ export function _objectAssignExact<T extends AnyObject>(target: T, source: T): v
|
|
|
527
528
|
}
|
|
528
529
|
}
|
|
529
530
|
}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* type MyObj = { a?: string, b?: string }
|
|
534
|
+
*
|
|
535
|
+
* const collection: MyObj[] = [...]
|
|
536
|
+
*
|
|
537
|
+
* const collectionA = collection.filter(_hasProp('a'))
|
|
538
|
+
* --> collectionA is now RequiredProp<MyObj, 'a'>[], i.e. { a: string, b?: string }[]
|
|
539
|
+
*/
|
|
540
|
+
export function _hasProp<T, Prop extends keyof T>(prop: Prop) {
|
|
541
|
+
return function (object: T): object is RequiredProp<T, Prop> {
|
|
542
|
+
return typeof object[prop] !== 'undefined'
|
|
543
|
+
}
|
|
544
|
+
}
|
package/src/promise/pDefer.ts
CHANGED
|
@@ -21,7 +21,7 @@ export interface DeferredPromise<T = void> extends Promise<T> {
|
|
|
21
21
|
rejectAborted: (reason?: string) => void
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
/*
|
|
24
|
+
/* oxlint-disable @typescript-eslint/promise-function-async */
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Returns DeferredPromise - a Promise that has .resolve() and .reject() methods.
|
package/src/promise/pDelay.ts
CHANGED
|
@@ -14,7 +14,7 @@ export async function pDelay<T>(ms: NumberOfMilliseconds = 0, value?: T): Promis
|
|
|
14
14
|
)
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
/*
|
|
17
|
+
/* oxlint-disable @typescript-eslint/promise-function-async */
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Promisified version of setTimeout.
|
package/src/types.ts
CHANGED
|
@@ -478,7 +478,7 @@ export type Class<T = any> = new (...args: any[]) => T
|
|
|
478
478
|
//=> error TS2339: Property 'push' does not exist on type 'readonly string[]'
|
|
479
479
|
```
|
|
480
480
|
*/
|
|
481
|
-
/*
|
|
481
|
+
/* oxlint-disable @typescript-eslint/no-restricted-types */
|
|
482
482
|
export type ReadonlyDeep<T> = T extends Primitive | ((...args: any[]) => unknown)
|
|
483
483
|
? T
|
|
484
484
|
: T extends ReadonlyMap<infer KeyType, infer ValueType>
|
|
@@ -509,6 +509,8 @@ type ReadonlyObjectDeep<ObjectType extends object> = {
|
|
|
509
509
|
readonly [KeyType in keyof ObjectType]: ReadonlyDeep<ObjectType[KeyType]>
|
|
510
510
|
}
|
|
511
511
|
|
|
512
|
+
// oxlint-enable
|
|
513
|
+
|
|
512
514
|
/**
|
|
513
515
|
Makes one property of T required instead of optional.
|
|
514
516
|
@example
|
|
@@ -524,6 +526,4 @@ type ReadonlyObjectDeep<ObjectType extends object> = {
|
|
|
524
526
|
*/
|
|
525
527
|
export type RequiredProp<T, K extends keyof T> = Required<Pick<T, K>> & T
|
|
526
528
|
|
|
527
|
-
/* eslint-enable */
|
|
528
|
-
|
|
529
529
|
export * from './typeFest.js'
|