@razorwind/core 0.0.48 → 0.0.50
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/{config-CNTGHrST.d.mts → config-B1rsPTVV.d.mts} +2 -2
- package/dist/config-B1rsPTVV.d.mts.map +1 -0
- package/dist/{config-BtscEr7S.d.cts → config-jPfyBr8C.d.cts} +2 -2
- package/dist/{config-BtscEr7S.d.cts.map → config-jPfyBr8C.d.cts.map} +1 -1
- package/dist/{flatten-tokens-CMlVe_J6.d.cts → flatten-tokens-DWbPW_3z.d.cts} +12 -2
- package/dist/flatten-tokens-DWbPW_3z.d.cts.map +1 -0
- package/dist/{flatten-tokens-DgTPHEhI.d.mts → flatten-tokens-Dz4e2IHx.d.mts} +12 -2
- package/dist/flatten-tokens-Dz4e2IHx.d.mts.map +1 -0
- package/dist/{index-CzjDptav.d.mts → index-52XD5ztc.d.mts} +11 -3
- package/dist/{index-CzjDptav.d.mts.map → index-52XD5ztc.d.mts.map} +1 -1
- package/dist/{index-B7MsziQp.d.cts → index-D6x2Pe2v.d.cts} +11 -3
- package/dist/index-D6x2Pe2v.d.cts.map +1 -0
- package/dist/{index-Di7vqmsi.d.cts → index-VmrytwDm.d.cts} +2 -2
- package/dist/{index-Di7vqmsi.d.cts.map → index-VmrytwDm.d.cts.map} +1 -1
- package/dist/{index-CzbZzpnz.d.mts → index-nRnX_NsH.d.mts} +2 -2
- package/dist/{index-CzbZzpnz.d.mts.map → index-nRnX_NsH.d.mts.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +14 -8
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +14 -8
- package/dist/index.mjs +1 -1
- package/dist/lib/fonts/index.d.cts +1 -1
- package/dist/lib/fonts/index.d.mts +1 -1
- package/dist/lib/tokens/index.cjs +1 -1
- package/dist/lib/tokens/index.d.cts +2 -2
- package/dist/lib/tokens/index.d.mts +2 -2
- package/dist/lib/tokens/index.mjs +1 -1
- package/dist/{plugin-0UYp_yIy.d.cts → plugin-CSC1jRVg.d.cts} +2 -2
- package/dist/{plugin-0UYp_yIy.d.cts.map → plugin-CSC1jRVg.d.cts.map} +1 -1
- package/dist/{plugin-CH6vFnxu.d.mts → plugin-DBrXhsY0.d.mts} +2 -2
- package/dist/plugin-DBrXhsY0.d.mts.map +1 -0
- package/dist/plugin.d.cts +2 -2
- package/dist/plugin.d.mts +2 -2
- package/dist/tokens-DWibfmzg.cjs +7 -0
- package/dist/tokens-SVzPsAYF.mjs +8 -0
- package/dist/tokens-SVzPsAYF.mjs.map +1 -0
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.d.cts +25 -3
- package/dist/utils/index.d.cts.map +1 -1
- package/dist/utils/index.d.mts +25 -3
- package/dist/utils/index.mjs +1 -1
- package/dist/utils-BC5zDVgP.mjs +2 -0
- package/dist/utils-BC5zDVgP.mjs.map +1 -0
- package/dist/utils-Bxxqpgkg.cjs +1 -0
- package/package.json +2 -2
- package/dist/config-CNTGHrST.d.mts.map +0 -1
- package/dist/flatten-tokens-CMlVe_J6.d.cts.map +0 -1
- package/dist/flatten-tokens-DgTPHEhI.d.mts.map +0 -1
- package/dist/index-B7MsziQp.d.cts.map +0 -1
- package/dist/plugin-CH6vFnxu.d.mts.map +0 -1
- package/dist/tokens-By75va9Y.cjs +0 -7
- package/dist/tokens-DFYNBFFR.mjs +0 -8
- package/dist/tokens-DFYNBFFR.mjs.map +0 -1
- package/dist/utils-CDYdsyyW.mjs +0 -2
- package/dist/utils-CDYdsyyW.mjs.map +0 -1
- package/dist/utils-DyK4l_bT.cjs +0 -1
|
@@ -179,7 +179,7 @@ interface Options {
|
|
|
179
179
|
*
|
|
180
180
|
* The basename is optionally followed by a suffix separated by `.`, `_`, or `-` (for example `light.json`, `dark-mode.tokens.json`, `theme.custom.yaml`).
|
|
181
181
|
*
|
|
182
|
-
* Files that match are grouped under that theme key. Non-theme files are merged into a shared `base` entry when at least two distinct themes are detected, and are also included when resolving each theme so references into shared primitives succeed. If fewer than two themes are found, all sources are merged into a single {@link Tokens} object instead of a record.
|
|
182
|
+
* Files that match are grouped under that theme key. Non-theme files are merged into a shared `base` entry when at least two distinct themes are detected, and are also included when resolving each theme so references into shared primitives succeed. The shared `base` set (and color-variant expansions such as `baseDimmed`) is omitted from generated output. If fewer than two themes are found, all sources are merged into a single {@link Tokens} object instead of a record.
|
|
183
183
|
*
|
|
184
184
|
* When `false`, every source file is merged into one flat {@link Tokens} object regardless of filename.
|
|
185
185
|
*
|
|
@@ -228,4 +228,4 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "iconsPath" | "fontsPa
|
|
|
228
228
|
};
|
|
229
229
|
//#endregion
|
|
230
230
|
export { UserConfigFn as a, UserConfigParams as c, TokensPreprocessor as d, UserConfigExport as i, Plugin as l, Options as n, UserConfigFnObject as o, UserConfig as r, UserConfigFnPromise as s, Config as t, TokensParser as u };
|
|
231
|
-
//# sourceMappingURL=config-
|
|
231
|
+
//# sourceMappingURL=config-B1rsPTVV.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-B1rsPTVV.d.mts","names":[],"sources":["../src/types/plugin.ts","../src/types/config.ts"],"mappings":""}
|
|
@@ -179,7 +179,7 @@ interface Options {
|
|
|
179
179
|
*
|
|
180
180
|
* The basename is optionally followed by a suffix separated by `.`, `_`, or `-` (for example `light.json`, `dark-mode.tokens.json`, `theme.custom.yaml`).
|
|
181
181
|
*
|
|
182
|
-
* Files that match are grouped under that theme key. Non-theme files are merged into a shared `base` entry when at least two distinct themes are detected, and are also included when resolving each theme so references into shared primitives succeed. If fewer than two themes are found, all sources are merged into a single {@link Tokens} object instead of a record.
|
|
182
|
+
* Files that match are grouped under that theme key. Non-theme files are merged into a shared `base` entry when at least two distinct themes are detected, and are also included when resolving each theme so references into shared primitives succeed. The shared `base` set (and color-variant expansions such as `baseDimmed`) is omitted from generated output. If fewer than two themes are found, all sources are merged into a single {@link Tokens} object instead of a record.
|
|
183
183
|
*
|
|
184
184
|
* When `false`, every source file is merged into one flat {@link Tokens} object regardless of filename.
|
|
185
185
|
*
|
|
@@ -228,4 +228,4 @@ type Config = RequiredKeys<UserConfig, "componentsPath" | "iconsPath" | "fontsPa
|
|
|
228
228
|
};
|
|
229
229
|
//#endregion
|
|
230
230
|
export { UserConfigFn as a, UserConfigParams as c, TokensPreprocessor as d, UserConfigExport as i, Plugin as l, Options as n, UserConfigFnObject as o, UserConfig as r, UserConfigFnPromise as s, Config as t, TokensParser as u };
|
|
231
|
-
//# sourceMappingURL=config-
|
|
231
|
+
//# sourceMappingURL=config-jPfyBr8C.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-jPfyBr8C.d.cts","names":[],"sources":["../src/types/plugin.ts","../src/types/config.ts"],"mappings":";;;;;;;;;;;;;;;UAgCiB;EACf;EACA,SAAS;EACT,SAAS,qBAAqB;;;;;;;;;KAUpB;EAEN;EACA,eAAe,YAAY,uBAAuB;MAElD,YAAY,uBAAuB;;;;;;;;;UAUxB;;;;;;;EAOf;;;;;;EAOA,UAAU;;;;;;EAOV,gBAAgB;;;;;;;;EAShB,WAAW,MAAM,QAAQ,QAAQ,WAAW,aAAa;;;;;;;;EASzD,YACE,MAAM,QACN,QAAQ,WACL,aAAa,eAAe;;;;;;;;EASjC,YAAY,MAAM,QAAQ,QAAQ,WAAW;;;;UCrF9B;;;;;;;;;;;;;;;;;;EAkBf;;;;EAKA;;;;;;EAOA;;;;;;EAOA;;;;;;;;;;;EAYA;;;;;;EAOA;;;;;;;;;;;;EAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCA;;UAGe,mBAAmB;EAClC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA,SAAS,SAAS,eAAe;EACjC,aAAa;EACb,QAAQ;EACR,QAAQ;EACR,UAAU;;UAGK;EACf;EACA;;KAGU,sBAAsB,QAAQ,eAAe;KAC7C,uBACV,QAAQ,qBACL,QAAQ,aAAa;KACd,gBACV,QAAQ,qBACL,aAAa,eAAe,QAAQ,aAAa;;;;;;KAM1C,mBACR,aACA,eACA,QAAQ,aAAa,gBACrB,qBACA,sBACA;KAEQ,SAAS,aACnB;EAGA;EACA,UAAU;IACR"}
|
|
@@ -28,6 +28,16 @@ interface TokenSet {
|
|
|
28
28
|
* camelCase suffixes from `@razorwind/color-variants` (e.g. `darkHighContrast`).
|
|
29
29
|
*/
|
|
30
30
|
declare const TOKEN_SET_THEME_PATTERN: RegExp;
|
|
31
|
+
/**
|
|
32
|
+
* Shared primitive set produced by token loading. Already merged into each
|
|
33
|
+
* real theme, so it is not generated as its own output pass.
|
|
34
|
+
*/
|
|
35
|
+
declare const SHARED_THEME_ID = "base";
|
|
36
|
+
/**
|
|
37
|
+
* True when `id` is the shared primitive set (`base`) or a color-variant
|
|
38
|
+
* expansion of it (`baseDimmed`, `base-high-contrast`, …).
|
|
39
|
+
*/
|
|
40
|
+
declare function isSharedThemeId(id: string): boolean;
|
|
31
41
|
/**
|
|
32
42
|
* True when `node` is a DTCG token leaf rather than a nested group.
|
|
33
43
|
*/
|
|
@@ -50,5 +60,5 @@ interface FlattenTokensOptions<T extends BaseFlatToken = BaseFlatToken> {
|
|
|
50
60
|
*/
|
|
51
61
|
declare function flattenTokens<T extends BaseFlatToken = BaseFlatToken>(tokens: Tokens | Record<string, Tokens>, options?: FlattenTokensOptions<T>): T[];
|
|
52
62
|
//#endregion
|
|
53
|
-
export {
|
|
54
|
-
//# sourceMappingURL=flatten-tokens-
|
|
63
|
+
export { TokenSet as a, isTokenLeaf as c, TOKEN_SET_THEME_PATTERN as i, resolveTokenSets as l, FlattenTokensOptions as n, flattenTokens as o, SHARED_THEME_ID as r, isSharedThemeId as s, BaseFlatToken as t };
|
|
64
|
+
//# sourceMappingURL=flatten-tokens-DWbPW_3z.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatten-tokens-DWbPW_3z.d.cts","names":[],"sources":["../src/utils/flatten-tokens.ts"],"mappings":";;;;;UA6BiB;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;UAGe;EACf;EACA,QAAQ;;;;;;;;cASG,yBAAuB;;;;;cAOvB;;;;;iBAQG,gBAAgB;;;;iBAOhB,YAAY,MAAM;;;;;;;iBAqFlB,iBACd,QAAQ,SAAS,eAAe,UAC/B;UAqBc,qBAAqB,UAAU,gBAAgB;;EAE9D;;EAEA,eAAe,OAAO,kBAAkB;;;;;iBAM1B,cAAc,UAAU,gBAAgB,eACtD,QAAQ,SAAS,eAAe,SAChC,UAAS,qBAAqB,KAC7B"}
|
|
@@ -28,6 +28,16 @@ interface TokenSet {
|
|
|
28
28
|
* camelCase suffixes from `@razorwind/color-variants` (e.g. `darkHighContrast`).
|
|
29
29
|
*/
|
|
30
30
|
declare const TOKEN_SET_THEME_PATTERN: RegExp;
|
|
31
|
+
/**
|
|
32
|
+
* Shared primitive set produced by token loading. Already merged into each
|
|
33
|
+
* real theme, so it is not generated as its own output pass.
|
|
34
|
+
*/
|
|
35
|
+
declare const SHARED_THEME_ID = "base";
|
|
36
|
+
/**
|
|
37
|
+
* True when `id` is the shared primitive set (`base`) or a color-variant
|
|
38
|
+
* expansion of it (`baseDimmed`, `base-high-contrast`, …).
|
|
39
|
+
*/
|
|
40
|
+
declare function isSharedThemeId(id: string): boolean;
|
|
31
41
|
/**
|
|
32
42
|
* True when `node` is a DTCG token leaf rather than a nested group.
|
|
33
43
|
*/
|
|
@@ -50,5 +60,5 @@ interface FlattenTokensOptions<T extends BaseFlatToken = BaseFlatToken> {
|
|
|
50
60
|
*/
|
|
51
61
|
declare function flattenTokens<T extends BaseFlatToken = BaseFlatToken>(tokens: Tokens | Record<string, Tokens>, options?: FlattenTokensOptions<T>): T[];
|
|
52
62
|
//#endregion
|
|
53
|
-
export {
|
|
54
|
-
//# sourceMappingURL=flatten-tokens-
|
|
63
|
+
export { TokenSet as a, isTokenLeaf as c, TOKEN_SET_THEME_PATTERN as i, resolveTokenSets as l, FlattenTokensOptions as n, flattenTokens as o, SHARED_THEME_ID as r, isSharedThemeId as s, BaseFlatToken as t };
|
|
64
|
+
//# sourceMappingURL=flatten-tokens-Dz4e2IHx.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatten-tokens-Dz4e2IHx.d.mts","names":[],"sources":["../src/utils/flatten-tokens.ts"],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as Schema } from "./schema-BwOBgJIM.mjs";
|
|
2
2
|
import "./index-D5L2WXYk.mjs";
|
|
3
|
-
import { l as Plugin, t as Config } from "./config-
|
|
3
|
+
import { l as Plugin, t as Config } from "./config-B1rsPTVV.mjs";
|
|
4
4
|
import { ExecutionContext } from "@power-plant/core";
|
|
5
5
|
import { Tokens } from "@power-plant/dtcg-schema";
|
|
6
6
|
import { Hooks, LogConfig, Parser, PreprocessedTokens } from "style-dictionary/types";
|
|
@@ -21,6 +21,14 @@ declare const TOKEN_DIRECTORY_GLOB: string;
|
|
|
21
21
|
declare const THEME_BASENAME_PATTERN: RegExp;
|
|
22
22
|
/** Path segment hints used when inferring `$type`. */
|
|
23
23
|
declare const TYPE_PATH_HINTS: Record<string, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Non-DTCG `$type` aliases rewritten to canonical types during normalize.
|
|
26
|
+
* Distinct from {@link TYPE_PATH_HINTS}: path hints must not remap valid DTCG
|
|
27
|
+
* types such as `border` or `transition`.
|
|
28
|
+
*/
|
|
29
|
+
declare const TYPE_ALIASES: Record<string, string>;
|
|
30
|
+
/** Map a token `$type` alias onto its canonical DTCG type. */
|
|
31
|
+
declare function canonicalizeTokenType(type: string): string;
|
|
24
32
|
//#endregion
|
|
25
33
|
//#region src/lib/tokens/css.d.ts
|
|
26
34
|
/**
|
|
@@ -199,5 +207,5 @@ declare function registerRazorwindHooks(plugins?: Plugin[], target?: StyleDictio
|
|
|
199
207
|
*/
|
|
200
208
|
declare const registerRazorwindParsers: typeof registerRazorwindHooks;
|
|
201
209
|
//#endregion
|
|
202
|
-
export { TOKEN_FILE_EXTENSIONS as A, nestFlatTokens as C, RazorwindParserName as D, DEFAULT_TOKEN_PATH_CANDIDATES as E,
|
|
203
|
-
//# sourceMappingURL=index-
|
|
210
|
+
export { TOKEN_FILE_EXTENSIONS as A, nestFlatTokens as C, RazorwindParserName as D, DEFAULT_TOKEN_PATH_CANDIDATES as E, TYPE_ALIASES as M, TYPE_PATH_HINTS as N, THEME_BASENAME_PATTERN as O, canonicalizeTokenType as P, inferValue as S, parseCssCustomProperties as T, ResolvedTokensSource as _, getRazorwindParserHooks as a, InferredTokenType as b, registerRazorwindHooks as c, LoadTokensOptions as d, LoadedTokens as f, ResolveTokensPathOptions as g, loadTokensOrThrow as h, getExtractionHooks as i, TOKEN_PARSER_NAMES as j, TOKEN_DIRECTORY_GLOB as k, registerRazorwindParsers as l, loadTokens as m, RAZORWIND_INFER_PREPROCESSOR as n, getRazorwindPreprocessorHooks as o, isEmptyTokens as p, StyleDictionaryRegisterTarget as r, razorwindInferPreprocessor as s, ExtractionHooks as t, styleDictionaryLogOptions as u, resolveTokensSource as v, normalizeTokenTree as w, inferTypeFromPath as x, themeKeyFromPath as y };
|
|
211
|
+
//# sourceMappingURL=index-52XD5ztc.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-52XD5ztc.d.mts","names":[],"sources":["../src/lib/tokens/constants.ts","../src/lib/tokens/css.ts","../src/lib/tokens/infer.ts","../src/lib/tokens/resolve-path.ts","../src/lib/tokens/load.ts","../src/lib/tokens/logging.ts","../src/lib/tokens/parsers.ts"],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as Schema } from "./schema-BwOBgJIM.cjs";
|
|
2
2
|
import "./index-CwN0c1Q4.cjs";
|
|
3
|
-
import { l as Plugin, t as Config } from "./config-
|
|
3
|
+
import { l as Plugin, t as Config } from "./config-jPfyBr8C.cjs";
|
|
4
4
|
import { ExecutionContext } from "@power-plant/core";
|
|
5
5
|
import { Tokens } from "@power-plant/dtcg-schema";
|
|
6
6
|
import { Hooks, LogConfig, Parser, PreprocessedTokens } from "style-dictionary/types";
|
|
@@ -21,6 +21,14 @@ declare const TOKEN_DIRECTORY_GLOB: string;
|
|
|
21
21
|
declare const THEME_BASENAME_PATTERN: RegExp;
|
|
22
22
|
/** Path segment hints used when inferring `$type`. */
|
|
23
23
|
declare const TYPE_PATH_HINTS: Record<string, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Non-DTCG `$type` aliases rewritten to canonical types during normalize.
|
|
26
|
+
* Distinct from {@link TYPE_PATH_HINTS}: path hints must not remap valid DTCG
|
|
27
|
+
* types such as `border` or `transition`.
|
|
28
|
+
*/
|
|
29
|
+
declare const TYPE_ALIASES: Record<string, string>;
|
|
30
|
+
/** Map a token `$type` alias onto its canonical DTCG type. */
|
|
31
|
+
declare function canonicalizeTokenType(type: string): string;
|
|
24
32
|
//#endregion
|
|
25
33
|
//#region src/lib/tokens/css.d.ts
|
|
26
34
|
/**
|
|
@@ -199,5 +207,5 @@ declare function registerRazorwindHooks(plugins?: Plugin[], target?: StyleDictio
|
|
|
199
207
|
*/
|
|
200
208
|
declare const registerRazorwindParsers: typeof registerRazorwindHooks;
|
|
201
209
|
//#endregion
|
|
202
|
-
export { TOKEN_FILE_EXTENSIONS as A, nestFlatTokens as C, RazorwindParserName as D, DEFAULT_TOKEN_PATH_CANDIDATES as E,
|
|
203
|
-
//# sourceMappingURL=index-
|
|
210
|
+
export { TOKEN_FILE_EXTENSIONS as A, nestFlatTokens as C, RazorwindParserName as D, DEFAULT_TOKEN_PATH_CANDIDATES as E, TYPE_ALIASES as M, TYPE_PATH_HINTS as N, THEME_BASENAME_PATTERN as O, canonicalizeTokenType as P, inferValue as S, parseCssCustomProperties as T, ResolvedTokensSource as _, getRazorwindParserHooks as a, InferredTokenType as b, registerRazorwindHooks as c, LoadTokensOptions as d, LoadedTokens as f, ResolveTokensPathOptions as g, loadTokensOrThrow as h, getExtractionHooks as i, TOKEN_PARSER_NAMES as j, TOKEN_DIRECTORY_GLOB as k, registerRazorwindParsers as l, loadTokens as m, RAZORWIND_INFER_PREPROCESSOR as n, getRazorwindPreprocessorHooks as o, isEmptyTokens as p, StyleDictionaryRegisterTarget as r, razorwindInferPreprocessor as s, ExtractionHooks as t, styleDictionaryLogOptions as u, resolveTokensSource as v, normalizeTokenTree as w, inferTypeFromPath as x, themeKeyFromPath as y };
|
|
211
|
+
//# sourceMappingURL=index-D6x2Pe2v.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-D6x2Pe2v.d.cts","names":[],"sources":["../src/lib/tokens/constants.ts","../src/lib/tokens/css.ts","../src/lib/tokens/infer.ts","../src/lib/tokens/resolve-path.ts","../src/lib/tokens/load.ts","../src/lib/tokens/logging.ts","../src/lib/tokens/parsers.ts"],"mappings":";;;;;;;;cAmBa;KAOD,8BAA8B;;cAG7B;;;;;cAsBA;;cAyBA;;cAGA,wBAAsB;;cAItB,iBAAiB;;;;;;cAkEjB,cAAc;;iBAmCX,sBAAsB;;;;;;;iBC5JtB,yBACd,mBACC;;;KCiCS;;;;iBA+DI,kBACd,iBACC;;;;iBAiBa,WACd,cACA;EACG;EAAgB,OAAO;;;;;iBA4PZ,mBACd,gBACA;;;;;;;;iBA6Cc,eACd,MAAM,0BACL;;;UCnac;;;;EAIf;;;;EAKA;;;;EAKA,gBAAgB;;UAGD;;;;;;;EAOf;;;;EAKA;;;;EAKA;;;;;;;;;iBAyHc,oBACd,SAAS,2BACR;;;;iBAqFa,iBAAiB;;;UCrNhB,0BAA0B;;;;;;EAMzC;;KAGU,eAAe,SAAS,eAAe;iBAEnC,cAAc;;;;;;;;;iBA6IR,WACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;iBAsCW,kBACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;;;;iBC9NK,0BAA0B;EACxC,YAAY;;;;;cCGD;;UAGI;EACf,kBAAkB,QAAQ;EAC1B,wBAAwB;IACtB;IACA,cAAc,YAAY;;;;UAKb;EACf,SAAS,YAAY;EACrB,eAAe,YAAY;EAC3B;EACA;;;iBAwEc,2BAA2B,YAAY;;;;;iBAavC,2BACd,YAAY,qBACX;;iBAKa,iCAAiC,YAC/C;;;;;;;iBAac,mBAAmB,UAAS,WAAgB;;;;;;;;;;;;;;iBA0D5C,uBACd,UAAS,UACT,SAAQ,gCACP;;;;cAqBU,iCAAwB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { d as FontFile, f as FontFileFormat, h as GoogleFont, l as Font, m as Fonts, p as FontRole, t as Schema } from "./schema-BwOBgJIM.cjs";
|
|
2
2
|
import "./index-CwN0c1Q4.cjs";
|
|
3
|
-
import { t as Config } from "./config-
|
|
3
|
+
import { t as Config } from "./config-jPfyBr8C.cjs";
|
|
4
4
|
import { ExecutionContext } from "@power-plant/core";
|
|
5
5
|
//#region src/lib/fonts/constants.d.ts
|
|
6
6
|
declare const FONT_EXTENSIONS: Set<string>;
|
|
@@ -97,4 +97,4 @@ declare function mergeFonts(base: Fonts | undefined, extra: Fonts | undefined):
|
|
|
97
97
|
declare function pickFontByRole(fonts: Fonts | undefined, roles: Font["role"] | Array<NonNullable<Font["role"]>>): Font | undefined;
|
|
98
98
|
//#endregion
|
|
99
99
|
export { WEIGHT_FROM_SUFFIX as S, FONT_EXTENSIONS as _, ParsedFontFilename as a, MONO_ROLES as b, RenderFontCssOptions as c, prependFontCss as d, renderFontCss as f, copyFontFiles as g, toGoogleFontsCssUrl as h, pickFontByRole as i, cssFontFamily as l, renderLocalFontFaces as m, mergeFonts as n, loadFonts as o, renderGoogleFontImports as p, parseCssFonts as r, parseFontFilename as s, isEmptyFonts as t, fontFamilyName as u, FONT_FORMAT_FROM_EXTENSION as v, SANS_ROLES as x, GENERIC_FALLBACK_FROM_ROLE as y };
|
|
100
|
-
//# sourceMappingURL=index-
|
|
100
|
+
//# sourceMappingURL=index-VmrytwDm.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-VmrytwDm.d.cts","names":[],"sources":["../src/lib/fonts/constants.ts","../src/lib/fonts/copy.ts","../src/lib/fonts/css.ts","../src/lib/fonts/load.ts","../src/lib/fonts/parse.ts"],"mappings":";;;;;cAoBa,iBAAe;cASf,4BAA4B,eAAe;cAS3C,oBAAoB;cAoBpB,4BAA4B,OAAO;cAUnC,YAAY;cACZ,YAAY;;;;;;;;iBCzCH,cACpB,OAAO,mBACP,kBACC;;;UCDc;;;;;;EAMf;;;;;iBAmBc,eAAe,MAAM;;;;;iBAQrB,cAAc,MAAM;;;;;;;iBA0BpB,oBAAoB,MAAM;;;;iBAmF1B,wBAAwB,OAAO;;;;iBAU/B,qBACd,OAAO,OACP,UAAS;;;;iBAaK,cACd,OAAO,OACP,UAAS;;;;iBAUK,eACd,aACA,OAAO,mBACP,UAAS;;;UCxGM;EACf;EACA;EACA,QAAQ;EACR,SAAS;;;;;;iBAOK,kBAAkB,mBAAmB;;;;;;;;iBA0U/B,UACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;iBCnNK,cAAc,mBAAmB;iBAuCjC,aAAa,OAAO;;;;iBAOpB,WACd,MAAM,mBACN,OAAO,oBACN;;;;iBAaa,eACd,OAAO,mBACP,OAAO,eAAe,MAAM,YAAY,iBACvC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { d as FontFile, f as FontFileFormat, h as GoogleFont, l as Font, m as Fonts, p as FontRole, t as Schema } from "./schema-BwOBgJIM.mjs";
|
|
2
2
|
import "./index-D5L2WXYk.mjs";
|
|
3
|
-
import { t as Config } from "./config-
|
|
3
|
+
import { t as Config } from "./config-B1rsPTVV.mjs";
|
|
4
4
|
import { ExecutionContext } from "@power-plant/core";
|
|
5
5
|
//#region src/lib/fonts/constants.d.ts
|
|
6
6
|
declare const FONT_EXTENSIONS: Set<string>;
|
|
@@ -97,4 +97,4 @@ declare function mergeFonts(base: Fonts | undefined, extra: Fonts | undefined):
|
|
|
97
97
|
declare function pickFontByRole(fonts: Fonts | undefined, roles: Font["role"] | Array<NonNullable<Font["role"]>>): Font | undefined;
|
|
98
98
|
//#endregion
|
|
99
99
|
export { WEIGHT_FROM_SUFFIX as S, FONT_EXTENSIONS as _, ParsedFontFilename as a, MONO_ROLES as b, RenderFontCssOptions as c, prependFontCss as d, renderFontCss as f, copyFontFiles as g, toGoogleFontsCssUrl as h, pickFontByRole as i, cssFontFamily as l, renderLocalFontFaces as m, mergeFonts as n, loadFonts as o, renderGoogleFontImports as p, parseCssFonts as r, parseFontFilename as s, isEmptyFonts as t, fontFamilyName as u, FONT_FORMAT_FROM_EXTENSION as v, SANS_ROLES as x, GENERIC_FALLBACK_FROM_ROLE as y };
|
|
100
|
-
//# sourceMappingURL=index-
|
|
100
|
+
//# sourceMappingURL=index-nRnX_NsH.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-nRnX_NsH.d.mts","names":[],"sources":["../src/lib/fonts/constants.ts","../src/lib/fonts/copy.ts","../src/lib/fonts/css.ts","../src/lib/fonts/load.ts","../src/lib/fonts/parse.ts"],"mappings":""}
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-DyK4l_bT.cjs"),n=require("./schema-BCofDJWf.cjs"),r=require("./fonts-CkBPEFie.cjs"),i=require("./tokens-By75va9Y.cjs"),a=require("./plugin.cjs");let o=require("@power-plant/core"),s=require("defu"),c=require("node:path"),l=require("@stryke/string-format/title-case"),u=require("@stryke/fs/exists"),d=require("@stryke/fs/is-file"),f=require("@stryke/fs/json"),p=require("@stryke/fs/list-files"),m=require("@stryke/path/append"),h=require("@stryke/path/file-path-fns"),g=require("@stryke/path/join"),_=require("@stryke/type-checks/is-set-object"),v=require("@stryke/type-checks/is-set-string"),y=require("node:fs/promises"),ee=require("@stryke/env/get-env-paths"),b=require("@stryke/path/find"),x=require("@stryke/path/replace"),te=require("@stryke/type-checks/is-function"),S=require("c12"),ne=require("jiti"),C=require("node:fs"),w=require("node:os");w=e.t(w,1);var re=`0.0.48`;const T=`base`;function E(e){let n=t.h(e).filter(e=>e.id!==T);return n.length>1?n:[]}function ie(e,n){let r=e.find(e=>e.id===T);return!r||n.id===T?n.tokens:t.d(n.tokens,r.tokens)}function ae(e,n,r){return{...e,theme:n.id,title:t.c(e.title,n.id)??e.title,tokens:ie(r,n)}}function oe(e,n){let r=t.c(e.title,n.id);return r?{...e,title:r}:e}async function se(e,t){let n={};for(let r of t.plugins.filter(e=>e.generate)){let i=await r.generate(e,t);n=(0,s.defu)(i,n)}return n}async function D(e,n){let r=t.h(e.tokens),i=E(e.tokens);if(i.length===0)return se(e,n);let a={};for(let o of i){let i=await se(ae(e,o,r),oe(n,o));a=(0,s.defu)(t.s(i,o.id),a)}return a}async function O(e){let t={};for(let n of e)Object.assign(t,await D(n.spec,n.config));return t}function k(e){return!!((0,v.isSetString)(e)||(0,_.isSetObject)(e)&&`url`in e&&(0,v.isSetString)(e.url))}function A(e){if((0,v.isSetString)(e))return e;if((0,_.isSetObject)(e)&&`url`in e&&(0,v.isSetString)(e.url))return e.url}const ce=n.o.partial(),j=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),M=(0,s.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function le(e,t){return(0,c.isAbsolute)(t)?t:(0,c.resolve)(e,t)}function ue(e){return Array.isArray(e)?e.filter(v.isSetString):(0,v.isSetString)(e)?[e]:[]}function de(e){let t=e.toLowerCase();if(j.has(t))return t}function fe(e){let t=(0,h.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&j.has(t))}function N(e){if(!e)return;let t=n.a.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.a.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function pe(e){if(!e)return;let t=n.s.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){if((0,v.isSetString)(t)){let e=(0,h.findFileName)(t,{withExtension:!1})||t,i=n.s.safeParse({name:e,path:t});i.success&&r.push(i.data);continue}let e=n.s.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function P(e){if(!(0,_.isSetObject)(e))return;let{files:t,usage:n,...r}=e,i=ce.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function F(e){return(0,_.isSetObject)(e)&&`path`in e}async function me(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}let r={};(0,v.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,v.isSetString)(n.description)&&(r.description=n.description),(0,v.isSetString)(n.version)&&(r.version=n.version),(0,v.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=A(n.repository);if(i&&(r.repository=i),(0,_.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,_.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(v.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;F(a)?s=N(a):(0,_.isSetObject)(a)&&(o=P(a),`files`in a&&(s=N(a.files)),`usage`in a&&(c=pe(a.usage)));let l=M(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function he(e){let t=(0,g.joinPaths)(e,`component.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}if(F(n)||Array.isArray(n)){let e=N(n);if(e)return{files:e}}if(!(0,_.isSetObject)(n))return;let r=P(n)??{},i=`files`in n?N(n.files):void 0,a=`usage`in n?pe(n.usage):void 0;return i?.length&&(r.files=i),a?.length&&(r.usage=a),Object.keys(r).length>0?r:void 0}async function ge(e){try{return(await(0,y.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&fe(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function _e(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,m.appendPath)(t.path,e),r=(0,h.findFileExtensionSafe)(t.path)??``,i=t.language??de(r),a=t.name||(0,h.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content===void 0?(0,u.existsSync)(n)?await(0,y.readFile)(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,g.joinPaths)(e,`usage`);if(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n))return;let r=await ge(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,g.joinPaths)(n,e),r=de((0,h.findFileExtensionSafe)(e)??``),i=(0,h.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,l.titleCase)(i),path:t,content:await(0,y.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function ve(e,t){let n=t??(await(0,p.listFiles)(e)).filter(e=>(0,h.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,h.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,y.readFile)((0,m.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,h.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,y.readFile)((0,m.appendPath)(t.path,e),`utf8`):void 0,path:(0,m.appendPath)(t.path,e)}))}async function ye(e){let t=await me(e),r=await he(e);if(!t&&!r)return;let i=M(r??{},t??{}),a=(0,v.isSetString)(i.name)?i.name:(0,h.findFolderName)(e),o=(0,v.isSetString)(i.title)?i.title:(0,l.titleCase)(a),s=n.o.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await _e(e,s.data.usage);return{...s.data,files:await ve(e,s.data.files),...c?.length?{usage:c}:{}}}async function I(e){let t={},n=ue(e.options.componentsPath);for(let r of n){let n=le(e.cwd,r);if(!(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n)))try{let e=await(0,y.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await ye((0,g.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const be=n.r.partial(),L=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),R=(0,s.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function xe(e,t){return(0,c.isAbsolute)(t)?t:(0,c.resolve)(e,t)}function Se(e){return Array.isArray(e)?e.filter(v.isSetString):(0,v.isSetString)(e)?[e]:[]}function z(e){let t=e.toLowerCase();if(L.has(t))return t}function B(e){let t=(0,h.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&L.has(t))}function Ce(e){return i.b.test(e)}async function V(e){try{return(await(0,y.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&B(e.name)).map(e=>e.name)}catch{return[]}}function H(e){if(!e)return;let t=n.n.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.n.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function U(e){if(!(0,_.isSetObject)(e))return;let t=be.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function W(e){return(0,_.isSetObject)(e)&&`path`in e}async function G(e,t,n){let r=(0,m.appendPath)(e,t),i=z((0,h.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,y.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function we(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}let r={};(0,v.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,v.isSetString)(n.description)&&(r.description=n.description),(0,v.isSetString)(n.version)&&(r.version=n.version),(0,v.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=A(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(v.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;W(a)?s=H(a):(0,_.isSetObject)(a)&&(o=U(a),`files`in a&&(s=H(a.files)));let c=R(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function Te(e){let t=(0,g.joinPaths)(e,`icon.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}if(W(n)||Array.isArray(n)){let e=H(n);if(e)return{files:e}}return U(n)}async function Ee(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,m.appendPath)(t.path,e),r=(0,h.findFileExtensionSafe)(t.path)??``,i=t.type??z(r)??`file`,a=t.content===void 0?i===`svg`?await(0,y.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await V(e);return Promise.all(n.map(t=>G(t,e)))}async function De(e){let t=await we(e),r=await Te(e),i=await V(e);if(!t&&!r&&i.length===0)return;let a=R(r??{},t??{}),o=(0,v.isSetString)(a.name)?a.name:(0,h.findFolderName)(e),s=(0,v.isSetString)(a.title)?a.title:(0,l.titleCase)(o),c=n.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await Ee(e,c.data.files)}}function K(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,l.titleCase)(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function Oe(e,t,n){let r=await V(e);for(let i of r){let r=(0,h.findFileName)(i,{withExtension:!1});r&&K(n,r,await G(i,e,t))}}async function q(e){let t={},n=Se(e.options.iconsPath);for(let r of n){let n=xe(e.cwd,r);if(!(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n)))try{let e=await(0,y.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,g.joinPaths)(n,r.name);if(r.isDirectory()){if(Ce(r.name)){await Oe(e,r.name,t);continue}let n=await De(e);if(n){let e=t[n.name];t[n.name]=e?R(n,e):n}continue}if(r.isFile()&&B(r.name)){let e=(0,h.findFileName)(r.name,{withExtension:!1});if(!e)continue;K(t,e,await G(r.name,n))}}}catch{continue}}return t}function J(e,t){let n=e[t];return(0,v.isSetString)(n)?n:void 0}function Y(e){let t={};(0,v.isSetString)(e.name)&&(t.name=e.name),(0,v.isSetString)(e.description)&&(t.description=e.description),(0,v.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=A(e.repository);n&&(t.repository=n),(0,v.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,_.isSetObject)(r)){let t=r,n=J(t,`title`),a=J(t,`name`),o=J(t,`description`),s=J(t,`homepage`),c=J(t,`logo`),u=A(t.repository);a?i.name=a:(0,v.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,v.isSetString)(i.name)&&(i.title=(0,l.titleCase)(i.name)),o?i.description=o:(0,v.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:k(e.homepage)?i.homepage=A(e.homepage):k(e.author)?i.homepage=A(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&k(e.maintainers[0])?i.homepage=A(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&k(e.contributors[0])?i.homepage=A(e.contributors[0]):k(e.bugs)&&(i.homepage=A(e.bugs)),c&&(i.logo=c),u?i.repository=u:k(e.repository)&&(i.repository=A(e.repository))}return(0,s.defu)(i,t)}function X(e){let t={};return(0,v.isSetString)(e.name)&&(t.name=e.name),(0,v.isSetString)(e.title)&&(t.title=e.title),(0,v.isSetString)(e.description)&&(t.description=e.description),(0,v.isSetString)(e.repository)&&(t.repository=e.repository),(0,v.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,v.isSetString)(e.logo)&&(t.logo=e.logo),t}async function Z(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return{};let n;try{n=await(0,f.readJsonFile)(t)}catch{return{}}return Y(n)}async function ke(e,t){let n=await Z(e),r=X(t);return(0,s.defu)(r,n)}function Ae(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const je=w.default.homedir();function Me(e){return Array.isArray(e)?e.filter(e=>(0,_.isSetObject)(e)):[]}function Q(e){return Array.isArray(e)||!(0,_.isSetObject)(e)?{}:{...e}}const Ne=[`tokensPath`,`componentsPath`,`iconsPath`,`fontsPath`];function Pe(e,t){let n={...e};for(let e of Ne)t[e]!=null&&delete n[e];return n}function Fe(e,t,n,r){let i=(0,s.defu)({cwd:e,envPaths:r.envPaths},Pe(t,n),n,r.workspaceLayer,r.environmentLayer,r.homeLayer,{componentsPath:e,iconsPath:(0,g.joinPaths)(e,`assets/icons`),fontsPath:(0,g.joinPaths)(e,`assets/fonts`),plugins:[]});if(Array.isArray(i.componentsPath)){let t=i.componentsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.componentsPath=t.length>0?t:e}else i.componentsPath=(0,v.isSetString)(i.componentsPath)?(0,b.findFilePath)(i.componentsPath):e;if(Array.isArray(i.iconsPath)){let t=i.iconsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.iconsPath=t.length>0?t:(0,g.joinPaths)(e,`assets/icons`)}else i.iconsPath=(0,v.isSetString)(i.iconsPath)?(0,b.findFilePath)(i.iconsPath):(0,g.joinPaths)(e,`assets/icons`);if(Array.isArray(i.fontsPath)){let t=i.fontsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.fontsPath=t.length>0?t:(0,g.joinPaths)(e,`assets/fonts`)}else i.fontsPath=(0,v.isSetString)(i.fontsPath)?(0,b.findFilePath)(i.fontsPath):(0,g.joinPaths)(e,`assets/fonts`);return i.plugins=Ae(Array.isArray(i.plugins)?i.plugins:[]),i.verbose=t.verbose===!0||n.verbose===!0,i}async function $(e,t){let n=t.configFile&&(0,C.existsSync)((0,x.replacePath)(t.configFile,e))?(0,x.replacePath)(t.configFile,e):t.configFile&&(0,C.existsSync)(t.configFile)?t.configFile:(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.js`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.json`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.ts`))?(0,g.joinPaths)(e,`razorwind.config.ts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.js`))?(0,g.joinPaths)(e,`razorwind.config.js`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.mts`))?(0,g.joinPaths)(e,`razorwind.config.mts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.mjs`))?(0,g.joinPaths)(e,`razorwind.config.mjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.cjs`))?(0,g.joinPaths)(e,`razorwind.config.cjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.cts`))?(0,g.joinPaths)(e,`razorwind.config.cts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.json`))?(0,g.joinPaths)(e,`razorwind.config.json`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.yaml`))?(0,g.joinPaths)(e,`razorwind.config.yaml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.yml`))?(0,g.joinPaths)(e,`razorwind.config.yml`):void 0,r=(0,ee.getEnvPaths)({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=(0,ne.createJiti)(e,i),o=[{}];if(n){let r=(0,c.isAbsolute)(n)?n:(0,c.resolve)(e,n),i=await a.import(r,{default:!0});if(i){let r=i;if(r=(0,te.isFunction)(i)?await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):await Promise.resolve(i),Array.isArray(r)){let e=Me(r);if(e.length===0)throw Error(`Razorwind config array is empty. Provide at least one configuration object.`);o=e.map(e=>({...e,configFile:n}))}else(0,_.isSetObject)(r)&&(o=[{...r,configFile:n}])}}let[s,l,u]=await Promise.all([(0,S.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,S.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,S.loadConfig)({cwd:je,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=Q(s?.config),f=n?(0,c.isAbsolute)(n)?n:(0,c.resolve)(e,n):void 0,p=typeof s?.configFile==`string`?s.configFile:void 0;f&&p&&(0,c.resolve)(e,p)===f&&delete d.plugins;let m={envPaths:{...r,home:je},workspaceLayer:d,environmentLayer:Q(l?.config),homeLayer:Q(u?.config)};return o.map(n=>Fe(e,t,n,m))}async function Ie(e,t){let n=(await $(e,t))[0];if(!n)throw Error(`Unable to resolve Razorwind configuration.`);return n}async function Le(e){if(e.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let t=e.options.tokens;(!t||i.t(t))&&(t=await i.n(e));let n={...await ke(e.cwd,e.options),tokens:t??{},components:(0,s.defu)(e.options.components??{},await I(e)??{}),icons:(0,s.defu)(e.options.icons??{},await q(e)??{}),fonts:(0,s.defu)(e.options.fonts??{},await r.a(e)??{})};for(let t of e.options.plugins.filter(e=>e.extract))n=await t.extract(n,e.options);if(!n.tokens||i.t(n.tokens))throw Error(`Unable to load design tokens for the current workspace. Please ensure that Razorwind is configured correctly and that the tokens are available.`);for(let t of e.options.plugins.filter(e=>e.validate))await t.validate(n,e.options);return n}async function Re(e,t){let n=await $(e.cwd,t),r=[];for(let t of n)e.options=t,r.push({spec:await Le(e),config:t});return r}async function ze(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=(0,c.isAbsolute)(e)?e:(0,c.resolve)(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await(0,y.mkdir)((0,c.dirname)(a),{recursive:!0}),await(0,y.writeFile)(a,o,`utf8`),n.push(a)}return n}function Be(e){return e}const Ve=(0,o.defineGenerator)({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, icons, and fonts.`,version:re,tags:[`razorwind`,`dtcg`]},schema:(0,o.defineSchema)({schema:n.t}),input:async e=>{let t=(0,o.useExecution)(),n=await Re(t,e),r=n[0];if(!r)throw Error(`Unable to resolve Razorwind configuration.`);return t.generationRuns=n,t.options=r.config,r.spec},output:async(e,t,n)=>{await ze(n,(0,o.useExecution)().cwd)},generator:async e=>{let t=(0,o.useExecution)();return O(t.generationRuns&&t.generationRuns.length>0?t.generationRuns:[{spec:e,config:t.options}])}});exports.DEFAULT_TOKEN_PATH_CANDIDATES=i.y,exports.FONT_EXTENSIONS=r.h,exports.FONT_FORMAT_FROM_EXTENSION=r.g,exports.GENERIC_FALLBACK_FROM_ROLE=r._,exports.MONO_ROLES=r.v,exports.RAZORWIND_INFER_PREPROCESSOR=i.o,exports.SANS_ROLES=r.y,exports.THEME_BASENAME_PATTERN=i.b,exports.TOKEN_DIRECTORY_GLOB=i.x,exports.TOKEN_FILE_EXTENSIONS=i.S,exports.TYPE_PATH_HINTS=i.w,exports.WEIGHT_FROM_SUFFIX=r.b,exports.WINDIE_PARSERS=i.C,exports.razorwindParsers=i.C,exports.copyFontFiles=r.m,exports.cssFontFamily=r.s,exports.defineConfig=Be,exports.definePlugin=a.definePlugin,exports.fontFamilyName=r.c,exports.generateAllPluginDocuments=O,exports.generatePluginDocuments=D,exports.generator=Ve,exports.getExtractionHooks=i.s,exports.getRazorwindParserHooks=i.c,exports.getRazorwindPreprocessorHooks=i.l,exports.inferTypeFromPath=i.h,exports.inferValue=i.g,exports.isEmptyFonts=r.t,exports.isEmptyTokens=i.t,exports.loadComponents=I,exports.loadFonts=r.a,exports.loadIcons=q,exports.loadSchemaMetaFromPackageJson=Z,exports.loadTokens=i.n,exports.loadTokensOrThrow=i.r,exports.mergeFonts=r.n,exports.nestFlatTokens=i._,exports.normalizeRepository=A,exports.normalizeTokenTree=i.v,exports.parseCssCustomProperties=i.m,exports.parseCssFonts=r.r,exports.parseFontFilename=r.o,exports.pickFontByRole=r.i,exports.prepareGenerationRuns=Re,exports.prepareSpec=Le,exports.prependFontCss=r.l,exports.razorwindInferPreprocessor=i.u,exports.registerRazorwindHooks=i.d,exports.registerRazorwindParsers=i.f,exports.renderFontCss=r.u,exports.renderGoogleFontImports=r.d,exports.renderLocalFontFaces=r.f,exports.resolveConfig=Ie,exports.resolveConfigs=$,exports.resolveSchemaMeta=ke,exports.resolveTokensSource=i.i,exports.schemaMetaFromConfig=X,exports.schemaMetaFromPackageJson=Y,exports.styleDictionaryLogOptions=i.p,exports.themeKeyFromPath=i.a,exports.themesForGeneration=E,exports.toGoogleFontsCssUrl=r.p,exports.uniquePlugins=Ae,exports.writeGeneratedDocuments=ze;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-Bxxqpgkg.cjs"),n=require("./schema-BCofDJWf.cjs"),r=require("./fonts-CkBPEFie.cjs"),i=require("./tokens-DWibfmzg.cjs"),a=require("./plugin.cjs");let o=require("@power-plant/core"),s=require("defu"),c=require("node:path"),l=require("@stryke/string-format/title-case"),u=require("@stryke/fs/exists"),d=require("@stryke/fs/is-file"),f=require("@stryke/fs/json"),p=require("@stryke/fs/list-files"),m=require("@stryke/path/append"),h=require("@stryke/path/file-path-fns"),g=require("@stryke/path/join"),_=require("@stryke/type-checks/is-set-object"),v=require("@stryke/type-checks/is-set-string"),y=require("node:fs/promises"),ee=require("@stryke/env/get-env-paths"),b=require("@stryke/path/find"),x=require("@stryke/path/replace"),te=require("@stryke/type-checks/is-function"),S=require("c12"),ne=require("jiti"),C=require("node:fs"),w=require("node:os");w=e.t(w,1);function T(e){let n=t._(e),r=n.filter(e=>!t.h(e.id));return r.length===0||r.length===1&&n.length===1?[]:r}function re(e,n){let r=e.find(e=>e.id===t.f);return!r||t.h(n.id)?n.tokens:t.d(n.tokens,r.tokens)}function ie(e,n,r){return{...e,theme:n.id,title:t.c(e.title,n.id)??e.title,tokens:re(r,n)}}function ae(e,n){let r=t.c(e.title,n.id);return r?{...e,title:r}:e}async function E(e,t){let n={};for(let r of t.plugins.filter(e=>e.generate)){let i=await r.generate(e,t);n=(0,s.defu)(i,n)}return n}async function oe(e,n){let r=t._(e.tokens),i=T(e.tokens);if(i.length===0)return E(e,n);let a={};for(let o of i){let i=await E(ie(e,o,r),ae(n,o));a=(0,s.defu)(t.s(i,o.id),a)}return a}async function se(e){let t={};for(let n of e)Object.assign(t,await oe(n.spec,n.config));return t}function D(e){return!!((0,v.isSetString)(e)||(0,_.isSetObject)(e)&&`url`in e&&(0,v.isSetString)(e.url))}function O(e){if((0,v.isSetString)(e))return e;if((0,_.isSetObject)(e)&&`url`in e&&(0,v.isSetString)(e.url))return e.url}const ce=n.o.partial(),k=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),A=(0,s.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function le(e,t){return(0,c.isAbsolute)(t)?t:(0,c.resolve)(e,t)}function ue(e){return Array.isArray(e)?e.filter(v.isSetString):(0,v.isSetString)(e)?[e]:[]}function j(e){let t=e.toLowerCase();if(k.has(t))return t}function de(e){let t=(0,h.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&k.has(t))}function M(e){if(!e)return;let t=n.a.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.a.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function N(e){if(!e)return;let t=n.s.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){if((0,v.isSetString)(t)){let e=(0,h.findFileName)(t,{withExtension:!1})||t,i=n.s.safeParse({name:e,path:t});i.success&&r.push(i.data);continue}let e=n.s.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function P(e){if(!(0,_.isSetObject)(e))return;let{files:t,usage:n,...r}=e,i=ce.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function F(e){return(0,_.isSetObject)(e)&&`path`in e}async function fe(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}let r={};(0,v.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,v.isSetString)(n.description)&&(r.description=n.description),(0,v.isSetString)(n.version)&&(r.version=n.version),(0,v.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=O(n.repository);if(i&&(r.repository=i),(0,_.isSetObject)(n.dependencies)&&(r.dependencies=n.dependencies),(0,_.isSetObject)(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(v.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;F(a)?s=M(a):(0,_.isSetObject)(a)&&(o=P(a),`files`in a&&(s=M(a.files)),`usage`in a&&(c=N(a.usage)));let l=A(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function pe(e){let t=(0,g.joinPaths)(e,`component.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}if(F(n)||Array.isArray(n)){let e=M(n);if(e)return{files:e}}if(!(0,_.isSetObject)(n))return;let r=P(n)??{},i=`files`in n?M(n.files):void 0,a=`usage`in n?N(n.usage):void 0;return i?.length&&(r.files=i),a?.length&&(r.usage=a),Object.keys(r).length>0?r:void 0}async function me(e){try{return(await(0,y.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&de(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function he(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,m.appendPath)(t.path,e),r=(0,h.findFileExtensionSafe)(t.path)??``,i=t.language??j(r),a=t.name||(0,h.findFileName)(t.path,{withExtension:!1})||t.path,o=t.content??((0,u.existsSync)(n)?await(0,y.readFile)(n,`utf8`):void 0);return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=(0,g.joinPaths)(e,`usage`);if(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n))return;let r=await me(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=(0,g.joinPaths)(n,e),r=j((0,h.findFileExtensionSafe)(e)??``),i=(0,h.findFileName)(e,{withExtension:!1})||e;return{name:i,title:(0,l.titleCase)(i),path:t,content:await(0,y.readFile)(t,`utf8`),...r?{language:r}:{}}}))}async function ge(e,t){let n=t??(await(0,p.listFiles)(e)).filter(e=>(0,h.findFileName)(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test((0,h.findFileExtensionSafe)(t))?`component`:`file`,path:t,content:await(0,y.readFile)((0,m.appendPath)(t,e),`utf8`)}:{type:/[tj]sx$/.test((0,h.findFileExtensionSafe)(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await(0,y.readFile)((0,m.appendPath)(t.path,e),`utf8`):void 0,path:(0,m.appendPath)(t.path,e)}))}async function _e(e){let t=await fe(e),r=await pe(e);if(!t&&!r)return;let i=A(r??{},t??{}),a=(0,v.isSetString)(i.name)?i.name:(0,h.findFolderName)(e),o=(0,v.isSetString)(i.title)?i.title:(0,l.titleCase)(a),s=n.o.safeParse({...i,name:a,title:o});if(!s.success)return;let c=await he(e,s.data.usage);return{...s.data,files:await ge(e,s.data.files),...c?.length?{usage:c}:{}}}async function I(e){let t={},n=ue(e.options.componentsPath);for(let r of n){let n=le(e.cwd,r);if(!(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n)))try{let e=await(0,y.readdir)(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await _e((0,g.joinPaths)(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const ve=n.r.partial(),L=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),R=(0,s.createDefu)((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function ye(e,t){return(0,c.isAbsolute)(t)?t:(0,c.resolve)(e,t)}function be(e){return Array.isArray(e)?e.filter(v.isSetString):(0,v.isSetString)(e)?[e]:[]}function z(e){let t=e.toLowerCase();if(L.has(t))return t}function B(e){let t=(0,h.findFileExtensionSafe)(e)?.toLowerCase();return!!(t&&L.has(t))}function xe(e){return i.b.test(e)}async function V(e){try{return(await(0,y.readdir)(e,{withFileTypes:!0})).filter(e=>e.isFile()&&B(e.name)).map(e=>e.name)}catch{return[]}}function H(e){if(!e)return;let t=n.n.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let r=[];for(let t of e){let e=n.n.safeParse(t);e.success&&r.push(e.data)}return r.length>0?r:void 0}function U(e){if(!(0,_.isSetObject)(e))return;let t=ve.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function W(e){return(0,_.isSetObject)(e)&&`path`in e}async function G(e,t,n){let r=(0,m.appendPath)(e,t),i=z((0,h.findFileExtensionSafe)(e)??``)??`file`,a=i===`svg`?await(0,y.readFile)(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function Se(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}let r={};(0,v.isSetString)(n.name)&&(r.name=n.name,r.title=n.name),(0,v.isSetString)(n.description)&&(r.description=n.description),(0,v.isSetString)(n.version)&&(r.version=n.version),(0,v.isSetString)(n.homepage)&&(r.homepage=n.homepage);let i=O(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(v.isSetString);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;W(a)?s=H(a):(0,_.isSetObject)(a)&&(o=U(a),`files`in a&&(s=H(a.files)));let c=R(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function Ce(e){let t=(0,g.joinPaths)(e,`icon.json`);if(!(0,u.existsSync)(t))return;let n;try{n=await(0,f.readJsonFile)(t)}catch{return}if(W(n)||Array.isArray(n)){let e=H(n);if(e)return{files:e}}return U(n)}async function we(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=(0,m.appendPath)(t.path,e),r=(0,h.findFileExtensionSafe)(t.path)??``,i=t.type??z(r)??`file`,a=t.content===void 0?i===`svg`?await(0,y.readFile)(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await V(e);return Promise.all(n.map(t=>G(t,e)))}async function Te(e){let t=await Se(e),r=await Ce(e),i=await V(e);if(!t&&!r&&i.length===0)return;let a=R(r??{},t??{}),o=(0,v.isSetString)(a.name)?a.name:(0,h.findFolderName)(e),s=(0,v.isSetString)(a.title)?a.title:(0,l.titleCase)(o),c=n.r.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await we(e,c.data.files)}}function K(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:(0,l.titleCase)(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function Ee(e,t,n){let r=await V(e);for(let i of r){let r=(0,h.findFileName)(i,{withExtension:!1});r&&K(n,r,await G(i,e,t))}}async function q(e){let t={},n=be(e.options.iconsPath);for(let r of n){let n=ye(e.cwd,r);if(!(!(0,u.existsSync)(n)||!(0,d.isDirectory)(n)))try{let e=await(0,y.readdir)(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=(0,g.joinPaths)(n,r.name);if(r.isDirectory()){if(xe(r.name)){await Ee(e,r.name,t);continue}let n=await Te(e);if(n){let e=t[n.name];t[n.name]=e?R(n,e):n}continue}if(r.isFile()&&B(r.name)){let e=(0,h.findFileName)(r.name,{withExtension:!1});if(!e)continue;K(t,e,await G(r.name,n))}}}catch{continue}}return t}function J(e,t){let n=e[t];return(0,v.isSetString)(n)?n:void 0}function Y(e){let t={};(0,v.isSetString)(e.name)&&(t.name=e.name),(0,v.isSetString)(e.description)&&(t.description=e.description),(0,v.isSetString)(e.homepage)&&(t.homepage=e.homepage);let n=O(e.repository);n&&(t.repository=n),(0,v.isSetString)(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if((0,_.isSetObject)(r)){let t=r,n=J(t,`title`),a=J(t,`name`),o=J(t,`description`),s=J(t,`homepage`),c=J(t,`logo`),u=O(t.repository);a?i.name=a:(0,v.isSetString)(e.name)&&(i.name=e.name),n?i.title=n:(0,v.isSetString)(i.name)&&(i.title=(0,l.titleCase)(i.name)),o?i.description=o:(0,v.isSetString)(e.description)&&(i.description=e.description),s?i.homepage=s:D(e.homepage)?i.homepage=O(e.homepage):D(e.author)?i.homepage=O(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&D(e.maintainers[0])?i.homepage=O(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&D(e.contributors[0])?i.homepage=O(e.contributors[0]):D(e.bugs)&&(i.homepage=O(e.bugs)),c&&(i.logo=c),u?i.repository=u:D(e.repository)&&(i.repository=O(e.repository))}return(0,s.defu)(i,t)}function X(e){let t={};return(0,v.isSetString)(e.name)&&(t.name=e.name),(0,v.isSetString)(e.title)&&(t.title=e.title),(0,v.isSetString)(e.description)&&(t.description=e.description),(0,v.isSetString)(e.repository)&&(t.repository=e.repository),(0,v.isSetString)(e.homepage)&&(t.homepage=e.homepage),(0,v.isSetString)(e.logo)&&(t.logo=e.logo),t}async function De(e){let t=(0,g.joinPaths)(e,`package.json`);if(!(0,u.existsSync)(t))return{};let n;try{n=await(0,f.readJsonFile)(t)}catch{return{}}return Y(n)}async function Oe(e,t){let n=await De(e),r=X(t);return(0,s.defu)(r,n)}function ke(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const Ae=w.default.homedir();function je(e){return Array.isArray(e)?e.filter(e=>(0,_.isSetObject)(e)):[]}function Z(e){return Array.isArray(e)||!(0,_.isSetObject)(e)?{}:{...e}}const Me=[`tokensPath`,`componentsPath`,`iconsPath`,`fontsPath`];function Ne(e,t){let n={...e};for(let e of Me)t[e]!=null&&delete n[e];return n}function Pe(e,t,n,r){let i=(0,s.defu)({cwd:e,envPaths:r.envPaths},Ne(t,n),n,r.workspaceLayer,r.environmentLayer,r.homeLayer,{componentsPath:e,iconsPath:(0,g.joinPaths)(e,`assets/icons`),fontsPath:(0,g.joinPaths)(e,`assets/fonts`),plugins:[]});if(Array.isArray(i.componentsPath)){let t=i.componentsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.componentsPath=t.length>0?t:e}else i.componentsPath=(0,v.isSetString)(i.componentsPath)?(0,b.findFilePath)(i.componentsPath):e;if(Array.isArray(i.iconsPath)){let t=i.iconsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.iconsPath=t.length>0?t:(0,g.joinPaths)(e,`assets/icons`)}else i.iconsPath=(0,v.isSetString)(i.iconsPath)?(0,b.findFilePath)(i.iconsPath):(0,g.joinPaths)(e,`assets/icons`);if(Array.isArray(i.fontsPath)){let t=i.fontsPath.filter(v.isSetString).map(e=>(0,b.findFilePath)(e));i.fontsPath=t.length>0?t:(0,g.joinPaths)(e,`assets/fonts`)}else i.fontsPath=(0,v.isSetString)(i.fontsPath)?(0,b.findFilePath)(i.fontsPath):(0,g.joinPaths)(e,`assets/fonts`);return i.plugins=ke(Array.isArray(i.plugins)?i.plugins:[]),i.verbose=t.verbose===!0||n.verbose===!0,i}async function Q(e,t){let n=t.configFile&&(0,C.existsSync)((0,x.replacePath)(t.configFile,e))?(0,x.replacePath)(t.configFile,e):t.configFile&&(0,C.existsSync)(t.configFile)?t.configFile:(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.ts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.ts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.js`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.js`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.mts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.mts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.mjs`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.mjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.cjs`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.cjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.cts`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.cts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.json`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.json`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.yaml`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.yaml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.${t.mode}.yml`))?(0,g.joinPaths)(e,`razorwind.${t.mode}.yml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.ts`))?(0,g.joinPaths)(e,`razorwind.config.ts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.js`))?(0,g.joinPaths)(e,`razorwind.config.js`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.mts`))?(0,g.joinPaths)(e,`razorwind.config.mts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.mjs`))?(0,g.joinPaths)(e,`razorwind.config.mjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.cjs`))?(0,g.joinPaths)(e,`razorwind.config.cjs`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.cts`))?(0,g.joinPaths)(e,`razorwind.config.cts`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.json`))?(0,g.joinPaths)(e,`razorwind.config.json`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.yaml`))?(0,g.joinPaths)(e,`razorwind.config.yaml`):(0,C.existsSync)((0,g.joinPaths)(e,`razorwind.config.yml`))?(0,g.joinPaths)(e,`razorwind.config.yml`):void 0,r=(0,ee.getEnvPaths)({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=(0,ne.createJiti)(e,i),o=[{}];if(n){let r=(0,c.isAbsolute)(n)?n:(0,c.resolve)(e,n),i=await a.import(r,{default:!0});if(i){let r=i;if(r=(0,te.isFunction)(i)?await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):await Promise.resolve(i),Array.isArray(r)){let e=je(r);if(e.length===0)throw Error(`Razorwind config array is empty. Provide at least one configuration object.`);o=e.map(e=>({...e,configFile:n}))}else(0,_.isSetObject)(r)&&(o=[{...r,configFile:n}])}}let[s,l,u]=await Promise.all([(0,S.loadConfig)({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),(0,S.loadConfig)({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),(0,S.loadConfig)({cwd:Ae,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),d=Z(s?.config),f=n?(0,c.isAbsolute)(n)?n:(0,c.resolve)(e,n):void 0,p=typeof s?.configFile==`string`?s.configFile:void 0;f&&p&&(0,c.resolve)(e,p)===f&&delete d.plugins;let m={envPaths:{...r,home:Ae},workspaceLayer:d,environmentLayer:Z(l?.config),homeLayer:Z(u?.config)};return o.map(n=>Pe(e,t,n,m))}async function Fe(e,t){let n=(await Q(e,t))[0];if(!n)throw Error(`Unable to resolve Razorwind configuration.`);return n}async function Ie(e){if(e.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let t=e.options.tokens;(!t||i.t(t))&&(t=await i.n(e));let n={...await Oe(e.cwd,e.options),tokens:t??{},components:(0,s.defu)(e.options.components??{},await I(e)??{}),icons:(0,s.defu)(e.options.icons??{},await q(e)??{}),fonts:(0,s.defu)(e.options.fonts??{},await r.a(e)??{})};for(let t of e.options.plugins.filter(e=>e.extract))n=await t.extract(n,e.options);if(!n.tokens||i.t(n.tokens))throw Error(`Unable to load design tokens for the current workspace. Please ensure that Razorwind is configured correctly and that the tokens are available.`);for(let t of e.options.plugins.filter(e=>e.validate))await t.validate(n,e.options);return n}async function Le(e,t){let n=await Q(e.cwd,t),r=[];for(let t of n)e.options=t,r.push({spec:await Ie(e),config:t});return r}async function $(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=(0,c.isAbsolute)(e)?e:(0,c.resolve)(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await(0,y.mkdir)((0,c.dirname)(a),{recursive:!0}),await(0,y.writeFile)(a,o,`utf8`),n.push(a)}return n}var Re=`0.0.50`;function ze(e){return e}const Be=(0,o.defineGenerator)({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, icons, and fonts.`,version:Re,tags:[`razorwind`,`dtcg`]},schema:(0,o.defineSchema)({schema:n.t}),input:async e=>{let t=(0,o.useExecution)(),n=await Le(t,e),r=n[0];if(!r)throw Error(`Unable to resolve Razorwind configuration.`);return t.generationRuns=n,t.options=r.config,r.spec},output:async(e,t,n)=>{await $(n,(0,o.useExecution)().cwd)},generator:async e=>{let t=(0,o.useExecution)();return se(t.generationRuns&&t.generationRuns.length>0?t.generationRuns:[{spec:e,config:t.options}])}});exports.DEFAULT_TOKEN_PATH_CANDIDATES=i.y,exports.FONT_EXTENSIONS=r.h,exports.FONT_FORMAT_FROM_EXTENSION=r.g,exports.GENERIC_FALLBACK_FROM_ROLE=r._,exports.MONO_ROLES=r.v,exports.RAZORWIND_INFER_PREPROCESSOR=i.o,exports.SANS_ROLES=r.y,exports.THEME_BASENAME_PATTERN=i.b,exports.TOKEN_DIRECTORY_GLOB=i.x,exports.TOKEN_FILE_EXTENSIONS=i.S,exports.TYPE_ALIASES=i.w,exports.TYPE_PATH_HINTS=i.T,exports.WEIGHT_FROM_SUFFIX=r.b,exports.WINDIE_PARSERS=i.C,exports.razorwindParsers=i.C,exports.canonicalizeTokenType=i.E,exports.copyFontFiles=r.m,exports.cssFontFamily=r.s,exports.defineConfig=ze,exports.definePlugin=a.definePlugin,exports.fontFamilyName=r.c,exports.generateAllPluginDocuments=se,exports.generatePluginDocuments=oe,exports.generator=Be,exports.getExtractionHooks=i.s,exports.getRazorwindParserHooks=i.c,exports.getRazorwindPreprocessorHooks=i.l,exports.inferTypeFromPath=i.h,exports.inferValue=i.g,exports.isEmptyFonts=r.t,exports.isEmptyTokens=i.t,exports.loadComponents=I,exports.loadFonts=r.a,exports.loadIcons=q,exports.loadSchemaMetaFromPackageJson=De,exports.loadTokens=i.n,exports.loadTokensOrThrow=i.r,exports.mergeFonts=r.n,exports.nestFlatTokens=i._,exports.normalizeRepository=O,exports.normalizeTokenTree=i.v,exports.parseCssCustomProperties=i.m,exports.parseCssFonts=r.r,exports.parseFontFilename=r.o,exports.pickFontByRole=r.i,exports.prepareGenerationRuns=Le,exports.prepareSpec=Ie,exports.prependFontCss=r.l,exports.razorwindInferPreprocessor=i.u,exports.registerRazorwindHooks=i.d,exports.registerRazorwindParsers=i.f,exports.renderFontCss=r.u,exports.renderGoogleFontImports=r.d,exports.renderLocalFontFaces=r.f,exports.resolveConfig=Fe,exports.resolveConfigs=Q,exports.resolveSchemaMeta=Oe,exports.resolveTokensSource=i.i,exports.schemaMetaFromConfig=X,exports.schemaMetaFromPackageJson=Y,exports.styleDictionaryLogOptions=i.p,exports.themeKeyFromPath=i.a,exports.themesForGeneration=T,exports.toGoogleFontsCssUrl=r.p,exports.uniquePlugins=ke,exports.writeGeneratedDocuments=$;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { O as Components, a as Icons, t as Schema } from "./schema-BwOBgJIM.cjs";
|
|
2
2
|
import "./index-CwN0c1Q4.cjs";
|
|
3
|
-
import { a as UserConfigFn, c as UserConfigParams, d as TokensPreprocessor, i as UserConfigExport, l as Plugin, n as Options, o as UserConfigFnObject, r as UserConfig, s as UserConfigFnPromise, t as Config, u as TokensParser } from "./config-
|
|
4
|
-
import {
|
|
5
|
-
import { t as definePlugin } from "./plugin-
|
|
6
|
-
import { S as WEIGHT_FROM_SUFFIX, _ as FONT_EXTENSIONS, a as ParsedFontFilename, b as MONO_ROLES, c as RenderFontCssOptions, d as prependFontCss, f as renderFontCss, g as copyFontFiles, h as toGoogleFontsCssUrl, i as pickFontByRole, l as cssFontFamily, m as renderLocalFontFaces, n as mergeFonts, o as loadFonts, p as renderGoogleFontImports, r as parseCssFonts, s as parseFontFilename, t as isEmptyFonts, u as fontFamilyName, v as FONT_FORMAT_FROM_EXTENSION, x as SANS_ROLES, y as GENERIC_FALLBACK_FROM_ROLE } from "./index-
|
|
7
|
-
import { A as TOKEN_FILE_EXTENSIONS, C as nestFlatTokens, D as RazorwindParserName, E as DEFAULT_TOKEN_PATH_CANDIDATES, M as TYPE_PATH_HINTS, O as THEME_BASENAME_PATTERN, S as inferValue, T as parseCssCustomProperties, _ as ResolvedTokensSource, a as getRazorwindParserHooks, b as InferredTokenType, c as registerRazorwindHooks, d as LoadTokensOptions, f as LoadedTokens, g as ResolveTokensPathOptions, h as loadTokensOrThrow, i as getExtractionHooks, j as TOKEN_PARSER_NAMES, k as TOKEN_DIRECTORY_GLOB, l as registerRazorwindParsers, m as loadTokens, n as RAZORWIND_INFER_PREPROCESSOR, o as getRazorwindPreprocessorHooks, p as isEmptyTokens, r as StyleDictionaryRegisterTarget, s as razorwindInferPreprocessor, t as ExtractionHooks, u as styleDictionaryLogOptions, v as resolveTokensSource, w as normalizeTokenTree, x as inferTypeFromPath, y as themeKeyFromPath } from "./index-
|
|
3
|
+
import { a as UserConfigFn, c as UserConfigParams, d as TokensPreprocessor, i as UserConfigExport, l as Plugin, n as Options, o as UserConfigFnObject, r as UserConfig, s as UserConfigFnPromise, t as Config, u as TokensParser } from "./config-jPfyBr8C.cjs";
|
|
4
|
+
import { a as TokenSet } from "./flatten-tokens-DWbPW_3z.cjs";
|
|
5
|
+
import { t as definePlugin } from "./plugin-CSC1jRVg.cjs";
|
|
6
|
+
import { S as WEIGHT_FROM_SUFFIX, _ as FONT_EXTENSIONS, a as ParsedFontFilename, b as MONO_ROLES, c as RenderFontCssOptions, d as prependFontCss, f as renderFontCss, g as copyFontFiles, h as toGoogleFontsCssUrl, i as pickFontByRole, l as cssFontFamily, m as renderLocalFontFaces, n as mergeFonts, o as loadFonts, p as renderGoogleFontImports, r as parseCssFonts, s as parseFontFilename, t as isEmptyFonts, u as fontFamilyName, v as FONT_FORMAT_FROM_EXTENSION, x as SANS_ROLES, y as GENERIC_FALLBACK_FROM_ROLE } from "./index-VmrytwDm.cjs";
|
|
7
|
+
import { A as TOKEN_FILE_EXTENSIONS, C as nestFlatTokens, D as RazorwindParserName, E as DEFAULT_TOKEN_PATH_CANDIDATES, M as TYPE_ALIASES, N as TYPE_PATH_HINTS, O as THEME_BASENAME_PATTERN, P as canonicalizeTokenType, S as inferValue, T as parseCssCustomProperties, _ as ResolvedTokensSource, a as getRazorwindParserHooks, b as InferredTokenType, c as registerRazorwindHooks, d as LoadTokensOptions, f as LoadedTokens, g as ResolveTokensPathOptions, h as loadTokensOrThrow, i as getExtractionHooks, j as TOKEN_PARSER_NAMES, k as TOKEN_DIRECTORY_GLOB, l as registerRazorwindParsers, m as loadTokens, n as RAZORWIND_INFER_PREPROCESSOR, o as getRazorwindPreprocessorHooks, p as isEmptyTokens, r as StyleDictionaryRegisterTarget, s as razorwindInferPreprocessor, t as ExtractionHooks, u as styleDictionaryLogOptions, v as resolveTokensSource, w as normalizeTokenTree, x as inferTypeFromPath, y as themeKeyFromPath } from "./index-D6x2Pe2v.cjs";
|
|
8
8
|
import StyleDictionary from "style-dictionary";
|
|
9
9
|
import { ExecutionContext, GeneratedDocument, GeneratorConfig } from "@power-plant/core";
|
|
10
10
|
//#region src/lib/generate.d.ts
|
|
@@ -21,8 +21,13 @@ interface GenerationRun {
|
|
|
21
21
|
/**
|
|
22
22
|
* Theme sets that should each receive a dedicated generator pass.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* Skips the shared `base` primitive set and color-variant expansions of it
|
|
25
|
+
* (`baseDimmed`, `base-high-contrast`, …). Those tokens are already merged
|
|
26
|
+
* into each real theme.
|
|
27
|
+
*
|
|
28
|
+
* Returns an empty array when tokens are a single tree (or only one named
|
|
29
|
+
* theme with nothing stripped), so callers run plugins once against the
|
|
30
|
+
* original spec.
|
|
26
31
|
*/
|
|
27
32
|
declare function themesForGeneration(tokens: Schema["tokens"]): TokenSet[];
|
|
28
33
|
/**
|
|
@@ -31,6 +36,7 @@ declare function themesForGeneration(tokens: Schema["tokens"]): TokenSet[];
|
|
|
31
36
|
* When {@link Schema.tokens} is a multi-theme record, each theme is generated
|
|
32
37
|
* separately: titles gain ` (<Theme>)`, and output file paths gain
|
|
33
38
|
* `-<theme>` before the extension (`tokens.css` → `tokens-dark.css`).
|
|
39
|
+
* Shared `base` files (and `base*` color-variant expansions) are omitted.
|
|
34
40
|
*/
|
|
35
41
|
declare function generatePluginDocuments(spec: Schema, config: Config): Promise<Record<string, GeneratedDocument>>;
|
|
36
42
|
/**
|
|
@@ -209,5 +215,5 @@ declare module "@power-plant/core" {
|
|
|
209
215
|
*/
|
|
210
216
|
declare const generator: import("@power-plant/core").GeneratorConfigObject<Schema, Options, any>;
|
|
211
217
|
//#endregion
|
|
212
|
-
export { type Config, DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, FONT_EXTENSIONS, FONT_FORMAT_FROM_EXTENSION, GENERIC_FALLBACK_FROM_ROLE, GenerationRun, type Generator, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, MONO_ROLES, type Options, type ParsedFontFilename, type Plugin, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type RenderFontCssOptions, type ResolveTokensPathOptions, type ResolvedTokensSource, SANS_ROLES, type SchemaMeta, type StyleDictionaryRegisterTarget, THEME_BASENAME_PATTERN, TOKEN_DIRECTORY_GLOB, TOKEN_FILE_EXTENSIONS, TYPE_PATH_HINTS, type TokensParser, type TokensPreprocessor, type UserConfig, type UserConfigExport, type UserConfigFn, type UserConfigFnObject, type UserConfigFnPromise, type UserConfigParams, WEIGHT_FROM_SUFFIX, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, copyFontFiles, cssFontFamily, defineConfig, definePlugin, fontFamilyName, generateAllPluginDocuments, generatePluginDocuments, generator, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, isEmptyFonts, isEmptyTokens, loadComponents, loadFonts, loadIcons, loadSchemaMetaFromPackageJson, loadTokens, loadTokensOrThrow, mergeFonts, nestFlatTokens, normalizeUrl as normalizeRepository, normalizeTokenTree, parseCssCustomProperties, parseCssFonts, parseFontFilename, pickFontByRole, prepareGenerationRuns, prepareSpec, prependFontCss, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, renderFontCss, renderGoogleFontImports, renderLocalFontFaces, resolveConfig, resolveConfigs, resolveSchemaMeta, resolveTokensSource, schemaMetaFromConfig, schemaMetaFromPackageJson, styleDictionaryLogOptions, themeKeyFromPath, themesForGeneration, toGoogleFontsCssUrl, uniquePlugins, writeGeneratedDocuments };
|
|
218
|
+
export { type Config, DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, FONT_EXTENSIONS, FONT_FORMAT_FROM_EXTENSION, GENERIC_FALLBACK_FROM_ROLE, GenerationRun, type Generator, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, MONO_ROLES, type Options, type ParsedFontFilename, type Plugin, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type RenderFontCssOptions, type ResolveTokensPathOptions, type ResolvedTokensSource, SANS_ROLES, type SchemaMeta, type StyleDictionaryRegisterTarget, THEME_BASENAME_PATTERN, TOKEN_DIRECTORY_GLOB, TOKEN_FILE_EXTENSIONS, TYPE_ALIASES, TYPE_PATH_HINTS, type TokensParser, type TokensPreprocessor, type UserConfig, type UserConfigExport, type UserConfigFn, type UserConfigFnObject, type UserConfigFnPromise, type UserConfigParams, WEIGHT_FROM_SUFFIX, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, canonicalizeTokenType, copyFontFiles, cssFontFamily, defineConfig, definePlugin, fontFamilyName, generateAllPluginDocuments, generatePluginDocuments, generator, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, isEmptyFonts, isEmptyTokens, loadComponents, loadFonts, loadIcons, loadSchemaMetaFromPackageJson, loadTokens, loadTokensOrThrow, mergeFonts, nestFlatTokens, normalizeUrl as normalizeRepository, normalizeTokenTree, parseCssCustomProperties, parseCssFonts, parseFontFilename, pickFontByRole, prepareGenerationRuns, prepareSpec, prependFontCss, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, renderFontCss, renderGoogleFontImports, renderLocalFontFaces, resolveConfig, resolveConfigs, resolveSchemaMeta, resolveTokensSource, schemaMetaFromConfig, schemaMetaFromPackageJson, styleDictionaryLogOptions, themeKeyFromPath, themesForGeneration, toGoogleFontsCssUrl, uniquePlugins, writeGeneratedDocuments };
|
|
213
219
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/lib/generate.ts","../src/lib/resolve-config.ts","../src/config.ts","../src/lib/components/load.ts","../src/lib/icons/load.ts","../src/lib/meta/load.ts","../src/lib/meta/normalize-url.ts","../src/lib/prepare.ts","../src/lib/write-documents.ts","../src/types/base.ts","../src/index.ts"],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/lib/generate.ts","../src/lib/resolve-config.ts","../src/config.ts","../src/lib/components/load.ts","../src/lib/icons/load.ts","../src/lib/meta/load.ts","../src/lib/meta/normalize-url.ts","../src/lib/prepare.ts","../src/lib/write-documents.ts","../src/types/base.ts","../src/index.ts"],"mappings":";;;;;;;;;;;;;;;;UAwCiB;EACf,MAAM;EACN,QAAQ;;;;;;;;;;;;;iBAcM,oBAAoB,QAAQ,mBAAmB;;;;;;;;;iBA6DzC,wBACpB,MAAM,QACN,QAAQ,SACP,QAAQ,eAAe;;;;;;;;;iBA6BJ,2BACpB,MAAM,kBACL,QAAQ,eAAe;;;;;;;;;iBC1GV,cAAc,SAAS,WAAW;;;;;;;;;;;iBAsJ5B,eACpB,aACA,SAAS,UACR,QAAQ;;;;;;;;;;;iBA6MW,cACpB,aACA,SAAS,UACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBCnWK,aAAa,QAAQ,aAAa;iBAClC,aAAa,QAAQ,eAAe;iBACpC,aAAa,QAAQ,QAAQ,cAAc,QAAQ;iBACnD,aACd,QAAQ,QAAQ,gBACf,QAAQ;iBACK,aAAa,QAAQ,qBAAqB;iBAC1C,aAAa,QAAQ,sBAAsB;iBAC3C,aAAa,QAAQ,eAAe;iBACpC,aAAa,QAAQ,mBAAmB;;;;;;;;;;;;;iBCsalC,eACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;;;;;;;iBClGW,UACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;KCtWC,aAAa,KACvB;;;;;iBAgBc,0BACd,KAAK,0BACJ;;;;iBAqFa,qBAAqB,QAAQ,aAAa;;;;iBA4BpC,8BACpB,cACC,QAAQ;;;;iBAmBW,kBACpB,aACA,QAAQ,aACP,QAAQ;;;;;;iBCtJK,aAAa;;;;;;;iBCIP,YACpB,SAAS,iBAAiB,QAAQ,gBACjC,QAAQ;;;;;iBA+CW,sBACpB,SAAS,iBAAiB,QAAQ,eAClC,SAAS,UACR,QAAQ;;;;;;;;;;;;;iBC5DW,wBACpB,WAAW,eAAe,gCAC1B,cACC;;;KCdS,UAAU,oCAAoC,gBACxD,QACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;YCAU;IACR,IAAI;IACJ,iBAAiB;;;;;;;;;;;cAgBR,uCAAS,sBAAA,QAAA"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { O as Components, a as Icons, t as Schema } from "./schema-BwOBgJIM.mjs";
|
|
2
2
|
import "./index-D5L2WXYk.mjs";
|
|
3
|
-
import { a as UserConfigFn, c as UserConfigParams, d as TokensPreprocessor, i as UserConfigExport, l as Plugin, n as Options, o as UserConfigFnObject, r as UserConfig, s as UserConfigFnPromise, t as Config, u as TokensParser } from "./config-
|
|
4
|
-
import {
|
|
5
|
-
import { t as definePlugin } from "./plugin-
|
|
6
|
-
import { S as WEIGHT_FROM_SUFFIX, _ as FONT_EXTENSIONS, a as ParsedFontFilename, b as MONO_ROLES, c as RenderFontCssOptions, d as prependFontCss, f as renderFontCss, g as copyFontFiles, h as toGoogleFontsCssUrl, i as pickFontByRole, l as cssFontFamily, m as renderLocalFontFaces, n as mergeFonts, o as loadFonts, p as renderGoogleFontImports, r as parseCssFonts, s as parseFontFilename, t as isEmptyFonts, u as fontFamilyName, v as FONT_FORMAT_FROM_EXTENSION, x as SANS_ROLES, y as GENERIC_FALLBACK_FROM_ROLE } from "./index-
|
|
7
|
-
import { A as TOKEN_FILE_EXTENSIONS, C as nestFlatTokens, D as RazorwindParserName, E as DEFAULT_TOKEN_PATH_CANDIDATES, M as TYPE_PATH_HINTS, O as THEME_BASENAME_PATTERN, S as inferValue, T as parseCssCustomProperties, _ as ResolvedTokensSource, a as getRazorwindParserHooks, b as InferredTokenType, c as registerRazorwindHooks, d as LoadTokensOptions, f as LoadedTokens, g as ResolveTokensPathOptions, h as loadTokensOrThrow, i as getExtractionHooks, j as TOKEN_PARSER_NAMES, k as TOKEN_DIRECTORY_GLOB, l as registerRazorwindParsers, m as loadTokens, n as RAZORWIND_INFER_PREPROCESSOR, o as getRazorwindPreprocessorHooks, p as isEmptyTokens, r as StyleDictionaryRegisterTarget, s as razorwindInferPreprocessor, t as ExtractionHooks, u as styleDictionaryLogOptions, v as resolveTokensSource, w as normalizeTokenTree, x as inferTypeFromPath, y as themeKeyFromPath } from "./index-
|
|
3
|
+
import { a as UserConfigFn, c as UserConfigParams, d as TokensPreprocessor, i as UserConfigExport, l as Plugin, n as Options, o as UserConfigFnObject, r as UserConfig, s as UserConfigFnPromise, t as Config, u as TokensParser } from "./config-B1rsPTVV.mjs";
|
|
4
|
+
import { a as TokenSet } from "./flatten-tokens-Dz4e2IHx.mjs";
|
|
5
|
+
import { t as definePlugin } from "./plugin-DBrXhsY0.mjs";
|
|
6
|
+
import { S as WEIGHT_FROM_SUFFIX, _ as FONT_EXTENSIONS, a as ParsedFontFilename, b as MONO_ROLES, c as RenderFontCssOptions, d as prependFontCss, f as renderFontCss, g as copyFontFiles, h as toGoogleFontsCssUrl, i as pickFontByRole, l as cssFontFamily, m as renderLocalFontFaces, n as mergeFonts, o as loadFonts, p as renderGoogleFontImports, r as parseCssFonts, s as parseFontFilename, t as isEmptyFonts, u as fontFamilyName, v as FONT_FORMAT_FROM_EXTENSION, x as SANS_ROLES, y as GENERIC_FALLBACK_FROM_ROLE } from "./index-nRnX_NsH.mjs";
|
|
7
|
+
import { A as TOKEN_FILE_EXTENSIONS, C as nestFlatTokens, D as RazorwindParserName, E as DEFAULT_TOKEN_PATH_CANDIDATES, M as TYPE_ALIASES, N as TYPE_PATH_HINTS, O as THEME_BASENAME_PATTERN, P as canonicalizeTokenType, S as inferValue, T as parseCssCustomProperties, _ as ResolvedTokensSource, a as getRazorwindParserHooks, b as InferredTokenType, c as registerRazorwindHooks, d as LoadTokensOptions, f as LoadedTokens, g as ResolveTokensPathOptions, h as loadTokensOrThrow, i as getExtractionHooks, j as TOKEN_PARSER_NAMES, k as TOKEN_DIRECTORY_GLOB, l as registerRazorwindParsers, m as loadTokens, n as RAZORWIND_INFER_PREPROCESSOR, o as getRazorwindPreprocessorHooks, p as isEmptyTokens, r as StyleDictionaryRegisterTarget, s as razorwindInferPreprocessor, t as ExtractionHooks, u as styleDictionaryLogOptions, v as resolveTokensSource, w as normalizeTokenTree, x as inferTypeFromPath, y as themeKeyFromPath } from "./index-52XD5ztc.mjs";
|
|
8
8
|
import { ExecutionContext, GeneratedDocument, GeneratorConfig } from "@power-plant/core";
|
|
9
9
|
import StyleDictionary from "style-dictionary";
|
|
10
10
|
//#region src/lib/generate.d.ts
|
|
@@ -21,8 +21,13 @@ interface GenerationRun {
|
|
|
21
21
|
/**
|
|
22
22
|
* Theme sets that should each receive a dedicated generator pass.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* Skips the shared `base` primitive set and color-variant expansions of it
|
|
25
|
+
* (`baseDimmed`, `base-high-contrast`, …). Those tokens are already merged
|
|
26
|
+
* into each real theme.
|
|
27
|
+
*
|
|
28
|
+
* Returns an empty array when tokens are a single tree (or only one named
|
|
29
|
+
* theme with nothing stripped), so callers run plugins once against the
|
|
30
|
+
* original spec.
|
|
26
31
|
*/
|
|
27
32
|
declare function themesForGeneration(tokens: Schema["tokens"]): TokenSet[];
|
|
28
33
|
/**
|
|
@@ -31,6 +36,7 @@ declare function themesForGeneration(tokens: Schema["tokens"]): TokenSet[];
|
|
|
31
36
|
* When {@link Schema.tokens} is a multi-theme record, each theme is generated
|
|
32
37
|
* separately: titles gain ` (<Theme>)`, and output file paths gain
|
|
33
38
|
* `-<theme>` before the extension (`tokens.css` → `tokens-dark.css`).
|
|
39
|
+
* Shared `base` files (and `base*` color-variant expansions) are omitted.
|
|
34
40
|
*/
|
|
35
41
|
declare function generatePluginDocuments(spec: Schema, config: Config): Promise<Record<string, GeneratedDocument>>;
|
|
36
42
|
/**
|
|
@@ -209,5 +215,5 @@ declare module "@power-plant/core" {
|
|
|
209
215
|
*/
|
|
210
216
|
declare const generator: import("@power-plant/core").GeneratorConfigObject<Schema, Options, any>;
|
|
211
217
|
//#endregion
|
|
212
|
-
export { type Config, DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, FONT_EXTENSIONS, FONT_FORMAT_FROM_EXTENSION, GENERIC_FALLBACK_FROM_ROLE, GenerationRun, type Generator, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, MONO_ROLES, type Options, type ParsedFontFilename, type Plugin, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type RenderFontCssOptions, type ResolveTokensPathOptions, type ResolvedTokensSource, SANS_ROLES, type SchemaMeta, type StyleDictionaryRegisterTarget, THEME_BASENAME_PATTERN, TOKEN_DIRECTORY_GLOB, TOKEN_FILE_EXTENSIONS, TYPE_PATH_HINTS, type TokensParser, type TokensPreprocessor, type UserConfig, type UserConfigExport, type UserConfigFn, type UserConfigFnObject, type UserConfigFnPromise, type UserConfigParams, WEIGHT_FROM_SUFFIX, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, copyFontFiles, cssFontFamily, defineConfig, definePlugin, fontFamilyName, generateAllPluginDocuments, generatePluginDocuments, generator, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, isEmptyFonts, isEmptyTokens, loadComponents, loadFonts, loadIcons, loadSchemaMetaFromPackageJson, loadTokens, loadTokensOrThrow, mergeFonts, nestFlatTokens, normalizeUrl as normalizeRepository, normalizeTokenTree, parseCssCustomProperties, parseCssFonts, parseFontFilename, pickFontByRole, prepareGenerationRuns, prepareSpec, prependFontCss, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, renderFontCss, renderGoogleFontImports, renderLocalFontFaces, resolveConfig, resolveConfigs, resolveSchemaMeta, resolveTokensSource, schemaMetaFromConfig, schemaMetaFromPackageJson, styleDictionaryLogOptions, themeKeyFromPath, themesForGeneration, toGoogleFontsCssUrl, uniquePlugins, writeGeneratedDocuments };
|
|
218
|
+
export { type Config, DEFAULT_TOKEN_PATH_CANDIDATES, type ExtractionHooks, FONT_EXTENSIONS, FONT_FORMAT_FROM_EXTENSION, GENERIC_FALLBACK_FROM_ROLE, GenerationRun, type Generator, type InferredTokenType, type LoadTokensOptions, type LoadedTokens, MONO_ROLES, type Options, type ParsedFontFilename, type Plugin, RAZORWIND_INFER_PREPROCESSOR, type RazorwindParserName, type RenderFontCssOptions, type ResolveTokensPathOptions, type ResolvedTokensSource, SANS_ROLES, type SchemaMeta, type StyleDictionaryRegisterTarget, THEME_BASENAME_PATTERN, TOKEN_DIRECTORY_GLOB, TOKEN_FILE_EXTENSIONS, TYPE_ALIASES, TYPE_PATH_HINTS, type TokensParser, type TokensPreprocessor, type UserConfig, type UserConfigExport, type UserConfigFn, type UserConfigFnObject, type UserConfigFnPromise, type UserConfigParams, WEIGHT_FROM_SUFFIX, TOKEN_PARSER_NAMES as WINDIE_PARSERS, TOKEN_PARSER_NAMES as razorwindParsers, canonicalizeTokenType, copyFontFiles, cssFontFamily, defineConfig, definePlugin, fontFamilyName, generateAllPluginDocuments, generatePluginDocuments, generator, getExtractionHooks, getRazorwindParserHooks, getRazorwindPreprocessorHooks, inferTypeFromPath, inferValue, isEmptyFonts, isEmptyTokens, loadComponents, loadFonts, loadIcons, loadSchemaMetaFromPackageJson, loadTokens, loadTokensOrThrow, mergeFonts, nestFlatTokens, normalizeUrl as normalizeRepository, normalizeTokenTree, parseCssCustomProperties, parseCssFonts, parseFontFilename, pickFontByRole, prepareGenerationRuns, prepareSpec, prependFontCss, razorwindInferPreprocessor, registerRazorwindHooks, registerRazorwindParsers, renderFontCss, renderGoogleFontImports, renderLocalFontFaces, resolveConfig, resolveConfigs, resolveSchemaMeta, resolveTokensSource, schemaMetaFromConfig, schemaMetaFromPackageJson, styleDictionaryLogOptions, themeKeyFromPath, themesForGeneration, toGoogleFontsCssUrl, uniquePlugins, writeGeneratedDocuments };
|
|
213
219
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,d as t,h as n,s as r}from"./utils-CDYdsyyW.mjs";import{a as i,c as a,i as o,l as s,r as c,s as l}from"./schema-CXK5pVmJ.mjs";import{_ as u,a as d,b as f,c as p,d as ee,f as te,g as ne,h as re,i as ie,l as ae,m as oe,n as se,o as ce,p as le,r as ue,s as de,t as fe,u as pe,v as me,y as he}from"./fonts-BiuIJVev.mjs";import{C as m,S as ge,_ as _e,a as ve,b as ye,c as be,d as xe,f as Se,g as Ce,h as we,i as Te,l as Ee,m as De,n as Oe,o as ke,p as Ae,r as je,s as Me,t as h,u as Ne,v as Pe,w as Fe,x as Ie,y as Le}from"./tokens-DFYNBFFR.mjs";import{definePlugin as Re}from"./plugin.mjs";import{defineGenerator as ze,defineSchema as Be,useExecution as g}from"@power-plant/core";import{createDefu as _,defu as v}from"defu";import{dirname as Ve,isAbsolute as y,resolve as b}from"node:path";import{titleCase as x}from"@stryke/string-format/title-case";import{existsSync as S}from"@stryke/fs/exists";import{isDirectory as C}from"@stryke/fs/is-file";import{readJsonFile as w}from"@stryke/fs/json";import{listFiles as He}from"@stryke/fs/list-files";import{appendPath as T}from"@stryke/path/append";import{findFileExtensionSafe as E,findFileName as D,findFolderName as O}from"@stryke/path/file-path-fns";import{joinPaths as k}from"@stryke/path/join";import{isSetObject as A}from"@stryke/type-checks/is-set-object";import{isSetString as j}from"@stryke/type-checks/is-set-string";import{mkdir as Ue,readFile as M,readdir as N,writeFile as We}from"node:fs/promises";import{getEnvPaths as Ge}from"@stryke/env/get-env-paths";import{findFilePath as P}from"@stryke/path/find";import{replacePath as F}from"@stryke/path/replace";import{isFunction as Ke}from"@stryke/type-checks/is-function";import{loadConfig as I}from"c12";import{createJiti as qe}from"jiti";import{existsSync as L}from"node:fs";import Je from"node:os";var Ye=`0.0.48`;const R=`base`;function z(e){let t=n(e).filter(e=>e.id!==R);return t.length>1?t:[]}function Xe(e,n){let r=e.find(e=>e.id===R);return!r||n.id===R?n.tokens:t(n.tokens,r.tokens)}function Ze(t,n,r){return{...t,theme:n.id,title:e(t.title,n.id)??t.title,tokens:Xe(r,n)}}function Qe(t,n){let r=e(t.title,n.id);return r?{...t,title:r}:t}async function B(e,t){let n={};for(let r of t.plugins.filter(e=>e.generate)){let i=await r.generate(e,t);n=v(i,n)}return n}async function V(e,t){let i=n(e.tokens),a=z(e.tokens);if(a.length===0)return B(e,t);let o={};for(let n of a){let a=await B(Ze(e,n,i),Qe(t,n));o=v(r(a,n.id),o)}return o}async function H(e){let t={};for(let n of e)Object.assign(t,await V(n.spec,n.config));return t}function U(e){return!!(j(e)||A(e)&&`url`in e&&j(e.url))}function W(e){if(j(e))return e;if(A(e)&&`url`in e&&j(e.url))return e.url}const $e=a.partial(),et=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),tt=_((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function nt(e,t){return y(t)?t:b(e,t)}function rt(e){return Array.isArray(e)?e.filter(j):j(e)?[e]:[]}function it(e){let t=e.toLowerCase();if(et.has(t))return t}function at(e){let t=E(e)?.toLowerCase();return!!(t&&et.has(t))}function G(e){if(!e)return;let t=l.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=l.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function ot(e){if(!e)return;let t=s.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){if(j(t)){let e=D(t,{withExtension:!1})||t,r=s.safeParse({name:e,path:t});r.success&&n.push(r.data);continue}let e=s.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function st(e){if(!A(e))return;let{files:t,usage:n,...r}=e,i=$e.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function ct(e){return A(e)&&`path`in e}async function lt(e){let t=k(e,`package.json`);if(!S(t))return;let n;try{n=await w(t)}catch{return}let r={};j(n.name)&&(r.name=n.name,r.title=n.name),j(n.description)&&(r.description=n.description),j(n.version)&&(r.version=n.version),j(n.homepage)&&(r.homepage=n.homepage);let i=W(n.repository);if(i&&(r.repository=i),A(n.dependencies)&&(r.dependencies=n.dependencies),A(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(j);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;ct(a)?s=G(a):A(a)&&(o=st(a),`files`in a&&(s=G(a.files)),`usage`in a&&(c=ot(a.usage)));let l=tt(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function ut(e){let t=k(e,`component.json`);if(!S(t))return;let n;try{n=await w(t)}catch{return}if(ct(n)||Array.isArray(n)){let e=G(n);if(e)return{files:e}}if(!A(n))return;let r=st(n)??{},i=`files`in n?G(n.files):void 0,a=`usage`in n?ot(n.usage):void 0;return i?.length&&(r.files=i),a?.length&&(r.usage=a),Object.keys(r).length>0?r:void 0}async function dt(e){try{return(await N(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&at(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function ft(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=T(t.path,e),r=E(t.path)??``,i=t.language??it(r),a=t.name||D(t.path,{withExtension:!1})||t.path,o=t.content===void 0?S(n)?await M(n,`utf8`):void 0:t.content;return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=k(e,`usage`);if(!S(n)||!C(n))return;let r=await dt(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=k(n,e),r=it(E(e)??``),i=D(e,{withExtension:!1})||e;return{name:i,title:x(i),path:t,content:await M(t,`utf8`),...r?{language:r}:{}}}))}async function pt(e,t){let n=t??(await He(e)).filter(e=>D(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(E(t))?`component`:`file`,path:t,content:await M(T(t,e),`utf8`)}:{type:/[tj]sx$/.test(E(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await M(T(t.path,e),`utf8`):void 0,path:T(t.path,e)}))}async function mt(e){let t=await lt(e),n=await ut(e);if(!t&&!n)return;let r=tt(n??{},t??{}),i=j(r.name)?r.name:O(e),o=j(r.title)?r.title:x(i),s=a.safeParse({...r,name:i,title:o});if(!s.success)return;let c=await ft(e,s.data.usage);return{...s.data,files:await pt(e,s.data.files),...c?.length?{usage:c}:{}}}async function ht(e){let t={},n=rt(e.options.componentsPath);for(let r of n){let n=nt(e.cwd,r);if(!(!S(n)||!C(n)))try{let e=await N(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await mt(k(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const gt=i.partial(),_t=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),K=_((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function vt(e,t){return y(t)?t:b(e,t)}function yt(e){return Array.isArray(e)?e.filter(j):j(e)?[e]:[]}function bt(e){let t=e.toLowerCase();if(_t.has(t))return t}function xt(e){let t=E(e)?.toLowerCase();return!!(t&&_t.has(t))}function St(e){return ye.test(e)}async function q(e){try{return(await N(e,{withFileTypes:!0})).filter(e=>e.isFile()&&xt(e.name)).map(e=>e.name)}catch{return[]}}function J(e){if(!e)return;let t=o.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=o.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function Ct(e){if(!A(e))return;let t=gt.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function wt(e){return A(e)&&`path`in e}async function Y(e,t,n){let r=T(e,t),i=bt(E(e)??``)??`file`,a=i===`svg`?await M(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function Tt(e){let t=k(e,`package.json`);if(!S(t))return;let n;try{n=await w(t)}catch{return}let r={};j(n.name)&&(r.name=n.name,r.title=n.name),j(n.description)&&(r.description=n.description),j(n.version)&&(r.version=n.version),j(n.homepage)&&(r.homepage=n.homepage);let i=W(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(j);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;wt(a)?s=J(a):A(a)&&(o=Ct(a),`files`in a&&(s=J(a.files)));let c=K(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function Et(e){let t=k(e,`icon.json`);if(!S(t))return;let n;try{n=await w(t)}catch{return}if(wt(n)||Array.isArray(n)){let e=J(n);if(e)return{files:e}}return Ct(n)}async function Dt(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=T(t.path,e),r=E(t.path)??``,i=t.type??bt(r)??`file`,a=t.content===void 0?i===`svg`?await M(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await q(e);return Promise.all(n.map(t=>Y(t,e)))}async function Ot(e){let t=await Tt(e),n=await Et(e),r=await q(e);if(!t&&!n&&r.length===0)return;let a=K(n??{},t??{}),o=j(a.name)?a.name:O(e),s=j(a.title)?a.title:x(o),c=i.safeParse({...a,name:o,title:s});if(c.success)return{...c.data,files:await Dt(e,c.data.files)}}function X(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:x(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function kt(e,t,n){let r=await q(e);for(let i of r){let r=D(i,{withExtension:!1});r&&X(n,r,await Y(i,e,t))}}async function At(e){let t={},n=yt(e.options.iconsPath);for(let r of n){let n=vt(e.cwd,r);if(!(!S(n)||!C(n)))try{let e=await N(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=k(n,r.name);if(r.isDirectory()){if(St(r.name)){await kt(e,r.name,t);continue}let n=await Ot(e);if(n){let e=t[n.name];t[n.name]=e?K(n,e):n}continue}if(r.isFile()&&xt(r.name)){let e=D(r.name,{withExtension:!1});if(!e)continue;X(t,e,await Y(r.name,n))}}}catch{continue}}return t}function Z(e,t){let n=e[t];return j(n)?n:void 0}function jt(e){let t={};j(e.name)&&(t.name=e.name),j(e.description)&&(t.description=e.description),j(e.homepage)&&(t.homepage=e.homepage);let n=W(e.repository);n&&(t.repository=n),j(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if(A(r)){let t=r,n=Z(t,`title`),a=Z(t,`name`),o=Z(t,`description`),s=Z(t,`homepage`),c=Z(t,`logo`),l=W(t.repository);a?i.name=a:j(e.name)&&(i.name=e.name),n?i.title=n:j(i.name)&&(i.title=x(i.name)),o?i.description=o:j(e.description)&&(i.description=e.description),s?i.homepage=s:U(e.homepage)?i.homepage=W(e.homepage):U(e.author)?i.homepage=W(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&U(e.maintainers[0])?i.homepage=W(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&U(e.contributors[0])?i.homepage=W(e.contributors[0]):U(e.bugs)&&(i.homepage=W(e.bugs)),c&&(i.logo=c),l?i.repository=l:U(e.repository)&&(i.repository=W(e.repository))}return v(i,t)}function Mt(e){let t={};return j(e.name)&&(t.name=e.name),j(e.title)&&(t.title=e.title),j(e.description)&&(t.description=e.description),j(e.repository)&&(t.repository=e.repository),j(e.homepage)&&(t.homepage=e.homepage),j(e.logo)&&(t.logo=e.logo),t}async function Nt(e){let t=k(e,`package.json`);if(!S(t))return{};let n;try{n=await w(t)}catch{return{}}return jt(n)}async function Pt(e,t){let n=await Nt(e),r=Mt(t);return v(r,n)}function Ft(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const It=Je.homedir();function Lt(e){return Array.isArray(e)?e.filter(e=>A(e)):[]}function Q(e){return Array.isArray(e)||!A(e)?{}:{...e}}const Rt=[`tokensPath`,`componentsPath`,`iconsPath`,`fontsPath`];function zt(e,t){let n={...e};for(let e of Rt)t[e]!=null&&delete n[e];return n}function Bt(e,t,n,r){let i=v({cwd:e,envPaths:r.envPaths},zt(t,n),n,r.workspaceLayer,r.environmentLayer,r.homeLayer,{componentsPath:e,iconsPath:k(e,`assets/icons`),fontsPath:k(e,`assets/fonts`),plugins:[]});if(Array.isArray(i.componentsPath)){let t=i.componentsPath.filter(j).map(e=>P(e));i.componentsPath=t.length>0?t:e}else i.componentsPath=j(i.componentsPath)?P(i.componentsPath):e;if(Array.isArray(i.iconsPath)){let t=i.iconsPath.filter(j).map(e=>P(e));i.iconsPath=t.length>0?t:k(e,`assets/icons`)}else i.iconsPath=j(i.iconsPath)?P(i.iconsPath):k(e,`assets/icons`);if(Array.isArray(i.fontsPath)){let t=i.fontsPath.filter(j).map(e=>P(e));i.fontsPath=t.length>0?t:k(e,`assets/fonts`)}else i.fontsPath=j(i.fontsPath)?P(i.fontsPath):k(e,`assets/fonts`);return i.plugins=Ft(Array.isArray(i.plugins)?i.plugins:[]),i.verbose=t.verbose===!0||n.verbose===!0,i}async function $(e,t){let n=t.configFile&&L(F(t.configFile,e))?F(t.configFile,e):t.configFile&&L(t.configFile)?t.configFile:L(k(e,`razorwind.${t.mode}.ts`))?k(e,`razorwind.${t.mode}.ts`):L(k(e,`razorwind.${t.mode}.js`))?k(e,`razorwind.${t.mode}.js`):L(k(e,`razorwind.${t.mode}.mts`))?k(e,`razorwind.${t.mode}.mts`):L(k(e,`razorwind.${t.mode}.mjs`))?k(e,`razorwind.${t.mode}.mjs`):L(k(e,`razorwind.${t.mode}.cjs`))?k(e,`razorwind.${t.mode}.cjs`):L(k(e,`razorwind.${t.mode}.cts`))?k(e,`razorwind.${t.mode}.cts`):L(k(e,`razorwind.${t.mode}.json`))?k(e,`razorwind.${t.mode}.json`):L(k(e,`razorwind.${t.mode}.yaml`))?k(e,`razorwind.${t.mode}.yaml`):L(k(e,`razorwind.${t.mode}.yml`))?k(e,`razorwind.${t.mode}.yml`):L(k(e,`razorwind.config.ts`))?k(e,`razorwind.config.ts`):L(k(e,`razorwind.config.js`))?k(e,`razorwind.config.js`):L(k(e,`razorwind.config.mts`))?k(e,`razorwind.config.mts`):L(k(e,`razorwind.config.mjs`))?k(e,`razorwind.config.mjs`):L(k(e,`razorwind.config.cjs`))?k(e,`razorwind.config.cjs`):L(k(e,`razorwind.config.cts`))?k(e,`razorwind.config.cts`):L(k(e,`razorwind.config.json`))?k(e,`razorwind.config.json`):L(k(e,`razorwind.config.yaml`))?k(e,`razorwind.config.yaml`):L(k(e,`razorwind.config.yml`))?k(e,`razorwind.config.yml`):void 0,r=Ge({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=qe(e,i),o=[{}];if(n){let r=y(n)?n:b(e,n),i=await a.import(r,{default:!0});if(i){let r=i;if(r=Ke(i)?await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):await Promise.resolve(i),Array.isArray(r)){let e=Lt(r);if(e.length===0)throw Error(`Razorwind config array is empty. Provide at least one configuration object.`);o=e.map(e=>({...e,configFile:n}))}else A(r)&&(o=[{...r,configFile:n}])}}let[s,c,l]=await Promise.all([I({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),I({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),I({cwd:It,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=Q(s?.config),d=n?y(n)?n:b(e,n):void 0,f=typeof s?.configFile==`string`?s.configFile:void 0;d&&f&&b(e,f)===d&&delete u.plugins;let p={envPaths:{...r,home:It},workspaceLayer:u,environmentLayer:Q(c?.config),homeLayer:Q(l?.config)};return o.map(n=>Bt(e,t,n,p))}async function Vt(e,t){let n=(await $(e,t))[0];if(!n)throw Error(`Unable to resolve Razorwind configuration.`);return n}async function Ht(e){if(e.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let t=e.options.tokens;(!t||h(t))&&(t=await Oe(e));let n={...await Pt(e.cwd,e.options),tokens:t??{},components:v(e.options.components??{},await ht(e)??{}),icons:v(e.options.icons??{},await At(e)??{}),fonts:v(e.options.fonts??{},await d(e)??{})};for(let t of e.options.plugins.filter(e=>e.extract))n=await t.extract(n,e.options);if(!n.tokens||h(n.tokens))throw Error(`Unable to load design tokens for the current workspace. Please ensure that Razorwind is configured correctly and that the tokens are available.`);for(let t of e.options.plugins.filter(e=>e.validate))await t.validate(n,e.options);return n}async function Ut(e,t){let n=await $(e.cwd,t),r=[];for(let t of n)e.options=t,r.push({spec:await Ht(e),config:t});return r}async function Wt(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=y(e)?e:b(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await Ue(Ve(a),{recursive:!0}),await We(a,o,`utf8`),n.push(a)}return n}function Gt(e){return e}const Kt=ze({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, icons, and fonts.`,version:Ye,tags:[`razorwind`,`dtcg`]},schema:Be({schema:c}),input:async e=>{let t=g(),n=await Ut(t,e),r=n[0];if(!r)throw Error(`Unable to resolve Razorwind configuration.`);return t.generationRuns=n,t.options=r.config,r.spec},output:async(e,t,n)=>{await Wt(n,g().cwd)},generator:async e=>{let t=g();return H(t.generationRuns&&t.generationRuns.length>0?t.generationRuns:[{spec:e,config:t.options}])}});export{Le as DEFAULT_TOKEN_PATH_CANDIDATES,re as FONT_EXTENSIONS,ne as FONT_FORMAT_FROM_EXTENSION,u as GENERIC_FALLBACK_FROM_ROLE,me as MONO_ROLES,ke as RAZORWIND_INFER_PREPROCESSOR,he as SANS_ROLES,ye as THEME_BASENAME_PATTERN,Ie as TOKEN_DIRECTORY_GLOB,ge as TOKEN_FILE_EXTENSIONS,Fe as TYPE_PATH_HINTS,f as WEIGHT_FROM_SUFFIX,m as WINDIE_PARSERS,m as razorwindParsers,oe as copyFontFiles,de as cssFontFamily,Gt as defineConfig,Re as definePlugin,p as fontFamilyName,H as generateAllPluginDocuments,V as generatePluginDocuments,Kt as generator,Me as getExtractionHooks,be as getRazorwindParserHooks,Ee as getRazorwindPreprocessorHooks,we as inferTypeFromPath,Ce as inferValue,fe as isEmptyFonts,h as isEmptyTokens,ht as loadComponents,d as loadFonts,At as loadIcons,Nt as loadSchemaMetaFromPackageJson,Oe as loadTokens,je as loadTokensOrThrow,se as mergeFonts,_e as nestFlatTokens,W as normalizeRepository,Pe as normalizeTokenTree,De as parseCssCustomProperties,ue as parseCssFonts,ce as parseFontFilename,ie as pickFontByRole,Ut as prepareGenerationRuns,Ht as prepareSpec,ae as prependFontCss,Ne as razorwindInferPreprocessor,xe as registerRazorwindHooks,Se as registerRazorwindParsers,pe as renderFontCss,ee as renderGoogleFontImports,te as renderLocalFontFaces,Vt as resolveConfig,$ as resolveConfigs,Pt as resolveSchemaMeta,Te as resolveTokensSource,Mt as schemaMetaFromConfig,jt as schemaMetaFromPackageJson,Ae as styleDictionaryLogOptions,ve as themeKeyFromPath,z as themesForGeneration,le as toGoogleFontsCssUrl,Ft as uniquePlugins,Wt as writeGeneratedDocuments};
|
|
1
|
+
import{_ as e,c as t,d as n,f as r,h as i,s as a}from"./utils-BC5zDVgP.mjs";import{a as o,c as s,i as c,l,r as u,s as d}from"./schema-CXK5pVmJ.mjs";import{_ as f,a as p,b as ee,c as te,d as ne,f as re,g as ie,h as ae,i as oe,l as se,m as ce,n as le,o as ue,p as de,r as fe,s as pe,t as me,u as he,v as ge,y as _e}from"./fonts-BiuIJVev.mjs";import{C as m,E as ve,S as ye,T as be,_ as xe,a as Se,b as Ce,c as we,d as Te,f as Ee,g as De,h as Oe,i as ke,l as Ae,m as je,n as h,o as Me,p as Ne,r as Pe,s as Fe,t as g,u as Ie,v as Le,w as Re,x as ze,y as Be}from"./tokens-SVzPsAYF.mjs";import{definePlugin as Ve}from"./plugin.mjs";import{defineGenerator as He,defineSchema as Ue,useExecution as _}from"@power-plant/core";import{createDefu as v,defu as y}from"defu";import{dirname as We,isAbsolute as b,resolve as x}from"node:path";import{titleCase as S}from"@stryke/string-format/title-case";import{existsSync as C}from"@stryke/fs/exists";import{isDirectory as w}from"@stryke/fs/is-file";import{readJsonFile as T}from"@stryke/fs/json";import{listFiles as Ge}from"@stryke/fs/list-files";import{appendPath as E}from"@stryke/path/append";import{findFileExtensionSafe as D,findFileName as O,findFolderName as k}from"@stryke/path/file-path-fns";import{joinPaths as A}from"@stryke/path/join";import{isSetObject as j}from"@stryke/type-checks/is-set-object";import{isSetString as M}from"@stryke/type-checks/is-set-string";import{mkdir as Ke,readFile as N,readdir as P,writeFile as qe}from"node:fs/promises";import{getEnvPaths as Je}from"@stryke/env/get-env-paths";import{findFilePath as F}from"@stryke/path/find";import{replacePath as I}from"@stryke/path/replace";import{isFunction as Ye}from"@stryke/type-checks/is-function";import{loadConfig as L}from"c12";import{createJiti as Xe}from"jiti";import{existsSync as R}from"node:fs";import Ze from"node:os";function z(t){let n=e(t),r=n.filter(e=>!i(e.id));return r.length===0||r.length===1&&n.length===1?[]:r}function Qe(e,t){let a=e.find(e=>e.id===r);return!a||i(t.id)?t.tokens:n(t.tokens,a.tokens)}function $e(e,n,r){return{...e,theme:n.id,title:t(e.title,n.id)??e.title,tokens:Qe(r,n)}}function et(e,n){let r=t(e.title,n.id);return r?{...e,title:r}:e}async function B(e,t){let n={};for(let r of t.plugins.filter(e=>e.generate)){let i=await r.generate(e,t);n=y(i,n)}return n}async function V(t,n){let r=e(t.tokens),i=z(t.tokens);if(i.length===0)return B(t,n);let o={};for(let e of i){let i=await B($e(t,e,r),et(n,e));o=y(a(i,e.id),o)}return o}async function tt(e){let t={};for(let n of e)Object.assign(t,await V(n.spec,n.config));return t}function H(e){return!!(M(e)||j(e)&&`url`in e&&M(e.url))}function U(e){if(M(e))return e;if(j(e)&&`url`in e&&M(e.url))return e.url}const nt=s.partial(),W=new Set([`tsx`,`jsx`,`ts`,`js`,`mdx`,`md`,`css`,`html`,`txt`]),rt=v((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function it(e,t){return b(t)?t:x(e,t)}function at(e){return Array.isArray(e)?e.filter(M):M(e)?[e]:[]}function ot(e){let t=e.toLowerCase();if(W.has(t))return t}function st(e){let t=D(e)?.toLowerCase();return!!(t&&W.has(t))}function G(e){if(!e)return;let t=d.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=d.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function ct(e){if(!e)return;let t=l.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){if(M(t)){let e=O(t,{withExtension:!1})||t,r=l.safeParse({name:e,path:t});r.success&&n.push(r.data);continue}let e=l.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function lt(e){if(!j(e))return;let{files:t,usage:n,...r}=e,i=nt.safeParse(r);if(i.success)return Object.keys(i.data).length>0?i.data:void 0}function ut(e){return j(e)&&`path`in e}async function dt(e){let t=A(e,`package.json`);if(!C(t))return;let n;try{n=await T(t)}catch{return}let r={};M(n.name)&&(r.name=n.name,r.title=n.name),M(n.description)&&(r.description=n.description),M(n.version)&&(r.version=n.version),M(n.homepage)&&(r.homepage=n.homepage);let i=U(n.repository);if(i&&(r.repository=i),j(n.dependencies)&&(r.dependencies=n.dependencies),j(n.devDependencies)&&(r.devDependencies=n.devDependencies),Array.isArray(n.keywords)){let e=n.keywords.filter(M);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s,c;ut(a)?s=G(a):j(a)&&(o=lt(a),`files`in a&&(s=G(a.files)),`usage`in a&&(c=ct(a.usage)));let l=rt(o??{},r);return s?.length&&(l.files=s),c?.length&&(l.usage=c),Object.keys(l).length>0?l:void 0}async function ft(e){let t=A(e,`component.json`);if(!C(t))return;let n;try{n=await T(t)}catch{return}if(ut(n)||Array.isArray(n)){let e=G(n);if(e)return{files:e}}if(!j(n))return;let r=lt(n)??{},i=`files`in n?G(n.files):void 0,a=`usage`in n?ct(n.usage):void 0;return i?.length&&(r.files=i),a?.length&&(r.usage=a),Object.keys(r).length>0?r:void 0}async function pt(e){try{return(await P(e,{withFileTypes:!0})).filter(e=>e.isFile()&&!e.name.startsWith(`.`)&&st(e.name)).map(e=>e.name).toSorted((e,t)=>e.localeCompare(t))}catch{return[]}}async function mt(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=E(t.path,e),r=D(t.path)??``,i=t.language??ot(r),a=t.name||O(t.path,{withExtension:!1})||t.path,o=t.content??(C(n)?await N(n,`utf8`):void 0);return{...t,name:a,path:n,...i?{language:i}:{},...o===void 0?{}:{content:o}}}));let n=A(e,`usage`);if(!C(n)||!w(n))return;let r=await pt(n);if(r.length!==0)return Promise.all(r.map(async e=>{let t=A(n,e),r=ot(D(e)??``),i=O(e,{withExtension:!1})||e;return{name:i,title:S(i),path:t,content:await N(t,`utf8`),...r?{language:r}:{}}}))}async function ht(e,t){let n=t??(await Ge(e)).filter(e=>O(e,{withExtension:!1})===`index`);return Promise.all(n.filter(Boolean).map(async t=>typeof t==`string`?{type:/[tj]sx$/.test(D(t))?`component`:`file`,path:t,content:await N(E(t,e),`utf8`)}:{type:/[tj]sx$/.test(D(t.path))?`component`:`file`,...t,content:t.content?t.content:t.path?await N(E(t.path,e),`utf8`):void 0,path:E(t.path,e)}))}async function gt(e){let t=await dt(e),n=await ft(e);if(!t&&!n)return;let r=rt(n??{},t??{}),i=M(r.name)?r.name:k(e),a=M(r.title)?r.title:S(i),o=s.safeParse({...r,name:i,title:a});if(!o.success)return;let c=await mt(e,o.data.usage);return{...o.data,files:await ht(e,o.data.files),...c?.length?{usage:c}:{}}}async function _t(e){let t={},n=at(e.options.componentsPath);for(let r of n){let n=it(e.cwd,r);if(!(!C(n)||!w(n)))try{let e=await P(n,{withFileTypes:!0});for(let r of e){if(!r.isDirectory()||r.name.startsWith(`.`))continue;let e=await gt(A(n,r.name));e&&(t[e.name]=e)}}catch{continue}}return t}const vt=o.partial(),yt=new Set([`svg`,`png`,`webp`,`jpg`,`jpeg`,`gif`,`ico`]),K=v((e,t,n)=>Array.isArray(n)?(e[t]=n,!0):!1);function bt(e,t){return b(t)?t:x(e,t)}function xt(e){return Array.isArray(e)?e.filter(M):M(e)?[e]:[]}function St(e){let t=e.toLowerCase();if(yt.has(t))return t}function Ct(e){let t=D(e)?.toLowerCase();return!!(t&&yt.has(t))}function wt(e){return Ce.test(e)}async function q(e){try{return(await P(e,{withFileTypes:!0})).filter(e=>e.isFile()&&Ct(e.name)).map(e=>e.name)}catch{return[]}}function J(e){if(!e)return;let t=c.safeParse(e);if(t.success)return[t.data];if(!Array.isArray(e))return;let n=[];for(let t of e){let e=c.safeParse(t);e.success&&n.push(e.data)}return n.length>0?n:void 0}function Tt(e){if(!j(e))return;let t=vt.safeParse(e);if(t.success)return Object.keys(t.data).length>0?t.data:void 0}function Et(e){return j(e)&&`path`in e}async function Y(e,t,n){let r=E(e,t),i=St(D(e)??``)??`file`,a=i===`svg`?await N(r,`utf8`):void 0;return{path:r,type:i,...n?{theme:n}:{},...a===void 0?{}:{content:a}}}async function Dt(e){let t=A(e,`package.json`);if(!C(t))return;let n;try{n=await T(t)}catch{return}let r={};M(n.name)&&(r.name=n.name,r.title=n.name),M(n.description)&&(r.description=n.description),M(n.version)&&(r.version=n.version),M(n.homepage)&&(r.homepage=n.homepage);let i=U(n.repository);if(i&&(r.repository=i),Array.isArray(n.keywords)){let e=n.keywords.filter(M);e.length>0&&(r.tags=e)}let a=n.razorwind,o,s;Et(a)?s=J(a):j(a)&&(o=Tt(a),`files`in a&&(s=J(a.files)));let c=K(o??{},r);return s?.length&&(c.files=s),Object.keys(c).length>0?c:void 0}async function Ot(e){let t=A(e,`icon.json`);if(!C(t))return;let n;try{n=await T(t)}catch{return}if(Et(n)||Array.isArray(n)){let e=J(n);if(e)return{files:e}}return Tt(n)}async function kt(e,t){if(t?.length)return Promise.all(t.map(async t=>{let n=E(t.path,e),r=D(t.path)??``,i=t.type??St(r)??`file`,a=t.content===void 0?i===`svg`?await N(n,`utf8`):void 0:t.content;return{...t,type:i,path:n,...a===void 0?{}:{content:a}}}));let n=await q(e);return Promise.all(n.map(t=>Y(t,e)))}async function At(e){let t=await Dt(e),n=await Ot(e),r=await q(e);if(!t&&!n&&r.length===0)return;let i=K(n??{},t??{}),a=M(i.name)?i.name:k(e),s=M(i.title)?i.title:S(a),c=o.safeParse({...i,name:a,title:s});if(c.success)return{...c.data,files:await kt(e,c.data.files)}}function jt(e,t,n){let r=e[t];if(!r){e[t]={name:t,title:S(t),files:[n]};return}let i=[...r.files??[]],a=i.findIndex(e=>e.path===n.path&&e.theme===n.theme);a>=0?i[a]=n:i.push(n),e[t]={...r,files:i}}async function Mt(e,t,n){let r=await q(e);for(let i of r){let r=O(i,{withExtension:!1});r&&jt(n,r,await Y(i,e,t))}}async function Nt(e){let t={},n=xt(e.options.iconsPath);for(let r of n){let n=bt(e.cwd,r);if(!(!C(n)||!w(n)))try{let e=await P(n,{withFileTypes:!0});for(let r of e){if(r.name.startsWith(`.`))continue;let e=A(n,r.name);if(r.isDirectory()){if(wt(r.name)){await Mt(e,r.name,t);continue}let n=await At(e);if(n){let e=t[n.name];t[n.name]=e?K(n,e):n}continue}if(r.isFile()&&Ct(r.name)){let e=O(r.name,{withExtension:!1});if(!e)continue;jt(t,e,await Y(r.name,n))}}}catch{continue}}return t}function X(e,t){let n=e[t];return M(n)?n:void 0}function Pt(e){let t={};M(e.name)&&(t.name=e.name),M(e.description)&&(t.description=e.description),M(e.homepage)&&(t.homepage=e.homepage);let n=U(e.repository);n&&(t.repository=n),M(e.logo)&&(t.logo=e.logo);let r=e.razorwind,i={};if(j(r)){let t=r,n=X(t,`title`),a=X(t,`name`),o=X(t,`description`),s=X(t,`homepage`),c=X(t,`logo`),l=U(t.repository);a?i.name=a:M(e.name)&&(i.name=e.name),n?i.title=n:M(i.name)&&(i.title=S(i.name)),o?i.description=o:M(e.description)&&(i.description=e.description),s?i.homepage=s:H(e.homepage)?i.homepage=U(e.homepage):H(e.author)?i.homepage=U(e.author):e.maintainers&&Array.isArray(e.maintainers)&&e.maintainers.length>0&&H(e.maintainers[0])?i.homepage=U(e.maintainers[0]):e.contributors&&Array.isArray(e.contributors)&&e.contributors.length>0&&H(e.contributors[0])?i.homepage=U(e.contributors[0]):H(e.bugs)&&(i.homepage=U(e.bugs)),c&&(i.logo=c),l?i.repository=l:H(e.repository)&&(i.repository=U(e.repository))}return y(i,t)}function Ft(e){let t={};return M(e.name)&&(t.name=e.name),M(e.title)&&(t.title=e.title),M(e.description)&&(t.description=e.description),M(e.repository)&&(t.repository=e.repository),M(e.homepage)&&(t.homepage=e.homepage),M(e.logo)&&(t.logo=e.logo),t}async function It(e){let t=A(e,`package.json`);if(!C(t))return{};let n;try{n=await T(t)}catch{return{}}return Pt(n)}async function Lt(e,t){let n=await It(e),r=Ft(t);return y(r,n)}function Rt(e){let t=new Set;return e.filter(e=>!e?.name||!t.has(e.name)&&(t.add(e.name),!0))}const zt=Ze.homedir();function Bt(e){return Array.isArray(e)?e.filter(e=>j(e)):[]}function Z(e){return Array.isArray(e)||!j(e)?{}:{...e}}const Vt=[`tokensPath`,`componentsPath`,`iconsPath`,`fontsPath`];function Ht(e,t){let n={...e};for(let e of Vt)t[e]!=null&&delete n[e];return n}function Ut(e,t,n,r){let i=y({cwd:e,envPaths:r.envPaths},Ht(t,n),n,r.workspaceLayer,r.environmentLayer,r.homeLayer,{componentsPath:e,iconsPath:A(e,`assets/icons`),fontsPath:A(e,`assets/fonts`),plugins:[]});if(Array.isArray(i.componentsPath)){let t=i.componentsPath.filter(M).map(e=>F(e));i.componentsPath=t.length>0?t:e}else i.componentsPath=M(i.componentsPath)?F(i.componentsPath):e;if(Array.isArray(i.iconsPath)){let t=i.iconsPath.filter(M).map(e=>F(e));i.iconsPath=t.length>0?t:A(e,`assets/icons`)}else i.iconsPath=M(i.iconsPath)?F(i.iconsPath):A(e,`assets/icons`);if(Array.isArray(i.fontsPath)){let t=i.fontsPath.filter(M).map(e=>F(e));i.fontsPath=t.length>0?t:A(e,`assets/fonts`)}else i.fontsPath=M(i.fontsPath)?F(i.fontsPath):A(e,`assets/fonts`);return i.plugins=Rt(Array.isArray(i.plugins)?i.plugins:[]),i.verbose=t.verbose===!0||n.verbose===!0,i}async function Q(e,t){let n=t.configFile&&R(I(t.configFile,e))?I(t.configFile,e):t.configFile&&R(t.configFile)?t.configFile:R(A(e,`razorwind.${t.mode}.ts`))?A(e,`razorwind.${t.mode}.ts`):R(A(e,`razorwind.${t.mode}.js`))?A(e,`razorwind.${t.mode}.js`):R(A(e,`razorwind.${t.mode}.mts`))?A(e,`razorwind.${t.mode}.mts`):R(A(e,`razorwind.${t.mode}.mjs`))?A(e,`razorwind.${t.mode}.mjs`):R(A(e,`razorwind.${t.mode}.cjs`))?A(e,`razorwind.${t.mode}.cjs`):R(A(e,`razorwind.${t.mode}.cts`))?A(e,`razorwind.${t.mode}.cts`):R(A(e,`razorwind.${t.mode}.json`))?A(e,`razorwind.${t.mode}.json`):R(A(e,`razorwind.${t.mode}.yaml`))?A(e,`razorwind.${t.mode}.yaml`):R(A(e,`razorwind.${t.mode}.yml`))?A(e,`razorwind.${t.mode}.yml`):R(A(e,`razorwind.config.ts`))?A(e,`razorwind.config.ts`):R(A(e,`razorwind.config.js`))?A(e,`razorwind.config.js`):R(A(e,`razorwind.config.mts`))?A(e,`razorwind.config.mts`):R(A(e,`razorwind.config.mjs`))?A(e,`razorwind.config.mjs`):R(A(e,`razorwind.config.cjs`))?A(e,`razorwind.config.cjs`):R(A(e,`razorwind.config.cts`))?A(e,`razorwind.config.cts`):R(A(e,`razorwind.config.json`))?A(e,`razorwind.config.json`):R(A(e,`razorwind.config.yaml`))?A(e,`razorwind.config.yaml`):R(A(e,`razorwind.config.yml`))?A(e,`razorwind.config.yml`):void 0,r=Je({orgId:`storm-software`,appId:`razorwind`,workspaceRoot:e}),i={fsCache:r.cache},a=Xe(e,i),o=[{}];if(n){let r=b(n)?n:x(e,n),i=await a.import(r,{default:!0});if(i){let r=i;if(r=Ye(i)?await Promise.resolve(i({cwd:e,mode:t.mode??`development`})):await Promise.resolve(i),Array.isArray(r)){let e=Bt(r);if(e.length===0)throw Error(`Razorwind config array is empty. Provide at least one configuration object.`);o=e.map(e=>({...e,configFile:n}))}else j(r)&&(o=[{...r,configFile:n}])}}let[s,c,l]=await Promise.all([L({cwd:e,name:`razorwind`,envName:t.mode,globalRc:!0,packageJson:`razorwind`,dotenv:!0,jitiOptions:i}),L({cwd:r.config,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i}),L({cwd:zt,name:`razorwind`,envName:t.mode,dotenv:!0,jitiOptions:i})]),u=Z(s?.config),d=n?b(n)?n:x(e,n):void 0,f=typeof s?.configFile==`string`?s.configFile:void 0;d&&f&&x(e,f)===d&&delete u.plugins;let p={envPaths:{...r,home:zt},workspaceLayer:u,environmentLayer:Z(c?.config),homeLayer:Z(l?.config)};return o.map(n=>Ut(e,t,n,p))}async function Wt(e,t){let n=(await Q(e,t))[0];if(!n)throw Error(`Unable to resolve Razorwind configuration.`);return n}async function Gt(e){if(e.options.plugins.length===0)throw Error(`Razorwind will not generate any code - no plugins configured. Please add at least one plugin to the configuration.`);let t=e.options.tokens;(!t||g(t))&&(t=await h(e));let n={...await Lt(e.cwd,e.options),tokens:t??{},components:y(e.options.components??{},await _t(e)??{}),icons:y(e.options.icons??{},await Nt(e)??{}),fonts:y(e.options.fonts??{},await p(e)??{})};for(let t of e.options.plugins.filter(e=>e.extract))n=await t.extract(n,e.options);if(!n.tokens||g(n.tokens))throw Error(`Unable to load design tokens for the current workspace. Please ensure that Razorwind is configured correctly and that the tokens are available.`);for(let t of e.options.plugins.filter(e=>e.validate))await t.validate(n,e.options);return n}async function Kt(e,t){let n=await Q(e.cwd,t),r=[];for(let t of n)e.options=t,r.push({spec:await Gt(e),config:t});return r}async function $(e,t){let n=[];for(let[r,i]of Object.entries(e??{})){let e=i?.path||r;if(!e)continue;let a=b(e)?e:x(t,e),o=(i?.chunks??[]).map(e=>e.content??``).join(``);await Ke(We(a),{recursive:!0}),await qe(a,o,`utf8`),n.push(a)}return n}var qt=`0.0.50`;function Jt(e){return e}const Yt=He({meta:{name:`razorwind`,title:`Razorwind`,description:`A generator that uses Razorwind to generate design system code from design tokens, components, icons, and fonts.`,version:qt,tags:[`razorwind`,`dtcg`]},schema:Ue({schema:u}),input:async e=>{let t=_(),n=await Kt(t,e),r=n[0];if(!r)throw Error(`Unable to resolve Razorwind configuration.`);return t.generationRuns=n,t.options=r.config,r.spec},output:async(e,t,n)=>{await $(n,_().cwd)},generator:async e=>{let t=_();return tt(t.generationRuns&&t.generationRuns.length>0?t.generationRuns:[{spec:e,config:t.options}])}});export{Be as DEFAULT_TOKEN_PATH_CANDIDATES,ae as FONT_EXTENSIONS,ie as FONT_FORMAT_FROM_EXTENSION,f as GENERIC_FALLBACK_FROM_ROLE,ge as MONO_ROLES,Me as RAZORWIND_INFER_PREPROCESSOR,_e as SANS_ROLES,Ce as THEME_BASENAME_PATTERN,ze as TOKEN_DIRECTORY_GLOB,ye as TOKEN_FILE_EXTENSIONS,Re as TYPE_ALIASES,be as TYPE_PATH_HINTS,ee as WEIGHT_FROM_SUFFIX,m as WINDIE_PARSERS,m as razorwindParsers,ve as canonicalizeTokenType,ce as copyFontFiles,pe as cssFontFamily,Jt as defineConfig,Ve as definePlugin,te as fontFamilyName,tt as generateAllPluginDocuments,V as generatePluginDocuments,Yt as generator,Fe as getExtractionHooks,we as getRazorwindParserHooks,Ae as getRazorwindPreprocessorHooks,Oe as inferTypeFromPath,De as inferValue,me as isEmptyFonts,g as isEmptyTokens,_t as loadComponents,p as loadFonts,Nt as loadIcons,It as loadSchemaMetaFromPackageJson,h as loadTokens,Pe as loadTokensOrThrow,le as mergeFonts,xe as nestFlatTokens,U as normalizeRepository,Le as normalizeTokenTree,je as parseCssCustomProperties,fe as parseCssFonts,ue as parseFontFilename,oe as pickFontByRole,Kt as prepareGenerationRuns,Gt as prepareSpec,se as prependFontCss,Ie as razorwindInferPreprocessor,Te as registerRazorwindHooks,Ee as registerRazorwindParsers,he as renderFontCss,ne as renderGoogleFontImports,re as renderLocalFontFaces,Wt as resolveConfig,Q as resolveConfigs,Lt as resolveSchemaMeta,ke as resolveTokensSource,Ft as schemaMetaFromConfig,Pt as schemaMetaFromPackageJson,Ne as styleDictionaryLogOptions,Se as themeKeyFromPath,z as themesForGeneration,de as toGoogleFontsCssUrl,Rt as uniquePlugins,$ as writeGeneratedDocuments};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { S as WEIGHT_FROM_SUFFIX, _ as FONT_EXTENSIONS, a as ParsedFontFilename, b as MONO_ROLES, c as RenderFontCssOptions, d as prependFontCss, f as renderFontCss, g as copyFontFiles, h as toGoogleFontsCssUrl, i as pickFontByRole, l as cssFontFamily, m as renderLocalFontFaces, n as mergeFonts, o as loadFonts, p as renderGoogleFontImports, r as parseCssFonts, s as parseFontFilename, t as isEmptyFonts, u as fontFamilyName, v as FONT_FORMAT_FROM_EXTENSION, x as SANS_ROLES, y as GENERIC_FALLBACK_FROM_ROLE } from "../../index-
|
|
1
|
+
import { S as WEIGHT_FROM_SUFFIX, _ as FONT_EXTENSIONS, a as ParsedFontFilename, b as MONO_ROLES, c as RenderFontCssOptions, d as prependFontCss, f as renderFontCss, g as copyFontFiles, h as toGoogleFontsCssUrl, i as pickFontByRole, l as cssFontFamily, m as renderLocalFontFaces, n as mergeFonts, o as loadFonts, p as renderGoogleFontImports, r as parseCssFonts, s as parseFontFilename, t as isEmptyFonts, u as fontFamilyName, v as FONT_FORMAT_FROM_EXTENSION, x as SANS_ROLES, y as GENERIC_FALLBACK_FROM_ROLE } from "../../index-VmrytwDm.cjs";
|
|
2
2
|
export { FONT_EXTENSIONS, FONT_FORMAT_FROM_EXTENSION, GENERIC_FALLBACK_FROM_ROLE, MONO_ROLES, type ParsedFontFilename, type RenderFontCssOptions, SANS_ROLES, WEIGHT_FROM_SUFFIX, copyFontFiles, cssFontFamily, fontFamilyName, isEmptyFonts, loadFonts, mergeFonts, parseCssFonts, parseFontFilename, pickFontByRole, prependFontCss, renderFontCss, renderGoogleFontImports, renderLocalFontFaces, toGoogleFontsCssUrl };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { S as WEIGHT_FROM_SUFFIX, _ as FONT_EXTENSIONS, a as ParsedFontFilename, b as MONO_ROLES, c as RenderFontCssOptions, d as prependFontCss, f as renderFontCss, g as copyFontFiles, h as toGoogleFontsCssUrl, i as pickFontByRole, l as cssFontFamily, m as renderLocalFontFaces, n as mergeFonts, o as loadFonts, p as renderGoogleFontImports, r as parseCssFonts, s as parseFontFilename, t as isEmptyFonts, u as fontFamilyName, v as FONT_FORMAT_FROM_EXTENSION, x as SANS_ROLES, y as GENERIC_FALLBACK_FROM_ROLE } from "../../index-
|
|
1
|
+
import { S as WEIGHT_FROM_SUFFIX, _ as FONT_EXTENSIONS, a as ParsedFontFilename, b as MONO_ROLES, c as RenderFontCssOptions, d as prependFontCss, f as renderFontCss, g as copyFontFiles, h as toGoogleFontsCssUrl, i as pickFontByRole, l as cssFontFamily, m as renderLocalFontFaces, n as mergeFonts, o as loadFonts, p as renderGoogleFontImports, r as parseCssFonts, s as parseFontFilename, t as isEmptyFonts, u as fontFamilyName, v as FONT_FORMAT_FROM_EXTENSION, x as SANS_ROLES, y as GENERIC_FALLBACK_FROM_ROLE } from "../../index-nRnX_NsH.mjs";
|
|
2
2
|
export { FONT_EXTENSIONS, FONT_FORMAT_FROM_EXTENSION, GENERIC_FALLBACK_FROM_ROLE, MONO_ROLES, type ParsedFontFilename, type RenderFontCssOptions, SANS_ROLES, WEIGHT_FROM_SUFFIX, copyFontFiles, cssFontFamily, fontFamilyName, isEmptyFonts, loadFonts, mergeFonts, parseCssFonts, parseFontFilename, pickFontByRole, prependFontCss, renderFontCss, renderGoogleFontImports, renderLocalFontFaces, toGoogleFontsCssUrl };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../tokens-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../tokens-DWibfmzg.cjs");exports.DEFAULT_TOKEN_PATH_CANDIDATES=e.y,exports.RAZORWIND_INFER_PREPROCESSOR=e.o,exports.THEME_BASENAME_PATTERN=e.b,exports.TOKEN_DIRECTORY_GLOB=e.x,exports.TOKEN_FILE_EXTENSIONS=e.S,exports.TYPE_ALIASES=e.w,exports.TYPE_PATH_HINTS=e.T,exports.WINDIE_PARSERS=e.C,exports.razorwindParsers=e.C,exports.canonicalizeTokenType=e.E,exports.getExtractionHooks=e.s,exports.getRazorwindParserHooks=e.c,exports.getRazorwindPreprocessorHooks=e.l,exports.inferTypeFromPath=e.h,exports.inferValue=e.g,exports.isEmptyTokens=e.t,exports.loadTokens=e.n,exports.loadTokensOrThrow=e.r,exports.nestFlatTokens=e._,exports.normalizeTokenTree=e.v,exports.parseCssCustomProperties=e.m,exports.razorwindInferPreprocessor=e.u,exports.registerRazorwindHooks=e.d,exports.registerRazorwindParsers=e.f,exports.resolveTokensSource=e.i,exports.styleDictionaryLogOptions=e.p,exports.themeKeyFromPath=e.a;
|