@knighted/css 1.0.0-rc.12 → 1.0.0-rc.13
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.
|
@@ -6,8 +6,10 @@ exports.stableClass = stableClass;
|
|
|
6
6
|
exports.stableSelector = stableSelector;
|
|
7
7
|
exports.createStableClassFactory = createStableClassFactory;
|
|
8
8
|
exports.stableClassName = stableClassName;
|
|
9
|
+
exports.mergeStableClass = mergeStableClass;
|
|
9
10
|
const DEFAULT_NAMESPACE = 'knighted';
|
|
10
11
|
const defaultJoin = (values) => values.filter(Boolean).join(' ');
|
|
12
|
+
const toArray = (value) => Array.isArray(value) ? value : [value];
|
|
11
13
|
const normalizeToken = (token) => {
|
|
12
14
|
const sanitized = token
|
|
13
15
|
.trim()
|
|
@@ -42,3 +44,30 @@ function stableClassName(styles, key, options) {
|
|
|
42
44
|
return join([hashed, stable]);
|
|
43
45
|
}
|
|
44
46
|
exports.stableClassFromModule = stableClassName;
|
|
47
|
+
function mergeStableClass(input) {
|
|
48
|
+
if ('token' in input) {
|
|
49
|
+
return mergeSingle(input);
|
|
50
|
+
}
|
|
51
|
+
return mergeBatch(input);
|
|
52
|
+
}
|
|
53
|
+
function mergeSingle(input) {
|
|
54
|
+
const join = input.join ?? defaultJoin;
|
|
55
|
+
const hashed = toArray(input.hashed);
|
|
56
|
+
const stable = input.selector?.trim().length
|
|
57
|
+
? input.selector
|
|
58
|
+
: stableClass(input.token, { namespace: input.namespace });
|
|
59
|
+
return join([...hashed, stable]);
|
|
60
|
+
}
|
|
61
|
+
function mergeBatch(input) {
|
|
62
|
+
const join = input.join ?? defaultJoin;
|
|
63
|
+
const output = {};
|
|
64
|
+
for (const key of Object.keys(input.hashed)) {
|
|
65
|
+
const hashedValue = input.hashed[key];
|
|
66
|
+
const selector = input.selectors?.[String(key)];
|
|
67
|
+
const stable = selector?.trim().length
|
|
68
|
+
? selector
|
|
69
|
+
: stableClass(String(key), { namespace: input.namespace });
|
|
70
|
+
output[key] = join([...toArray(hashedValue), stable]);
|
|
71
|
+
}
|
|
72
|
+
return output;
|
|
73
|
+
}
|
|
@@ -5,9 +5,24 @@ export interface StableClassNameOptions extends StableSelectorOptions {
|
|
|
5
5
|
token?: string;
|
|
6
6
|
join?: (values: string[]) => string;
|
|
7
7
|
}
|
|
8
|
+
export interface MergeStableClassSingleInput extends StableSelectorOptions {
|
|
9
|
+
hashed: string | string[];
|
|
10
|
+
selector?: string;
|
|
11
|
+
token: string;
|
|
12
|
+
join?: (values: string[]) => string;
|
|
13
|
+
}
|
|
14
|
+
export interface MergeStableClassBatchInput<Hashed extends Record<string, string | string[]>, Selectors extends Record<string, string> | undefined = Record<string, string>> extends StableSelectorOptions {
|
|
15
|
+
hashed: Hashed;
|
|
16
|
+
selectors?: Selectors;
|
|
17
|
+
join?: (values: string[]) => string;
|
|
18
|
+
}
|
|
8
19
|
export declare function stableToken(token: string, options?: StableSelectorOptions): string;
|
|
9
20
|
export declare function stableClass(token: string, options?: StableSelectorOptions): string;
|
|
10
21
|
export declare function stableSelector(token: string, options?: StableSelectorOptions): string;
|
|
11
22
|
export declare function createStableClassFactory(options?: StableSelectorOptions): (token: string) => string;
|
|
12
23
|
export declare function stableClassName<T extends Record<string, string>>(styles: T, key: keyof T | string, options?: StableClassNameOptions): string;
|
|
13
24
|
export declare const stableClassFromModule: typeof stableClassName;
|
|
25
|
+
export declare function mergeStableClass(input: MergeStableClassSingleInput): string;
|
|
26
|
+
export declare function mergeStableClass<Hashed extends Record<string, string | string[]>>(input: MergeStableClassBatchInput<Hashed>): {
|
|
27
|
+
[Key in keyof Hashed]: string;
|
|
28
|
+
};
|
|
@@ -5,9 +5,24 @@ export interface StableClassNameOptions extends StableSelectorOptions {
|
|
|
5
5
|
token?: string;
|
|
6
6
|
join?: (values: string[]) => string;
|
|
7
7
|
}
|
|
8
|
+
export interface MergeStableClassSingleInput extends StableSelectorOptions {
|
|
9
|
+
hashed: string | string[];
|
|
10
|
+
selector?: string;
|
|
11
|
+
token: string;
|
|
12
|
+
join?: (values: string[]) => string;
|
|
13
|
+
}
|
|
14
|
+
export interface MergeStableClassBatchInput<Hashed extends Record<string, string | string[]>, Selectors extends Record<string, string> | undefined = Record<string, string>> extends StableSelectorOptions {
|
|
15
|
+
hashed: Hashed;
|
|
16
|
+
selectors?: Selectors;
|
|
17
|
+
join?: (values: string[]) => string;
|
|
18
|
+
}
|
|
8
19
|
export declare function stableToken(token: string, options?: StableSelectorOptions): string;
|
|
9
20
|
export declare function stableClass(token: string, options?: StableSelectorOptions): string;
|
|
10
21
|
export declare function stableSelector(token: string, options?: StableSelectorOptions): string;
|
|
11
22
|
export declare function createStableClassFactory(options?: StableSelectorOptions): (token: string) => string;
|
|
12
23
|
export declare function stableClassName<T extends Record<string, string>>(styles: T, key: keyof T | string, options?: StableClassNameOptions): string;
|
|
13
24
|
export declare const stableClassFromModule: typeof stableClassName;
|
|
25
|
+
export declare function mergeStableClass(input: MergeStableClassSingleInput): string;
|
|
26
|
+
export declare function mergeStableClass<Hashed extends Record<string, string | string[]>>(input: MergeStableClassBatchInput<Hashed>): {
|
|
27
|
+
[Key in keyof Hashed]: string;
|
|
28
|
+
};
|
package/dist/stableSelectors.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const DEFAULT_NAMESPACE = 'knighted';
|
|
2
2
|
const defaultJoin = (values) => values.filter(Boolean).join(' ');
|
|
3
|
+
const toArray = (value) => Array.isArray(value) ? value : [value];
|
|
3
4
|
const normalizeToken = (token) => {
|
|
4
5
|
const sanitized = token
|
|
5
6
|
.trim()
|
|
@@ -34,3 +35,30 @@ export function stableClassName(styles, key, options) {
|
|
|
34
35
|
return join([hashed, stable]);
|
|
35
36
|
}
|
|
36
37
|
export const stableClassFromModule = stableClassName;
|
|
38
|
+
export function mergeStableClass(input) {
|
|
39
|
+
if ('token' in input) {
|
|
40
|
+
return mergeSingle(input);
|
|
41
|
+
}
|
|
42
|
+
return mergeBatch(input);
|
|
43
|
+
}
|
|
44
|
+
function mergeSingle(input) {
|
|
45
|
+
const join = input.join ?? defaultJoin;
|
|
46
|
+
const hashed = toArray(input.hashed);
|
|
47
|
+
const stable = input.selector?.trim().length
|
|
48
|
+
? input.selector
|
|
49
|
+
: stableClass(input.token, { namespace: input.namespace });
|
|
50
|
+
return join([...hashed, stable]);
|
|
51
|
+
}
|
|
52
|
+
function mergeBatch(input) {
|
|
53
|
+
const join = input.join ?? defaultJoin;
|
|
54
|
+
const output = {};
|
|
55
|
+
for (const key of Object.keys(input.hashed)) {
|
|
56
|
+
const hashedValue = input.hashed[key];
|
|
57
|
+
const selector = input.selectors?.[String(key)];
|
|
58
|
+
const stable = selector?.trim().length
|
|
59
|
+
? selector
|
|
60
|
+
: stableClass(String(key), { namespace: input.namespace });
|
|
61
|
+
output[key] = join([...toArray(hashedValue), stable]);
|
|
62
|
+
}
|
|
63
|
+
return output;
|
|
64
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knighted/css",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.13",
|
|
4
4
|
"description": "A build-time utility that traverses JavaScript/TypeScript module dependency graphs to extract, compile, and optimize all imported CSS into a single, in-memory string.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/css.js",
|