@zelgadis87/utils-core 4.13.3 → 4.13.4
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/time/TimeInstantBuilder.d.ts +2 -16
- package/dist/time/constants.d.ts +14 -0
- package/dist/time/types.d.ts +2 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/css.d.ts +2 -1
- package/esbuild/index.cjs +16 -14
- package/esbuild/index.cjs.map +3 -3
- package/esbuild/index.mjs +16 -14
- package/esbuild/index.mjs.map +3 -3
- package/package.json +1 -1
- package/src/time/TimeInstantBuilder.ts +6 -17
- package/src/time/constants.ts +15 -0
- package/src/time/types.ts +2 -0
- package/src/utils/css.ts +20 -3
package/package.json
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
|
|
2
2
|
import { TFunction } from "../utils/functions.js";
|
|
3
3
|
import { ensureDefined } from "../utils/nulls.js";
|
|
4
|
+
import { monthNames } from "./constants.js";
|
|
4
5
|
import { TimeInstant, isTimeInstant } from "./TimeInstant.js";
|
|
5
|
-
import { TDayOfMonth, THourOfDay, TMillisecondOfSecond, TMinuteOfHour, TMonth, TSecondOfMinute, TUpToTwoDigits } from "./types.js";
|
|
6
|
+
import { TDayOfMonth, THourOfDay, TMillisecondOfSecond, TMinuteOfHour, TMonth, TSecondOfMinute, TUpToTwoDigits, type TMonthName } from "./types.js";
|
|
6
7
|
|
|
7
8
|
type TRelativeSignum = '+' | '-';
|
|
8
9
|
type TRelativeNumber = `${TRelativeSignum}${TUpToTwoDigits}`;
|
|
9
10
|
const isRelativeNumber = ( x: string ): x is TRelativeNumber => x !== undefined && x.length > 0 && ( x[ 0 ] === '+' || x[ 0 ] === '-' );
|
|
11
|
+
|
|
10
12
|
export type TTimeInstantCreationParameters = {
|
|
11
13
|
year: number | { absolute: number } | TRelativeNumber | { relative: number, relativeTo: 'now' | TimeInstant } | 'next' | 'last' | 'current' | undefined;
|
|
12
|
-
month: TMonth | { absolute: TMonth } |
|
|
14
|
+
month: TMonth | { absolute: TMonth } | TMonthName | TRelativeNumber | { relative: number, relativeTo: 'now' | TimeInstant } | 'next' | 'last' | 'current' | undefined;
|
|
13
15
|
date: TDayOfMonth | { absolute: TDayOfMonth } | TRelativeNumber | { relative: number, relativeTo: 'now' | TimeInstant } | 'next' | 'last' | 'current' | undefined;
|
|
14
16
|
hours: THourOfDay | { absolute: THourOfDay } | TRelativeNumber | { relative: number, relativeTo: 'now' | TimeInstant } | 'next' | 'last' | 'current' | undefined;
|
|
15
17
|
minutes: TMinuteOfHour | { absolute: TMinuteOfHour } | TRelativeNumber | { relative: number, relativeTo: 'now' | TimeInstant } | 'next' | 'last' | 'current' | undefined;
|
|
@@ -31,22 +33,9 @@ const timeInstantCreationRelativeAliases = {
|
|
|
31
33
|
last: -1,
|
|
32
34
|
next: +1,
|
|
33
35
|
} as const satisfies Record<string, number>;
|
|
34
|
-
|
|
35
|
-
january: 1,
|
|
36
|
-
february: 2,
|
|
37
|
-
march: 3,
|
|
38
|
-
april: 4,
|
|
39
|
-
may: 5,
|
|
40
|
-
june: 6,
|
|
41
|
-
july: 7,
|
|
42
|
-
august: 8,
|
|
43
|
-
september: 9,
|
|
44
|
-
october: 10,
|
|
45
|
-
november: 11,
|
|
46
|
-
december: 12,
|
|
47
|
-
} as const satisfies Record<string, number>;
|
|
36
|
+
|
|
48
37
|
type TAllowedTimeInstantCreationAlias = keyof typeof timeInstantCreationRelativeAliases;
|
|
49
|
-
type TAllowedTimeInstantCreationParameter = { absolute: number } | { relative: number, relativeTo?: TimeInstant | 'now' } | TAllowedTimeInstantCreationAlias | TRelativeNumber |
|
|
38
|
+
type TAllowedTimeInstantCreationParameter = { absolute: number } | { relative: number, relativeTo?: TimeInstant | 'now' } | TAllowedTimeInstantCreationAlias | TRelativeNumber | TMonthName | number | undefined;
|
|
50
39
|
const timeInstantResolveValue = ( getFromDate: TFunction<Date, number>, referenceDate: Date, x: TAllowedTimeInstantCreationParameter ): number => {
|
|
51
40
|
if ( x === undefined ) {
|
|
52
41
|
return getFromDate( referenceDate );
|
package/src/time/types.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TDigit, TDigit1_9, TNumber0_1000, TParseableInt } from "../utils/_index";
|
|
2
|
+
import type { monthNames } from "./constants.ts";
|
|
2
3
|
|
|
3
4
|
export type TOneDigit = `${TDigit}`;
|
|
4
5
|
export type TTwoDigits = `${TDigit}${TDigit}`;
|
|
@@ -19,6 +20,7 @@ export type TFourDigitsYear = TFourDigits;
|
|
|
19
20
|
export type TFourDigitsMillisecond = `${'+' | '-'}${TThreeDigits}`;
|
|
20
21
|
|
|
21
22
|
export type TMonth = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
23
|
+
export type TMonthName = keyof typeof monthNames;
|
|
22
24
|
|
|
23
25
|
export type TDayOfMonth = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
|
|
24
26
|
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19
|
package/src/utils/css.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isFunction, repeat, type TProducer } from "./_index.ts";
|
|
1
|
+
import { isDefined, isFunction, repeat, type TProducer } from "./_index.ts";
|
|
2
2
|
import { type TKeysOfType } from "./records.ts";
|
|
3
3
|
|
|
4
4
|
export type TCssRuleDeclarationKey = TKeysOfType<CSSStyleDeclaration, string> & string;
|
|
@@ -9,8 +9,6 @@ export type TCssSelectorDeclarationRulesDictionary = {
|
|
|
9
9
|
[ selector: string ]: TCssDeclarationRulesDictionary | TCssSelectorDeclarationRulesDictionary;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
type TProduceable<T> = T | TProducer<T>;
|
|
13
|
-
|
|
14
12
|
const newLine = '\n', tabulation = '\t', colon = ':', semiColon = ';', space = ' ', openBracket = '{', closeBracket = '}';
|
|
15
13
|
|
|
16
14
|
export function cssDeclarationRulesDictionaryToCss( syleDeclarationRulesForSelectorsProduceable: TProduceable<TCssSelectorDeclarationRulesDictionary>, indent = 0 ) {
|
|
@@ -33,10 +31,29 @@ export function cssSelectorDeclarationRulesDictionaryToCss( styleDeclarationRule
|
|
|
33
31
|
} );
|
|
34
32
|
}
|
|
35
33
|
|
|
34
|
+
export function transformCssDictionary(
|
|
35
|
+
dict: TCssSelectorDeclarationRulesDictionary | Partial<Record<TCssGenericDeclarationKey, string>>,
|
|
36
|
+
transformer: ( key: TCssGenericDeclarationKey, value: string ) => string,
|
|
37
|
+
): TCssSelectorDeclarationRulesDictionary | Partial<Record<TCssGenericDeclarationKey, string>> {
|
|
38
|
+
const newDict: TCssSelectorDeclarationRulesDictionary | Partial<Record<TCssGenericDeclarationKey, string>> = {};
|
|
39
|
+
for ( const [ key, value ] of Object.entries( dict ) ) {
|
|
40
|
+
if ( typeof value === 'string' ) {
|
|
41
|
+
const newValue = transformer( key as TCssGenericDeclarationKey, value );
|
|
42
|
+
if ( isDefined( newValue ) ) {
|
|
43
|
+
newDict[ key ] = newValue;
|
|
44
|
+
}
|
|
45
|
+
} else {
|
|
46
|
+
newDict[ key ] = transformCssDictionary( value, transformer );
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return newDict;
|
|
50
|
+
}
|
|
51
|
+
|
|
36
52
|
function pascalCaseToKebabCase( s: string ) {
|
|
37
53
|
return s.split( /([A-Z][a-z]*)/ ).filter( Boolean ).map( n => n.toLowerCase() ).join( '-' );
|
|
38
54
|
}
|
|
39
55
|
|
|
56
|
+
type TProduceable<T> = T | TProducer<T>;
|
|
40
57
|
function produceableToValue<T>( t: TProduceable<T> ): T {
|
|
41
58
|
return isFunction( t ) ? t() : t;
|
|
42
59
|
}
|