@naturalcycles/js-lib 15.1.0 → 15.3.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/analytics.util.js +2 -2
- package/dist/decorators/logMethod.decorator.js +1 -1
- package/dist/decorators/timeout.decorator.js +1 -1
- package/dist/error/assert.js +0 -1
- package/dist/error/error.util.js +3 -0
- package/dist/string/slugify.js +0 -1
- package/dist/types.d.ts +6 -0
- package/package.json +10 -4
- package/readme.md +1 -1
- package/src/browser/analytics.util.ts +2 -2
- package/src/decorators/logMethod.decorator.ts +2 -2
- package/src/decorators/timeout.decorator.ts +2 -2
- package/src/error/assert.ts +0 -1
- package/src/error/error.util.ts +2 -0
- package/src/string/slugify.ts +0 -1
- package/src/types.ts +7 -0
|
@@ -10,7 +10,7 @@ export async function loadGTag(gtagId, enabled = true) {
|
|
|
10
10
|
window.dataLayer ||= [];
|
|
11
11
|
window.gtag ||= function gtag() {
|
|
12
12
|
// biome-ignore lint/complexity/useArrowFunction: ok
|
|
13
|
-
// biome-ignore lint/
|
|
13
|
+
// biome-ignore lint/complexity/noArguments: ok
|
|
14
14
|
window.dataLayer.push(arguments);
|
|
15
15
|
};
|
|
16
16
|
window.gtag('js', new Date());
|
|
@@ -39,7 +39,7 @@ export function loadHotjar(hjid) {
|
|
|
39
39
|
h.hj =
|
|
40
40
|
h.hj ||
|
|
41
41
|
function hj() {
|
|
42
|
-
// biome-ignore lint/
|
|
42
|
+
// biome-ignore lint/complexity/noArguments: ok
|
|
43
43
|
;
|
|
44
44
|
(h.hj.q = h.hj.q || []).push(arguments);
|
|
45
45
|
};
|
|
@@ -16,7 +16,7 @@ import { _getArgsSignature, _getMethodSignature } from './decorator.util.js';
|
|
|
16
16
|
*/
|
|
17
17
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
18
18
|
export function _LogMethod(opt = {}) {
|
|
19
|
-
return (
|
|
19
|
+
return (_target, key, descriptor) => {
|
|
20
20
|
_assert(typeof descriptor.value === 'function', '@_LogMethod can be applied only to methods');
|
|
21
21
|
const originalFn = descriptor.value;
|
|
22
22
|
const keyStr = String(key);
|
|
@@ -3,7 +3,7 @@ import { pTimeout } from '../promise/pTimeout.js';
|
|
|
3
3
|
import { _getMethodSignature } from './decorator.util.js';
|
|
4
4
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
5
5
|
export function _Timeout(opt) {
|
|
6
|
-
return (
|
|
6
|
+
return (_target, key, descriptor) => {
|
|
7
7
|
_assert(typeof descriptor.value === 'function', '@_Timeout can be applied only to methods');
|
|
8
8
|
if (!opt.timeout)
|
|
9
9
|
return descriptor;
|
package/dist/error/assert.js
CHANGED
|
@@ -93,7 +93,6 @@ export function _assertIsNumber(v, message) {
|
|
|
93
93
|
_assertTypeOf(v, 'number', message);
|
|
94
94
|
}
|
|
95
95
|
export function _assertTypeOf(v, expectedType, message) {
|
|
96
|
-
// biome-ignore lint/suspicious/useValidTypeof: ok
|
|
97
96
|
if (typeof v !== expectedType) {
|
|
98
97
|
const msg = message || `Expected typeof ${expectedType}, actual typeof: ${typeof v}`;
|
|
99
98
|
throw new AssertionError(msg);
|
package/dist/error/error.util.js
CHANGED
|
@@ -264,6 +264,9 @@ export class AppError extends Error {
|
|
|
264
264
|
enumerable: true, // unlike standard - setting it to true for "visibility"
|
|
265
265
|
});
|
|
266
266
|
}
|
|
267
|
+
else {
|
|
268
|
+
delete this.cause; // otherwise it's printed as `cause: undefined`
|
|
269
|
+
}
|
|
267
270
|
// this is to allow changing this.constuctor.name to a non-minified version
|
|
268
271
|
Object.defineProperty(this.constructor, 'name', {
|
|
269
272
|
value: name,
|
package/dist/string/slugify.js
CHANGED
|
@@ -17,7 +17,6 @@ export function _slugify(s, opt = {}) {
|
|
|
17
17
|
// based on https://stackoverflow.com/a/23633850/4919972
|
|
18
18
|
// Combining Diacritical Marks
|
|
19
19
|
// https://www.unicode.org/charts/PDF/U0300.pdf
|
|
20
|
-
// biome-ignore lint/suspicious/noMisleadingCharacterClass: ok
|
|
21
20
|
s = s.normalize('NFKD').replaceAll(/[\u0300-\u036F]/g, '');
|
|
22
21
|
// Detect contractions/possessives by looking for any word followed by a `'t`
|
|
23
22
|
// or `'s` in isolation and then remove it.
|
package/dist/types.d.ts
CHANGED
|
@@ -233,6 +233,12 @@ export type PositiveInteger = number;
|
|
|
233
233
|
export type NonNegativeInteger = number;
|
|
234
234
|
export type PositiveNumber = number;
|
|
235
235
|
export type NonNegativeNumber = number;
|
|
236
|
+
/**
|
|
237
|
+
* Same as `number`, but with semantic meaning that it's a Float.
|
|
238
|
+
*/
|
|
239
|
+
export type Float = number;
|
|
240
|
+
export type PositiveFloat = number;
|
|
241
|
+
export type NonNegativeFloat = number;
|
|
236
242
|
/**
|
|
237
243
|
* Convenience type alias, that allows to write this:
|
|
238
244
|
*
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naturalcycles/js-lib",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "15.
|
|
4
|
+
"version": "15.3.0",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"tslib": "^2",
|
|
7
7
|
"zod": "^3"
|
|
@@ -9,11 +9,16 @@
|
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@naturalcycles/dev-lib": "*",
|
|
11
11
|
"@types/crypto-js": "^4",
|
|
12
|
-
"@types/node": "^
|
|
12
|
+
"@types/node": "^24",
|
|
13
13
|
"@types/semver": "^7",
|
|
14
14
|
"crypto-js": "^4",
|
|
15
15
|
"dayjs": "^1"
|
|
16
16
|
},
|
|
17
|
+
"exports": {
|
|
18
|
+
"./cfg/frontend/tsconfig.json": "./cfg/frontend/tsconfig.json",
|
|
19
|
+
".": "./dist/index.js",
|
|
20
|
+
"./zod": "./dist/zod/index.js"
|
|
21
|
+
},
|
|
17
22
|
"files": [
|
|
18
23
|
"dist",
|
|
19
24
|
"cfg",
|
|
@@ -51,8 +56,9 @@
|
|
|
51
56
|
"test": "dev-lib test",
|
|
52
57
|
"lint": "dev-lib lint",
|
|
53
58
|
"bt": "dev-lib bt",
|
|
54
|
-
"
|
|
55
|
-
"check": "dev-lib
|
|
59
|
+
"typecheck": "dev-lib typecheck",
|
|
60
|
+
"check": "dev-lib check",
|
|
61
|
+
"clean": "dev-lib clean",
|
|
56
62
|
"test-tz1": "TZ=Europe/Stockholm yarn test local",
|
|
57
63
|
"test-tz2": "TZ=JST-9 yarn test local",
|
|
58
64
|
"test-ny": "TZ=GMT-0500 yarn test localTime"
|
package/readme.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
[](https://codeclimate.com/github/NaturalCycles/js-lib/test_coverage)
|
|
11
11
|
[](https://github.com/prettier/prettier)
|
|
12
12
|
|
|
13
|
-
# [Documentation](https://naturalcycles.github.io/js-
|
|
13
|
+
# [Documentation](https://naturalcycles.github.io/js-libs/)
|
|
14
14
|
|
|
15
15
|
# Packaging
|
|
16
16
|
|
|
@@ -19,7 +19,7 @@ export async function loadGTag(gtagId: string, enabled = true): Promise<void> {
|
|
|
19
19
|
window.dataLayer ||= []
|
|
20
20
|
window.gtag ||= function gtag() {
|
|
21
21
|
// biome-ignore lint/complexity/useArrowFunction: ok
|
|
22
|
-
// biome-ignore lint/
|
|
22
|
+
// biome-ignore lint/complexity/noArguments: ok
|
|
23
23
|
window.dataLayer.push(arguments)
|
|
24
24
|
}
|
|
25
25
|
window.gtag('js', new Date())
|
|
@@ -54,7 +54,7 @@ export function loadHotjar(hjid: number): void {
|
|
|
54
54
|
h.hj =
|
|
55
55
|
h.hj ||
|
|
56
56
|
function hj() {
|
|
57
|
-
// biome-ignore lint/
|
|
57
|
+
// biome-ignore lint/complexity/noArguments: ok
|
|
58
58
|
;(h.hj.q = h.hj.q || []).push(arguments)
|
|
59
59
|
}
|
|
60
60
|
h._hjSettings = { hjid, hjsv: 6 }
|
|
@@ -71,7 +71,7 @@ export interface LogMethodOptions {
|
|
|
71
71
|
*/
|
|
72
72
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
73
73
|
export function _LogMethod(opt: LogMethodOptions = {}): MethodDecorator {
|
|
74
|
-
return (
|
|
74
|
+
return (_target, key, descriptor) => {
|
|
75
75
|
_assert(typeof descriptor.value === 'function', '@_LogMethod can be applied only to methods')
|
|
76
76
|
|
|
77
77
|
const originalFn = descriptor.value
|
|
@@ -97,7 +97,7 @@ export function _LogMethod(opt: LogMethodOptions = {}): MethodDecorator {
|
|
|
97
97
|
const sma = avg ? new SimpleMovingAverage(avg) : undefined
|
|
98
98
|
let count = 0
|
|
99
99
|
|
|
100
|
-
descriptor.value = function (this: typeof
|
|
100
|
+
descriptor.value = function (this: typeof _target, ...args: any[]) {
|
|
101
101
|
const started = Date.now()
|
|
102
102
|
const ctx = this
|
|
103
103
|
|
|
@@ -5,7 +5,7 @@ import { _getMethodSignature } from './decorator.util.js'
|
|
|
5
5
|
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
7
7
|
export function _Timeout(opt: PTimeoutOptions): MethodDecorator {
|
|
8
|
-
return (
|
|
8
|
+
return (_target, key, descriptor) => {
|
|
9
9
|
_assert(typeof descriptor.value === 'function', '@_Timeout can be applied only to methods')
|
|
10
10
|
|
|
11
11
|
if (!opt.timeout) return descriptor
|
|
@@ -13,7 +13,7 @@ export function _Timeout(opt: PTimeoutOptions): MethodDecorator {
|
|
|
13
13
|
const originalFn = descriptor.value
|
|
14
14
|
const keyStr = String(key)
|
|
15
15
|
|
|
16
|
-
descriptor.value = async function (this: typeof
|
|
16
|
+
descriptor.value = async function (this: typeof _target, ...args: any[]) {
|
|
17
17
|
const ctx = this
|
|
18
18
|
opt.name ||= _getMethodSignature(ctx, keyStr)
|
|
19
19
|
return await pTimeout(() => originalFn.apply(this, args), opt)
|
package/src/error/assert.ts
CHANGED
|
@@ -137,7 +137,6 @@ export function _assertIsNumber(v: any, message?: string): asserts v is number {
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
export function _assertTypeOf<T>(v: any, expectedType: string, message?: string): asserts v is T {
|
|
140
|
-
// biome-ignore lint/suspicious/useValidTypeof: ok
|
|
141
140
|
if (typeof v !== expectedType) {
|
|
142
141
|
const msg = message || `Expected typeof ${expectedType}, actual typeof: ${typeof v}`
|
|
143
142
|
throw new AssertionError(msg)
|
package/src/error/error.util.ts
CHANGED
|
@@ -351,6 +351,8 @@ export class AppError<DATA_TYPE extends ErrorData = ErrorData> extends Error {
|
|
|
351
351
|
configurable: true,
|
|
352
352
|
enumerable: true, // unlike standard - setting it to true for "visibility"
|
|
353
353
|
})
|
|
354
|
+
} else {
|
|
355
|
+
delete this.cause // otherwise it's printed as `cause: undefined`
|
|
354
356
|
}
|
|
355
357
|
|
|
356
358
|
// this is to allow changing this.constuctor.name to a non-minified version
|
package/src/string/slugify.ts
CHANGED
|
@@ -41,7 +41,6 @@ export function _slugify(s: string, opt: SlugifyOptions = {}): string {
|
|
|
41
41
|
// based on https://stackoverflow.com/a/23633850/4919972
|
|
42
42
|
// Combining Diacritical Marks
|
|
43
43
|
// https://www.unicode.org/charts/PDF/U0300.pdf
|
|
44
|
-
// biome-ignore lint/suspicious/noMisleadingCharacterClass: ok
|
|
45
44
|
s = s.normalize('NFKD').replaceAll(/[\u0300-\u036F]/g, '')
|
|
46
45
|
|
|
47
46
|
// Detect contractions/possessives by looking for any word followed by a `'t`
|
package/src/types.ts
CHANGED
|
@@ -297,6 +297,13 @@ export type NonNegativeInteger = number
|
|
|
297
297
|
export type PositiveNumber = number
|
|
298
298
|
export type NonNegativeNumber = number
|
|
299
299
|
|
|
300
|
+
/**
|
|
301
|
+
* Same as `number`, but with semantic meaning that it's a Float.
|
|
302
|
+
*/
|
|
303
|
+
export type Float = number
|
|
304
|
+
export type PositiveFloat = number
|
|
305
|
+
export type NonNegativeFloat = number
|
|
306
|
+
|
|
300
307
|
/**
|
|
301
308
|
* Convenience type alias, that allows to write this:
|
|
302
309
|
*
|